- May 20, 2022
-
-
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>
-
Georgiy Lebedev authored
Consider the following case a safe `select` call (i.e., do not issue a warning): * offset + limit <= 1000 (default value of offset is 0, default value of limit is 4294967295); Add new dangerous `select` call case: * 'ALL', 'GE', 'GT', 'LE', 'LT' iterator even with key present. Because of the additional logic, it was decided to refactor `check_select_args` and call it after resolving options in `check_select_opts`. Closes #7129 @TarantoolBot document Title: improve check for dangerous `select` calls Calls with `offset + limit <= 100` are now considered safe (i.e., a warning is not issued), e.g.: box.space.s:select(nil, {offset = 1000}) box.space.s:select(nil, {limit = 1000}) box.space.s:select(nil, {offset = 500, limit = 500}) 'ALL', 'GE', 'GT', 'LE', 'LT' iterators are now considered dangerous by default even with key present, e.g.: box.space.s:select({0}) box.space.s:select({0}, {iterator = 'GE'}) But not that these calls are still safe: box.space.s:select({0}, {limit = 1000}) box.space.s:select({0}, {limit = 1000, iterator = 'GE'}) box.space.s:select({0}, {iterator = 'EQ'})
-
Timur Safin authored
Constructor date.new() and modifier date:set() should always produce same result for all attributes combinations. Fixed the problem for `timestamp` with `tzoffset`. Fixes #6793 @TarantoolBot document Title: datetime :set{} with tzoffset Constructor `date.new()` and modifier `date:set()` should always produce same result for all attributes combinations. Fixed the problem for `timestamp` with `tzoffset`. ``` tarantool> date.new{tzoffset = '+0800', timestamp = 1630359071} --- - 2021-08-30T21:31:11+0800 ... tarantool> date.new():set{tzoffset = '+0800', timestamp = 1630359071} --- - 2021-08-30T21:31:11+0800 ... ```
-
- May 13, 2022
-
-
Pavel Balaev authored
The unauthenticated git protocol on port 9418 is no longer supported. NO_DOC=doc NO_TEST=doc NO_CHANGELOG=doc
-
- May 12, 2022
-
-
Mergen Imeev authored
This patch introduces a new syntax that allows to create MAP values in an SQL query. Part of #4763 @TarantoolBot document Title: Syntax for MAP in SQL The syntax for creating document values is now available in SQL. You can use `{`, `:` and `}` to create a MAP value. Only INTEGER, STRING, and UUID values can be keys in a MAP value. If there are two or more values for the same key, the last one will be used for that key. Examples: ``` tarantool> box.execute("SELECT {1 : 'a', 'asd' : 1.5, uuid() : true};") --- - metadata: - name: COLUMN_1 type: map rows: - [{1: 'a', 91ca4dbb-c6d4-4468-b4a4-ab1e409dd87e: true, 'asd': 1.5}] ... ``` ``` tarantool> box.execute("SELECT {'h' : ['abc', 321], 7 : {'b' : 1.5}};") --- - metadata: - name: COLUMN_1 type: map rows: - [{7: {'b': 1.5}, 'h': ['abc', 321]}] ... ```
-
Mergen Imeev authored
After this patch, variable names will have to follow the rules defined for identifiers in SQL. Essentially, this means that a digit can no longer be used as the first character of a bind variable name. Part of #4763 NO_DOC=Will be added later. NO_CHANGELOG=Will be added later.
-
Yaroslav Lobankov authored
The `${{ github.ref_name }}` expression is always evaluated to 'master' because the workflow is running on the 'master' branch. But it is wrong in the case of the '2.10' branch. Now it's fixed. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
- May 11, 2022
-
-
Yaroslav Lobankov authored
The '2.8' branch is no longer supported. So let's switch to '2.10'. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Yaroslav Lobankov authored
The perf_sysbench.yml workflow has the 'workflow_dispatch' trigger that is often used to test some workflow changes. To not litter in the InfluxDB prod bucket, MyTeam chat and mailing list, the special option is added (Debug mode). When checking this option the InfluxDB test bucket, MyTeam chat, and mailing list will be used. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Yaroslav Lobankov authored
Since analyzing the performance test results via the workflow artifacts is quite inconvenient (we need to download the artifact, unpack it, look through results), we need a more human approach to see the test report. Moreover, it would be cool to see the performance difference between the commits. So this patch adds reporting the performance test results to MyTeam chat and mailing list. Furthermore, the comparison of test results is added to the report. Seeing the test report in the chat or mail is very simple and convenient, plus forever results history as a bonus. The test report looks something like this: # Curr: # branch: add-feature-y # build: 1.2.3-42-g6c71c3901 # summary: Add feature Y # machine: x86_64 # distrib: ce # gc64: false # Prev: # branch: add-feature-x # build: 1.2.3-41-g5271240ea # summary: Add feature X # machine: x86_64 # distrib: ce # gc64: false +----------------------+----------+----------+----------+ |Sysbench | Curr(rps)| Prev(rps)| Ratio| +----------------------+----------+----------+----------+ |oltp_delete | 11408.000| 11532.000| 0.989| |oltp_insert | 31455.000| 31322.000| 1.004| |oltp_point_select | 65031.000| 66486.000| 0.978| |oltp_read_only | 1732.000| 1735.000| 0.998| |oltp_read_write | 1211.000| 1196.000| 1.013| |oltp_update_index | 15580.000| 15570.000| 1.001| |oltp_update_non_index | 16129.000| 16093.000| 1.002| |oltp_write_only | 4482.000| 4434.000| 1.011| |select_random_points | 18525.000| 18517.000| 1.000| |select_random_ranges | 4364.000| 4331.000| 1.008| +----------------------+----------+----------+----------+ |gmean | 9223.593| 9220.182| 1.000| +----------------------+----------+----------+----------+ NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Timur Safin authored
Since recently we partially support timezone names (i.e. as abbreviations) so we may modify tz attribute support for datetime constructors or :set() operations. Closes #7076 Relates to #7007 @TarantoolBot document Title: datetime tz attribute Now `tz` attribute is properly handled in datetime value constructors or `:set{}` method modifiers. ``` tarantool> T = date.new{year = 1980, tz = 'MSK'} --- ... tarantool> T.tzoffset --- - 180 ... tarantool> T.tz --- - MSK ... tarantool> T = date.new{year = 1980, tzoffset = 180} --- ... tarantool> T.tzindex --- - 0 ... tarantool> T.tz --- - ... tarantool> T.tzoffset --- - 180 ... tarantool> T:set{tz = 'MSK'} --- ... tarantool> T.tz --- - MSK ... ```
-
- May 06, 2022
-
-
Yaroslav Lobankov authored
It looks like we have some files in the source tree that are not used anymore. So there is no sense to keep them. Files to be deleted: .appveyor.yml, Jenkinsfile, snapcraft.yaml. NO_DOC=files removal NO_TEST=files removal NO_CHANGELOG=files removal
-
Vladimir Davydov authored
It doesn't work, because fio.rmtree doesn't accept wildcards. Let's delete the whole server working tree on cleanup. NO_DOC=test NO_CHANGELOG=test
-