Commit Briefs

5f7ebc55cc Sergey Bronnikov

sql: forbid non-integer values in datetime (ligurio/gh-10391-datetime-new-non-integer-fields-2.11)

The patch forbids using non-integer values in datetime's `:set()` for `year`, `month`, `day`, `hour`, `min`, `sec`, `usec`, `msec`, `nsec` and `tzoffset` keys. `timestamp` can be double, and integer values allowed in timestamp if `nsec`, `usec`, or `msecs` provided. An error will be raised when a value of incorrect type is passed. Fixes #10391 @TarantoolBot document Title: Update types of datetime values passed to SQL's `CAST();` `CAST` can accept only integer values for `year`, `month`, `day`, `hour`, `min`, `sec`, `usec`, `msec`, `nsec` and `tzoffset`. `timestamp` can be integer or double. (cherry picked from commit f57be571b5e4cc8d57c7e97c15b52df37ad6f12c)


55d197aff4 Sergey Bronnikov

datetime: forbid non-integers in :set() and parse()

The patch forbids using non-integer values in datetime's `:set()` for `year`, `month`, `day`, `hour`, `min`, `sec`, `usec`, `msec` and `nsec` keys. The type of `tzoffset` can be integer or string, `timestamp` can be double, and integer values allowed in timestamp if `nsec`, `usec`, or `msecs` provided. An error will be raised when a value of incorrect type is passed. Part of #10391 @TarantoolBot document Title: Update types of values passed to `:set()` and parse() `:set()` can accept only integer values for `year`, `month`, `day`, `hour`, `min`, `sec`, `usec`, `msec` and `nsec`. The type of `tzoffset` can be integer or string, `timestamp` can be integer or double. `tzoffset` passed to `datetime.parse()` can be integer or string. (cherry picked from commit 6e77907baa3cbeebc79241cc0046a539a09e3f2c)


a807d05466 Sergey Bronnikov

datetime: forbid using non-integer values in .new()

The patch forbids using non-integer values in datetime constructor `datetime.new()` for `year`, `month`, `day`, `hour`, `min`, `sec`, `usec`, `msec` and `nsec` keys. The type of `tzoffset` can be integer or string, `timestamp` can be double, and integer values allowed in timestamp if `nsec`, `usec`, or `msecs` provided. An error will be raised when a value of incorrect type is passed. Part of #10391 @TarantoolBot document Title: Update types of values passed to `datetime.new()` `datetime.new()` can accept only integer values for `year`, `month`, `day`, `hour`, `min`, `sec`, `usec`, `msec` and `nsec`. The type of `tzoffset` can be integer or string, `timestamp` can be integer or double. (cherry picked from commit cc9010a2b11477b2f16f2b2e168a6b9dcca2fb20)


e9fc51d0e4 Vladimir Davydov

box: fix crash on rollback on memtx memory OOM and massive index change

We cannot tolerate index extent memory allocation failure on rollback. At the same time it is not practical to reserve memory because a whole index can easily be changed on rollback if read view is created before rollback. So in case of rollback and memtx memory OOM let's allocate outside the memtx arena limited by quota. Now part of the index can reside outside memtx arena. But regularly the index changes will move this part back to the memtx arena. Until next such situation of course. Closes #10551 NO_DOC=bugfix (cherry picked from commit 32ea713af0a4f27f9ae37bb767c21722ee8c6742)


1fb5a7cc56 Vladimir Davydov

memtx: free extents on exit

Part-of #10211 NO_TEST=internal NO_CHANGELOG=internal NO_DOC=internal (cherry picked from commit 134a2a4f7f0a3bad15bc42e2dc051708c3583fed)


e320972a4c Vladimir Davydov

core: add (void *) set definition

Part-of #10551 NO_TEST=declarative code NO_CHANGELOG=internal NO_DOC=internal (cherry picked from commit 398c7031c915380bd6e93b7aeab9145cf0ebe511)


e60f5fbd55 Vladimir Davydov

small: bump version

New commits: * slab cache: fix slab alignment to 16 bytes NO_TEST=submodule bump NO_CHANGELOG=submodule bump NO_DOC=submodule bump (cherry picked from commit 2300704e8317f2d8a545cde1394f8cbbb7e95741)


977ef35319 Vladimir Davydov

sptree: don't use variable length arrays

This causes warnings if compiled with clang-18. Let's define a sane upper limit for the max tree depth and use it for allocating arrays on stack. Note that we don't really care about performance because sptree is used only in unit tests. Closes #10354 NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal (cherry picked from commit 187d288f0c3b008ed2d281e8bb43159e44c4106e)


7d1200356f Vladimir Davydov

test: disable flaky testcases in http_client_test

The testcase "http_client.sock_family:\"AF_UNIX\".test_follow_location" is flaky in each run of `release_clang_asan` and `debug_asan_clang` workflows. Disabling a single testcase does not help. The patch disables a group of testcases executed with Unix domain socket. Needed for #9854 NO_CHANGELOG=testing NO_DOC=testing (cherry picked from commit 8fae8004f79ecd555537960c60c6e646b037c4cc)


e393ee2956 Vladimir Davydov

test: fix luacheck warnings

The patch fixes a warning produced by luacheck: NO_WRAP test/app-luatest/http_client_test.lua:27:8: Error prone negation: negation is executed before relational operator. test/app-luatest/http_client_test.lua:28:8: Error prone negation: negation is executed before relational operator. NO_WRAP Found by Luacheck 1.2.0. Closes #10037 NO_CHANGELOG=codehealth NO_DOC=codehealth NO_TEST=codehealth (cherry picked from commit 8fd37731b68e1e1d8e258ab919d65907d52ec764)


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/