Commit Briefs

f956ff516b Sergey Bronnikov

datetime: introduce tz in datetime.parse() (ligurio/gh-10420-datetime.parse-tz)

There is an option tz in `datetime.parse()`, it was added in commit 3c40366172e3 ("datetime, lua: date parsing functions"). The option is not documented, and the commit message says that option `tz` is "Not yet implemented in this commit.". The patch added tests and a doc request for this option. The behaviour of the option `tz` is the same as with option `tzoffset`: - if timezone was not set in a parsed string then it is set to a value specified by `tz` - if timezone was set in a parsed string then option `tz` is ignored ``` tarantool> date.parse("1970-01-01T01:00:00 MSK", { tz = 'Europe/Paris' }) --- - 1970-01-01T01:00:00 MSK - 23 ... tarantool> date.parse("1970-01-01T01:00:00", { tz = 'Europe/Paris' }) --- - 1970-01-01T01:00:00 Europe/Paris - 19 ... ``` Follows up #6731 Fixes #10420 @TarantoolBot document Title: Introduce option `tz` in `datetime.parse()` The option `tz` is added in a function `datetime.parse()`. The option set timezone to a passed value if it was not set in a parsed string.


04811e032f Sergey Kaplun

datetime: use tzoffset in a parse() with custom format

The patch fixes a behaviour, when `datetime.parse()` ignores `tzoffset` option if custom format is used. Fixes #8333 Relates to #10420 NO_DOC=bugfix


d7d3063fbd Sergey Kaplun

refactoring: datetime_parse_full drop parse offset

The patch refactors a function `datetime_parse_full()` - overriding of timezone is not a part of datetime string parsing and this part was removed. Needed for #8333 NO_CHANGELOG=refactoring NO_DOC=refactoring NO_TEST=refactoring


f57be571b5 Sergey Kaplun

sql: forbid non-integer values in datetime

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.


6e77907baa Sergey Kaplun

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.


cc9010a2b1 Sergey Kaplun

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.


32ea713af0 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


398c7031c9 Vladimir Davydov

core: add (void *) set definition

Part-of #10551 NO_TEST=declarative code NO_CHANGELOG=internal NO_DOC=internal


2300704e83 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


187d288f0c 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


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