<html><head></head><body dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div class="ApplePlainTextBody"><br><blockquote type="cite">diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c<br>index 83c0e90f1..2be42faf2 100644<br>--- a/src/box/sql/vdbe.c<br>+++ b/src/box/sql/vdbe.c<br>@@ -260,7 +260,7 @@ allocateCursor(<br>int<br>mem_apply_numeric_type(struct Mem *record)<br>{<br>-<span class="Apple-tab-span" style="white-space:pre">      </span>if ((record->flags & (MEM_Str | MEM_Int | MEM_Real | MEM_UInt)) != MEM_Str)<br>+<span class="Apple-tab-span" style="white-space:pre">       </span>if ((record->flags & MEM_Str) == 0)<br><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>return -1;<br><span class="Apple-tab-span" style="white-space:pre">        </span>int64_t integer_value;<br><span class="Apple-tab-span" style="white-space:pre">    </span>bool is_neg;<br>@@ -936,7 +936,7 @@ case OP_Return: {           /* in1 */<br>case OP_InitCoroutine: {     /* jump */<br><span class="Apple-tab-span" style="white-space:pre">    </span>assert(pOp->p1>0 &&  pOp->p1<=(p->nMem+1 - p->nCursor));<br><span class="Apple-tab-span" style="white-space:pre">   </span>assert(pOp->p2>=0 && pOp->p2<p->nOp);<br>-<span class="Apple-tab-span" style="white-space:pre">     </span>assert(pOp->p3>=0 && pOp->p3<p->nOp);<br>+<span class="Apple-tab-span" style="white-space:pre">     </span>assert(pOp->p3>0 && pOp->p3<p->nOp);<br><span class="Apple-tab-span" style="white-space:pre">       </span>pOut = &aMem[pOp->p1];<br><span class="Apple-tab-span" style="white-space:pre">     </span>assert(!VdbeMemDynamic(pOut));<br><span class="Apple-tab-span" style="white-space:pre">    </span>mem_set_u64(pOut, pOp->p3 - 1);<br>@@ -1061,10 +1061,12 @@ case OP_Halt: {<br> */<br>case OP_Integer: {         /* out2 */<br><span class="Apple-tab-span" style="white-space:pre">   </span>pOut = out2Prerelease(p, pOp);<br>-<span class="Apple-tab-span" style="white-space:pre">   </span>if (pOp->p1 < 0)<br>+<span class="Apple-tab-span" style="white-space:pre">   </span>if (pOp->p1 < 0) {<br><span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>pOut->u.i = pOp->p1;<br>-<span class="Apple-tab-span" style="white-space:pre">       </span>else<br>+<span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>assert((pOut->flags & MEM_Int) != 0);<br>+<span class="Apple-tab-span" style="white-space:pre">     </span>} else {<br><span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>mem_set_u64(pOut, pOp->p1);<br>+<span class="Apple-tab-span" style="white-space:pre">   </span>}<br><span class="Apple-tab-span" style="white-space:pre"> </span>break;<br>}<br><br>@@ -3307,8 +3309,7 @@ case OP_SeekGT: {       /* jump, in3 */<br><span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span> * the seek, so convert it.<br><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span> */<br><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>pIn3 = &aMem[reg_ipk];<br>-<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>if ((pIn3->flags & (MEM_Int | MEM_UInt | MEM_Real |<br>-<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>    MEM_Str)) == MEM_Str)<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>if ((pIn3->flags & MEM_Str) != 0)<br><span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>mem_apply_numeric_type(pIn3);<br><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>int64_t i;<br><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>if ((pIn3->flags & MEM_Int) == MEM_Int) {<br>@@ -4921,9 +4922,8 @@ case OP_OffsetLimit: {    /* in1, out2, in3 */<br>case OP_IfNotZero: {        /* jump, in1 */<br><span class="Apple-tab-span" style="white-space:pre">     </span>pIn1 = &aMem[pOp->p1];<br><span class="Apple-tab-span" style="white-space:pre">     </span>assert((pIn1->flags & MEM_UInt) != 0);<br>-<span class="Apple-tab-span" style="white-space:pre">    </span>VdbeBranchTaken(pIn1->u.u<0, 2);<br>-<span class="Apple-tab-span" style="white-space:pre">   </span>if (pIn1->u.u) {<br>-<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>if (pIn1->u.u > 0) pIn1->u.u--;<br>+<span class="Apple-tab-span" style="white-space:pre"> </span>if (pIn1->u.u > 0) {<br>+<span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>pIn1->u.u--;<br><span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span>goto jump_to_p2;<br><span class="Apple-tab-span" style="white-space:pre">  </span>}<br><span class="Apple-tab-span" style="white-space:pre"> </span>break;<br>@@ -4938,8 +4938,8 @@ case OP_IfNotZero: {        /* jump, in1 */<br>case OP_DecrJumpZero: {      /* jump, in1 */<br><span class="Apple-tab-span" style="white-space:pre">       </span>pIn1 = &aMem[pOp->p1];<br><span class="Apple-tab-span" style="white-space:pre">     </span>assert((pIn1->flags & MEM_UInt) != 0);<br>-<span class="Apple-tab-span" style="white-space:pre">    </span>if (pIn1->u.i>SMALLEST_INT64) pIn1->u.u--;<br>-<span class="Apple-tab-span" style="white-space:pre">      </span>VdbeBranchTaken(pIn1->u.i==0, 2);<br>+<span class="Apple-tab-span" style="white-space:pre">     </span>if (pIn1->u.u > 0)<br>+<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>pIn1->u.u--;<br><span class="Apple-tab-span" style="white-space:pre">   </span>if (pIn1->u.u == 0) goto jump_to_p2;<br><span class="Apple-tab-span" style="white-space:pre">   </span>break;<br>}<br></blockquote><br>Thx, applied.<br><br></div></div></body></html>