Commit Briefs

1f3dd007cd Sergey Bronnikov

httpc: fix reading data in a chunked request (ligurio/gh-9547-fix-stuck-in-chunked-request)

There was a problem: chunked request to etcd via TLS using builtin http client returns nothing. The problem reproduced quite often by a test `integration.general.tls` in etcd-client Lua module. The patch updates curl submodule to a version based on 8.5.0 release with applied patch [1]. The patch also removes workaround made in commit aa58c21206f0 ("httpc: use http 1.1 by default"). 1. https://github.com/curl/curl/pull/12740 Fixes #9547 NO_TEST=etcd-client tests NO_DOC=bugfix


f58bfc97c6 Vladimir Davydov

Bump msgpuck submodule

This update pulls the following commit: * Introduce mp_read_int8 and mp_read_int16 functions Needed for tarantool/tarantool-ee#627 NO_DOC=internal NO_CHANGELOG=internal NO_TEST=submodule update


b4b9cc93ab Vladimir Davydov

test: fix gh-2717-no-quit-sigint test

- First endswith returns boolean so fix where it compared with nil. Due to the invalid comparison we actually don't check for prompt in nested case. - Add trailing space to prompt in this test case. - Reset readline configuration in this test case. NO_CHANGELOG=test fix NO_DOC=test fix


e06b866a73 Vladimir Davydov

space: optimize lookup by id

In contrast to space_cache_find(), space_by_id() doesn't cache the last looked up space to speed up following lookups. This is confusing, because one would expect the only difference between space_cache_find() and space_by_id() functions to be that the former sets diag while the latter doesn't. Let's move the prev_space cache to space_by_id() to fix this issue. To achieve that we need to make space_by_id() inline, which is tricky because it's called via FFI. We work around that by defining a macro space_by_id() which expands to space_by_id_fast() while still keeping the space_by_id() symbol for FFI. Last but not least, we make the last cached space global (currently it's instantiated once per each space_cache_find() call site). This is a good thing because we often call space_by_id() a few times while processing the same DML request (e.g. in memtx mvcc). NO_DOC=no user-visible behavior changes NO_TEST=no user-visible behavior changes NO_CHANGELOG=no user-visible behavior changes


9ee99c5ff9 Yaroslav Lobankov

ci: drop testing for FreeBSD 12, add for FreeBSD 14

- Drop testing for FreeBSD 12 since FreeBSD 14 is available - Add testing for FreeBSD 14 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci


2e0f9a3c26 Vladimir Davydov

box: introduce fixed-size numeric field types

See the docbot request for details. Closes #9548 @TarantoolBot document Title: Document fixed-size numeric field types Product: Tarantool Since: 3.1 Root document: https://www.tarantool.io/en/doc/latest/concepts/data_model/value_store/#field-type-details ### Fixed-size field types Tarantool supports the following fixed-size numeric field types: * `uint8`: integer in range [0 .. 255] * `int8`: integer in range [-128 .. 127] * `uint16`: integer in range [0 .. 65,535] * `int16`: integer in range [-32,768 .. 32,767] * `uint32`: integer in range [0 .. 4,294,967,295] * `int32`: integer in range [-2,147,483,648 .. 2,147,483,647] * `uint64`: integer in range [0 .. 18,446,744,073,709,551,615] * `int64`: integer in range [-9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807] * `float32`: 32-bit floating point number * `float64`: 64-bit floating point number These types don't affect how data is stored in Tarantool's memtx or vinyl engines but they enforce the limits when a tuple is inserted or updated.


fe4f0223a5 Vladimir Davydov

box: rewrite field_type1_contains_type2()

All the information needed by this function is stored in `field_mp_type[]' and `field_ext_type[]'. Get rid of redundant `field_type_compatibility[]', which is hard to extend and which can introduce additional bugs. NO_DOC=refactoring NO_CHANGELOG=refactoring


3ffefe3ba7 Vladimir Davydov

box: fix field_type1_contains_type2(FIELD_TYPE_DOUBLE, ...)

commit 51af059c10ff ("box: compare and hash msgpack value of double key field as double") changed `field_mp_type[FIELD_TYPE_DOUBLE]', but the corresponding column of `field_type_compatibility[]' wasn't updated. Now a field of type DOUBLE can store MP_UINT and MP_INT, i.e. it can store any value from fields of type UNSIGNED, NUMBER, INTEGER. In fact, FIELD_TYPE_DOUBLE is now an alias for FIELD_TYPE_NUMBER. It's hard to create a test, because e.g. during CheckSpaceFormat even if field_type1_contains_type2() erroneously returns false, then each tuple is correctly validated anyway. So this patch actually fixes performance issue. NO_TEST=see above NO_DOC=minor fix NO_CHANGELOG=minor fix


876273220d Vladimir Davydov

space: drop space upgrade state ref counting

Not used since we moved result processing to the memtx engine. NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring


5ce9a3714b Vladimir Davydov

index: drop result processor used for space upgrade

Initially, we tried to upgrade tuples in the engine-independent code, for which purpose we added the result processor, see commit 21e2def9dec9 ("box: introduce result processor"). It turned out, we still need to do some upgrade-related work in the memtx engine, see commit f7a520ef13db ("box: don't apply space upgrade func to DML result except for DELETE") and commit 921a07177521 ("memtx: add stubs to keep track of upgraded read view tuples"). Since the memtx engine is the only engine that currently supports space upgrade, let's simplify the code by moving space upgrade handling completely in the memtx engine. This is easy to do because we already have memtx_prepare_result_tuple() helper that decompresses tuples before returning them to the user, which seems to be the perfect place for handling upgrade. NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring


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/
patches/
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/