From: Sergey Ostanevich <sergos@tarantool.org>
To: Nikita Pettik <korablev@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH v3 03/20] sql: move sql_prepare() declaration to box/execute.h
Date: Tue, 24 Dec 2019 14:40:08 +0300 [thread overview]
Message-ID: <20191224114008.GD19594@tarantool.org> (raw)
In-Reply-To: <d029d1378ca5dabf4b899c491f6ead8d1c59823d.1576844632.git.korablev@tarantool.org>
Hi!
Thanks for the patch. LGTM.
Regards,
Sergos
On 20 Dec 15:47, Nikita Pettik wrote:
> 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 e43011dd0..00ca15413 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-12-24 11:40 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-20 12:47 [Tarantool-patches] [PATCH v3 00/20] sql: prepared statements 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 [this message]
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 ` [Tarantool-patches] [PATCH v3 00/20] sql: prepared statements Nikita Pettik
2019-12-31 8:39 ` 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=20191224114008.GD19594@tarantool.org \
--to=sergos@tarantool.org \
--cc=korablev@tarantool.org \
--cc=tarantool-patches@dev.tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH v3 03/20] 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