Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Enhanced VdbeCoverage() macros in the new windows function code. Later: This check-in causes an assertion fault. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | oops |
Files: | files | file ages | folders |
SHA3-256: |
f24066f8dd847dfb656f26c4a8142e7f |
User & Date: | drh 2019-03-30 20:10:11.121 |
Original Comment: | Enhanced VdbeCoverage() macros in the new windows function code. |
Context
2019-03-30
| ||
20:37 | Fix issues with the previous check-in and add more VDBE branch coverage testing macros. (Closed-Leaf check-in: b5f72f10f2 user: drh tags: oops) | |
20:10 | Enhanced VdbeCoverage() macros in the new windows function code. Later: This check-in causes an assertion fault. (check-in: f24066f8dd user: drh tags: oops) | |
19:17 | Add a call to sqlite3FaultSim(410) inside of btreeRestoreCursorPosition() to simplify testing of error scenarios. (check-in: bb643bac53 user: drh tags: trunk) | |
Changes
Changes to src/window.c.
︙ | ︙ | |||
1831 1832 1833 1834 1835 1836 1837 | sqlite3VdbeAddOp4(v, OP_String8, 0, regString, 0, "", P4_STATIC); addrGe = sqlite3VdbeAddOp3(v, OP_Ge, regString, 0, reg1); VdbeCoverage(v); sqlite3VdbeAddOp3(v, arith, regVal, reg1, reg1); sqlite3VdbeJumpHere(v, addrGe); sqlite3VdbeAddOp3(v, op, reg2, lbl, reg1); sqlite3VdbeChangeP5(v, SQLITE_NULLEQ); | > | > > | 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 | sqlite3VdbeAddOp4(v, OP_String8, 0, regString, 0, "", P4_STATIC); addrGe = sqlite3VdbeAddOp3(v, OP_Ge, regString, 0, reg1); VdbeCoverage(v); sqlite3VdbeAddOp3(v, arith, regVal, reg1, reg1); sqlite3VdbeJumpHere(v, addrGe); sqlite3VdbeAddOp3(v, op, reg2, lbl, reg1); sqlite3VdbeChangeP5(v, SQLITE_NULLEQ); assert( op==OP_Ge || op==OP_Gt || op==OP_Le ); VdbeCoverageIf(v, op==OP_Ge); VdbeCoverageIf(v, op==OP_Gt); VdbeCoverageIf(v, op==OP_Le); sqlite3ReleaseTempReg(pParse, reg1); sqlite3ReleaseTempReg(pParse, reg2); } /* ** Helper function for sqlite3WindowCodeStep(). Each call to this function |
︙ | ︙ | |||
2529 2530 2531 2532 2533 2534 2535 | sqlite3ExprCode(pParse, pMWin->pEnd, regEnd); windowCheckValue(pParse, regEnd, 1 + (pMWin->eFrmType==TK_RANGE ? 3 : 0)); } if( pMWin->eStart==pMWin->eEnd && regStart ){ int op = ((pMWin->eStart==TK_FOLLOWING) ? OP_Ge : OP_Le); int addrGe = sqlite3VdbeAddOp3(v, op, regStart, 0, regEnd); | | > | 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 | sqlite3ExprCode(pParse, pMWin->pEnd, regEnd); windowCheckValue(pParse, regEnd, 1 + (pMWin->eFrmType==TK_RANGE ? 3 : 0)); } if( pMWin->eStart==pMWin->eEnd && regStart ){ int op = ((pMWin->eStart==TK_FOLLOWING) ? OP_Ge : OP_Le); int addrGe = sqlite3VdbeAddOp3(v, op, regStart, 0, regEnd); VdbeCoverageIf(v, op==OP_Ge); VdbeCoverageIf(v, op==OP_Le); windowAggFinal(&s, 0); sqlite3VdbeAddOp2(v, OP_Rewind, s.current.csr, 1); VdbeCoverageNeverTaken(v); windowReturnOneRow(&s); sqlite3VdbeAddOp1(v, OP_ResetSorter, s.current.csr); sqlite3VdbeAddOp2(v, OP_Goto, 0, lblWhereEnd); sqlite3VdbeJumpHere(v, addrGe); |
︙ | ︙ |