Description
Product: Tarantool
Since: 3.3.0
Root document: https://www.tarantool.io/en/doc/latest/release/
SME: @ KAPANDR, @ sergepetrenko
Details
- Prepare a what's new page before the release: https://www.tarantool.io/en/doc/latest/release/3.3.0/
- Add a release date and a link to GitHub after the release
- Add a new release to the https://www.tarantool.io/en/doc/latest/release/ page
Features to cover in What's new
From @ sergepetrenko
- offset_of for indexes and spaces, offset counting for O(log(size)); same for read views in EE (Optimize select with offset option tarantool#8204, https://github.com/tarantool/tarantool-ee/issues/858).
Related changelogs:- Improved performance of tree index methods:
select()
with theoffset
specified andcount()
method. The underlying algorithm for these methods is
changed: the old one's time complexity wasO(n)
, wheren
is the value of
offset
or the amount of counted tuples. The new algorithm's complexity is
O(log(size))
, wheresize
is the number of tuples stored in the index. Now
it does not depend on theoffset
value or the amount of tuples to count. It
is safe to use these functions with arbitrary big offset values and tuple
count (gh-8204). - Introduced a new
offset
parameter in theindex:pairs
method. It allows to
skip the first tuples of the iterator (gh-8204). - Introduced a new
index:offset_of
method. It allows to get the position in
the index relative to the iterator direction of a tuple matching the given
key and iterator (gh-8204). - Introduced the new
count
method of an index and space read view. The method
returns the amount of tuples in the index (or primary key of a space) matching
the given key and iterator type (ee-858). - Improved performance of memtx tree index read view
select()
method with
theoffset
specified. The underlying algorithm for the method is changed.
The time complexity of the old algorithm wasO(n)
, wheren
is the value
ofoffset
. The new algorithm's complexity isO(log(size))
, wheresize
is the number of tuples stored in the index. Now it does not depend on the
offset
value. It is safe to use the function with arbitrary big offset
values (ee-858). - Introduced a new
offset
parameter in theindex_read_view:pairs
method. It
allows to skip the first tuples of the iterator (ee-858). - Introduced a new
index_read_view:offset_of
Lua API. It allows to get the
0-based offset in the index relative to the iterator direction of a tuple
that matches the given key and iterator type (ee-858).
- Improved performance of tree index methods:
- persistent gc state of replicas (Persistent garbage collection state tarantool#10154). Changelog:
- Now all replicas have WAL GC consumers persisted in the
_gc_consumers
space (gh-10154). Thewal_cleanup_delay
option is no longer needed,
so it is deprecated.
- Now all replicas have WAL GC consumers persisted in the
- don't rollback synchronous transaction upon reaching replication_synchro_timeout
(DeprecateIPROTO_RAFT_ROLLBACK
andreplication_synchro_timeout
tarantool#7486). Changelogs:- A new compat option
compat.replication_synchro_timeout
has been added.
This option determines whether thereplication.synchro_timeout
option rolls
back transactions. When set to 'new', transactions are not rolled back due to
a timeout. In this modereplication.synchro_timeout
is used to wait
confirmation in promote/demote and gc-checkpointing. If 'old' is set, the
behavior is no different from what it was before this patch appeared. - A new
replication.synchro_queue_max_size
option limits the number of
transactions in the master synchronous queue.
replication.synchro_queue_max_size
is measured in the number of bytes to be
written (0 means unlimited, which was the default behavior before).
Currently, this option defaults to 16 megabytes. (gh-7486)
- A new compat option
- C API for sending work to TX thread. Changelog:
- The new public C API functions
tnt_tx_push(callback)
andtnt_tx_flush()
allow to send work to TX thread from any other thread.
- The new public C API functions