Lines Matching refs:v

674   Vdbe *v = pParse->pVdbe;  in makeSorterRecord()  local
679 sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase+nOBSat, nBase-nOBSat, regOut); in makeSorterRecord()
696 Vdbe *v = pParse->pVdbe; /* Stmt under construction */ in pushOntoSorter() local
737 sqlite3VdbeAddOp2(v, OP_Sequence, pSort->iECursor, regBase+nExpr); in pushOntoSorter()
755 addrFirst = sqlite3VdbeAddOp1(v, OP_IfNot, regBase+nExpr); in pushOntoSorter()
757 addrFirst = sqlite3VdbeAddOp1(v, OP_SequenceTest, pSort->iECursor); in pushOntoSorter()
759 VdbeCoverage(v); in pushOntoSorter()
760 sqlite3VdbeAddOp3(v, OP_Compare, regPrevKey, regBase, pSort->nOBSat); in pushOntoSorter()
761 pOp = sqlite3VdbeGetOp(v, pSort->addrSortIndex); in pushOntoSorter()
766 sqlite3VdbeChangeP4(v, -1, (char*)pKI, P4_KEYINFO); in pushOntoSorter()
771 addrJmp = sqlite3VdbeCurrentAddr(v); in pushOntoSorter()
772 sqlite3VdbeAddOp3(v, OP_Jump, addrJmp+1, 0, addrJmp+1); VdbeCoverage(v); in pushOntoSorter()
775 sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut); in pushOntoSorter()
776 sqlite3VdbeAddOp1(v, OP_ResetSorter, pSort->iECursor); in pushOntoSorter()
778 sqlite3VdbeAddOp2(v, OP_IfNot, iLimit, pSort->labelDone); in pushOntoSorter()
779 VdbeCoverage(v); in pushOntoSorter()
781 sqlite3VdbeJumpHere(v, addrFirst); in pushOntoSorter()
783 sqlite3VdbeJumpHere(v, addrJmp); in pushOntoSorter()
802 sqlite3VdbeAddOp2(v, OP_IfNotZero, iLimit, sqlite3VdbeCurrentAddr(v)+4); in pushOntoSorter()
803 VdbeCoverage(v); in pushOntoSorter()
804 sqlite3VdbeAddOp2(v, OP_Last, iCsr, 0); in pushOntoSorter()
805 iSkip = sqlite3VdbeAddOp4Int(v, OP_IdxLE, in pushOntoSorter()
807 VdbeCoverage(v); in pushOntoSorter()
808 sqlite3VdbeAddOp1(v, OP_Delete, iCsr); in pushOntoSorter()
818 sqlite3VdbeAddOp4Int(v, op, pSort->iECursor, regRecord, in pushOntoSorter()
821 sqlite3VdbeChangeP2(v, iSkip, in pushOntoSorter()
822 pSort->labelOBLopt ? pSort->labelOBLopt : sqlite3VdbeCurrentAddr(v)); in pushOntoSorter()
830 Vdbe *v, /* Generate code into this VM */ in codeOffset() argument
835 sqlite3VdbeAddOp3(v, OP_IfPos, iOffset, iContinue, 1); VdbeCoverage(v); in codeOffset()
836 VdbeComment((v, "OFFSET")); in codeOffset()
893 Vdbe *v = pParse->pVdbe; in codeDistinct() local
905 iJump = sqlite3VdbeCurrentAddr(v) + nResultCol; in codeDistinct()
909 sqlite3VdbeAddOp3(v, OP_Ne, regElem+i, iJump, regPrev+i); in codeDistinct()
910 VdbeCoverage(v); in codeDistinct()
912 sqlite3VdbeAddOp3(v, OP_Eq, regElem+i, addrRepeat, regPrev+i); in codeDistinct()
913 VdbeCoverage(v); in codeDistinct()
915 sqlite3VdbeChangeP4(v, -1, (const char *)pColl, P4_COLLSEQ); in codeDistinct()
916 sqlite3VdbeChangeP5(v, SQLITE_NULLEQ); in codeDistinct()
918 assert( sqlite3VdbeCurrentAddr(v)==iJump || pParse->db->mallocFailed ); in codeDistinct()
919 sqlite3VdbeAddOp3(v, OP_Copy, regElem, regPrev, nResultCol-1); in codeDistinct()
930 sqlite3VdbeAddOp4Int(v, OP_Found, iTab, addrRepeat, regElem, nResultCol); in codeDistinct()
931 VdbeCoverage(v); in codeDistinct()
932 sqlite3VdbeAddOp3(v, OP_MakeRecord, regElem, nResultCol, r1); in codeDistinct()
933 sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iTab, r1, regElem, nResultCol); in codeDistinct()
934 sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT); in codeDistinct()
976 Vdbe *v = pParse->pVdbe; in fixDistinctOpenEph() local
977 sqlite3VdbeChangeToNoop(v, iOpenEphAddr); in fixDistinctOpenEph()
978 if( sqlite3VdbeGetOp(v, iOpenEphAddr+1)->opcode==OP_Explain ){ in fixDistinctOpenEph()
979 sqlite3VdbeChangeToNoop(v, iOpenEphAddr+1); in fixDistinctOpenEph()
986 VdbeOp *pOp = sqlite3VdbeGetOp(v, iOpenEphAddr); in fixDistinctOpenEph()
1099 Vdbe *v = pParse->pVdbe; in selectInnerLoop() local
1116 assert( v ); in selectInnerLoop()
1122 codeOffset(v, p->iOffset, iContinue); in selectInnerLoop()
1149 sqlite3VdbeAddOp3(v, OP_Column, srcTab, i, regResult+i); in selectInnerLoop()
1150 VdbeComment((v, "%s", p->pEList->a[i].zEName)); in selectInnerLoop()
1189 VdbeOp *pOp = sqlite3VdbeGetOp(v, pSort->addrSortIndex); in selectInnerLoop()
1250 codeOffset(v, p->iOffset, iContinue); in selectInnerLoop()
1262 sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r1); in selectInnerLoop()
1263 sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, regResult, nResultCol); in selectInnerLoop()
1273 sqlite3VdbeAddOp3(v, OP_IdxDelete, iParm, regResult, nResultCol); in selectInnerLoop()
1289 sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r1+nPrefixReg); in selectInnerLoop()
1291 sqlite3VdbeChangeP4(v, -1, pDest->zAffSdst, nResultCol); in selectInnerLoop()
1300 int addr = sqlite3VdbeCurrentAddr(v) + 4; in selectInnerLoop()
1301 sqlite3VdbeAddOp4Int(v, OP_Found, iParm+1, addr, r1, 0); in selectInnerLoop()
1302 VdbeCoverage(v); in selectInnerLoop()
1303 sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm+1, r1,regResult,nResultCol); in selectInnerLoop()
1312 sqlite3VdbeAddOp2(v, OP_NewRowid, iParm, r2); in selectInnerLoop()
1313 sqlite3VdbeAddOp3(v, OP_Insert, iParm, r1, r2); in selectInnerLoop()
1314 sqlite3VdbeChangeP5(v, OPFLAG_APPEND); in selectInnerLoop()
1332 sqlite3VdbeAddOp2(v, OP_IsNull, regResult, iBreak); VdbeCoverage(v); in selectInnerLoop()
1334 sqlite3VdbeAddOp3(v, OP_MakeRecord, in selectInnerLoop()
1337 sqlite3VdbeAddOp3(v, OP_Insert, iParm, r1, regResult); in selectInnerLoop()
1339 sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, regResult, i2); in selectInnerLoop()
1361 sqlite3VdbeAddOp4(v, OP_MakeRecord, regResult, nResultCol, in selectInnerLoop()
1363 sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, regResult, nResultCol); in selectInnerLoop()
1373 sqlite3VdbeAddOp2(v, OP_Integer, 1, iParm); in selectInnerLoop()
1404 sqlite3VdbeAddOp1(v, OP_Yield, pDest->iSDParm); in selectInnerLoop()
1406 sqlite3VdbeAddOp2(v, OP_ResultRow, regResult, nResultCol); in selectInnerLoop()
1434 addrTest = sqlite3VdbeAddOp4Int(v, OP_Found, iParm+1, 0, in selectInnerLoop()
1436 VdbeCoverage(v); in selectInnerLoop()
1438 sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r3); in selectInnerLoop()
1440 sqlite3VdbeAddOp2(v, OP_IdxInsert, iParm+1, r3); in selectInnerLoop()
1441 sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT); in selectInnerLoop()
1444 sqlite3VdbeAddOp2(v, OP_SCopy, in selectInnerLoop()
1448 sqlite3VdbeAddOp2(v, OP_Sequence, iParm, r2+nKey); in selectInnerLoop()
1449 sqlite3VdbeAddOp3(v, OP_MakeRecord, r2, nKey+2, r1); in selectInnerLoop()
1450 sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, r2, nKey+2); in selectInnerLoop()
1451 if( addrTest ) sqlite3VdbeJumpHere(v, addrTest); in selectInnerLoop()
1478 sqlite3VdbeAddOp2(v, OP_DecrJumpZero, p->iLimit, iBreak); VdbeCoverage(v); in selectInnerLoop()
1632 Vdbe *v = pParse->pVdbe; /* The prepared statement */ in generateSortTail() local
1653 sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut); in generateSortTail()
1654 sqlite3VdbeGoto(v, addrBreak); in generateSortTail()
1655 sqlite3VdbeResolveLabel(v, pSort->labelBkOut); in generateSortTail()
1671 sqlite3VdbeAddOp2(v, OP_Null, 0, pDest->iSdst); in generateSortTail()
1689 addrOnce = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v); in generateSortTail()
1691 sqlite3VdbeAddOp3(v, OP_OpenPseudo, iSortTab, regSortOut, in generateSortTail()
1693 if( addrOnce ) sqlite3VdbeJumpHere(v, addrOnce); in generateSortTail()
1694 addr = 1 + sqlite3VdbeAddOp2(v, OP_SorterSort, iTab, addrBreak); in generateSortTail()
1695 VdbeCoverage(v); in generateSortTail()
1697 sqlite3VdbeAddOp3(v, OP_SorterData, iTab, regSortOut, iSortTab); in generateSortTail()
1700 addr = 1 + sqlite3VdbeAddOp2(v, OP_Sort, iTab, addrBreak); VdbeCoverage(v); in generateSortTail()
1701 codeOffset(v, p->iOffset, addrContinue); in generateSortTail()
1705 sqlite3VdbeAddOp2(v, OP_AddImm, p->iLimit, -1); in generateSortTail()
1724 sqlite3VdbeAddOp1(v, OP_NullRow, iCsr); in generateSortTail()
1726 sqlite3VdbeAddOp3(v, OP_Column, iSortTab, iKey++, regKey); in generateSortTail()
1727 sqlite3VdbeAddOp3(v, OP_SeekRowid, iCsr, in generateSortTail()
1728 sqlite3VdbeCurrentAddr(v)+1, regKey); in generateSortTail()
1734 sqlite3VdbeAddOp3(v, OP_Column, iSortTab, iKey++, regKey+k); in generateSortTail()
1736 iJmp = sqlite3VdbeCurrentAddr(v); in generateSortTail()
1737 sqlite3VdbeAddOp4Int(v, OP_SeekGE, iCsr, iJmp+2, regKey, nKey); in generateSortTail()
1738 sqlite3VdbeAddOp4Int(v, OP_IdxLE, iCsr, iJmp+3, regKey, nKey); in generateSortTail()
1739 sqlite3VdbeAddOp1(v, OP_NullRow, iCsr); in generateSortTail()
1758 sqlite3VdbeAddOp3(v, OP_Column, iSortTab, iRead, regRow+i); in generateSortTail()
1759 VdbeComment((v, "%s", aOutEx[i].zEName)); in generateSortTail()
1765 sqlite3VdbeAddOp3(v, OP_Column, iSortTab, nKey+bSeq, regRow); in generateSortTail()
1766 sqlite3VdbeAddOp2(v, OP_NewRowid, iParm, regRowid); in generateSortTail()
1767 sqlite3VdbeAddOp3(v, OP_Insert, iParm, regRow, regRowid); in generateSortTail()
1768 sqlite3VdbeChangeP5(v, OPFLAG_APPEND); in generateSortTail()
1774 sqlite3VdbeAddOp4(v, OP_MakeRecord, regRow, nColumn, regRowid, in generateSortTail()
1776 sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, regRowid, regRow, nColumn); in generateSortTail()
1787 sqlite3VdbeAddOp3(v, OP_MakeRecord,regRow+(i2<0),nColumn-(i2<0),r1); in generateSortTail()
1789 sqlite3VdbeAddOp3(v, OP_Insert, iParm, r1, regRow); in generateSortTail()
1791 sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iParm, r1, regRow, i2); in generateSortTail()
1800 sqlite3VdbeAddOp2(v, OP_ResultRow, pDest->iSdst, nColumn); in generateSortTail()
1802 sqlite3VdbeAddOp1(v, OP_Yield, pDest->iSDParm); in generateSortTail()
1817 sqlite3VdbeResolveLabel(v, addrContinue); in generateSortTail()
1819 sqlite3VdbeAddOp2(v, OP_SorterNext, iTab, addr); VdbeCoverage(v); in generateSortTail()
1821 sqlite3VdbeAddOp2(v, OP_Next, iTab, addr); VdbeCoverage(v); in generateSortTail()
1823 if( pSort->regReturn ) sqlite3VdbeAddOp1(v, OP_Return, pSort->regReturn); in generateSortTail()
1824 sqlite3VdbeResolveLabel(v, addrBreak); in generateSortTail()
2010 Vdbe *v = pParse->pVdbe; in generateColumnTypes() local
2029 sqlite3VdbeSetColName(v, i, COLNAME_DATABASE, zOrigDb, SQLITE_TRANSIENT); in generateColumnTypes()
2030 sqlite3VdbeSetColName(v, i, COLNAME_TABLE, zOrigTab, SQLITE_TRANSIENT); in generateColumnTypes()
2031 sqlite3VdbeSetColName(v, i, COLNAME_COLUMN, zOrigCol, SQLITE_TRANSIENT); in generateColumnTypes()
2035 sqlite3VdbeSetColName(v, i, COLNAME_DECLTYPE, zType, SQLITE_TRANSIENT); in generateColumnTypes()
2075 Vdbe *v = pParse->pVdbe; in sqlite3GenerateColumnNames() local
2097 assert( v!=0 ); in sqlite3GenerateColumnNames()
2102 sqlite3VdbeSetNumCols(v, pEList->nExpr); in sqlite3GenerateColumnNames()
2113 sqlite3VdbeSetColName(v, i, COLNAME_NAME, zName, SQLITE_TRANSIENT); in sqlite3GenerateColumnNames()
2129 sqlite3VdbeSetColName(v, i, COLNAME_NAME, zName, SQLITE_DYNAMIC); in sqlite3GenerateColumnNames()
2131 sqlite3VdbeSetColName(v, i, COLNAME_NAME, zCol, SQLITE_TRANSIENT); in sqlite3GenerateColumnNames()
2136 sqlite3VdbeSetColName(v, i, COLNAME_NAME, z, SQLITE_DYNAMIC); in sqlite3GenerateColumnNames()
2405 Vdbe *v = 0; in computeLimitRegisters() local
2423 v = sqlite3GetVdbe(pParse); in computeLimitRegisters()
2424 assert( v!=0 ); in computeLimitRegisters()
2426 sqlite3VdbeAddOp2(v, OP_Integer, n, iLimit); in computeLimitRegisters()
2427 VdbeComment((v, "LIMIT counter")); in computeLimitRegisters()
2429 sqlite3VdbeGoto(v, iBreak); in computeLimitRegisters()
2436 sqlite3VdbeAddOp1(v, OP_MustBeInt, iLimit); VdbeCoverage(v); in computeLimitRegisters()
2437 VdbeComment((v, "LIMIT counter")); in computeLimitRegisters()
2438 sqlite3VdbeAddOp2(v, OP_IfNot, iLimit, iBreak); VdbeCoverage(v); in computeLimitRegisters()
2444 sqlite3VdbeAddOp1(v, OP_MustBeInt, iOffset); VdbeCoverage(v); in computeLimitRegisters()
2445 VdbeComment((v, "OFFSET counter")); in computeLimitRegisters()
2446 sqlite3VdbeAddOp3(v, OP_OffsetLimit, iLimit, iOffset+1, iOffset); in computeLimitRegisters()
2447 VdbeComment((v, "LIMIT+OFFSET")); in computeLimitRegisters()
2560 Vdbe *v = pParse->pVdbe; /* The prepared statement under construction */ in generateWithRecursiveQuery() local
2620 sqlite3VdbeAddOp3(v, OP_OpenPseudo, iCurrent, regCurrent, nCol); in generateWithRecursiveQuery()
2623 sqlite3VdbeAddOp4(v, OP_OpenEphemeral, iQueue, pOrderBy->nExpr+2, 0, in generateWithRecursiveQuery()
2627 sqlite3VdbeAddOp2(v, OP_OpenEphemeral, iQueue, nCol); in generateWithRecursiveQuery()
2629 VdbeComment((v, "Queue table")); in generateWithRecursiveQuery()
2631 p->addrOpenEphm[0] = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, iDistinct, 0); in generateWithRecursiveQuery()
2663 addrTop = sqlite3VdbeAddOp2(v, OP_Rewind, iQueue, addrBreak); VdbeCoverage(v); in generateWithRecursiveQuery()
2666 sqlite3VdbeAddOp1(v, OP_NullRow, iCurrent); /* To reset column cache */ in generateWithRecursiveQuery()
2668 sqlite3VdbeAddOp3(v, OP_Column, iQueue, pOrderBy->nExpr+1, regCurrent); in generateWithRecursiveQuery()
2670 sqlite3VdbeAddOp2(v, OP_RowData, iQueue, regCurrent); in generateWithRecursiveQuery()
2672 sqlite3VdbeAddOp1(v, OP_Delete, iQueue); in generateWithRecursiveQuery()
2676 codeOffset(v, regOffset, addrCont); in generateWithRecursiveQuery()
2680 sqlite3VdbeAddOp2(v, OP_DecrJumpZero, regLimit, addrBreak); in generateWithRecursiveQuery()
2681 VdbeCoverage(v); in generateWithRecursiveQuery()
2683 sqlite3VdbeResolveLabel(v, addrCont); in generateWithRecursiveQuery()
2695 sqlite3VdbeGoto(v, addrTop); in generateWithRecursiveQuery()
2696 sqlite3VdbeResolveLabel(v, addrBreak); in generateWithRecursiveQuery()
2809 Vdbe *v; /* Generate code to this VDBE */ in multiSelect() local
2826 v = sqlite3GetVdbe(pParse); in multiSelect()
2827 assert( v!=0 ); /* The VDBE already created by calling function */ in multiSelect()
2833 sqlite3VdbeAddOp2(v, OP_OpenEphemeral, dest.iSDParm, p->pEList->nExpr); in multiSelect()
2890 addr = sqlite3VdbeAddOp1(v, OP_IfNot, p->iLimit); VdbeCoverage(v); in multiSelect()
2891 VdbeComment((v, "Jump ahead if LIMIT reached")); in multiSelect()
2893 sqlite3VdbeAddOp3(v, OP_OffsetLimit, in multiSelect()
2911 sqlite3VdbeJumpHere(v, addr); in multiSelect()
2939 addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, unionTab, 0); in multiSelect()
2996 sqlite3VdbeAddOp2(v, OP_Rewind, unionTab, iBreak); VdbeCoverage(v); in multiSelect()
2997 iStart = sqlite3VdbeCurrentAddr(v); in multiSelect()
3000 sqlite3VdbeResolveLabel(v, iCont); in multiSelect()
3001 sqlite3VdbeAddOp2(v, OP_Next, unionTab, iStart); VdbeCoverage(v); in multiSelect()
3002 sqlite3VdbeResolveLabel(v, iBreak); in multiSelect()
3003 sqlite3VdbeAddOp2(v, OP_Close, unionTab, 0); in multiSelect()
3023 addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, tab1, 0); in multiSelect()
3040 addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, tab2, 0); in multiSelect()
3068 sqlite3VdbeAddOp2(v, OP_Rewind, tab1, iBreak); VdbeCoverage(v); in multiSelect()
3070 iStart = sqlite3VdbeAddOp2(v, OP_RowData, tab1, r1); in multiSelect()
3071 sqlite3VdbeAddOp4Int(v, OP_NotFound, tab2, iCont, r1, 0); in multiSelect()
3072 VdbeCoverage(v); in multiSelect()
3076 sqlite3VdbeResolveLabel(v, iCont); in multiSelect()
3077 sqlite3VdbeAddOp2(v, OP_Next, tab1, iStart); VdbeCoverage(v); in multiSelect()
3078 sqlite3VdbeResolveLabel(v, iBreak); in multiSelect()
3079 sqlite3VdbeAddOp2(v, OP_Close, tab2, 0); in multiSelect()
3080 sqlite3VdbeAddOp2(v, OP_Close, tab1, 0); in multiSelect()
3133 sqlite3VdbeChangeP2(v, addr, nCol); in multiSelect()
3134 sqlite3VdbeChangeP4(v, addr, (char*)sqlite3KeyInfoRef(pKeyInfo), in multiSelect()
3198 Vdbe *v = pParse->pVdbe; in generateOutputSubroutine() local
3202 addr = sqlite3VdbeCurrentAddr(v); in generateOutputSubroutine()
3209 addr1 = sqlite3VdbeAddOp1(v, OP_IfNot, regPrev); VdbeCoverage(v); in generateOutputSubroutine()
3210 addr2 = sqlite3VdbeAddOp4(v, OP_Compare, pIn->iSdst, regPrev+1, pIn->nSdst, in generateOutputSubroutine()
3212 sqlite3VdbeAddOp3(v, OP_Jump, addr2+2, iContinue, addr2+2); VdbeCoverage(v); in generateOutputSubroutine()
3213 sqlite3VdbeJumpHere(v, addr1); in generateOutputSubroutine()
3214 sqlite3VdbeAddOp3(v, OP_Copy, pIn->iSdst, regPrev+1, pIn->nSdst-1); in generateOutputSubroutine()
3215 sqlite3VdbeAddOp2(v, OP_Integer, 1, regPrev); in generateOutputSubroutine()
3221 codeOffset(v, p->iOffset, iContinue); in generateOutputSubroutine()
3231 sqlite3VdbeAddOp3(v, OP_MakeRecord, pIn->iSdst, pIn->nSdst, r1); in generateOutputSubroutine()
3232 sqlite3VdbeAddOp2(v, OP_NewRowid, pDest->iSDParm, r2); in generateOutputSubroutine()
3233 sqlite3VdbeAddOp3(v, OP_Insert, pDest->iSDParm, r1, r2); in generateOutputSubroutine()
3234 sqlite3VdbeChangeP5(v, OPFLAG_APPEND); in generateOutputSubroutine()
3247 sqlite3VdbeAddOp4(v, OP_MakeRecord, pIn->iSdst, pIn->nSdst, in generateOutputSubroutine()
3249 sqlite3VdbeAddOp4Int(v, OP_IdxInsert, pDest->iSDParm, r1, in generateOutputSubroutine()
3277 sqlite3VdbeAddOp1(v, OP_Yield, pDest->iSDParm); in generateOutputSubroutine()
3291 sqlite3VdbeAddOp2(v, OP_ResultRow, pIn->iSdst, pIn->nSdst); in generateOutputSubroutine()
3299 sqlite3VdbeAddOp2(v, OP_DecrJumpZero, p->iLimit, iBreak); VdbeCoverage(v); in generateOutputSubroutine()
3304 sqlite3VdbeResolveLabel(v, iContinue); in generateOutputSubroutine()
3305 sqlite3VdbeAddOp1(v, OP_Return, regReturn); in generateOutputSubroutine()
3405 Vdbe *v; /* Generate code to this VDBE */ in multiSelectOrderBy() local
3441 v = pParse->pVdbe; in multiSelectOrderBy()
3442 assert( v!=0 ); /* Already thrown the error if VDBE alloc failed */ in multiSelectOrderBy()
3511 sqlite3VdbeAddOp2(v, OP_Integer, 0, regPrev); in multiSelectOrderBy()
3554 sqlite3VdbeAddOp2(v, OP_Copy, p->iOffset ? p->iOffset+1 : p->iLimit, in multiSelectOrderBy()
3556 sqlite3VdbeAddOp2(v, OP_Copy, regLimitA, regLimitB); in multiSelectOrderBy()
3575 addrSelectA = sqlite3VdbeCurrentAddr(v) + 1; in multiSelectOrderBy()
3576 addr1 = sqlite3VdbeAddOp3(v, OP_InitCoroutine, regAddrA, 0, addrSelectA); in multiSelectOrderBy()
3577 VdbeComment((v, "left SELECT")); in multiSelectOrderBy()
3581 sqlite3VdbeEndCoroutine(v, regAddrA); in multiSelectOrderBy()
3582 sqlite3VdbeJumpHere(v, addr1); in multiSelectOrderBy()
3587 addrSelectB = sqlite3VdbeCurrentAddr(v) + 1; in multiSelectOrderBy()
3588 addr1 = sqlite3VdbeAddOp3(v, OP_InitCoroutine, regAddrB, 0, addrSelectB); in multiSelectOrderBy()
3589 VdbeComment((v, "right SELECT")); in multiSelectOrderBy()
3598 sqlite3VdbeEndCoroutine(v, regAddrB); in multiSelectOrderBy()
3603 VdbeNoopComment((v, "Output routine for A")); in multiSelectOrderBy()
3612 VdbeNoopComment((v, "Output routine for B")); in multiSelectOrderBy()
3625 VdbeNoopComment((v, "eof-A subroutine")); in multiSelectOrderBy()
3626 addrEofA = sqlite3VdbeAddOp2(v, OP_Gosub, regOutB, addrOutB); in multiSelectOrderBy()
3627 addrEofA_noB = sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, labelEnd); in multiSelectOrderBy()
3628 VdbeCoverage(v); in multiSelectOrderBy()
3629 sqlite3VdbeGoto(v, addrEofA); in multiSelectOrderBy()
3640 VdbeNoopComment((v, "eof-B subroutine")); in multiSelectOrderBy()
3641 addrEofB = sqlite3VdbeAddOp2(v, OP_Gosub, regOutA, addrOutA); in multiSelectOrderBy()
3642 sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, labelEnd); VdbeCoverage(v); in multiSelectOrderBy()
3643 sqlite3VdbeGoto(v, addrEofB); in multiSelectOrderBy()
3648 VdbeNoopComment((v, "A-lt-B subroutine")); in multiSelectOrderBy()
3649 addrAltB = sqlite3VdbeAddOp2(v, OP_Gosub, regOutA, addrOutA); in multiSelectOrderBy()
3650 sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, addrEofA); VdbeCoverage(v); in multiSelectOrderBy()
3651 sqlite3VdbeGoto(v, labelCmpr); in multiSelectOrderBy()
3661 VdbeNoopComment((v, "A-eq-B subroutine")); in multiSelectOrderBy()
3663 sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, addrEofA); VdbeCoverage(v); in multiSelectOrderBy()
3664 sqlite3VdbeGoto(v, labelCmpr); in multiSelectOrderBy()
3669 VdbeNoopComment((v, "A-gt-B subroutine")); in multiSelectOrderBy()
3670 addrAgtB = sqlite3VdbeCurrentAddr(v); in multiSelectOrderBy()
3672 sqlite3VdbeAddOp2(v, OP_Gosub, regOutB, addrOutB); in multiSelectOrderBy()
3674 sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, addrEofB); VdbeCoverage(v); in multiSelectOrderBy()
3675 sqlite3VdbeGoto(v, labelCmpr); in multiSelectOrderBy()
3679 sqlite3VdbeJumpHere(v, addr1); in multiSelectOrderBy()
3680 sqlite3VdbeAddOp2(v, OP_Yield, regAddrA, addrEofA_noB); VdbeCoverage(v); in multiSelectOrderBy()
3681 sqlite3VdbeAddOp2(v, OP_Yield, regAddrB, addrEofB); VdbeCoverage(v); in multiSelectOrderBy()
3685 sqlite3VdbeResolveLabel(v, labelCmpr); in multiSelectOrderBy()
3686 sqlite3VdbeAddOp4(v, OP_Permutation, 0, 0, 0, (char*)aPermute, P4_INTARRAY); in multiSelectOrderBy()
3687 sqlite3VdbeAddOp4(v, OP_Compare, destA.iSdst, destB.iSdst, nOrderBy, in multiSelectOrderBy()
3689 sqlite3VdbeChangeP5(v, OPFLAG_PERMUTE); in multiSelectOrderBy()
3690 sqlite3VdbeAddOp3(v, OP_Jump, addrAltB, addrAeqB, addrAgtB); VdbeCoverage(v); in multiSelectOrderBy()
3694 sqlite3VdbeResolveLabel(v, labelEnd); in multiSelectOrderBy()
6216 Vdbe *v = pParse->pVdbe; in resetAccumulator() local
6237 sqlite3VdbeAddOp3(v, OP_Null, 0, pAggInfo->mnReg, pAggInfo->mxReg); in resetAccumulator()
6248 pFunc->iDistAddr = sqlite3VdbeAddOp4(v, OP_OpenEphemeral, in resetAccumulator()
6262 Vdbe *v = pParse->pVdbe; in finalizeAggFunctions() local
6269 sqlite3VdbeAddOp2(v, OP_AggFinal, pF->iMem, pList ? pList->nExpr : 0); in finalizeAggFunctions()
6270 sqlite3VdbeAppendP4(v, pF->pFunc, P4_FUNCDEF); in finalizeAggFunctions()
6290 Vdbe *v = pParse->pVdbe; in updateAccumulator() local
6323 sqlite3VdbeAddOp2(v, OP_Copy, regAcc, regHit); in updateAccumulator()
6355 sqlite3VdbeAddOp4(v, OP_CollSeq, regHit, 0, 0, (char *)pColl, P4_COLLSEQ); in updateAccumulator()
6357 sqlite3VdbeAddOp3(v, OP_AggStep, 0, regAgg, pF->iMem); in updateAccumulator()
6358 sqlite3VdbeAppendP4(v, pF->pFunc, P4_FUNCDEF); in updateAccumulator()
6359 sqlite3VdbeChangeP5(v, (u8)nArg); in updateAccumulator()
6362 sqlite3VdbeResolveLabel(v, addrNext); in updateAccumulator()
6369 addrHitTest = sqlite3VdbeAddOp1(v, OP_If, regHit); VdbeCoverage(v); in updateAccumulator()
6377 sqlite3VdbeJumpHereOrPopInst(v, addrHitTest); in updateAccumulator()
6652 Vdbe *v; /* The virtual machine under construction */ in sqlite3Select() local
6670 v = sqlite3GetVdbe(pParse); in sqlite3Select()
7037 int addrTop = sqlite3VdbeCurrentAddr(v)+1; in sqlite3Select()
7040 sqlite3VdbeAddOp3(v, OP_InitCoroutine, pItem->regReturn, 0, addrTop); in sqlite3Select()
7041 VdbeComment((v, "%!S", pItem)); in sqlite3Select()
7049 sqlite3VdbeEndCoroutine(v, pItem->regReturn); in sqlite3Select()
7050 sqlite3VdbeJumpHere(v, addrTop-1); in sqlite3Select()
7058 sqlite3VdbeAddOp2(v, OP_Gosub, pCteUse->regRtn, pCteUse->addrM9e); in sqlite3Select()
7060 sqlite3VdbeAddOp2(v, OP_OpenDup, pItem->iCursor, pCteUse->iCur); in sqlite3Select()
7061 VdbeComment((v, "%!S", pItem)); in sqlite3Select()
7068 sqlite3VdbeAddOp2(v, OP_Gosub, pPrior->regReturn, pPrior->addrFillSub); in sqlite3Select()
7070 sqlite3VdbeAddOp2(v, OP_OpenDup, pItem->iCursor, pPrior->iCursor); in sqlite3Select()
7080 topAddr = sqlite3VdbeAddOp0(v, OP_Goto); in sqlite3Select()
7087 onceAddr = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v); in sqlite3Select()
7088 VdbeComment((v, "materialize %!S", pItem)); in sqlite3Select()
7090 VdbeNoopComment((v, "materialize %!S", pItem)); in sqlite3Select()
7099 if( onceAddr ) sqlite3VdbeJumpHere(v, onceAddr); in sqlite3Select()
7100 sqlite3VdbeAddOp2(v, OP_Return, pItem->regReturn, topAddr+1); in sqlite3Select()
7101 VdbeComment((v, "end %!S", pItem)); in sqlite3Select()
7102 sqlite3VdbeJumpHere(v, topAddr); in sqlite3Select()
7185 sqlite3VdbeAddOp4(v, OP_OpenEphemeral, in sqlite3Select()
7196 sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pDest->iSDParm, pEList->nExpr); in sqlite3Select()
7219 sqlite3VdbeChangeOpcode(v, sSort.addrSortIndex, OP_SorterOpen); in sqlite3Select()
7227 sDistinct.addrTnct = sqlite3VdbeAddOp4(v, OP_OpenEphemeral, in sqlite3Select()
7231 sqlite3VdbeChangeP5(v, BTREE_UNORDERED); in sqlite3Select()
7275 sqlite3VdbeChangeToNoop(v, sSort.addrSortIndex); in sqlite3Select()
7288 sqlite3VdbeAddOp2(v, OP_Goto, 0, iBreak); in sqlite3Select()
7289 sqlite3VdbeResolveLabel(v, addrGosub); in sqlite3Select()
7290 VdbeNoopComment((v, "inner-loop subroutine")); in sqlite3Select()
7293 sqlite3VdbeResolveLabel(v, iCont); in sqlite3Select()
7294 sqlite3VdbeAddOp1(v, OP_Return, regGosub); in sqlite3Select()
7295 VdbeComment((v, "end inner-loop subroutine")); in sqlite3Select()
7296 sqlite3VdbeResolveLabel(v, iBreak); in sqlite3Select()
7495 addrSortingIdx = sqlite3VdbeAddOp4(v, OP_SorterOpen, in sqlite3Select()
7511 sqlite3VdbeAddOp2(v, OP_Integer, 0, iAbortFlag); in sqlite3Select()
7512 VdbeComment((v, "clear abort flag")); in sqlite3Select()
7513 sqlite3VdbeAddOp3(v, OP_Null, 0, iAMem, iAMem+pGroupBy->nExpr-1); in sqlite3Select()
7520 sqlite3VdbeAddOp2(v, OP_Gosub, regReset, addrReset); in sqlite3Select()
7576 sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase, nCol, regRecord); in sqlite3Select()
7577 sqlite3VdbeAddOp2(v, OP_SorterInsert, pAggInfo->sortingIdx, regRecord); in sqlite3Select()
7584 sqlite3VdbeAddOp3(v, OP_OpenPseudo, sortPTab, sortOut, nCol); in sqlite3Select()
7585 sqlite3VdbeAddOp2(v, OP_SorterSort, pAggInfo->sortingIdx, addrEnd); in sqlite3Select()
7586 VdbeComment((v, "GROUP BY sort")); VdbeCoverage(v); in sqlite3Select()
7601 sqlite3VdbeChangeToNoop(v, sSort.addrSortIndex); in sqlite3Select()
7609 addrTopOfLoop = sqlite3VdbeCurrentAddr(v); in sqlite3Select()
7611 sqlite3VdbeAddOp3(v, OP_SorterData, pAggInfo->sortingIdx, in sqlite3Select()
7616 sqlite3VdbeAddOp3(v, OP_Column, sortPTab, j, iBMem+j); in sqlite3Select()
7622 sqlite3VdbeAddOp4(v, OP_Compare, iAMem, iBMem, pGroupBy->nExpr, in sqlite3Select()
7624 addr1 = sqlite3VdbeCurrentAddr(v); in sqlite3Select()
7625 sqlite3VdbeAddOp3(v, OP_Jump, addr1+1, 0, addr1+1); VdbeCoverage(v); in sqlite3Select()
7637 sqlite3VdbeAddOp2(v, OP_Gosub, regOutputRow, addrOutputRow); in sqlite3Select()
7638 VdbeComment((v, "output one row")); in sqlite3Select()
7639 sqlite3VdbeAddOp2(v, OP_IfPos, iAbortFlag, addrEnd); VdbeCoverage(v); in sqlite3Select()
7640 VdbeComment((v, "check abort flag")); in sqlite3Select()
7641 sqlite3VdbeAddOp2(v, OP_Gosub, regReset, addrReset); in sqlite3Select()
7642 VdbeComment((v, "reset accumulator")); in sqlite3Select()
7647 sqlite3VdbeJumpHere(v, addr1); in sqlite3Select()
7649 sqlite3VdbeAddOp2(v, OP_Integer, 1, iUseFlag); in sqlite3Select()
7650 VdbeComment((v, "indicate data in accumulator")); in sqlite3Select()
7655 sqlite3VdbeAddOp2(v, OP_SorterNext, pAggInfo->sortingIdx,addrTopOfLoop); in sqlite3Select()
7656 VdbeCoverage(v); in sqlite3Select()
7660 sqlite3VdbeChangeToNoop(v, addrSortingIdx); in sqlite3Select()
7666 sqlite3VdbeAddOp2(v, OP_Gosub, regOutputRow, addrOutputRow); in sqlite3Select()
7667 VdbeComment((v, "output final row")); in sqlite3Select()
7671 sqlite3VdbeGoto(v, addrEnd); in sqlite3Select()
7680 addrSetAbort = sqlite3VdbeCurrentAddr(v); in sqlite3Select()
7681 sqlite3VdbeAddOp2(v, OP_Integer, 1, iAbortFlag); in sqlite3Select()
7682 VdbeComment((v, "set abort flag")); in sqlite3Select()
7683 sqlite3VdbeAddOp1(v, OP_Return, regOutputRow); in sqlite3Select()
7684 sqlite3VdbeResolveLabel(v, addrOutputRow); in sqlite3Select()
7685 addrOutputRow = sqlite3VdbeCurrentAddr(v); in sqlite3Select()
7686 sqlite3VdbeAddOp2(v, OP_IfPos, iUseFlag, addrOutputRow+2); in sqlite3Select()
7687 VdbeCoverage(v); in sqlite3Select()
7688 VdbeComment((v, "Groupby result generator entry point")); in sqlite3Select()
7689 sqlite3VdbeAddOp1(v, OP_Return, regOutputRow); in sqlite3Select()
7695 sqlite3VdbeAddOp1(v, OP_Return, regOutputRow); in sqlite3Select()
7696 VdbeComment((v, "end groupby result generator")); in sqlite3Select()
7700 sqlite3VdbeResolveLabel(v, addrReset); in sqlite3Select()
7702 sqlite3VdbeAddOp2(v, OP_Integer, 0, iUseFlag); in sqlite3Select()
7703 VdbeComment((v, "indicate accumulator empty")); in sqlite3Select()
7704 sqlite3VdbeAddOp1(v, OP_Return, regReset); in sqlite3Select()
7764 sqlite3VdbeAddOp4Int(v, OP_OpenRead, iCsr, (int)iRoot, iDb, 1); in sqlite3Select()
7766 sqlite3VdbeChangeP4(v, -1, (char *)pKeyInfo, P4_KEYINFO); in sqlite3Select()
7768 sqlite3VdbeAddOp2(v, OP_Count, iCsr, pAggInfo->aFunc[0].iMem); in sqlite3Select()
7769 sqlite3VdbeAddOp1(v, OP_Close, iCsr); in sqlite3Select()
7797 sqlite3VdbeAddOp2(v, OP_Integer, 0, regAcc); in sqlite3Select()
7836 if( regAcc ) sqlite3VdbeAddOp2(v, OP_Integer, 1, regAcc); in sqlite3Select()
7838 sqlite3WhereMinMaxOptEarlyOut(v, pWInfo); in sqlite3Select()
7850 sqlite3VdbeResolveLabel(v, addrEnd); in sqlite3Select()
7870 sqlite3VdbeResolveLabel(v, iEnd); in sqlite3Select()