All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Statistics for CRUD operations on router (#224).
- Integrate CRUD statistics with
metrics
(#224).
- Optimize select with known bucket_id (#234).
- CRUD operations calculates bucket id automatically using sharding
key specified with DDL schema or in
_ddl_sharding_key
space. NOTE: CRUD methods delete(), get() and update() requires that sharding key must be a part of primary key. crud.count()
function to calculate the number of tuples in the space according to conditions.- Support bucket id calculating using sharding func specified in
DDL schema or in
_ddl_sharding_func
space.
- Use tuple-merger backed select implementation on tarantool 2.10+ (it gives less pressure on Lua GC).
- DDL sharding key now can be extracted from select conditions even if there are no separate index.
crud.len()
function to calculate the number of tuples in the space for memtx engine and calculate the maximum approximate number of tuples in the space for vinyl engine.- Testing: added integration with service coveralls.io (PR #195).
- Testing: added integration with luacov that allows to generate report with code coverage statistics (PR #195).
- Names of errors generated by CRUD operations have been unified (PR #184).
- Opmimize
crud.select()
/crud.pairs()
for one replicaset case (say, whenbucket_id
is passed or deducible from conditions). It gives 13% boost on the case from #220 (PR #226).
- Ignoring of an error in
crud.pairs()
(#144). - Damaging of opts table by CRUD methods (#192).
- Ignoring of
bucket_id
option incrud.select()
/crud.pairs()
(#220).
- Invalid results for pagination queries when filtering on a part of a composite index
- Added jsonpath indexes support for queries
tuple-merger
module updated to 0.0.2
- Compatibility with Tarantool versions that don't support key_def and merger modules.
- Ignoring
opts.first
oncrud.pairs
call - External
keydef
compatibility with built-inmerger
- Fixed error for partial result option if field contains box.NULL.
- Fixed incorrect
crud
results during reverse pagination without specifyingbatch_size
. - Fixed crud roles reload:
- before this patch reload wasn't fair - reloading
tuple.merger
andtuple.keydef
modules failed, and crud started to usecrud.select.compat.select_old
module with naive merger implementation; - fair reloading
tuple.merger
andtuple.keydef
led to the error that was fixed by caching loaded module in the special global variable not cleaned on reloading roles; - ability of using
tuple.merger
andtuple.keydef
modules now is checked by callingpackage.search
, built-inmerger
andkeydef
modules are used if present inpackage.loaded
. It allows to avoid ignoring errors on checking modules existing viapcall(require, '<module_name>')
.
- before this patch reload wasn't fair - reloading
- Fixed some cases when module ignored schema updates.
- Preserve "Bootstrap vshard" button in WebUI operable even if vshard roles are hidden explicitly.
cut_rows
andcut_objects
functions to cut off scan key and primary key values that were merged to the select/pairs partial result.- Functions
stop()
for the rolescrud-storage
andcrud-router
. - Option flag
force_map_call
forselect()
/pairs()
to disable thebucket_id
computation from primary key. crud.min
andcrud.max
functions to find the minimum and maximum values in the specified index.- Added support for jsonpath for select.
-
Fixed not finding field in tuple on
crud.update
if there areis_nullable
fields in front of it that were added when the schema was changed for Tarantool version <= 2.2. -
Pagination over multipart primary key.
mode
,prefer_replica
andbalance
options for read operations (get, select, pairs). According to this parameters one of vshard calls (callrw
,callro
,callbro
,callre
,callbre
) is selected
- Fixed not finding field in tuple on
crud.update
if there areis_nullable
fields in front of it that were added when the schema was changed. - Fixed select crash when dropping indexes
- Using outdated schema on router-side
- Sparsed tuples generation that led to "Tuple/Key must be MsgPack array" error
- Support for UUID field types and UUID values
fields
option for simple operations and select/pairs calls with pagination support to get partial result
- Fixed typo in error for case when failed to get
bucket_id
- Fixed select by part of sharding key equal. Before this patch selecting by equality of partially specified multipart primary index value was misinterpreted as a selecting by fully specified key value.
- Fixed iteration with
pairs
through empty space returnednil
.
truncate
operation- iterator returned by
pairs
is compatible with luafun
- Select by primary index name
- Fix error handling select with invalid type value
- Get rid of performing map-reduce for single-replicaset operations
crud-router
Cartridge rolebucket_id
option for all operations to specify custom bucket ID. For operations that accepts tuple/object bucket ID can be specified as tuple/object field as well asopts.bucket_id
value.
- CRUD-router functions are exposed to the global scope, so it's possible to call
crud-operations via
net.box.call
crud.init
is removed in favor tocrud.init_storage
andcrud.init_router
- Select with
==
conditions bugs - Select with conditions by fields with collations
- CRUD operations:
- replace
- upsert
- Output format for CRUD operations changed to set of rows and metadata
- Insert/replace/upsert methods now accept tuples. To process unflattened objects *_object methods are introduced.
pairs
acceptsuse_tomap
flag to return tuples or objects
checks
is disabled for internal functions by defaultlimit
option is renamed tofirst
- Reverse pagination (negative
first
) is supported after
option accepts a tuple
- Basic CRUD operations:
- insert
- get
- select
- update
- delete
pairs
function to iterate across the distributed space