From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: Kirill Shcherbatov <kshcherbatov@tarantool.org>, tarantool-patches@freelists.org Subject: [tarantool-patches] Re: [PATCH v6 3/4] sql: space_def* instead of Table* in Expr Date: Wed, 16 May 2018 15:33:10 +0300 [thread overview] Message-ID: <3d8ffe27-4d38-3d8d-eb08-d40adfc27783@tarantool.org> (raw) In-Reply-To: <6702e8ecd47238730a4ba27e87fe7bf082a874c6.1526403792.git.kshcherbatov@tarantool.org> Hello. See below 3 minor comments. On 15/05/2018 20:03, Kirill Shcherbatov wrote: > This patch allows to remove Checks from SQL to > server as sqlite3ResolveSelfReference requires > Expr structure pointer. > > Part of #3272. > --- > src/box/field_def.c | 1 + > src/box/field_def.h | 14 +++++ > src/box/sql.c | 20 +++--- > src/box/sql/alter.c | 2 +- > src/box/sql/analyze.c | 2 +- > src/box/sql/build.c | 100 +++++++++++------------------- > src/box/sql/delete.c | 4 +- > src/box/sql/expr.c | 158 ++++++++++++++++++++++++++---------------------- > src/box/sql/fkey.c | 18 +++--- > src/box/sql/insert.c | 47 ++++++++------ > src/box/sql/pragma.c | 10 +-- > src/box/sql/resolve.c | 12 ++-- > src/box/sql/select.c | 26 +++++--- > src/box/sql/sqliteInt.h | 44 +++----------- > src/box/sql/update.c | 35 +++++------ > src/box/sql/vdbe.c | 26 ++++---- > src/box/sql/vdbeaux.c | 37 ------------ > src/box/sql/vdbemem.c | 18 +++--- > src/box/sql/where.c | 15 +++-- > src/box/sql/wherecode.c | 35 ++++++----- > src/box/sql/whereexpr.c | 6 +- > 21 files changed, 293 insertions(+), 337 deletions(-) > > diff --git a/src/box/sql/expr.c b/src/box/sql/expr.c > index 119940c..9a8f045 100644 > --- a/src/box/sql/expr.c > +++ b/src/box/sql/expr.c > @@ -3519,45 +3526,48 > -/* > +/** > * Generate code to extract the value of the iCol-th column of a table. > + * @param v The VDBE under construction. > + * @param space_def Space definition. > + * @param iTabCur The PK cursor. > + * @param iCol Index of the column to extract. > + * @param regOut Extract the value into this register. 1. Lets move this comment to the header. > */ > void > -sqlite3ExprCodeGetColumnOfTable(Vdbe * v, /* The VDBE under construction */ > - Table * pTab, /* The table containing the value */ > - int iTabCur, /* The PK cursor */ > - int iCol, /* Index of the column to extract */ > - int regOut /* Extract the value into this register */ > - ) > +sqlite3ExprCodeGetColumnOfTable(Vdbe *v, struct space_def *space_def, > + int iTabCur, int iCol, int regOut) > { > sqlite3VdbeAddOp3(v, OP_Column, iTabCur, iCol, regOut); > if (iCol >= 0) { > - sqlite3ColumnDefault(v, pTab, iCol, regOut); > + sqlite3ColumnDefault(v, space_def, iCol, regOut); > } > } > > -/* > +/** > * Generate code that will extract the iColumn-th column from > * table pTab and store the column value in a register. > * > - * An effort is made to store the column value in register iReg. This > - * is not garanteeed for GetColumn() - the result can be stored in > - * any register. But the result is guaranteed to land in register iReg > - * for GetColumnToReg(). > + * An effort is made to store the column value in register iReg. > + * This is not garanteeed for GetColumn() - the result can be > + * stored in any register. But the result is guaranteed to land > + * in register iReg for GetColumnToReg(). > + * @param pParse Parsing and code generating context. > + * @param space_def Space definition. > + * @param iColumn Index of the table column. > + * @param iTable The cursor pointing to the table. > + * @param iReg Store results here. > + * @param p5 P5 value for OP_Column + FLAGS. > + * @return iReg value. 2. Same. > */ > int > -sqlite3ExprCodeGetColumn(Parse * pParse, /* Parsing and code generating context */ > - Table * pTab, /* Description of the table we are reading from */ > - int iColumn, /* Index of the table column */ > - int iTable, /* The cursor pointing to the table */ > - int iReg, /* Store results here */ > - u8 p5 /* P5 value for OP_Column + FLAGS */ > - ) > +sqlite3ExprCodeGetColumn(Parse *pParse, struct space_def *space_def, > + int iColumn, int iTable, int iReg, u8 p5) > { > Vdbe *v = pParse->pVdbe; > int i; > @@ -3572,7 +3582,7 @@ sqlite3ExprCodeGetColumn(Parse * pParse, /* Parsing and code generating context > } > } > assert(v != 0); > - sqlite3ExprCodeGetColumnOfTable(v, pTab, iTable, iColumn, iReg); > + sqlite3ExprCodeGetColumnOfTable(v, space_def, iTable, iColumn, iReg); > if (p5) { > sqlite3VdbeChangeP5(v, p5); > } else { > @@ -3581,16 +3591,22 @@ sqlite3ExprCodeGetColumn(Parse * pParse, /* Parsing and code generating context > return iReg; > } > > +/** > + * Generate code that will extract the iColumn-th column from > + * table pTab and store the column value in a register, copy the > + * result. > + * @param pParse Parsing and code generating context. > + * @param space_def Space definition. > + * @param iColumn Index of the table column. > + * @param iTable The cursor pointing to the table. > + * @param iReg Store results here. 3. Same.
next prev parent reply other threads:[~2018-05-16 12:33 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-15 17:03 [tarantool-patches] [PATCH v6 0/4] sql: moved Checks to server Kirill Shcherbatov 2018-05-15 17:03 ` [tarantool-patches] [PATCH v6 1/4] sql: fix code style in sqlite3Pragma Kirill Shcherbatov 2018-05-15 17:03 ` [tarantool-patches] [PATCH v6 2/4] sql: remove SQL fields from Table and Column Kirill Shcherbatov 2018-05-17 17:25 ` [tarantool-patches] " n.pettik 2018-05-18 15:35 ` Kirill Shcherbatov 2018-05-18 17:24 ` n.pettik 2018-05-18 19:45 ` Kirill Shcherbatov 2018-05-18 20:13 ` n.pettik 2018-05-15 17:03 ` [tarantool-patches] [PATCH v6 3/4] sql: space_def* instead of Table* in Expr Kirill Shcherbatov 2018-05-16 12:33 ` Vladislav Shpilevoy [this message] 2018-05-16 13:10 ` [tarantool-patches] " Kirill Shcherbatov 2018-05-16 13:11 ` Vladislav Shpilevoy [not found] ` <26E4269B-2BCB-42C3-8216-D51E290E4723@corp.mail.ru> 2018-05-18 15:26 ` Kirill Shcherbatov 2018-05-18 17:04 ` n.pettik 2018-05-21 12:48 ` [tarantool-patches] " Nikita Pettik 2018-05-15 17:03 ` [tarantool-patches] [PATCH v6 4/4] sql: remove Checks to server Kirill Shcherbatov 2018-05-16 17:59 ` [tarantool-patches] " Vladislav Shpilevoy 2018-05-16 11:52 ` [tarantool-patches] Re: [PATCH v6 0/4] sql: moved " Vladislav Shpilevoy 2018-05-16 13:13 ` Kirill Shcherbatov 2018-05-23 5:19 ` 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=3d8ffe27-4d38-3d8d-eb08-d40adfc27783@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=kshcherbatov@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='[tarantool-patches] Re: [PATCH v6 3/4] sql: space_def* instead of Table* in Expr' \ /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