- May 25, 2022
-
-
Timur Safin authored
FreeBSD Tarantool port has some problems if build uses cmake' ExternalProject_Add which refers to the github repository. Sumodule works better - so switching to using it. NO_CHANGELOG=build NO_DOC=build NO_TEST=build
-
Timur Safin authored
Previous version of tzcode/CMakeLists.txt leaves untracked files under source directory src/lib/tzcode/tz/. We have changed slightly an approach used to checkout and build IANA github sources under build/ directory, not in ${PROJECT_BINARY_DIR} (which may be pointing not to out-of-source build directory, but rather to the repository root itself, if insource build used). Closes #7173 NO_CHANGELOG=infra NO_DOC=infra NO_TEST=infra
-
- May 22, 2022
-
-
Aleksandr Lyapunov authored
By a mistake it was marked as API_EXPORT but was forgotten to be added to exports. Closes #7125 NO_DOC=bugfix
-
- May 20, 2022
-
-
Nikita Pettik authored
This client error assumes two arguments: space's name and index's name. Since from the context it's clear that primary index is affected, let's drop index name from error message. It's quite handy for space upgrade case, since in such situation we have lack of information concerning space. NO_CHANGELOG=<Minor change> NO_DOC=<No functional changes>
-
Nikita Pettik authored
We are going to utilize primary key definition during space upgrade in order to verify primary key invariant. So we need it to be stored in space_upgrade metadata. Let's extend space_upgrade_new() signature and pass there primary key definition. Also patch moves space_upgrade_new() call a bit lower through code - now it's called after all indexes are assigned (to simplify extraction of primary key definition). Moreover, in order to print pretty error message during space upgrade we should keep space in struct space_upgrade. NO_DOC=ee NO_TEST=ee NO_CHANGELOG=ee
-
Nikita Pettik authored
box.error() expects first argument to be numeric or table; passing string to it is wrong. Accidentally in net.box module two places where string is passed to box.error() as first argument: in :unprepare() and :connect() methods. Let's fix them and pass error code ER_ILLEGAL_PARAMS. NO_DOC=<bugfix> NO_CHANGELOG=<Minor>
-
Kseniia Antonova authored
Fix wording, punctuation, and formatting. NO_DOC=changelog NO_TEST=changelog
-
Denis Smirnov authored
Previously SQL didn't validate for all cases, that the amount of the source and destination columns during insertion is equal. The problem was detected when we insert an incorrect amount of values into the table. For example, the query insert into t(a) select a, b from t produced an instance crash. Fixed. Closes #7132 NO_DOC=bug fix Co-authored-by:
Mergen Imeev <imeevma@gmail.com>
-
Timur Safin authored
We used to not implement comparison operators for interval objects, thus any compare (even of equal) objects returned false: ``` tarantool> dt1 = datetime.new() --- ... tarantool> dt2 = datetime.now() --- ... tarantool> dt1 - dt1 == dt2 - dt2 --- - false ... ``` Now we implemented comparison for interval objects, where we compare field by field starting from highest attribute (e.g. `year`) to smallest attribute (e.g. `nsec`) and if any of comparison returned non zero value then we return this result. NO_DOC=bugfix NO_CHANGELOG=bugfix
-
Timur Safin authored
Use Olson/IANA tzdata for timezone handling in datetime string. Closes of #6751 NO_TEST=doc @TarantoolBot document Title: Document timezone support Timezones support ----------------- Tarantool uses IANA tzdata aka Olson DB facilities for timezone resolution at the moment of parsing of datetime literals or while parsing `tz` attribute in constructor, or `:set{}` method call. In addition to the `tzoffset` we provided before, we now define `tzindex`, the unique index assigned by Tarantool to each known IANA timezone. ```lua date = require 'datetime' tarantool> T = date.parse '2022-01-01T00:00 Europe/Moscow' tarantool> T.tzindex --- - 947 ... tarantool> T.tzoffset --- - 180 ... tarantool> T.tz --- - Europe/Moscow ... ``` Now `date.isdst` field (alone and as part of `:totable()` table) is correctly calculated using `tzindex` and attributes of the selected timezone in the Olson DB timezone. ``` tarantool> date.parse('2004-06-01T00:00 Europe/Moscow').isdst --- - true ... tarantool> date.parse('2004-12-01T00:00 Europe/Moscow'):totable() --- - sec: 0 min: 0 yday: 336 day: 1 nsec: 0 isdst: false wday: 4 tzoffset: 180 month: 12 year: 2004 hour: 0 ... ``` All timezone names and abbreviations, known to the current Tarantool version are available via `datetime.TZ` bidirectional array. ```lua print(date.TZ['Europe/Moscow']) -- 947 print(date.TZ[947]) -- Europe/Moscow ``` Limitations ----------- There were moments in past history, when local mean time in some partcular zone used timezone offset not representable in whole minutes, but rather in seconds, i.e. in Moscow before 1918 there used to be offset +2 hours 31 minutes and 19 seconds. Please see Olson dump for this period ``` $ ./src/lib/tzcode/install/usr/bin/zdump -c1880,1918 -i Europe/Moscow TZ="Europe/Moscow" - - +023017 MMT 1916-07-03 00:01:02 +023119 MMT 1917-07-02 00 +033119 MST 1 1917-12-27 23 +023119 MMT ``` Modern tzdata rules do not use such tiny fraction, and all timezones differ to UTC in units measured in minutes, not seconds. Tarantool datetime uses minutes internally as units for `tzoffset` so there is some loss of precision if you try to operate with such ancient timestamps.
-
Timur Safin authored
For performance reasons try to reuse previously allocated structure across calls to tzalloc() if zone appears to be the same. NO_DOC=refactoring NO_CHANGELOG=refactoring NO_TEST=refactoring
-
Timur Safin authored
Fixed incorrect interval initialization for case of `()` used while it was correct for `{}` arguments. NO_DOC=bugfix NO_CHANGELOG=bugfix NO_TEST=bugfix ``` tarantool> itv = require('datetime').interval.new{} --- ... tarantool> itv --- - 0 seconds ... tarantool> itv = require('datetime').interval.new() --- ... tarantool> itv --- - +0.000000001 seconds ... ```
-
Timur Safin authored
Extended gen-zone-abbrevs.pl script with capability to generate timezones.lua in addition to timezones.h. That's bidirectional Lua translation table for resolution of timezone name by it's index and vice versa. Exported to Lua world via `datetime.TZ` NO_DOC=next commit
-
Timur Safin authored
Properly calculate `isdst` field in datetime Lua object and for attribute returned by `:totable()` function. NO_DOC=next commit
-
Timur Safin authored
* Modified localtime.c to use tnt_tm instead of tm structure; * Use this structure for passing data to tnt_localtime_rz at the moment of time-zone resolution; * As a side-effect of refactoring - simplified singleton we used to use for automagical sorting of array with timezone abbreviations NO_DOC=internal NO_CHANGELOG=internal
-
Timur Safin authored
Using our own `tnt_tm` allows to properly pass `tm_tzindex`. NO_DOC=refactoring NO_CHANGELOG=refactoring NO_TEST=refactoring
-
Timur Safin authored
* localtime.c refactored to make tzalloc/tzfree public; * Modified Perl script to generate primary Olson timezones and aliases. Get rid of NYI; NO_DOC=refactoring NO_CHANGELOG=refactoring NO_TEST=refactoring
-
Timur Safin authored
- localtime.c, tzfile.h added to build NO_DOC=build NO_CHANGELOG=build NO_TEST=build
-
Vladimir Davydov authored
A certificate used for an encrypted replication connection may expire, in which case the user will be forced to reconfigure the connection both on the master and on the replica to use the new certificate. If the replica completes the reconfiguration first, it will fail to connect to the master and never retry, even though the master should complete its reconfiguration in a moment. To avoid that, we should make the applier retry to connect on SSLError, just like it does on SocketError. Needed for https://github.com/tarantool/tarantool-ee/issues/107 NO_DOC=ee NO_TEST=ee NO_CHANGELOG=ee
-
Vladimir Davydov authored
Applier uses box_error_code() to for better logging: - It remembers tha last raised error code and skips logging if the new error code is the same. - It logs "will retry every X seconds" only for retryable error codes (for example, ER_SYSTEM) while for non-retryable errors (for example, ER_PROC_LUA) the message isn't logged. box_error_code() returns ER_PROC_LUA for SSLError, which is confusing and would result in inconsistent logging in applier if we made SSLError retryable. Let's add a separate error code for this error (ER_SSL) and introduce a test case that checks that box_error_code() works as expected for all kinds of errors. Follow-up commit a7028dde ("Add SSL iostream stub"). Needed for https://github.com/tarantool/tarantool-ee/issues/107 NO_DOC=internal NO_CHANGELOG=internal
-
Maxim Kokryashkin authored
LuaJIT submodule is bumped to introduce the following changes: * sysprof: change C configuration API * sysprof: enrich symtab on a new trace or a proto * sysprof: fix SYSPROF_HANDLER_STACK_DEPTH * sysprof: make internal API functions static * sysprof: add LUAJIT_DISABLE_SYSPROF to Makefile * symtab: check the _GNU_SOURCE definition Within this changeset Tarantool-specific backtrace handler is introduced and set to be used by sysprof machinery. Besides, all new public Lua C API introduced within this changeset is added to extra/exports. Follows up #781 NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bump NO_CHANGELOG=LuaJIT submodule bump
-
Mergen Imeev authored
This patch introduces operator [] that allows to get elements from MAP and ARRAY values. Closes #4762 Closes #4763 Part of #6251 @TarantoolBot document Title: Operator [] in SQL Operator `[]` allows to get an element of MAP and ARRAY values. Examples: ``` tarantool> box.execute([[SELECT [1, 2, 3, 4, 5][3];]]) --- - metadata: - name: COLUMN_1 type: any rows: - [3] ... tarantool> box.execute([[SELECT {'a' : 123, 7: 'asd'}['a'];]]) --- - metadata: - name: COLUMN_1 type: any rows: - [123] ... ``` The returned values is of type ANY. If the operator is applied to a value that is not a MAP or ARRAY or is NULL, an error is thrown. Example: ``` tarantool> box.execute([[SELECT 1[1];]]) --- - null - Selecting is only possible from map and array values ... ``` However, if there are two or more operators next to each other, the second or following operators do not throw an error, but instead return NULL. Example: ``` tarantool> box.execute([[select [1][1][2][3][4];]]) --- - metadata: - name: COLUMN_1 type: any rows: - [null] ... ```
-
- May 19, 2022
-
-
Yaroslav Lobankov authored
NO_DOC=changelog update NO_TEST=changelog update
-
Yaroslav Lobankov authored
Add the fedora_36.yml and fedora_36_aarch64.yml workflow files to build Tarantool packages for x86_64 and aarch64 systems. Closes tarantool/tarantool-qa#239 NO_DOC=ci NO_TEST=ci
-
Yaroslav Lobankov authored
In Fedora 36 the default version of the `openssl-devel` package is 3. But for now Tarantool doesn't work with this version. So this patch adds a workaround with installation of the `openssl1.1-devel` package to build rpms and exporting env variable `OPENSSL_CONF=/dev/null` to pass tests. See for details: https://github.com/tarantool/tarantool/issues/6477. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Georgiy Lebedev authored
Apparently, the current implementation of `tree_iterator_start_raw` is buggy for reverse iterators: instead of tracking gaps for successors of keys, it tracks gaps for tuples shifted by one to the left of the successor: reorder the code of `tree_iterator_start_raw` to get the successor tuple prior to shifting done for reverse iterators and simplify the implementation to make it more straightforward and thus comprehensible. Closes #7073 Closes #7113 NO_DOC=bugfix Co-authored-by:
Alexander Lyapunov <alyapunov@tarantool.org>
-
Vladimir Davydov authored
If the space is being upgraded, UPDATE/UPSERT requests matching the new space format should work. However, currently they wouldn't work unless the target tuple has already been upgraded, because we don't apply the upgrade function to a tuple fetched from the space before applying UPDATE operations. Fix this. Follow-up commit 21e2def9 ("box: introduce result processor"). Needed for https://github.com/tarantool/tarantool-ee/issues/111 NO_DOC=ee NO_TEST=ee NO_CHANGELOG=ee
-
Vladimir Davydov authored
There's no need to apply a space upgrade function to the tuple returned by INSERT, REPLACE, UPDATE, or UPSERT, because it must match the new format anyway. We only need to process tuples returned by DELETE requests. That being said, let's move the result processing from box_process_rw() to memtx_space_execute_delete(). Note, we don't need to patch vinyl_space_execute_delete(), because in Vinyl DELETE doesn't return the deleted tuple. Follow-up commit 21e2def9 ("box: introduce result processor"). NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Vladimir Davydov authored
We're going to use the 'result_process' name for a function that processes a result without creating a result_processor struct. Follow-up commit 21e2def9 ("box: introduce result processor"). NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Sergey Bronnikov authored
Changelog: https://curl.se/changes.html#7_83_0 Curl replaced prefix CURL_ with CMAKE_ in private identifiers [1] since the 'CMAKE_' prefix is reserved for CMake's own private use, see [2]. Patch adds a number of options defined in curl build infrastructure with their default values used in 7.83.0. 1. https://github.com/curl/curl/commit/9108da2c26d18e927b91e33d3729d9cf0f3eb8fa 2. https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html NO_DOC=libcurl submodule bump NO_TEST=libcurl submodule bump Follows up #6029
-
- May 18, 2022
-
-
Mergen Imeev authored
After this correction DATETIME arithmetic result type will be calculated correctly. Before this fix the type returned in the metadata was "scalar". Follow-up #6773 NO_DOC=Bugfix NO_CHANGELOG=Bugfix
-
Mergen Imeev authored
This patch introduces explicit cast from MAP to INTERVAL. Follow-up #6773 NO_DOC=INTERVAL has already been introduced. NO_CHANGELOG=INTERVAL has already been introduced.
-
Mergen Imeev authored
This patch introduces explicit cast from MAP to DATETIME. Follow-up #6773 NO_DOC=DATETIME has already been introduced. NO_CHANGELOG=DATETIME has already been introduced.
-
Mergen Imeev authored
This patch introduces explicit cast from STRING to DATETIME. Follow-up #6773 NO_DOC=DATETIME has already been introduced. NO_CHANGELOG=DATETIME has already been introduced.
-
Serge Petrenko authored
When applier ack writer was moved to applier thread, it was overlooked that it would start sharing replicaset.vclock between two threads. This could lead to the following replication errors on master: relay//102/main:reader V> Got a corrupted row: relay//102/main:reader V> 00000000: 81 00 00 81 26 81 01 09 02 01 Such a row has an incorrectly-encoded vclock: `81 01 09 02 01`. When writer fiber encoded the vclock length (`81`), there was only one vclock component: {1: 9}, but at the moment of iterating over the components, another WAL write was reported to TX thread, which bumped the second vclock component {1: 9, 2: 1}. Let's fix the race by delivering a copy of current replicaset vclock to the applier thread. Also add a perf test to the perf/ directory. Closes #7089 Part-of tarantool/tarantool-qa#166 NO_DOC=internal fix NO_TEST=hard to test
-
- May 17, 2022
-
-
Vladimir Davydov authored
We don't rebuild the tuples stored in the space when a space format is updated, just check that they are compatible with the new format. For the old tuple fields to be accessible by the new format field names, we point the old format dictionary to the new format dictionary (a field dictionary is a reference counted object so the same dictionary can be used by multiple formats). This isn't necessary for online space upgrade, because in this case we upgrade each tuple stored in the space to the new format before returning it to the user. Moreover, using the new dictionary for the old tuples would even be harmful in this case, because the old tuples may be incompatible with the new format, while the space upgrae function may use the old field names. Needed for https://github.com/tarantool/tarantool-ee/issues/112 NO_DOC=ee NO_TEST=ee NO_CHANGELOG=ee
-
Vladimir Davydov authored
iproto_write_error() may reset diag (for example, if the client closes the socket), thus invalidating the error we are going to log and leading to a use after free bug. We must log the error before trying to send it to the client. The bug was introduced by commit 9b4ab9fe ("iproto: use iostream abstraction"), which switched iproto_write_error() from plain write() to the iostream_write(), which may set diag. Closes #6890 NO_DOC=bug fix NO_CHANGELOG=unreleased
-
- May 16, 2022
-
-
Yaroslav Lobankov authored
Add the ubuntu_20_10.yml and ubuntu_20_10_aarch64.yml workflow files to build Tarantool packages for x86_64 and aarch64 systems. Actually, it was already added in 980d7676 (2.9.0-100-g980d7676b) in the scope of #5824 and removed then in 19a161b5 (2.10.0-beta2-4-g19a161b5f) and dc19be40 (2.10.0-beta2-5-gdc19be406). But, eventually, it was decided to add this workflow again to release Tarantool packages for Ubuntu Groovy as well. Follows-up tarantool/tarantool#5824 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Yaroslav Lobankov authored
Add the ubuntu_21_04_aarch64.yml and ubuntu_21_10_aarch64.yml workflow files to build Tarantool packages for the aarch64 system. Follows-up tarantool/tarantool#5825 Follows-up tarantool/tarantool#6566 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
artembo authored
Add the ubuntu_22_04.yml and ubuntu_22_04_aarch64.yml workflow files to build Tarantool packages for x86_64 and aarch64 systems. Closes tarantool/tarantool-qa#237 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci Co-authored-by:
Yaroslav Lobankov <y.lobankov@tarantool.org>
-