1444 Commits (9297095f45ce9b112596910a24177157d4fa4b99)
 

Author SHA1 Message Date
Sayan Nandan ca77ca9f80 Add sanity tests for wrong-model error string 3 years ago
Sayan Nandan 7246b14115 Add `lmod insert` tests 3 years ago
Sayan Nandan ed01c2fa82 Add `lmod remove` tests and fix `lget` tests
The error string length was incorrectly set causing the `lget` test to
fail
3 years ago
Sayan Nandan d0ee66ac4c Add remaining `lget` tests and add `lmod` tests 3 years ago
Sayan Nandan ce99e974b9 Fix array extend impl ptr eq check
The end of allocation is reached when curptr > endptr
3 years ago
Sayan Nandan acef265b04 Fix list tests 3 years ago
Sayan Nandan 8d43a70bd2 Add `lget` and `lset` tests 3 years ago
Sayan Nandan 677c4a844a Merge branch 'model/impl-lists' into next 3 years ago
Sayan Nandan 9b4b140af7 Add listmap on-disk storage tests 3 years ago
Sayan Nandan 41a49aaf11 Add `POP` subaction to `lmod` 3 years ago
Sayan Nandan 9a2622c2ad Add `insert` subaction to `lmod` 3 years ago
Sayan Nandan 02628d6ff3 Add `REMOVE` subaction to `lmod` 3 years ago
Sayan Nandan c66206b9eb Add `PUSH` subaction to `lmod` 3 years ago
Sayan Nandan 0278f6063d Add `lmod` and `CLEAR` subaction 3 years ago
Sayan Nandan 5238298ac4 Add `VALUEAT` and `LIMIT` subactions to `lget` 3 years ago
Sayan Nandan 0e8d60df0a Add `lget` for getting all list elements and len 3 years ago
Sayan Nandan a04f676aa5 Add `lset` for list creation 3 years ago
Sayan Nandan 26ed51a077 Simplify modelcode computation 3 years ago
Sayan Nandan 3fc9967bf2 Add modelcode tests 3 years ago
Sayan Nandan 7a8a22c04a Prevent usage of lists as a key type 3 years ago
Sayan Nandan 55457cf097 Add DDL support for listmaps 3 years ago
Sayan Nandan 0e0dd5fcce Update actiondoc and contributing docs [skip ci]
See skytable/docs#20 and skytable/docs#19 for more info.
3 years ago
Sayan Nandan 47ace776a4 Fix tests 3 years ago
Sayan Nandan 4e68c4bd49 Add listmap se/de support in storage engine 3 years ago
Sayan Nandan 0ee5f69d50 Add basic listmap support 3 years ago
Sayan Nandan cdbe1a81eb Add more listmap corruption tests 3 years ago
Sayan Nandan ff59627e95 Add encoding tests for mutating KVE actions 3 years ago
Sayan Nandan 8c95ef0049 Upgrade deps 3 years ago
Zhangyuan Nie a56968b017
Update docs [skip ci] (#217) 3 years ago
Sayan Nandan 3e4bc1e6fc Add remove method 3 years ago
Sayan Nandan ef3e617147 Add basic listmap definition 3 years ago
Sayan Nandan 2c2e5f0ea6 Add listmap bytemarks 3 years ago
Sayan Nandan 234623a0cc Add corruption tests 3 years ago
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 a430afe743 Add s390x testing 3 years ago
Sayan Nandan ad403421d4 Fix storage engine bug for zero-sized map entries
gt was applicable here instead of ge, since for zero-sized elements, we
may have already reached the end of allocation.
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 026cddaaaf Use binary strings for benchtool 3 years ago
Sayan Nandan 05545d8ed7 Add ran_bytes and random byte vector generation 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