Skip to content
Snippets Groups Projects
  1. May 17, 2022
    • Yaroslav Lobankov's avatar
      ci: add Ubuntu Groovy (20.10) workflow again · b77e0abc
      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)
      b77e0abc
    • Yaroslav Lobankov's avatar
      ci: add Ubuntu Hirsute/Impish aarch64 workflows · 77de011b
      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)
      77de011b
    • artembo's avatar
      ci: add Ubuntu Jammy (22.04) workflow · 2bbcb60b
      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: default avatarYaroslav Lobankov <y.lobankov@tarantool.org>
      (cherry picked from commit abd9bbf0)
      2bbcb60b
    • Vladimir Davydov's avatar
      iproto: log error before iproto_write_error · 2049b9f3
      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)
      2049b9f3
  2. May 16, 2022
    • Pavel Balaev's avatar
      readme: fix repository url · fd5da0f5
      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)
      fd5da0f5
    • Georgiy Lebedev's avatar
      box: improve check for dangerous `select` calls · a76c709a
      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)
      a76c709a
    • Timur Safin's avatar
      datetime: make date.new{} and date:set{} equivalent · 6e7a3591
      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)
      6e7a3591
  3. May 12, 2022
    • Mergen Imeev's avatar
      sql: introduce syntax for MAP values · bc8bc1ad
      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)
      bc8bc1ad
    • Mergen Imeev's avatar
      sql: properly check bind variable names · 78befdf9
      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)
      78befdf9
    • Yaroslav Lobankov's avatar
      ci: fix email subject in perf_sysbench.yml · 1de6d49e
      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)
      1de6d49e
  4. May 11, 2022
    • Yaroslav Lobankov's avatar
      ci: run sysbench against 2.10 branch · 1acfc2fd
      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)
      1acfc2fd
    • Yaroslav Lobankov's avatar
      ci: add facility to run sysbench WF in debug mode · 80726e06
      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)
      80726e06
    • Yaroslav Lobankov's avatar
      ci: add performance test reporting for sysbench · 63925f1f
      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)
      63925f1f
    • Timur Safin's avatar
      datetime: handle timezone names in tz · 69b27a7c
      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)
      69b27a7c
  5. May 06, 2022
    • Yaroslav Lobankov's avatar
      cleanup: delete old unused files · 22af06a6
      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)
      22af06a6
    • Vladimir Davydov's avatar
      test: fix luatest server cleanup · 32250ed3
      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)
      32250ed3
    • Vladimir Davydov's avatar
      fiber_cond: add static initializer · f576a182
      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)
      f576a182
    • Vladimir Davydov's avatar
      schema: space upgrade fixes · 8970d93d
      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)
      8970d93d
    • Yaroslav Lobankov's avatar
      ci: follow-up improvements for gc64 builds · 6e2fa5d2
      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)
      6e2fa5d2
  6. May 05, 2022
  7. May 04, 2022
    • Nikita Pettik's avatar
      build: include extra directories for main.cc build · d5f7fd53
      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)
      d5f7fd53
    • Nikita Pettik's avatar
      prbuf: fix "wrong argument type" error · 726e818b
      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)
      726e818b
    • Nikita Pettik's avatar
      box/iproto: introduce reqstart to iproto_msg · 52dbf751
      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)
      52dbf751
    • Yaroslav Lobankov's avatar
      ci: enable gc64 builds for opensuse systems · 5212375d
      Yaroslav Lobankov authored
      NO_DOC=ci
      NO_TEST=ci
      NO_CHANGELOG=ci
      
      (cherry picked from commit e73ca8a5)
      5212375d
    • Yaroslav Lobankov's avatar
      ci: enable gc64 builds for debian-like systems · 19b00751
      Yaroslav Lobankov authored
      NO_DOC=ci
      NO_TEST=ci
      NO_CHANGELOG=ci
      
      (cherry picked from commit 0d27174d)
      19b00751
    • artembo's avatar
      ci: use separate repo for gc64 packages · 42cf5d37
      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: default avatarYaroslav Lobankov <y.lobankov@tarantool.org>
      
      (cherry picked from commit 16f47bdf)
      42cf5d37
    • Vladimir Davydov's avatar
      alter: fix space upgrade check · aaa72654
      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)
      aaa72654
  8. Apr 29, 2022
  9. Apr 28, 2022
    • Vladimir Davydov's avatar
      errinj: add SPACE_UPGRADE_DELAY error injection · 8ee56df0
      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)
      8ee56df0
    • Vladimir Davydov's avatar
      space_upgrade: pass format to space_upgrade_new · 30470af9
      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)
      30470af9
    • Vladimir Davydov's avatar
      test: check space upgrade stubs · 11704cd1
      Vladimir Davydov authored
      Follow-up commit 38b25832 ("box: add space upgrade stubs").
      
      NO_DOC=test
      NO_CHANGELOG=test
      
      (cherry picked from commit 764d18ab)
      11704cd1
    • Vladimir Davydov's avatar
      test: add skip_if_enterprise luatest helper · 5461326d
      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)
      5461326d
    • Vladimir Davydov's avatar
      func_cache: add space upgrade func holder type · 344acf07
      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)
      344acf07
    • Vladimir Davydov's avatar
      opt_def: make opt_def::enum_strs const char *const * · b414dfb0
      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)
      b414dfb0
    • Vladimir Davydov's avatar
      field_def: pass char ** instead of char * to field_def_array_decode · 357a1af1
      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)
      357a1af1
    • Yaroslav Lobankov's avatar
      ci: fix jepsen testing · dc251fdf
      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)
      dc251fdf
    • Yaroslav Lobankov's avatar
      cmake: drop --vardir option when running tests · 07e75c62
      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)
      07e75c62
    • Yaroslav Lobankov's avatar
      luatest: use /tmp/t as default socket dir · 1a65c7c4
      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)
      1a65c7c4
    • Yaroslav Lobankov's avatar
      ci: add VARDIR to PRESERVE_ENVVARS env variable · e8b61db8
      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)
      e8b61db8
Loading