- May 19, 2022
-
-
Yaroslav Lobankov authored
NO_DOC=changelog update NO_TEST=changelog update (cherry picked from commit 5bcc785f)
-
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 (cherry picked from commit fccb6bc0)
-
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 (cherry picked from commit 9d1f9f0e)
-
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> (cherry picked from commit 07516193)
-
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 (cherry picked from commit 88c9567c)
-
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 (cherry picked from commit f7a520ef)
-
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 (cherry picked from commit 3698d270)
-
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 (cherry picked from commit 1810ddfd)
-
- 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 (cherry picked from commit ddec704e)
-
- 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 (cherry picked from commit 73733e51)
-
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)
-