[Tarantool-patches] [PATCH v3 03/20] sql: move sql_prepare() declaration to box/execute.h

Sergey Ostanevich sergos at tarantool.org
Tue Dec 24 14:40:08 MSK 2019


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
> 


More information about the Tarantool-patches mailing list