- Description:
- [Mirror] Middleware for data
- Last Change:
- Clone URL:
Commit Briefs
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
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
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
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
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
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.
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
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
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
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
Tree
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/