- May 17, 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 (cherry picked from commit 47fbd24a)
-
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 (cherry picked from commit 74f67c7b)
-
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> (cherry picked from commit abd9bbf0)
-
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 (cherry picked from commit 73117059)
-
- May 16, 2022
-
-
Pavel Balaev authored
The unauthenticated git protocol on port 9418 is no longer supported. NO_DOC=doc NO_TEST=doc NO_CHANGELOG=doc (cherry picked from commit 12cf9980)
-
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'}) (cherry picked from commit 29654ffe)
-
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 ... ``` (cherry picked from commit d56840d7)
-
- 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]}] ... ``` (cherry picked from commit 7175f1c8)
-
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. (cherry picked from commit 899fbaeb)
-
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 (cherry picked from commit b08e23f4)
-
- 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 (cherry picked from commit b212ceeb)
-
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 (cherry picked from commit e77ecdd4)
-
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 (cherry picked from commit e2803cb1)
-
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 ... ``` (cherry picked from commit 7036b55a)
-
- 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 (cherry picked from commit eaf96984)
-
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 (cherry picked from commit 00d6dfcd)
-
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 (cherry picked from commit 0016e80a)
-
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 (cherry picked from commit 44fadfc4)
-
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 (cherry picked from commit 63bedc76)
-
- 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 (cherry picked from commit 2d97e4c8)
-
- 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> (cherry picked from commit 3a0bb34d)
-
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> (cherry picked from commit f715e36a)
-
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> (cherry picked from commit da1892a9)
-
Yaroslav Lobankov authored
NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci (cherry picked from commit e73ca8a5)
-
Yaroslav Lobankov authored
NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci (cherry picked from commit 0d27174d)
-
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> (cherry picked from commit 16f47bdf)
-
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 (cherry picked from commit 34da4ce9)
-
- 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 (cherry picked from commit 7f2c7609)
-
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 (cherry picked from commit 6aa6a3d6)
-
- Apr 28, 2022
-
-
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 (cherry picked from commit d772aef9)
-
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 (cherry picked from commit 5269f2ea)
-
Vladimir Davydov authored
Follow-up commit 38b25832 ("box: add space upgrade stubs"). NO_DOC=test NO_CHANGELOG=test (cherry picked from commit 764d18ab)
-
Vladimir Davydov authored
The helper skips a running test with luatest.skip_if in case executed by Tarantool Enterprise. It's better than checking the package directly in the test, because luatest.skip_if prints the reason why the test is skipped. NO_DOC=test NO_CHANGELOG=test (cherry picked from commit d2b216e8)
-
Vladimir Davydov authored
Online space upgrade applies a function to all tuples in a space. The function should be pinned so we need a new holder type. Follow-up commit 38b25832 ("box: add space upgrade stubs"). NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal (cherry picked from commit 98bb3bd4)
-
Vladimir Davydov authored
Enum keys are usually stored in a const array of const strings. Fix opt_def::enum_strs type accordingly. NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring (cherry picked from commit 624076ba)
-
Vladimir Davydov authored
So that the caller can figure out the end of fields array without calling mp_next(). Needed for decoding space upgrade format. While we are at it, let's also - Replace MP_ARRAY assertion with diag_set. This makes the function easier to use when the MsgPack format isn't guaranteed to be MP_ARRAY. - Rearrange arguments so that [out] arguments are grouped together. NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring (cherry picked from commit 78b0d83a)
-
Yaroslav Lobankov authored
Fix the following error: {"badRequest": {"message": "The requested availability zone is not available", "code": 400}} NO_DOC=testing stuff NO_TEST=testing stuff NO_CHANGELOG=testing stuff (cherry picked from commit 45bc9281)
-
Yaroslav Lobankov authored
This option very often makes tests fail due to the issue with the max length of socket paths (107 chars). Let's rely on the VARDIR environment variable or another default value (/tmp/t) when VARDIR is not defined. NO_DOC=testing stuff NO_TEST=testing stuff NO_CHANGELOG=testing stuff (cherry picked from commit 96d7642e)
-
Yaroslav Lobankov authored
This patch changes the length of default socket paths for luatest tests (when the VARDIR environment variable is not defined). It should reduce the chance for the issue with the max length of socket paths (107 chars) to happen. NO_DOC=testing stuff NO_TEST=testing stuff NO_CHANGELOG=testing stuff (cherry picked from commit c90a227e)
-
Yaroslav Lobankov authored
This change adds VARDIR to the PRESERVE_ENVVARS environment variable to deliver it to 'packpack' docker containers while running packaging workflows. NO_DOC=ci NO_CHANGELOG=ci NO_TEST=ci (cherry picked from commit 7ae22101)
-