- Jun 01, 2022
-
-
Yaroslav Lobankov authored
To ensure that regular and GC64 jobs in packaging workflows don't overwrite artifacts of each other, we need to use a different artifact name per job. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Yaroslav Lobankov authored
In PR #7090 we forgot to update the path to gather failure artifacts for many packaging workflows. Now it is fixed. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Alexander Turenko authored
GitHub suggests to look on the document, when it is present. The banner is shown for visitors of issues and pull requests pages. We can use this feature to highlight typical stones on the contributor's road. My goal is to leave suggestions for typical points of a confusion in a short document (don't bury into details) and leave links for further reading. I hope we should move most of content of the 'open a pull request' section to a wiki page and possibly merge it with [1] and [2]. It requires more work and I would consider it as a future step toward good developer guidelines. [1]: https://github.com/tarantool/tarantool/wiki/Code-review-procedure [2]: https://www.tarantool.io/en/doc/latest/dev_guide/developer_guidelines NO_CHANGELOG=not a user visible change NO_DOC=nothing requires an update on the website NO_TEST=it is purely documentation change
-
- May 31, 2022
-
-
Serge Petrenko authored
Introduce helpers for each of our custom extension types. The helpers will be used by mp_check() to validate extension contents and make sure no malformed data is accepted by tarantool. Closes #6857 NO_DOC=no user visible changes
-
Serge Petrenko authored
The inject remote method is used in testing quite a lot. For example, when someone needs to pass arbitrary MsgPack to Tarantool. The current way to use it is: conn:_request(netbox._method.inject, opts, nil, nil, custom_msgpack) This is quite long and ugly, so let's add a helper: conn:_inject(custom_msgpack, opts) Also, while we're at it, lets fix the following issue. The _inject remote method is barely usable without knowing which sync net.box will use for the next request. On the one hand, the user has to encode some custom sync to the request he's injecting. On the other hand, net.box doesn't parse the custom sync and always uses its own pre-generated one to wait for the request response. So the user has to pick the correct sync value, which net.box uses internally. Let's make life simpler and introduce _next_sync method, which returns the next sync, which will be used by net.box. In-scope-of #6857 Closes #7177 NO_DOC=internal change NO_CHANGELOG=internal change NO_TEST=tested implicitly in next commit
-
Vladimir Davydov authored
A Tarantool server is supposed to send a greeting message right after accepting a new client so the first thing an applier does after connecting to the master is reads the greeting. It does this without timeouts. The problem is that if by mistake we connect to a wrong instance, which doesn't send anything to clients, the applier will hang forever (until the remote closes the socket), without logging any errors. This may happen even with a valid Tarantool instance - if SSL encryption is enabled on the master, but not on the client, because the SSL protocol assumes that the client initiates a connection by writing to the socket first (before the server). Let's add a timeout to the operation reading the greeting. The timeout is set to replication_disconnect_timeout(), after which a connection is broken if the master doesn't send heartbeats for that long. Note, we don't add a timeout to other read/write operations issued to initiate a replication connection, because if we received a greeting and it's valid, then the master is likely to be fine. Closes #7204 NO_DOC=bug
-
Georgiy Lebedev authored
The upgrade test worked incorrectly: the instances WAL directory contained xlog with the latest schema version and the snapshot contained an older schema version (2.7.1) than required (2.9.1), whereas there only need to be a snapshot with 2.9.1 schema version — fix this descrepancy. Also, schema upgrade is performed automatically: remove the redundant `box.schema.upgrade` call. NO_CHANGELOG=test fix NO_DOC=test fix NO_DOC=test fix
-
- May 30, 2022
-
-
Oleg Babin authored
Commit b18dd47f ("Introduce backtrace=true option to fiber.info()") introduced a way to skip backtraces in fiber.info() calls. Commit 9da7e03e ("fiber: introduce fiber_o:info() and fiber_o:csw()") introduced `options` function for fiber object however it ignored passed options. This patch fixed it. Currently fiber:info({backtrace = false}) returns info without backtrace. Closes #7210 NO_DOC=bugfix
-
- May 26, 2022
-
-
Yaroslav Lobankov authored
- Ubuntu Groovy Gorilla (20.10) - Ubuntu Hirsute Hippo (21.04) See for details: https://wiki.ubuntu.com/Releases NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Yaroslav Lobankov authored
- Fedora 30 - Fedora 31 - Fedora 32 - Fedora 33 See for details: https://docs.fedoraproject.org/en-US/releases/eol NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
- 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
-