[tarantool-patches] Re: [PATCH] sql: rework VIEW internals
n.pettik
korablev at tarantool.org
Fri Jun 8 16:17:04 MSK 2018
> On 7 Jun 2018, at 23:06, Vladislav Shpilevoy <v.shpilevoy at tarantool.org> wrote:
>
> Thanks for the fixes! See 1 comment below and a commit with my
> fixes on the branch right after your. Most likely, my fixes are
> not passing tests, so please, finish them. I fixed Select * leak on
> exception during trigger_new_xc, and error message. + some style
> fixes.
Thanks for fixes, I have squashed them and tests seem to pass
(Except for 1 run: box/sql.test.lua once failed on timeout, but I’m not sure
that it is my fault: locally on my machine it works fine both as single run and within suite).
The only change I made - added fiber.sleep(0.1) in tests after
box.error.injection.set("ERRINJ_WAL_DELAY", false)
Without it test turns out to be flaky.
>> diff --git a/src/box/sql/build.c b/src/box/sql/build.c
>> index 28e4d7a4d..53bb53ab8 100644
>> --- a/src/box/sql/build.c
>> +++ b/src/box/sql/build.c
>> @@ -2009,230 +2007,99 @@ sqlite3EndTable(Parse * pParse, /* Parse context */
>> int
>> -sql_view_column_names(struct Parse *parse, struct Table *table)
>> +sql_view_assign_cursors(struct Parse *parse, const char *view_stmt)
>> {
>> + assert(view_stmt != NULL);
>> + struct sqlite3 *db = parse->db;
>> + struct Select *select = sql_view_compile(db, view_stmt);
>> if (select == NULL)
>> return -1;
>> - int n = parse->nTab;
>> sqlite3SrcListAssignCursors(parse, select->pSrc);
>
> Where do you free the struct Select?
Nowhere, shame on me..
+++ b/src/box/sql/build.c
@@ -2090,6 +2090,7 @@ sql_view_assign_cursors(struct Parse *parse, const char *view_stmt)
if (select == NULL)
return -1;
sqlite3SrcListAssignCursors(parse, select->pSrc);
+ sql_select_delete(db, select);
More information about the Tarantool-patches
mailing list