Skip to content

Latest commit

 

History

History
218 lines (154 loc) · 6.81 KB

CHANGELOG.md

File metadata and controls

218 lines (154 loc) · 6.81 KB

Changelog

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.

[Unreleased]

Added

  • Statistics for CRUD operations on router (#224).
  • Integrate CRUD statistics with metrics (#224).

Changed

  • Optimize select with known bucket_id (#234).

Fixed

[0.10.0] - 01-12-21

Added

  • 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.

Fixed

  • 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.

[0.9.0] - 20-10-21

Added

  • 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).

Changed

  • Names of errors generated by CRUD operations have been unified (PR #184).
  • Opmimize crud.select() / crud.pairs() for one replicaset case (say, when bucket_id is passed or deducible from conditions). It gives 13% boost on the case from #220 (PR #226).

Fixed

  • Ignoring of an error in crud.pairs() (#144).
  • Damaging of opts table by CRUD methods (#192).
  • Ignoring of bucket_id option in crud.select()/crud.pairs() (#220).

[0.8.0] - 02-07-21

Fixed

  • Invalid results for pagination queries when filtering on a part of a composite index

Added

  • Added jsonpath indexes support for queries
  • tuple-merger module updated to 0.0.2

[0.7.1] - 2021-06-21

Fixed

  • Compatibility with Tarantool versions that don't support key_def and merger modules.
  • Ignoring opts.first on crud.pairs call
  • External keydef compatibility with built-in merger

[0.7.0] - 2021-05-27

Fixed

  • Fixed error for partial result option if field contains box.NULL.
  • Fixed incorrect crud results during reverse pagination without specifying batch_size.
  • Fixed crud roles reload:
    • before this patch reload wasn't fair - reloading tuple.merger and tuple.keydef modules failed, and crud started to use crud.select.compat.select_old module with naive merger implementation;
    • fair reloading tuple.merger and tuple.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 and tuple.keydef modules now is checked by calling package.search, built-in merger and keydef modules are used if present in package.loaded. It allows to avoid ignoring errors on checking modules existing via pcall(require, '<module_name>').
  • Fixed some cases when module ignored schema updates.
  • Preserve "Bootstrap vshard" button in WebUI operable even if vshard roles are hidden explicitly.

Added

  • cut_rows and cut_objects functions to cut off scan key and primary key values that were merged to the select/pairs partial result.
  • Functions stop() for the roles crud-storage and crud-router.
  • Option flag force_map_call for select()/pairs() to disable the bucket_id computation from primary key.
  • crud.min and crud.max functions to find the minimum and maximum values in the specified index.
  • Added support for jsonpath for select.

[0.6.0] - 2021-03-29

Fixed

  • Fixed not finding field in tuple on crud.update if there are is_nullable fields in front of it that were added when the schema was changed for Tarantool version <= 2.2.

  • Pagination over multipart primary key.

Added

  • mode, prefer_replica and balance options for read operations (get, select, pairs). According to this parameters one of vshard calls (callrw, callro, callbro, callre, callbre) is selected

[0.5.0] - 2021-03-10

Fixed

  • Fixed not finding field in tuple on crud.update if there are is_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

Added

  • Support for UUID field types and UUID values
  • fields option for simple operations and select/pairs calls with pagination support to get partial result

[0.4.0] - 2020-12-02

Fixed

  • 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 returned nil.

Added

  • truncate operation
  • iterator returned by pairs is compatible with luafun

[0.3.0] - 2020-10-26

Fixed

  • Select by primary index name
  • Fix error handling select with invalid type value
  • Get rid of performing map-reduce for single-replicaset operations

Added

  • crud-router Cartridge role
  • bucket_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 as opts.bucket_id value.

Changed

  • 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 to crud.init_storage and crud.init_router

[0.2.0] - 2020-10-07

Fixed

  • Select with == conditions bugs
  • Select with conditions by fields with collations

Added

  • 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 accepts use_tomap flag to return tuples or objects

Changed

  • checks is disabled for internal functions by default
  • limit option is renamed to first
  • Reverse pagination (negative first) is supported
  • after option accepts a tuple

[0.1.0] - 2020-09-23

Added

  • Basic CRUD operations:
    • insert
    • get
    • select
    • update
    • delete
  • pairs function to iterate across the distributed space