Skip to content
Snippets Groups Projects
  1. Apr 15, 2021
    • Mergen Imeev's avatar
      sql: move mem_set_bool() and mem_set_double() · d689a3af
      Mergen Imeev authored
      This patch performs a small refactoring of mem_set_double() and moves
      this function and mem_set_bool() to another place so that they are part
      of the code block containing all mem_set_*() functions.
      
      Part of #5818
      d689a3af
    • Mergen Imeev's avatar
      sql: introduce mem_set_uint() · c4a86696
      Mergen Imeev authored
      This patch introduces mem_set_uint(). This function clears MEM and sets
      it to given unsigned value.
      
      Part of #5818
      c4a86696
    • Mergen Imeev's avatar
      sql: introduce mem_set_int() · c9b6a278
      Mergen Imeev authored
      This patch introduces mem_set_int(). This function clears MEM and sets
      it to given integer value.
      
      Part of #5818
      c9b6a278
    • Mergen Imeev's avatar
      sql: introduce mem_set_null() · 1aad8fdb
      Mergen Imeev authored
      This patch introduces mem_set_null(). This function clears MEM and sets
      it to NULL.
      
      Part of #5818
      1aad8fdb
    • Mergen Imeev's avatar
      sql: Initialize MEM in sqlVdbeAllocUnpackedRecord() · 4d801264
      Mergen Imeev authored
      This patch adds initialization for newly created MEM objects in
      sqlVdbeAllocUnpackedRecord(). Changing a MEM without being
      initialized may give us unexpected result.
      
      Part of #5818
      4d801264
    • Mergen Imeev's avatar
      sql: introduce bitwise operations for MEM · 8bc1b411
      Mergen Imeev authored
      This patch introduces mem_bit_and(), mem_bit_or(), mem_shift_left(),
      mem_shift_right(), and mem_bit_not(), which perform bitwise operations
      on MEM.
      
      Part of #5818
      8bc1b411
    • Mergen Imeev's avatar
      sql: introduce mem_cmp_*() functions · 80cbac4d
      Mergen Imeev authored
      This patch introduces set of mem_cmp_*() functions. These functions are
      used to compare MEMs.
      
      Part of #5818
      80cbac4d
    • Mergen Imeev's avatar
      sql: introduce arithmetic operations for MEM · de0e77f9
      Mergen Imeev authored
      This patch introduces mem_add(), mem_sub(), mem_mul(), mem_div() and
      mem_rem(), which perform arithmetic operations on two MEMs. Operands
      must contain values of numeric types or values that can be converted
      to a number according to implicit casting rules.
      
      Part of #5818
      de0e77f9
    • Mergen Imeev's avatar
      sql: introduce mem_concat() · 0c3d0af3
      Mergen Imeev authored
      This patch introduces mem_concat(). Function mem_concat() concatenates
      values from two MEMs in case these values are strings or binaries and
      writes the result to the third MEM.
      
      Part of #5818
      0c3d0af3
    • Mergen Imeev's avatar
      sql: remove sql_column_to_messagepack() · f9b70495
      Mergen Imeev authored
      Function sql_column_to_messagepack() has almost the same functionality
      as sql_vdbe_mem_encode_tuple(). Due to this it is not necessary to
      have sql_column_to_messagepack(), so it is removed in this commit.
      
      Part of #5818
      f9b70495
    • Mergen Imeev's avatar
      sql: rework vdbe_decode_msgpack_into_mem() · f7a3eff7
      Mergen Imeev authored
      The original vdbe_decode_msgpack_into_mem() returns a MEM that contains
      string and binary values as ephemeral. This patch renames this function
      to mem_from_mp_ephemeral() and introduces new function mem_from_mp(),
      which returns a MEM that contains string and binary values in newly
      allocated memory.
      
      This patch changes behavior for this query:
      
      CREATE TABLE t1(m VARBINARY primary key);
      INSERT INTO t1 VALUES(x'6178'), (x'6278'), (x'6379');
      SELECT count(*), substr(m,2,1) AS mx FROM t1 GROUP BY mx;
      
      Before this patch:
      
      tarantool> SELECT count(*), substr(m,2,1) AS mx FROM t1 GROUP BY mx;
      ---
      - metadata:
        - name: COLUMN_1
          type: integer
        - name: MX
          type: string
        rows:
        - [2, 'y']
        - [1, 'y']
      ...
      
      After this patch.
      
      tarantool> SELECT count(*), substr(m,2,1) AS mx FROM t1 GROUP BY mx;
      ---
      - metadata:
        - name: COLUMN_1
          type: integer
        - name: MX
          type: string
        rows:
        - [2, 'x']
        - [1, 'y']
      ...
      
      Part of #5818
      Closes #5890
      f7a3eff7
    • Mergen Imeev's avatar
      sql: rework mem_move() · 1d24bef8
      Mergen Imeev authored
      This patch reworks mem_move(). This function moves all content of source
      MEM to destination MEM. Source mem is set to NULL.
      
      Part of #5818
      1d24bef8
    • Mergen Imeev's avatar
      sql: introduce mem_copy_as_ephemeral() · aae2c0a3
      Mergen Imeev authored
      This patch intoduces mem_copy_as_ephemeral(). This function copies value
      from source MEM to destination MEM. In case value is of string or binary
      type and its allocation type is not static, it copied as value with
      ephemeral allocation type.
      
      Part of #5818
      aae2c0a3
    • Mergen Imeev's avatar
      sql: introduce mem_copy() · 29c93d02
      Mergen Imeev authored
      This patch introduces mem_copy(). This function copies value from source
      MEM to destination MEM. In case value is string or binary and have not
      static allocation type, it is copied to newly allocated memory.
      
      Part of #5818
      29c93d02
    • Mergen Imeev's avatar
      sql: introduce mem_is_*() functions() · 2d0870fc
      Mergen Imeev authored
      This patch introduces mem_is_*() functions that allows to check current
      MEM state.
      
      Part of #5818
      2d0870fc
    • Mergen Imeev's avatar
      sql: introduce mem_destroy() · 65959761
      Mergen Imeev authored
      This patch introduces mem_destroy(). This function should be used to
      free and destroy all objects owned by MEM, if necessary.
      
      Part of #5818
      65959761
    • Mergen Imeev's avatar
      sql: introduce mem_create() · 5360768a
      Mergen Imeev authored
      This patch introduces mem_create(). This function should be used to
      initialize a MEM. MEM should be initialized before usage.
      
      Part of #5818
      5360768a
    • Mergen Imeev's avatar
      sql: introduce mem_str() · c976ea84
      Mergen Imeev authored
      This patch introduces mem_str() which allows to receive value of MEM as
      a string. Due to the limitations of static_alloc(), this function cannot
      be used to safely retrieve a value of MEM converted to string. This
      function is suitable for debugging, displaying the value in an error
      message, etc.
      
      Part of #5818
      c976ea84
    • Mergen Imeev's avatar
      sql: disable unused code in sql/vdbemem.c · c14e14f9
      Mergen Imeev authored
      This patch disables unused code in sql/vdbemem.c. It will simplify
      refactoring.
      
      Part of #5818
      c14e14f9
    • Mergen Imeev's avatar
      sql: remove unused MEM-related functions · 91ec46e4
      Mergen Imeev authored
      Part of #5818
      91ec46e4
    • Mergen Imeev's avatar
      sql: refactor port_vdbemem_*() functions · 5bc230c6
      Mergen Imeev authored
      This patch simplifies port_vdbemem_dump_lua() and
      port_vdbemem_get_msgpack() functions.
      
      Part of #5818
      5bc230c6
    • Mergen Imeev's avatar
      sql: move MEM-related functions to mem.c/mem.h · 89db11f4
      Mergen Imeev authored
      This patch moves all MEM-related functions in mem.c/mem.h.
      
      Part of #5818
      89db11f4
    • Mergen Imeev's avatar
      sql: remove NULL-termination in OP_ResultRow · c60fff92
      Mergen Imeev authored
      There is no need for NULL-termination, since MEMs converted to msgpack
      and msgpack do not require NULL-terminated strings.
      
      Needed for #5818
      c60fff92
    • Mergen Imeev's avatar
      sql: disable unused code in sql/legacy.c · bc4b8459
      Mergen Imeev authored
      This patch disables unused code in sql/legacy.c. It will simplify
      refactoring.
      
      Needed for #5818
      bc4b8459
    • Mergen Imeev's avatar
      sql: disable unused code in sql/analyze.c · 743d6d40
      Mergen Imeev authored
      This patch disables unused code in sql/analyze.c. It will simplify
      refactoring.
      
      Needed for #5818
      743d6d40
    • Mergen Imeev's avatar
      sql: enhance vdbe_decode_msgpack_into_mem() · da9b7ea7
      Mergen Imeev authored
      Currently, vdbe_decode_msgpack_into_mem() creates a MEM that is not
      properly initialized in case msgpack contains MP_EXT, MP_MAP, or
      MP_ARRAY fields. This patch makes it so that after execution of this
      function, all created MEMs are properly initialized.
      
      Closes #5011
      Closes #5704
      Closes #5913
      Needed for #5818
      da9b7ea7
    • Alexander Turenko's avatar
      security: update libcurl from 7.71.1 to 7.76.0 · c0e253fe
      Alexander Turenko authored
      The reason of the update is to protect us against possible MITM attack
      from a malicious HTTPS proxy server with trusted certificate when TLS
      1.3 is used (CVE-2021-22890, [1]). libcurl versions prior to 7.76.0 can
      skip a TLS handshake with a target host in this circumstances.
      
      Other vulnerabilities fixed in the (7.71.1; 7.76.0] version range do not
      look relevant to our built-in http client. See [2] for the full list.
      
      The CMake version requirement is updated from 3.1 to 3.2, because curl's
      CMakeLists.txt has the following clause at beginning:
      
       | cmake_minimum_required(VERSION 3.2...3.16 FATAL_ERROR)
      
      (It was there in vanilla curl 7.71.1 too and we had to remove it in
      order to support CMake 2. Now we don't support CMake 2, so it is good
      time to get rid of the extra patch upward vanilla curl repository.)
      
      According to the CMake versions table in
      8a7702b1 ('github-ci: purge Debian
      Jessie from CI'), CMake 3.2+ is available on all supported OSes.
      
      [1]: https://curl.se/docs/CVE-2021-22890.html
      [2]: https://curl.se/docs/vulnerabilities.html
      
      @TarantoolBot document
      Title: Now we require CMake 3.2 to build tarantool
      
      In https://github.com/tarantool/doc/issues/1780 we requested to update
      the CMake minimum version to 3.1. Now it is time for 3.2. See details in
      the linked commit.
      
      Please, update the 'Building from source' manual.
      c0e253fe
  2. Apr 14, 2021
    • Roman Khabibov's avatar
      build: install libcurl headers · 38d0b0c1
      Roman Khabibov authored
      Ship libcurl headers to system path "${PREFIX}/include/tarantool"
      in the case of libcurl included as bundled library or static
      build. It is needed to use SMTP client with tarantool's libcurl
      instead of system libcurl.
      
      See related issue: https://github.com/tarantool/smtp/issues/24
      
      Closes #4559
      Unverified
      38d0b0c1
    • Roman Khabibov's avatar
      build: enable smtp · 4bde1dbc
      Roman Khabibov authored
      Enable smtp and smtps protocols in bundled libcurl. It is needed
      to use SMTP client with tarantool's libcurl instead of system
      libcurl.
      
      See related issue: https://github.com/tarantool/smtp/issues/24
      
      Part of #4559
      Unverified
      4bde1dbc
    • Alexander V. Tikhonov's avatar
      test: ASAN leak on feedback demon call using cURL · c5049edc
      Alexander V. Tikhonov authored
      Found that after patch set of 5 commits:
      
        aa97a185 ("feedback_daemon: count and report some events")
        e9c9832a ("feedback_daemon: generate report right before sending")
        bc15e0f0 ("feedback_daemon: send feedback on server start")
        670acf0d ("feedback_daemon: rename `send_test` to `send`")
        c5d595bc ("feedback_daemon: include server uptime in the report")
      
      began to leak feedback demon on using cURL. To avoid of it decided to
      add LSAN suppresions:
      
        1. for /lib/x86_64-linux-gnu/libcrypto.so
           leak:libcrypto.so*
        2. for /lib/x86_64-linux-gnu/libssl.so
           leak:libssl.so*
      
      Needed for tarantool/tarantool-qa#116
      c5049edc
    • Sergey Kaplun's avatar
      luajit: bump new version · 8a09e18c
      Sergey Kaplun authored
      LuaJIT submodule is bumped to introduce the following changes:
      * test: disable too deep recursive PUC-Rio test
      * test: disable PUC-Rio hanging GC test
      * test: disable PUC-Rio test checking -h option
      * test: disable PUC-Rio test for checking arg layout
      * test: disable PUC-Rio tests for several -l options
      * test: disable PUC-Rio test for syntax level error
      * test: disable PUC-Rio test for non-ascii variable
      * test: disable PUC-Rio test for fast function name
      * test: disable PUC-Rio test for variables in error
      * test: disable PUC-Rio test for getfenv in tailcall
      * test: remove string.gfind assert in PUC-Rio test
      * test: use math.fmod in PUC-Rio tests
      * test: disable locale-dependent PUC-Rio tests
      * test: adapt PUC-Rio test for %q in string.format
      * test: disable PUC-Rio test for per-coroutine hooks
      * test: adapt PUC-Rio test with activeline check
      * test: disable PUC-Rio test for tailcall info
      * test: adapt PUC-Rio test with count hooks
      * test: adapt PUC-Rio test for debug in vararg func
      * test: adapt PUC-Rio tests with vararg functions
      * test: disable PUC-Rio suite tests for line hook
      * test: adapt PUC-Rio tests counting GC steps
      * test: disable PUC-Rio tests for bytecode header
      * test: disable PUC-Rio tests confused by -v output
      * test: adapt PUC-Rio test for arg presence
      * test: remove quotes in progname from PUC-Rio
      * test: adapt PUC-Rio suite for out-of-source build
      * test: build auxiliary C libs from PUC-Rio Lua 5.1
      * test: add PUC-Rio Lua 5.1 test suite
      
      Within this changeset PUC-Rio Lua 5.1 suite[1] is added to Tarantool
      testing. Considering Tarantool specific changes in runtime the suite
      itself is adjusted in LuaJIT submodule.
      
      <test/luajit-test-init.lua> pretest runner is adjusted by setting custom
      `_loadstring()` and `_dofile()` global function to run tests correctly
      for out-of-source build.
      
      Also, this patch excludes PUC-Rio-Lua-5.1 test suite from ASAN checks.
      
      [1]: https://www.lua.org/tests/lua5.1-tests.tar.gz
      
      
      
      Closes #5845
      Closes #5686
      Closes #5694
      Closes #5701
      Closes #5708
      Closes #5710
      Closes #5711
      Closes #5712
      Part of #4473
      
      Reviewed-by: default avatarIgor Munkin <imun@tarantool.org>
      Signed-off-by: default avatarIgor Munkin <imun@tarantool.org>
      Unverified
      8a09e18c
    • Aleksandr Lyapunov's avatar
      box: add successor argument in replace function · 07b7062b
      Aleksandr Lyapunov authored
      Add an argument which will receive successor of the inserted tuple.
      
      Part of #5628
      07b7062b
    • Aleksandr Lyapunov's avatar
      bps: add successor argument to insertion function · bf3c3b4b
      Aleksandr Lyapunov authored
      Common insertion function in BSP tree can make a replacement
      or insertion.
      
      When a replacement happens, a replaced element is returned via
      special agrument.
      
      Let's add another argument of the function for the case of
      insetion: an element before which then insertion happened will
      be returned via that argument.
      
      Part of #5628
      bf3c3b4b
    • Aleksandr Lyapunov's avatar
      txm: fix space len and count calculation · df7af443
      Aleksandr Lyapunov authored
      When MVCC engine is enabled, an index can contain temporary
      non-committed tuples that are not visible outside their
      transaction.
      
      That's why internal index size can be greater than visible by
      standalone observer.
      
      In order to fix space:count and index:count etc we have to use
      special adjustment from MVCC engine.
      
      Fixes #5972
      df7af443
    • Aleksandr Lyapunov's avatar
      txm: implement point hole trackers · 27a496b7
      Aleksandr Lyapunov authored
      TX manager has a problem, kwown as phantom read.
      If a transaction reads a value by key and founds nothing, even
      no dirty tuples, then the read is not recorded anywhere.
      
      Implement a special storage for point reads that founds nothing,
      and use it in conflict resolution.
      
      Part of #5628
      27a496b7
    • Aleksandr Lyapunov's avatar
      box: add unique ID to index · 26428c0c
      Aleksandr Lyapunov authored
      Part of #5628
      26428c0c
    • Aleksandr Lyapunov's avatar
      txm: fix a bug that happened with alter · 45e828d9
      Aleksandr Lyapunov authored
      See test for details.
      
      Part of #5628
      45e828d9
    • Aleksandr Lyapunov's avatar
      txm: simlification: don't link stories with clean tuples · 8f502d1f
      Aleksandr Lyapunov authored
      Before this patch there was a way to build history of a key when
      the terminal element in list is a clean tuple, not its
      story. That was a kind of optimization desigend to avoid excess
      story creation.
      
      Unfortunately that kind of otimization is possible to use only
      for one-index spaces, and even in that case it doesn't work.
      
      Let's remove optimization that doesn't work.
      
      Part of #5628
      8f502d1f
    • Aleksandr Lyapunov's avatar
      box: remove unused check · 7d511a1a
      Aleksandr Lyapunov authored
      Since DUP_REPLACE mode is always used with given old_tuple,
      there's no reason to check in runtime
      
      Part of #5628
      7d511a1a
    • Aleksandr Lyapunov's avatar
      txm: code reorder · 1210648e
      Aleksandr Lyapunov authored
      Part of #5628
      1210648e
Loading