Commit Briefs

70d6841be4 Sergey Bronnikov

test/fuzz: enable sysprof (ligurio/gh-8594-enable-sysprof, origin/ligurio/gh-8594-enable-sysprof)

Follows up #8594 NO_CHANGELOG=testing NO_DOC=testing NO_TEST=testing


45f9759f65 Aleksandr Lyapunov

box: introduce space:stat()

See the doc bot request for the description. Benchmark results: NO_WRAP $ taskset 0x2 compare.py benchmarks ./memtx.perftest.old ./memtx.perftest.new \ --benchmark_min_warmup_time=10 \ --benchmark_repetitions=30 \ --benchmark_report_aggregates_only=true \ --benchmark_filter=TreeReplaceRandomExistingKeys [...] Comparing ./memtx.perftest.old to ./memtx.perftest.new Benchmark Time CPU Time Old Time New CPU Old CPU New ------------------------------------------------------------------------------------------------------------------------------------------------ MemtxFixture/TreeReplaceRandomExistingKeys_mean +0.0097 +0.0097 1073 1084 1073 1084 MemtxFixture/TreeReplaceRandomExistingKeys_median +0.0075 +0.0075 1062 1070 1062 1070 MemtxFixture/TreeReplaceRandomExistingKeys_stddev -0.1207 -0.1208 56 49 56 49 MemtxFixture/TreeReplaceRandomExistingKeys_cv -0.1291 -0.1292 0 0 0 0 NO_WRAP Closes #6762 @TarantoolBot document Title: Document `space:stat()` Product: Tarantool Since: 3.0 Root document: https://www.tarantool.io/en/doc/latest/reference/reference_lua/box_space/ space_object:stat() - Get statistics on the memory usage Returns a table with the cumulative statistics on the memory usage by tuples in the space. The statistics is grouped by arena types: "memtx" or "malloc". For a detailed description of each field see `tuple_object:info()`. Note: The statistics is collected only for memtx storage engine. For other types of spaces, an empty table is returned. Example: ``` tarantool> box.space.test:stat() --- - tuple: memtx: data_size: 5100699 header_size: 96 field_map_size: 40 waste_size: 143093 malloc: data_size: 18850077 header_size: 70 field_map_size: 28 waste_size: 0 ... ```


ab24dfb65b Aleksandr Lyapunov

box: introduce tuple:info()

See the doc bot request for the description. Part of #6762 NO_CHANGELOG=next commit @TarantoolBot document Title: Document `tuple:info()` Product: Tarantool Since: 3.0 Root document: https://www.tarantool.io/en/doc/latest/reference/reference_lua/box_tuple/ tuple_object:info() - Get information about the tuple Returns a table with the following fields: * data_size - Size of the MessagePack data in the tuple. This number equals to number returned by `tuple_object:bsize()`. * header_size - Size of the internal tuple header. * field_map_size - Size of the field map. Field map is used to speed up access to indexed fields of the tuple. * waste_size - The amount of excess memory used to store the tuple in mempool. * arena - Type of the arena where the tuple is allocated. Possible values are: "memtx", "malloc", "runtime".


3a3890ed93 Aleksandr Lyapunov

perf: add TreeReplaceRandomExistingKeys to memtx benchmark

It is similar to TreeGetRandomExistingKeys, but performs box_replace() instead of box_index_get(). Needed for #6762 NO_DOC=benchmark NO_TEST=benchmark NO_CHANGELOG=benchmark


4f85d27efd Igor Munkin

sql: fix segmentation fault when JOIN uses USING

Before this patch, nameInUsingClause() expected old_col to be non-NULL, but this may not be the case. This patch fixes this feature accordingly. Follow-up #4467 NO_DOC=bugfix NO_CHANGELOG=feature was not released yet


6cb86dc173 Igor Munkin

sql: introduce function default values

This patch replaces the SQL mechanism for setting expression default values with the BOX mechanism. Closes #8793 @TarantoolBot document Title: field default value in SQL SQL now uses the default mechanism for BOX fields. The main difference visible to the user is that now all NULL values explicitly inserted into a field with a default value will be replaced with a default value, which is different from the original SQL behavior. Additionally, default values are now inserted instead of NULL after the SQL BEFORE INSERT trigger but before the BOX BEFORE INSERT trigger. Previously, SQL default values were inserted before the SQL BEFORE INSERT trigger.


5efd52aefa Igor Munkin

sql: separate function creation code

This patch moves the VDBE function creation code from vdbe_emit_ck_constraint_create() to the new function vdbe_emit_create_function(). Because of this, the error message changes slightly. NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring


2582b6ae00 Igor Munkin

sql: rework literal as default value in SQL

This patch replaces the SQL mechanism for setting literal default values with the BOX mechanism. Part of #8793 NO_DOC=will be added later NO_CHANGELOG=will be added later


8063a4c94d Igor Munkin

sql: do not accept not numbers with +/- as default

After this patch, non-numeric values will not be accepted by the parser as default values if they have '+' or '-' before them. NO_DOC=will be added later


695e9b4b10 Igor Munkin

box: allow SQL_EXPR functions in defaults

After this patch SQL_EXPR functions will be allowed to set as default values. Part of #8793 @TarantoolBot document Title: SQL_EXPR functions as default values SQL_EXPR functions can now be set as default values. Note that all arguments to the SQL_EXPR functions will be replaced by the space field 'default' value. This only matters for the SQL_EXPR used as default from Lua, since in SQL it is not allowed to have arguments in the default expression.


Branches



























































































Tags

Tree

.editorconfigcommits | blame
.gdbinitcommits | blame
.gitattributescommits | blame
.github/
.gitignorecommits | blame
.gitmodulescommits | blame
.luacheckrccommits | blame
.pack.mkcommits | blame
.test.mkcommits | blame
AUTHORScommits | blame
CMakeLists.txtcommits | blame
CONTRIBUTING.mdcommits | blame
Doxyfilecommits | blame
Doxyfile.API.incommits | blame
FreeBSD/
LICENSEcommits | blame
README.FreeBSDcommits | blame
README.MacOSXcommits | blame
README.OpenBSDcommits | blame
README.mdcommits | blame
TODOcommits | blame
apk/
asan/
changelogs/
cmake/
debian/
doc/
extra/
perf/
rpm/
rump/
src/
static-build/
test/
test-run$commits | blame
third_party/
tools/

README.md

# Tarantool

[![Actions Status][actions-badge]][actions-url]
[![Code Coverage][coverage-badge]][coverage-url]
[![OSS Fuzz][oss-fuzz-badge]][oss-fuzz-url]
[![Telegram][telegram-badge]][telegram-url]
[![GitHub Discussions][discussions-badge]][discussions-url]
[![Stack Overflow][stackoverflow-badge]][stackoverflow-url]

[Tarantool][tarantool-url] is an in-memory computing platform consisting of a
database and an application server.

It is distributed under [BSD 2-Clause][license] terms.

Key features of the application server:

* Heavily optimized Lua interpreter with incredibly fast tracing JIT compiler,
  based on LuaJIT 2.1.
* Cooperative multitasking, non-blocking IO.
* [Persistent queues][queue].
* [Sharding][vshard].
* [Cluster and application management framework][cartridge].
* Access to external databases such as [MySQL][mysql] and [PostgreSQL][pg].
* A rich set of built-in and standalone [modules][modules].

Key features of the database:

* MessagePack data format and MessagePack based client-server protocol.
* Two data engines: 100% in-memory with complete WAL-based persistence and an
  own implementation of LSM-tree, to use with large data sets.
* Multiple index types: HASH, TREE, RTREE, BITSET.
* Document oriented JSON path indexes.
* Asynchronous master-master replication.
* Synchronous quorum-based replication.
* RAFT-based automatic leader election for the single-leader configuration.
* Authentication and access control.
* ANSI SQL, including views, joins, referential and check constraints.
* [Connectors][connectors] for many programming languages.
* The database is a C extension of the application server and can be turned
  off.

Supported platforms are Linux (x86_64, aarch64), Mac OS X (x86_64, M1), FreeBSD
(x86_64).

Tarantool is ideal for data-enriched components of scalable Web architecture:
queue servers, caches, stateful Web applications.

To download and install Tarantool as a binary package for your OS or using
Docker, please see the [download instructions][download].

To build Tarantool from source, see detailed [instructions][building] in the
Tarantool documentation.

To find modules, connectors and tools for Tarantool, check out our [Awesome
Tarantool][awesome-list] list.

Please report bugs to our [issue tracker][issue-tracker]. We also warmly
welcome your feedback on the [discussions][discussions-url] page and questions
on [Stack Overflow][stackoverflow-url].

We accept contributions via pull requests. Check out our [contributing
guide][contributing].

Thank you for your interest in Tarantool!

[actions-badge]: https://github.com/tarantool/tarantool/workflows/release/badge.svg
[actions-url]: https://github.com/tarantool/tarantool/actions
[coverage-badge]: https://coveralls.io/repos/github/tarantool/tarantool/badge.svg?branch=master
[coverage-url]: https://coveralls.io/github/tarantool/tarantool?branch=master
[telegram-badge]: https://img.shields.io/badge/Telegram-join%20chat-blue.svg
[telegram-url]: http://telegram.me/tarantool
[discussions-badge]: https://img.shields.io/github/discussions/tarantool/tarantool
[discussions-url]: https://github.com/tarantool/tarantool/discussions
[stackoverflow-badge]: https://img.shields.io/badge/stackoverflow-tarantool-orange.svg
[stackoverflow-url]: https://stackoverflow.com/questions/tagged/tarantool
[oss-fuzz-badge]: https://oss-fuzz-build-logs.storage.googleapis.com/badges/tarantool.svg
[oss-fuzz-url]: https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_tarantool/latest
[tarantool-url]: https://www.tarantool.io/en/
[license]: LICENSE
[modules]: https://www.tarantool.io/en/download/rocks
[queue]: https://github.com/tarantool/queue
[vshard]: https://github.com/tarantool/vshard
[cartridge]: https://github.com/tarantool/cartridge
[mysql]: https://github.com/tarantool/mysql
[pg]: https://github.com/tarantool/pg
[connectors]: https://www.tarantool.io/en/download/connectors
[download]: https://www.tarantool.io/en/download/
[building]: https://www.tarantool.io/en/doc/latest/dev_guide/building_from_source/
[issue-tracker]: https://github.com/tarantool/tarantool/issues
[contributing]: CONTRIBUTING.md
[awesome-list]: https://github.com/tarantool/awesome-tarantool/