857 Commits (c560cc68d831be812c52b70188f4cf8e7990eeed)
 

Author SHA1 Message Date
Sayan Nandan c560cc68d8 Add multi-element listmap tests 3 years ago
Sayan Nandan b8c8cda1d6 Add tests for list-based maps 3 years ago
Sayan Nandan 21157b2797 Use `RawSliceIter` and `RawSliceIterBorrowed`
These iterators (if you'd call them) provide safe abstractions over raw
pointers, enabling us to easily use them in the storage engine, reducing
verbosity and redundancy.
3 years ago
Sayan Nandan 7dc17a0757 Fix de of empty lists or zero-sized elements 3 years ago
Sayan Nandan 6ad2793e76 Deconstruct se/de methods for lists 3 years ago
Sayan Nandan 08b7b7b821 Add list deserialization 3 years ago
Sayan Nandan 2154fba359 Add `raw_serialize_list` for list based maps 3 years ago
Sayan Nandan a1ea9c3111 Upgrade deps and document parser 3 years ago
Glydr 8f680b6d2a
Merge pull request #213 from skytable/protocol/optimize-skyhash
Optimize the Skyhash implementation
3 years ago
Sayan Nandan 1dfaa0e4a0 Switch to using `next_unchecked` 3 years ago
Sayan Nandan 831d84d65e Fix forwarding of buffer before query execution
This has the ability to introduce UB because advancing the cursor might
invalidate the source pointers obtained by `protocol::Parser::parse()`
That's why we only forward the cursor after the query has been
executed. This is absolutely fine because even if another query
packet has been buffered, we will only forward by the amount we read
and not anything more.
3 years ago
Sayan Nandan f1cf7e8796 Reduce `memcpy`s in Skyhash protocol impl
This commit does an extreme amount of `unsafe` work to reduce the amount
of data that is copied around. Previously, we:
1. Copied in from the buffer
2. Copied again when we did a ptr::read

This changes that to:
1. Zero-copies for operations that can operate on borrowed values
(i.e values by ref like GET, KEYLEN, ..)
2. One copy for operations that need owned values

Overall, this may not immediately seem beneficial for small queries
(afterall, computer memory is very fast), but for large keys -- this can
make a very significant difference. However, a big difference can be noticed
in memory usage under heavy load (with as much as a tenfold drop in some
cases).

But to make this possible, we have to break free from Rust's borrowing
rules as we can't normally pass around refs easily. So, we just turn
everything into raw pointers and operate on them directly. This is why
we introduce a significant amount of unsafe code.
3 years ago
Sayan Nandan a34d7b11a6 Use `Query` to reduce mem usage and simplify impl
Also fixed an incorrect value for read_exact in the testkeys impl
3 years ago
Sayan 111d50b75e
Release v0.7.0 (#210)
* Simplify query gen in sky-bench and bump versions

* Upgrade to the latest driver version
3 years ago
Sayan Nandan cdc33b349e Fix wrong arg length being silently ignored
Where actions were supposed to report an action error, they silently ran
their significant part, ignoring the rest. This was fixed in:
- `DROP TABLE`
- `INSPECT KEYSPACES`
- `INSPECT KEYSPACE <ksid>`
- `INSPECT TABLE <entity>`
- `USE <entity>`

Tests for the same were added
3 years ago
Sayan Nandan 4ef28ea7e8 Upgrade deps 3 years ago
Sayan Nandan 76e0cf607c Switch `MPOP` to returning a `Typed Array`
This makes its behavior similar to that of the other mutating actions.
3 years ago
Sayan Nandan d744eaa2f6 Fix `HEYA` impl and add `HEYA` actiondoc
Also added heya echo test
3 years ago
Sayan Nandan 687ee0cb4c Switch `DEFAULT_REPEAT` to 5 iters
Also updated changelog
3 years ago
Sayan Nandan 2160ae37cf Add migration tool
Closes #200
3 years ago
Sayan Nandan e55bf528be Fix `testkey` impl in sky-bench 3 years ago
Sayan Nandan c45bfd03c8 Fix critical bug in flush routine
When a new instance is created, we need to:
1. Create the tree
This ONLY creates the directories
2. Create the PRELOAD
This is critical because this is our check for a new instance
3. Flush the tables
This is important because we have never flushed the tables/ks before.
If we don't do this -- the server would fail to start with a
`directory not found` error.
3 years ago
Sayan Nandan 5e9c806193 Fix doc rebuild workflow 3 years ago
Sayan Nandan 18e8f74f0a Add new actiondoc
Also moved actiondoc rebuild to separate workflow
3 years ago
Sayan Nandan 3bd34ae5c9 Merge branch 'model/tsymbol' into next 3 years ago
Sayan Nandan d7ac4ebe56 Fix inspect tests 3 years ago
Sayan Nandan e91b070216 Add printing for flat arrays in skysh 3 years ago
Sayan Nandan a24e03da60 Use `TypedArray`s in inspect commands 3 years ago
Sayan Nandan 313a7c1279 Improve runner output 3 years ago
Sayan Nandan 113af87f11 Fix sky-bench 3 years ago
Sayan 596b593526
Fix detection of invalid container name (#207)
* Fix parser allowing `$` in container name

* Fix query engine tests
3 years ago
Sayan Nandan 95504a8be6 Fix `FlatArrayWriter` impl and `mpop` tests
Update driver version
3 years ago
Sayan Nandan 2ed3335a1e Upgrade all interfaces to use the latest driver
Fix lskeys impl
3 years ago
Sayan Nandan e389ee7860 Simplify encoding checks across actions
Checking all encoding errors beforehand simplifies a lot of things for
us. At the same time, this saves a lot of bandwidth as we don't have to
write encoding errors for each element -- instead we just write one.
3 years ago
Sayan Nandan 3a6c48727b Upgrade all actions to use typed arrays 3 years ago
Sayan Nandan f7d64689a6 Use `TypedArrayWriter` for typed Skyhash arrays 3 years ago
Sayan Nandan 0ee25814ea Enable colored output on CI
This greatly improves readability of the otherwise dull logs
3 years ago
Sayan Nandan 818c7138ff Update docs [skip ci] 3 years ago
Sayan Nandan 0d2cfc661c Use tsymbol to determine if binary or unicode
This enables clients to know whether they should expect binary data or
an unicode string.
3 years ago
Sayan Nandan 35bc94f3f1 Use bounded channel when feasible 3 years ago
Sayan Nandan 2175a3c34e Switch to using volatile tables for benchmarking 3 years ago
Sayan Nandan dd12ea599e Take values by ref in `KVEngine` impl methods 3 years ago
Sayan Nandan ec10d3f962 Fix `pop` and `mpop` tests 3 years ago
Sayan Nandan fa2a4c2611 Add the `mpop` action and update the `pop` action 3 years ago
Sayan Nandan 1092bdfd65 Merge pull request #198 from skytable/storage/snapshotengine 3 years ago
Sayan Nandan 27a5562651 Don't panic on unimplemented pipeline query type
The return for inpsect table queries for Keymap model tables was fixed
3 years ago
Sayan Nandan 4ba70aa19b Remove ser/de implementations
These impls are no longer needed
3 years ago
Sayan Nandan 8f4b6b9e5c Enable the number of runs to be customized 3 years ago
Sayan Nandan 0843552dcb Repeat the bench to get average values 3 years ago
Sayan Nandan 4c47aa05ca Fix broken pipe error due to bad init of Workpool
The create table query was being run with the workpool that also
attempts to switch to it on init (pre-loop stage). This caused us to
read in lesser bytes (since we use read_exact) and after the connection
is closed, the server would respond with a broken pipe error as it fails
to write data to the closed connection (since it expected to write more)
3 years ago