[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