<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 20 Mar 2018, at 13:58, Kirill Yukhin <<a href="mailto:kyukhin@tarantool.org" class="">kyukhin@tarantool.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Hello,</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Single comment.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">On 19 мар 21:10, Nikita Pettik wrote:</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">Instead of passing encoded space id and index id to SQL bindings,<br class="">pointers to space and index are saved in cursor and passed implicitly.<br class="">Space and index lookups appear during execution of<br class="">OP_OpenRead/OP_OpenWrite once. Moreover, having struct space it has<br class="">become possible to remove several wrapper-function calls on insertions<br class="">and deletions by invoking sql_execute_dml().<br class=""><br class="">Closes #3122<br class="">---<br class="">src/box/sql.c              | 87 +++++++++++++++++++++++-----------------------<br class="">src/box/sql/cursor.h       |  3 +-<br class="">src/box/sql/tarantoolInt.h |  2 +-<br class="">src/box/sql/vdbe.c         | 24 ++++++-------<br class="">src/box/sql/vdbeInt.h      |  1 -<br class="">5 files changed, 58 insertions(+), 59 deletions(-)<br class=""><br class="">diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c<br class="">index cd3321c4f..1ee8c4d7b 100644<br class="">--- a/src/box/sql/vdbe.c<br class="">+++ b/src/box/sql/vdbe.c<br class="">@@ -3209,16 +3214,17 @@ case OP_OpenWrite:<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>pCur = allocateCursor(p, pOp->p1, nField, CURTYPE_TARANTOOL);<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span>if (pCur==0) goto no_mem;<br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span>pCur->nullRow = 1;<br class="">-<span class="Apple-tab-span" style="white-space: pre;">       </span>pCur->pgnoRoot = p2;<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;"> </span>assert(p2 >= 1);<br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>pBtCur = pCur->uc.pCursor;<br class="">-<span class="Apple-tab-span" style="white-space: pre;">       </span>pBtCur->pgnoRoot = p2;<br class="">+<span class="Apple-tab-span" style="white-space: pre;">   </span>pBtCur->space = space_by_id(SQLITE_PAGENO_TO_SPACEID(p2));<br class="">+<span class="Apple-tab-span" style="white-space: pre;">       </span>pBtCur->index = space_index(pBtCur->space, SQLITE_PAGENO_TO_INDEXID(p2));<br class="">+<span class="Apple-tab-span" style="white-space: pre;">     </span>assert(pBtCur->space != NULL && pBtCur->index != NULL);<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>pBtCur->eState = CURSOR_INVALID;<br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>pBtCur->curFlags |= BTCF_TaCursor;<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>pCur->pKeyInfo = pKeyInfo;<br class=""><br class="">-<span class="Apple-tab-span" style="white-space: pre;">  </span>open_cursor_set_hints:<br class="">+//<span class="Apple-tab-span" style="white-space: pre;">    </span>open_cursor_set_hints:<br class=""></blockquote><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Please, don't usse C++ style comments.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></blockquote><div><br class=""></div><div>Fixed on branch (it is obviously tragic accident).</div></div><br class=""></body></html>