From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng1.m.smailru.net (smtpng1.m.smailru.net [94.100.181.251]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id EA20E4696C6 for ; Thu, 21 Nov 2019 00:28:27 +0300 (MSK) From: Nikita Pettik Date: Thu, 21 Nov 2019 00:28:09 +0300 Message-Id: <010b113690899c495507d3795718f03dd56bf1f6.1574277369.git.korablev@tarantool.org> In-Reply-To: References: In-Reply-To: References: Subject: [Tarantool-patches] [PATCH v2 10/16] sql: add sql_stmt_schema_version() List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tarantool-patches@dev.tarantool.org Cc: v.shpilevoy@tarantool.org Let's introduce interface function to get schema version of prepared statement. It is required since sturct sql_stmt (i.e. prepared statement) is an opaque object and in fact is an alias to struct Vdbe. Statements with schema version different from the current one are considered to be expired and should be re-compiled. Needed for #2592 --- src/box/sql/sqlInt.h | 3 +++ src/box/sql/vdbeapi.c | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/src/box/sql/sqlInt.h b/src/box/sql/sqlInt.h index 8fc4b79db..22cb9a5e4 100644 --- a/src/box/sql/sqlInt.h +++ b/src/box/sql/sqlInt.h @@ -570,6 +570,9 @@ sql_column_name(sql_stmt *, int N); const char * sql_column_datatype(sql_stmt *, int N); +uint32_t +sql_stmt_schema_version(sql_stmt *stmt); + int sql_initialize(void); diff --git a/src/box/sql/vdbeapi.c b/src/box/sql/vdbeapi.c index c090bd4bb..da528a4dc 100644 --- a/src/box/sql/vdbeapi.c +++ b/src/box/sql/vdbeapi.c @@ -798,6 +798,13 @@ sql_column_decltype(sql_stmt * pStmt, int N) COLNAME_DECLTYPE); } +uint32_t +sql_stmt_schema_version(sql_stmt *stmt) +{ + struct Vdbe *v = (struct Vdbe *) stmt; + return v->schema_ver; +} + /******************************* sql_bind_ ************************** * * Routines used to attach values to wildcards in a compiled SQL statement. -- 2.15.1