From: Nikita Pettik <korablev@tarantool.org> To: tarantool-patches@dev.tarantool.org Cc: v.shpilevoy@tarantool.org Subject: [Tarantool-patches] [PATCH v2 03/16] sql: move sql_prepare() declaration to box/execute.h Date: Thu, 21 Nov 2019 00:28:02 +0300 [thread overview] Message-ID: <a8414d4ae6b728ee561c563b3167ef6eec080450.1574277369.git.korablev@tarantool.org> (raw) In-Reply-To: <cover.1574277369.git.korablev@tarantool.org> In-Reply-To: <cover.1574277369.git.korablev@tarantool.org> We are going to split sql_prepare_and_execute() into several explicit and logically separated steps: 1. sql_prepare() -- compile VDBE byte-code 2. sql_bind() -- bind variables (if there are any) 3. sql_execute() -- query (byte-code) execution in virtual machine For instance, for dry-run we are interested only in query preparation. Contrary, if we had prepared statement cache, we could skip query preparation and handle only bind and execute steps. To avoid inclusion of sql/sqlInt.h header (which gathers almost all SQL specific functions and constants) let's move sql_prepare() to box/execute.h header (which already holds sql_prepare_and_execute()). Needed for #3292 --- src/box/execute.h | 12 ++++++++++++ src/box/sql/analyze.c | 1 + src/box/sql/legacy.c | 1 + src/box/sql/sqlInt.h | 12 ------------ 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/box/execute.h b/src/box/execute.h index a2fd4d1b7..a6000c08b 100644 --- a/src/box/execute.h +++ b/src/box/execute.h @@ -89,6 +89,18 @@ struct port_sql { extern const struct port_vtab port_sql_vtab; +/** + * Prepare (compile into VDBE byte-code) statement. + * + * @param sql UTF-8 encoded SQL statement. + * @param length Length of @param sql in bytes. + * @param[out] stmt A pointer to the prepared statement. + * @param[out] sql_tail End of parsed string. + */ +int +sql_prepare(const char *sql, int length, struct sql_stmt **stmt, + const char **sql_tail); + #if defined(__cplusplus) } /* extern "C" { */ #endif diff --git a/src/box/sql/analyze.c b/src/box/sql/analyze.c index 1eba1e206..9a66f8254 100644 --- a/src/box/sql/analyze.c +++ b/src/box/sql/analyze.c @@ -106,6 +106,7 @@ */ #include "box/box.h" +#include "box/execute.h" #include "box/index.h" #include "box/key_def.h" #include "box/schema.h" diff --git a/src/box/sql/legacy.c b/src/box/sql/legacy.c index 16507b334..e3a2c77ca 100644 --- a/src/box/sql/legacy.c +++ b/src/box/sql/legacy.c @@ -37,6 +37,7 @@ */ #include "sqlInt.h" +#include "box/execute.h" #include "box/session.h" /* diff --git a/src/box/sql/sqlInt.h b/src/box/sql/sqlInt.h index ac1d8ce42..3ca10778e 100644 --- a/src/box/sql/sqlInt.h +++ b/src/box/sql/sqlInt.h @@ -468,18 +468,6 @@ typedef void (*sql_destructor_type) (void *); #define SQL_STATIC ((sql_destructor_type)0) #define SQL_TRANSIENT ((sql_destructor_type)-1) -/** - * Prepare (compile into VDBE byte-code) statement. - * - * @param sql UTF-8 encoded SQL statement. - * @param length Length of @param sql in bytes. - * @param[out] stmt A pointer to the prepared statement. - * @param[out] sql_tail End of parsed string. - */ -int -sql_prepare(const char *sql, int length, struct sql_stmt **stmt, - const char **sql_tail); - int sql_step(sql_stmt *); -- 2.15.1
next prev parent reply other threads:[~2019-11-20 21:28 UTC|newest] Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-20 21:27 [Tarantool-patches] [PATCH v2 00/16] sql: prepared statements Nikita Pettik 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 01/16] sql: remove sql_prepare_v2() Nikita Pettik 2019-12-04 11:36 ` Konstantin Osipov 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 02/16] sql: refactor sql_prepare() and sqlPrepare() Nikita Pettik 2019-12-03 22:51 ` Vladislav Shpilevoy 2019-12-04 11:36 ` Konstantin Osipov 2019-11-20 21:28 ` Nikita Pettik [this message] 2019-12-04 11:37 ` [Tarantool-patches] [PATCH v2 03/16] sql: move sql_prepare() declaration to box/execute.h Konstantin Osipov 2019-12-05 13:32 ` Nikita Pettik 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 04/16] sql: rename sqlPrepare() to sql_compile() Nikita Pettik 2019-12-03 22:51 ` Vladislav Shpilevoy 2019-12-13 13:49 ` Nikita Pettik 2019-12-04 11:39 ` Konstantin Osipov 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 05/16] sql: move sql_finalize() to execute.h Nikita Pettik 2019-12-03 22:51 ` Vladislav Shpilevoy 2019-12-04 11:39 ` Konstantin Osipov 2019-12-13 13:49 ` Nikita Pettik 2019-12-04 11:40 ` Konstantin Osipov 2019-12-05 13:37 ` Nikita Pettik 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 06/16] port: increase padding of struct port Nikita Pettik 2019-12-04 11:42 ` Konstantin Osipov 2019-12-13 13:54 ` Nikita Pettik 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 07/16] port: add dump format and request type to port_sql Nikita Pettik 2019-12-03 22:51 ` Vladislav Shpilevoy 2019-12-13 13:55 ` Nikita Pettik 2019-12-04 11:52 ` Konstantin Osipov 2019-12-13 13:53 ` Nikita Pettik 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 08/16] sql: resurrect sql_bind_parameter_count() function Nikita Pettik 2019-12-03 22:51 ` Vladislav Shpilevoy 2019-12-04 11:54 ` Konstantin Osipov 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 09/16] sql: resurrect sql_bind_parameter_name() Nikita Pettik 2019-12-04 11:55 ` Konstantin Osipov 2019-12-04 11:55 ` Konstantin Osipov 2019-12-13 13:55 ` Nikita Pettik 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 10/16] sql: add sql_stmt_schema_version() Nikita Pettik 2019-12-04 11:57 ` Konstantin Osipov 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 11/16] sql: introduce sql_stmt_sizeof() function Nikita Pettik 2019-12-03 22:51 ` Vladislav Shpilevoy 2019-12-13 13:56 ` Nikita Pettik 2019-12-04 11:59 ` Konstantin Osipov 2019-12-13 13:56 ` Nikita Pettik 2019-12-13 14:15 ` Konstantin Osipov 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 12/16] box: increment schema_version on ddl operations Nikita Pettik 2019-12-04 12:03 ` Konstantin Osipov 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 13/16] sql: introduce sql_stmt_query_str() method Nikita Pettik 2019-12-03 22:51 ` Vladislav Shpilevoy 2019-12-04 12:04 ` Konstantin Osipov 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 14/16] sql: introduce cache for prepared statemets Nikita Pettik 2019-12-03 22:51 ` Vladislav Shpilevoy 2019-12-04 12:11 ` Konstantin Osipov 2019-12-17 14:43 ` Kirill Yukhin 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 15/16] box: introduce prepared statements Nikita Pettik 2019-12-04 12:13 ` Konstantin Osipov 2019-12-06 23:18 ` Vladislav Shpilevoy 2019-11-20 21:28 ` [Tarantool-patches] [PATCH v2 16/16] netbox: " Nikita Pettik 2019-12-06 23:18 ` Vladislav Shpilevoy 2019-12-03 22:51 ` [Tarantool-patches] [PATCH v2 00/16] sql: " Vladislav Shpilevoy 2019-12-17 15:58 ` Georgy Kirichenko
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=a8414d4ae6b728ee561c563b3167ef6eec080450.1574277369.git.korablev@tarantool.org \ --to=korablev@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH v2 03/16] sql: move sql_prepare() declaration to box/execute.h' \ /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