All changes in this project will be noted in this file.
- Added
QList
andRList
for using dynamic lists - Allow using references for custom types in
query!
macro
- Fixed decode of multi-row responses
- Added enhanced multi-row decode support
- Added deref to slice for rows
- Fixed error propagation in
FromResponse
impls
- Fixed response decoder and handling issues
- Added
FromResponse
forVec<Row>
- Added
SQParam
impl for&Vec<u8>
- Field change warnings:
- The
Config
struct now has one additional field. This is not a breaking change because the functionality of the library remains unchanged
- Added support for pipelines
- Added
Response::parse
to convert a response into compatible types
Reduced allocations in Query
.
Fixed bugs with the derive macros.
Yanked version
Fixed an issue with single-item struct derives when using the Response
macro.
Added the following implementations:
FromResponse
forRow
FromValue
forValue
(this was erroneously missing)- Added the
Value::parse
andValue::parse_cloned
member methods - Added
Row::into_first
andRow::into_first_as
member methods
Support deriving queries and responses.
Fixed issues with documentation
- Completely up to date for Skyhash 2.0
- New query API interface for Skytable Octave (completely breaking!)
- No longer depends on OpenSSL
The enter query interface as changed and is incompatible with previous driver versions. Please consider reading the Skytable Octave upgrade guide.
- Sync connection pooling
- Async connection pooling
- Added
run_query_raw
andrun_query
that lets you specify custom types:use skytable::{query, sync::Connection}; let mut con = Connection::new("127.0.0.1", "2003").unwrap(); let string: String = con.run_query(query!("heya")).unwrap(); let number: usize = con.run_query(query!("dbsize")).unwrap();
SkyRawResult
is nowSkyResult
SkyResult
is nowSkyQueryResult
- The feature
async
is nowaio
Query::add
is nowQuery::append
to avoid confusion with thecore::ops::Add
traitElement::Float
is now anf32
instead of anf64
because the Skyhash specification requires it (this was mistakenly anf64
but shouldn't be a problem because no actions returned any floating point value)
- Added support for pipelined queries
- Added support for the
whereami
action - Added support for non-null typed arrays
Breaking changes!
- Fixed missing entity name in query generation for DDL's
create_table
function
- The inner type of the
entity
field inddl::Keymap
was changed toString
instead ofOption<String>
. Since this was never a public field, it should not affect you. However, if you depend onDebug
fmt implementations then you should keep this in mind
Breaking changes
- Support for DDL queries
- Support for directly getting types from actions (this is required to be passed for actions
that need them). For example:
All errors resulting from this parse are simply propagated into the
let x: u64 = con.get("my integer key").unwrap(); let myval: Vec<String> = con.mget(["x", "y", "z"]).unwrap();
Error::ParseError
variant - Support for retrieval of custom types through the use of the
FromSkyhashBytes
trait
- Errors have been unified into a single error type
- Some types have been removed to aid simplicity:
types::Str
types::SimpleArray
- The trait method
IntoSkyhashBytes::into_bytes
was renamed toIntoSkyhashBytes::as_bytes()
to follow naming conventions
Breaking changes
- Added support for Skyhash 1.1
- Changed
Query
type toAnyArray
as in the latest protocol
Breaking changes
- Added backward compatibility for Rust versions < 1.51 (
people who need const-generics just add
const-gen
to their feature list) - Added support for the
POP
query type into_string
is now calledas_string
to follow naming conventions (traitIntoSkyhashBytes
)- New SSL features:
ssl
: For sync TLSsslv
: For sync TLS (vendored)aio-ssl
: For async TLSaio-sslv
: For async TLS (vendored)
Breaking changes
- Dropped support for Terrapipe 1.0
- Added support for Skyhash 1.0
- Response variants have changed according to the protocol
- Added
sync
andasync
features withsync
as a default feature andasync
as an optional feature - Queries constructed using
Query::arg()
now follow the builder pattern - Queries can be constructed by taking references using
Query::push
run_simple_query
now takes a reference to aQuery
instead of taking ownership of it- Actions can now be run by importing
skytable::actions::Actions
(orskytable::actions::AsyncActions
for theasync
API).
For example:rust use skytable::{Connection, actions::Actions}; fn main() { let mut con = Connection::new("127.0.0.1", 2003).unwrap(); con.set("x", "100").unwrap(); assert_eq!(con.get("x").unwrap(), "100".to_owned()); }
run_simple_query
(both sync and async) verify whether the query is empty or not. If it is, the function will panic. This is a very important check to avoid confusion as the server would return aPacketError
which might create additional confusionQuery
objects can now be constructed with theFrom
trait on appropriate types (such as single items or sequences)
Breaking changes
- Fixed
Response
variant returningVec<DataGroup>
instead of justDataGroup
- Implemented
IntoIterator
forDataGroup
This release has been yanked because it returned the incorrect type in the
Response
enum
Initial release