[Tarantool-patches] [PATCH v3 00/20] sql: prepared statements
Nikita Pettik
korablev at tarantool.org
Mon Dec 30 04:13:18 MSK 2019
On 20 Dec 15:47, Nikita Pettik wrote:
I've pushed all preliminary patches to master (I've fixed Sergos's
nits for current version and Vlad's and Konstantin's comments for
previous patch version).
> Branch: https://github.com/tarantool/tarantool/tree/np/gh-2592-prepared-statements-v3
> Issue: https://github.com/tarantool/tarantool/issues/2592
>
> V1: https://lists.tarantool.org/pipermail/tarantool-patches/2019-November/012274.html
> V2: https://lists.tarantool.org/pipermail/tarantool-patches/2019-November/012496.html
>
> Changes in V3 (requested by server team):
>
> - Now there's no eviction policy, so statements reside in 'cache'
> until explicit deallocation via 'unprepare' call or session's
> disconect;
> - instead of string ids, now we use numeric ids which correspond
> to value of hash function applied to the string containing original
> SQL request;
> - in accordance with previous point, 'unprepare' support has been returned;
> - since there's no eviction policy, disconnect event may turn out to
> be expensive (in terms of deallocating all related to the session
> prepared statements). To remove possible spikes in workload, we
> maintain GC queue and reference counters for prepared statements.
> When all sessions (previously refed statement) unref it, statement
> gets into GC queue. In case of prepared statements holder is out
> of memory, GC process is launched: all statements in queue are
> deallocated;
> - to track available in scope of session prepared statements, we
> also maintain session-local map containing statement's IDs
> allocated in this session.
>
> Nikita Pettik (20):
> sql: remove sql_prepare_v2()
> sql: refactor sql_prepare() and sqlPrepare()
> sql: move sql_prepare() declaration to box/execute.h
> sql: rename sqlPrepare() to sql_stmt_compile()
> sql: rename sql_finalize() to sql_stmt_finalize()
> sql: rename sql_reset() to sql_stmt_reset()
> sql: move sql_stmt_finalize() to execute.h
> port: increase padding of struct port
> port: add result set format and request type to port_sql
> sql: resurrect sql_bind_parameter_count() function
> sql: resurrect sql_bind_parameter_name()
> sql: add sql_stmt_schema_version()
> sql: introduce sql_stmt_sizeof() function
> box: increment schema_version on ddl operations
> sql: introduce sql_stmt_query_str() method
> sql: move sql_stmt_busy() declaration to box/execute.h
> sql: introduce holder for prepared statemets
> box: introduce prepared statements
> netbox: introduce prepared statements
> sql: add cache statistics to box.info
>
> src/box/CMakeLists.txt | 1 +
> src/box/alter.cc | 3 +
> src/box/bind.c | 2 +-
> src/box/box.cc | 26 ++
> src/box/box.h | 3 +
> src/box/ck_constraint.c | 7 +-
> src/box/errcode.h | 2 +
> src/box/execute.c | 234 ++++++++++++-
> src/box/execute.h | 60 ++++
> src/box/iproto.cc | 68 +++-
> src/box/iproto_constants.c | 7 +-
> src/box/iproto_constants.h | 5 +
> src/box/lua/cfg.cc | 9 +
> src/box/lua/execute.c | 235 ++++++++++++-
> src/box/lua/execute.h | 2 +-
> src/box/lua/info.c | 25 ++
> src/box/lua/init.c | 2 +-
> src/box/lua/load_cfg.lua | 3 +
> src/box/lua/net_box.c | 98 +++++-
> src/box/lua/net_box.lua | 27 ++
> src/box/session.cc | 35 ++
> src/box/session.h | 17 +
> src/box/sql.c | 3 +
> src/box/sql/analyze.c | 23 +-
> src/box/sql/legacy.c | 3 +-
> src/box/sql/prepare.c | 56 +--
> src/box/sql/sqlInt.h | 51 +--
> src/box/sql/vdbe.c | 4 +-
> src/box/sql/vdbe.h | 2 +-
> src/box/sql/vdbeInt.h | 1 -
> src/box/sql/vdbeapi.c | 113 ++++--
> src/box/sql/vdbeaux.c | 6 +-
> src/box/sql_stmt_cache.c | 305 +++++++++++++++++
> src/box/sql_stmt_cache.h | 153 +++++++++
> src/box/xrow.c | 23 +-
> src/box/xrow.h | 4 +-
> src/lib/core/port.h | 2 +-
> test/app-tap/init_script.result | 37 +-
> test/box/admin.result | 2 +
> test/box/cfg.result | 7 +
> test/box/cfg.test.lua | 1 +
> test/box/info.result | 1 +
> test/box/misc.result | 5 +
> test/sql/engine.cfg | 4 +
> test/sql/iproto.result | 2 +-
> test/sql/prepared.result | 737 ++++++++++++++++++++++++++++++++++++++++
> test/sql/prepared.test.lua | 282 +++++++++++++++
> 47 files changed, 2503 insertions(+), 195 deletions(-)
> create mode 100644 src/box/sql_stmt_cache.c
> create mode 100644 src/box/sql_stmt_cache.h
> create mode 100644 test/sql/prepared.result
> create mode 100644 test/sql/prepared.test.lua
>
> --
> 2.15.1
>
More information about the Tarantool-patches
mailing list