From: Nikita Pettik <korablev@tarantool.org>
To: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH v3 00/20] sql: prepared statements
Date: Mon, 30 Dec 2019 03:13:18 +0200 [thread overview]
Message-ID: <20191230011318.GA29831@tarantool.org> (raw)
In-Reply-To: <cover.1576844631.git.korablev@tarantool.org>
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
>
next prev parent reply other threads:[~2019-12-30 1:13 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-20 12:47 Nikita Pettik
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 01/20] sql: remove sql_prepare_v2() Nikita Pettik
2019-12-23 14:03 ` Sergey Ostanevich
2019-12-24 0:51 ` Nikita Pettik
2019-12-27 19:18 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 02/20] sql: refactor sql_prepare() and sqlPrepare() Nikita Pettik
2019-12-24 11:35 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 03/20] sql: move sql_prepare() declaration to box/execute.h Nikita Pettik
2019-12-24 11:40 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 04/20] sql: rename sqlPrepare() to sql_stmt_compile() Nikita Pettik
2019-12-24 12:01 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 05/20] sql: rename sql_finalize() to sql_stmt_finalize() Nikita Pettik
2019-12-24 12:08 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 06/20] sql: rename sql_reset() to sql_stmt_reset() Nikita Pettik
2019-12-24 12:09 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 07/20] sql: move sql_stmt_finalize() to execute.h Nikita Pettik
2019-12-24 12:11 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 08/20] port: increase padding of struct port Nikita Pettik
2019-12-24 12:34 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 09/20] port: add result set format and request type to port_sql Nikita Pettik
2019-12-25 13:37 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 10/20] sql: resurrect sql_bind_parameter_count() function Nikita Pettik
2019-12-24 20:23 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 11/20] sql: resurrect sql_bind_parameter_name() Nikita Pettik
2019-12-24 20:26 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 12/20] sql: add sql_stmt_schema_version() Nikita Pettik
2019-12-25 13:37 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 13/20] sql: introduce sql_stmt_sizeof() function Nikita Pettik
2019-12-25 13:44 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 14/20] box: increment schema_version on ddl operations Nikita Pettik
2019-12-25 14:33 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 15/20] sql: introduce sql_stmt_query_str() method Nikita Pettik
2019-12-25 14:36 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 16/20] sql: move sql_stmt_busy() declaration to box/execute.h Nikita Pettik
2019-12-25 14:54 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 17/20] sql: introduce holder for prepared statemets Nikita Pettik
2019-12-23 20:54 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 18/20] box: introduce prepared statements Nikita Pettik
2019-12-25 15:23 ` Sergey Ostanevich
2019-12-30 10:27 ` Nikita Pettik
2019-12-30 14:15 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 19/20] netbox: " Nikita Pettik
2019-12-25 20:41 ` Sergey Ostanevich
2019-12-30 9:58 ` Nikita Pettik
2019-12-30 14:16 ` Sergey Ostanevich
2019-12-20 12:47 ` [Tarantool-patches] [PATCH v3 20/20] sql: add cache statistics to box.info Nikita Pettik
2019-12-25 20:53 ` Sergey Ostanevich
2019-12-30 9:46 ` Nikita Pettik
2019-12-30 14:23 ` Sergey Ostanevich
2019-12-30 1:13 ` Nikita Pettik [this message]
2019-12-31 8:39 ` [Tarantool-patches] [PATCH v3 00/20] sql: prepared statements Kirill Yukhin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191230011318.GA29831@tarantool.org \
--to=korablev@tarantool.org \
--cc=tarantool-patches@dev.tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH v3 00/20] sql: prepared statements' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox