[Tarantool-patches] [PATCH v5 00/52] Move mem-related functions to mem.c/mem.h

imeevma at tarantool.org imeevma at tarantool.org
Fri Apr 9 19:51:19 MSK 2021


This patch-set moves all MEM-related functions to mem.c and mem.h. This is done
to encapsulate struct MEM whicl allows us to simplify addition of new field
types.

https://github.com/tarantool/tarantool/issues/5818
https://github.com/tarantool/tarantool/tree/imeevma/gh-5818-encapsulate-mem-type-checking-and-changing

Changes in v5:
  - Review fixes.

Changes in v4:
  - Patch-set was completely reworked.

Changes in v3:
  - Inlined most of the introduced functions to improve performance.
  - Some other fixes in code to improve performance.

Changes in v2:
  - Squashed almost all patches.
  - Review fixes.

Mergen Imeev (52):
  sql: enhance vdbe_decode_msgpack_into_mem()
  sql: disable unused code in sql/analyze.c
  sql: disable unused code in sql/legacy.c
  sql: remove NULL-termination in OP_ResultRow
  sql: move MEM-related functions to mem.c/mem.h
  sql: refactor port_vdbemem_*() functions
  sql: remove unused MEM-related functions
  sql: disable unused code in sql/vdbemem.c
  sql: introduce mem_str()
  sql: introduce mem_create()
  sql: introduce mem_destroy()
  sql: introduce mem_is_*() functions()
  sql: introduce mem_copy()
  sql: introduce mem_copy_as_ephemeral()
  sql: rework mem_move()
  sql: rework vdbe_decode_msgpack_into_mem()
  sql: remove sql_column_to_messagepack()
  sql: introduce mem_concat()
  sql: introduce arithmetic operations for MEM
  sql: introduce mem_compare()
  sql: introduce bitwise operations for MEM
  sql: Initialize MEM in sqlVdbeAllocUnpackedRecord()
  sql: introduce mem_set_null()
  sql: introduce mem_set_int()
  sql: introduce mem_set_uint()
  sql: move mem_set_bool() and mem_set_double()
  sql: introduce mem_set_str_*() functions
  sql: introduce mem_copy_str() and mem_copy_str0()
  sql: introduce mem_set_bin_*() functions
  sql: introduce mem_copy_bin()
  sql: introduce mem_set_zerobin()
  sql: introduce mem_set_*() for map and array
  sql: introduce mem_set_invalid()
  sql: refactor mem_set_ptr()
  sql: introduce mem_set_frame()
  sql: introduce mem_set_agg()
  sql: introduce mem_set_null_clear()
  sql: move MEM flags to mem.c
  sql: introduce mem_to_int*() functions
  sql: introduce mem_to_double()
  sql: introduce mem_to_number()
  sql: introduce mem_to_str() and mem_to_str0()
  sql: introduce mem_cast_explicit()
  sql: introduce mem_cast_implicit()
  sql: introduce mem_get_int()
  sql: introduce mem_get_uint()
  sql: introduce mem_get_double()
  sql: introduce mem_get_bool()
  sql: introduce mem_get_str0() and mem_as_str0()
  sql: introduce mem_get_bin()
  sql: introduce mem_get_bytes_len()
  sql: introduce mem_get_agg()

 src/box/CMakeLists.txt  |    1 +
 src/box/execute.c       |  130 +-
 src/box/sql.c           |   96 +-
 src/box/sql.h           |    8 -
 src/box/sql/analyze.c   |   82 +-
 src/box/sql/build.c     |    1 +
 src/box/sql/func.c      |  581 ++-----
 src/box/sql/insert.c    |    1 +
 src/box/sql/legacy.c    |    4 +
 src/box/sql/main.c      |    1 +
 src/box/sql/mem.c       | 3176 +++++++++++++++++++++++++++++++++++++++
 src/box/sql/mem.h       |  751 +++++++++
 src/box/sql/pragma.c    |    1 +
 src/box/sql/printf.c    |   13 +-
 src/box/sql/select.c    |    3 +-
 src/box/sql/sqlInt.h    |  153 +-
 src/box/sql/trigger.c   |    1 +
 src/box/sql/vdbe.c      | 1301 ++++------------
 src/box/sql/vdbe.h      |    1 -
 src/box/sql/vdbeInt.h   |  313 +---
 src/box/sql/vdbeapi.c   |  432 ++----
 src/box/sql/vdbeaux.c   |  632 +-------
 src/box/sql/vdbemem.c   | 1329 +---------------
 src/box/sql/vdbesort.c  |    9 +-
 src/box/sql/vdbetrace.c |   35 +-
 src/box/sql/where.c     |    1 +
 src/box/sql/whereexpr.c |    6 +-
 27 files changed, 4667 insertions(+), 4395 deletions(-)
 create mode 100644 src/box/sql/mem.c
 create mode 100644 src/box/sql/mem.h

-- 
2.25.1



More information about the Tarantool-patches mailing list