[tarantool-patches] Re: [PATCH 4/6] sql: refactor getNewIid() function
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Mon Jan 14 17:05:50 MSK 2019
Thanks for the patch! See 1 comment below.
On 09/01/2019 15:13, Nikita Pettik wrote:
> This commit includes no functional changes. Lets simply rewrite
> getNewIid() function according to Tarantool codestyle.
>
> Part of #3914
> ---
> src/box/sql/build.c | 72 ++++++++++++++++++++++++++---------------------------
> 1 file changed, 35 insertions(+), 37 deletions(-)
>
> diff --git a/src/box/sql/build.c b/src/box/sql/build.c
> index 9d31cb736..ca9d469fd 100644
> --- a/src/box/sql/build.c
> +++ b/src/box/sql/build.c
> - /* Fetch iid from the row and ++it. */
> - sqlite3VdbeJumpHere(v, iGotoInst);
> - sqlite3VdbeAddOp3(v, OP_Column, iCursor, 1, iRes);
> - sqlite3VdbeAddOp2(v, OP_AddImm, iRes, 1);
> - return iRes;
> + struct Vdbe *v = sqlite3GetVdbe(parse);
> + int key_reg = ++parse->nMem;
> +
> + sqlite3VdbeAddOp2(v, OP_Integer, space_id, key_reg);
> + int seek_adr = sqlite3VdbeAddOp4Int(v, OP_SeekLE, cursor, 0,
> + key_reg, 1);
> + sqlite3VdbeAddOp4Int(v, OP_IdxLT, cursor, 0, key_reg, 1);
> + /* Jump over Halt block. */
> + int goto_succ_addr = sqlite3VdbeAddOp0(v, OP_Goto);
> + /* Invalid space id handling block starts here. */
> + sqlite3VdbeJumpHere(v, seek_adr);
> + sqlite3VdbeJumpHere(v, seek_adr + 1);
> + sqlite3VdbeAddOp4(v, OP_Halt, SQLITE_ERROR, ON_CONFLICT_ACTION_FAIL, 0,
> + sqlite3MPrintf(parse->db, "Invalid space id: %d",
> + space_id), P4_DYNAMIC);
> +
> + sqlite3VdbeJumpHere(v, goto_succ_addr);
> + /* Fetch iid from the row and increment it. */
> + int iid_reg = ++parse->nMem;
> + sqlite3VdbeAddOp3(v, OP_Column, cursor, 1, iid_reg);
1 -> BOX_INDEX_FIELD_ID.
> + sqlite3VdbeAddOp2(v, OP_AddImm, iid_reg, 1);
> + return iid_reg;
> }
>
More information about the Tarantool-patches
mailing list