diff --git a/src/box/execute.c b/src/box/execute.c index f88572d220c9eabb8a61ef728a7f27677c0775bb..5dc40f6abc57d93eb521786323c96d9b12f4242a 100644 --- a/src/box/execute.c +++ b/src/box/execute.c @@ -284,7 +284,8 @@ xrow_decode_sql(const struct xrow_header *row, struct sql_request *request, if (sql_bind_list_decode(request, value, region) != 0) return -1; } else { - request->sql_text = value; + request->sql_text = + mp_decode_str(&value, &request->sql_text_len); } } if (request->sql_text == NULL) { @@ -594,8 +595,7 @@ sql_prepare_and_execute(const struct sql_request *request, struct sql_response *response, struct region *region) { const char *sql = request->sql_text; - uint32_t len; - sql = mp_decode_str(&sql, &len); + uint32_t len = request->sql_text_len; struct sqlite3_stmt *stmt; sqlite3 *db = sql_get(); if (db == NULL) { diff --git a/src/box/execute.h b/src/box/execute.h index 77bfd7913d1639136ce51631ea7177540374084a..79cee69b277b24518f7c659fa9bea6383a7233f4 100644 --- a/src/box/execute.h +++ b/src/box/execute.h @@ -58,6 +58,8 @@ struct sql_request { uint64_t sync; /** SQL statement text. */ const char *sql_text; + /** Length of the SQL statement text. */ + uint32_t sql_text_len; /** Array of parameters. */ struct sql_bind *bind; /** Length of the @bind. */