Releases: tarantool/crud
1.7.4: pagination optimization
Overview
This release optimizes pagination performance for crud.select() and crud.pairs() operations by leveraging native after cursor support in Tarantool.
Fixed
- Optimize
crud.select()andcrud.pairs()pagination withaftercursor
by using nativeafteroption on Tarantool 2.10+ for O(1) cursor positioning.
Readview operations use nativeafteronly on Tarantool 3.x (#488).
1.7.3: safe mode fixes
Overview
This release introduces a new metric that can help users to disable safe mode in cluster correctly, and multiple fixes regarding cluster operation in safe mode.
Added
- Add
tnt_crud_router_cache_clear_tsmetric to router to help user correctly disable safe mode in cluster.
Fixed
- Return bucket_ref error as array in
crud.*_manymethods. - Move bucket_unref out of transaction.
- Prevent duplicate metrics if init function is called multiple times.
- Prevent creating duplicate triggers on
_crud_settings_localspace if init function is called multiple times. - Fix deadlock in
crud.schema()after schema reload error (#479).
1.7.2: router metrics fix
Fixed
- Remove
tnt_crud_storage_safe_mode_enabledmetric from router.
1.7.1: safe mode for rebalance
Changed
- Stop marking/killing fast-mode iproto fibers on safe-mode switch.
Storage ops are asserted byyield_checksin tests. - Move switch to safe mode from
on_committrigger toon_replacetrigger. - Vinyl spaces always work in safe mode.
1.7.0: safe mode for rebalance
Added
- Implement "safe" mode to prevent writing data to wrong replicaset when vshard rebalance is in progress (#448).
- Auto switch to safe mode when rebalance process starts.
- Manual return to fast mode.
Fixed
- Drop wrap_box_space_func_result to cut allocations and speed up storage calls.
1.6.1: new request options
Added
- Support for vshard's request_timeout parameter for calls with mode = 'read'
Changed
- Auto-fill bucket_id for primary-key CRUD requests (get/update/delete) when the sharding index is the primary index and bucket_id is passed as box.NULL.
1.6.0: maintenance release
Overview
This release polishes CRUD behavior around routing, schema discovery, and Cartridge compatibility, and introduces validation safeguards for bucket_id. It also includes minor version bumps and stability fixes.
Added
- Role model support for single CRUD operations (
commit). - Validation of
bucket_id: invalid values now raiseBucketIDErrorbefore routing (commit).
Changed
- Bump
vshardversion in rockspec.
Fixed
- Compatibility with Cartridge
2.16.0. crud.schemano longer returns TCF system space_cdc_state.crud.schemano longer returns system space_gc_consumerswith Tarantool3.2+.crud.schemano longer returnsttsystem space_tt_migrations.- Stabilized
schematests for Tarantool3.2+. - Fixed bad error handling for method
call.single. - Added support for operating on Tarantool
3.1with data created on2.11; previously an error occurred due to replicasets lookup by name (commit).
1.5.2: many operations fix
Overview
This release fixes the bug that was discovered while working with tt crud export and tt crud import tools.
Fixed
insert_many,insert_object_many,replace_many,replace_object_many,upsert_many,upsert_object_manyoperations no longer fail withShardingHashMismatchErrorif a space has custom sharding info and every tuple/object in the request hasbucket_idset (#437).
1.5.1: license update
Overview
This release clarifies license in the rockspec.
Added
- Clarify license in the rockspec (#434).
1.5.0: roles for Tarantool 3
Overview
This release introduces roles for Tarantool 3 configuration (supported for versions 3.0.2, 3.1.0 and newer).
Added
- Asynchronous bootstrap support for storages (#412).
- Tarantool 3 roles for setting up crud routers and storages (#415).
- Ability to configure crud through Tarantool 3 roles configuration (#415).
Changed
- Explicitly forbid datetime interval conditions (#373).
- Storage initialization is now asynchronous by default for Tarantool 3.0+ (#412).
- Additionally check backoff error on storage info fetch (#427).
Fixed
- Working with datetime conditions in case of non-indexed fields or non-iterating indexes (#373).
- Precision loss for decimal conditions in case of non-indexed fields or non-iterating indexes (#373).
- Passing errors from storages for merger operations (
crud.select,crud.pairs,readview:select,readview:pairs) (#423). - Working with
niloperand conditions in case of non-indexed fields or non-iterating indexes (#422).