- May 18, 2022
-
-
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
-
Vladimir Davydov authored
Similar to RLIST_HEAD_INITIALIZER and RLIST_HEAD. Needed to initialize a global fiber_cond variable without calling fiber_cond_create. NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Vladimir Davydov authored
- Add func_id_by_name to box.internal. It will be used in EE. - Don't call box.internal.space.upgrade from box.schema.space.upgrade - we will redefine box.schema.space.upgrade in EE instead. Follow-up commit 38b25832 ("box: add space upgrade stubs"). NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Yaroslav Lobankov authored
This change contains the following improvements: 1. Prettify view in the job list. Before: - centos_7 / centos_7 (GC64=OFF) - centos_7 / centos_7 (GC64=ON) After: - centos_7 / centos_7 - centos_7 / centos_7 (gc64) 2. Change possible values for the ${GC64} env variable to `true/false` instead of `ON/OFF` which is more traditional. 3. Use `-DLUAJIT_ENABLE_GC64=ON` flag in the `debian/rules` and `rpm/tarantool.spec` files directly instead of providing it in the workflow files. Follows-up tarantool/tarantool-qa#159 Follows-up tarantool/tarantool-qa#161 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Vladimir Davydov authored
- Cleanup the unreleased directory: leave only fix-string-dequoting.md there, which was added after last branching (2.10). - Remove 2.10.0-beta1.md, 2.10.0-beta2.md, 2.8.1.md, because they are available at the corresponding branches. NO_DOC=changelogs NO_TEST=changelogs
-
- May 05, 2022
-
-
Yaroslav Lobankov authored
Sometimes we would like to run only integration testing and not touch other tests. Now it can be done by setting the 'integration-ci' label on a pull request. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
- May 04, 2022
-
-
Nikita Pettik authored
main.cc includes some headers from Tarantool Enterpise (to be more precise - flightrec.h). To build it we should include proper extra directories. NO_DOC=<Build fix> NO_CHANGELOG=<Build fix> NO_TEST=<Build fix>
-
Nikita Pettik authored
ffi.typeof() returns cdata, which in turn can't be concatenated with string without explicit call of `tostring`. Moreover, passing data of native Lua type would also generate wrong error. So let's simply raise general error without mentioning passed type. NO_DOC=<Internal fix> NO_CHANGELOG=<Internal fix>
-
Nikita Pettik authored
Previously we decided to pass `msg->p_inbuf->rpos` to flight recorder in order to dump request. However, this is wrong way to do it since `rpos` is moved only request has been processed, i.e. at the same moment several requests may have the same `rpos` value. To fix this let's save the start of unparsed request to `iproto_msg`. There's one detail that should be clarified to understand that in this case we'll always get valid pointer to ibuf. Imagine following state of ibuf: ``` +_____________________ | | | | +--------------------- ^ ^ ^ RPOS R2 WPOS R1 ``` R1 is the first request in the buffer (i.e. rpos points to it); R2 is the second. One can argue that if R2 is processed faster than R1 than during the dump of R1 its `reqstart` may point to the garbage. However, dump of request takes place at the bery beginning of request execution in TX thread. As far as messages are started to be processed exactly in the same way as they were received, then R1 will be always dumped before R2 and its further processing. Follow-up 247515e9 NO_DOC=<No user visible changes> NO_TEST=<No functional changes> NO_CHANGELOG=<No functional changes>
-
Yaroslav Lobankov authored
NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Yaroslav Lobankov authored
NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
artembo authored
It looks like the simplest solution to deliver gc64 tarantool builds is to have a separate repo for it. So this patch removes old stuff related to the 'tarantool-gc64' package and adds the new logic to store gc64 packages in a separate repo. Closes: tarantool/tarantool-qa#161 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci Co-authored-by:
Yaroslav Lobankov <y.lobankov@tarantool.org>
-
Vladimir Davydov authored
space_upgrade_check_alter() must be called after the new space definition is updated. Follow-up commit 38b25832 ("box: add space upgrade stubs"). NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
- Apr 29, 2022
-
-
Vladimir Davydov authored
Box read operations (select, min, max, random, pairs) may call a Lua function via Lua C API if space upgrade (EE feature) is in progress. This is forbidden if the original function was called via FFI: https://github.com/tarantool/luajit/commit/4f4fd9ebeb10d53c8e67f45170938f052818e64e Let's add helper functions to disable FFI for box read operations. We will use them in EE code. NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Vladimir Davydov authored
In Lua C code 'struct iterator&' and 'struct iterator*' are handled in exactly the same way. However, if we create an iterator object in Lua by calling box_index_iterator via FFI, and pass the object to Lua C, it will have 'struct iterator*' type, not 'struct iterator&'. In the next patch we need Lua C functions to work with such objects so let's replace 'struct iterator&' with 'struct iterator*' in C code. NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
- Apr 28, 2022
-
-
Denis Smirnov authored
clang 13 includes a check for subtraction from NULL pointer which is considered UB: historically, we had an alignment checking macro which is affected by this. It seems like the intention of the macro's author was to implicitly cast the pointer being checked to uintptr_t without including stddef.h — replace this subtraction with an explicit cast. There is no way to set SQL_4_BYTE_ALIGNED_MALLOC, so the corresponding part of the code was removed. Now there are only 8 byte alignment assertions. NO_CHANGELOG=UB fix NO_DOC=UB fix NO_TEST=UB fix Co-authored-by:
Georgiy Lebedev <curiousgeorgiy@gmail.com>
-
Denis Smirnov authored
Previously, select "t1"."a" from (select "a" from "t") as "t1"; returned a result column name `t1` instead of `t1.a` because of incorrect work of a dequoting function. The reason was that previously sqlDequote() function finished its work when found the first closing quote. Old logic worked for simple selects where the column name doesn't contain an explicit scan name ("a" -> a). But for the sub-queries results sqlDequote() finished its work right after the scan name ("t1"."a" -> t1). Now the function continues its deqouting till it gets the null terminator at the end of the string. Closes #7063 NO_DOC=don't change any public API, only a bug fix Co-authored-by:
Mergen Imeev <imeevma@gmail.com>
-
Vladimir Davydov authored
It will be used to stall background space upgrade in tests. While we are at it, move ERRINJ_TX_DELAY_PRIO_ENDPOINT to restore the sorted order of the error injection list. Follow-up commit 38b25832 ("box: add space upgrade stubs"). NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Vladimir Davydov authored
We need the new format to apply the upgrade function to a tuple. Follow-up commit 38b25832 ("box: add space upgrade stubs"). NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Vladimir Davydov authored
Follow-up commit 38b25832 ("box: add space upgrade stubs"). NO_DOC=test NO_CHANGELOG=test
-