On 20 Mar 2018, at 13:58, Kirill Yukhin <kyukhin@xxxxxxxxxxxxx> wrote:
Hello,
Single comment.
On 19 мар 21:10, Nikita Pettik wrote:
Instead of passing encoded space id and index id to SQL bindings,Please, don't usse C++ style comments.
pointers to space and index are saved in cursor and passed implicitly.
Space and index lookups appear during execution of
OP_OpenRead/OP_OpenWrite once. Moreover, having struct space it has
become possible to remove several wrapper-function calls on insertions
and deletions by invoking sql_execute_dml().
Closes #3122
---
src/box/sql.c | 87
+++++++++++++++++++++++-----------------------
src/box/sql/cursor.h | 3 +-
src/box/sql/tarantoolInt.h | 2 +-
src/box/sql/vdbe.c | 24 ++++++-------
src/box/sql/vdbeInt.h | 1 -
5 files changed, 58 insertions(+), 59 deletions(-)
diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c
index cd3321c4f..1ee8c4d7b 100644
--- a/src/box/sql/vdbe.c
+++ b/src/box/sql/vdbe.c
@@ -3209,16 +3214,17 @@ case OP_OpenWrite:
pCur = allocateCursor(p, pOp->p1, nField, CURTYPE_TARANTOOL);
if (pCur==0) goto no_mem;
pCur->nullRow = 1;
- pCur->pgnoRoot = p2;
assert(p2 >= 1);
pBtCur = pCur->uc.pCursor;
- pBtCur->pgnoRoot = p2;
+ pBtCur->space = space_by_id(SQLITE_PAGENO_TO_SPACEID(p2));
+ pBtCur->index = space_index(pBtCur->space,
SQLITE_PAGENO_TO_INDEXID(p2));
+ assert(pBtCur->space != NULL && pBtCur->index != NULL);
pBtCur->eState = CURSOR_INVALID;
pBtCur->curFlags |= BTCF_TaCursor;
pCur->pKeyInfo = pKeyInfo;
- open_cursor_set_hints:
+// open_cursor_set_hints: