Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Remove a testcase() macro which is now unreachable due to the contraction of the use of IN_INDEX_ROWID. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | tkt-df46dfb631 |
Files: | files | file ages | folders |
SHA3-256: |
90c5a17cd526b256753f876e575f3e73 |
User & Date: | drh 2019-02-23 00:08:09.169 |
Context
2019-02-23
| ||
00:21 | Check-in [fa792714ae62fa98] is incorrect. Add a test case to refute it and also a fix to make it right. Then add an alternative fix to ticket [df46dfb631f75694] in which all ephemeral tables used as the RHS of an IN operator be index btrees and never table btrees so that they can always be reused. (check-in: d3915230e3 user: drh tags: trunk) | |
00:08 | Remove a testcase() macro which is now unreachable due to the contraction of the use of IN_INDEX_ROWID. (Closed-Leaf check-in: 90c5a17cd5 user: drh tags: tkt-df46dfb631) | |
2019-02-22
| ||
23:29 | Make all ephemeral tables built to hold the RHS of an IN operator be index-btrees, never table-btrees, regardless of whether or not they are used as IN_INDEX_LOOP or IN_INDEX_MEMBERSHIP. That way, the same ephmerial table can be reused for both cases. (check-in: c2d50df8fd user: drh tags: tkt-df46dfb631) | |
Changes
Changes to src/wherecode.c.
︙ | ︙ | |||
578 579 580 581 582 583 584 | if( pIn ){ int iMap = 0; /* Index in aiMap[] */ pIn += i; for(i=iEq;i<pLoop->nLTerm; i++){ if( pLoop->aLTerm[i]->pExpr==pX ){ int iOut = iReg + i - iEq; if( eType==IN_INDEX_ROWID ){ | < | 578 579 580 581 582 583 584 585 586 587 588 589 590 591 | if( pIn ){ int iMap = 0; /* Index in aiMap[] */ pIn += i; for(i=iEq;i<pLoop->nLTerm; i++){ if( pLoop->aLTerm[i]->pExpr==pX ){ int iOut = iReg + i - iEq; if( eType==IN_INDEX_ROWID ){ pIn->addrInTop = sqlite3VdbeAddOp2(v, OP_Rowid, iTab, iOut); }else{ int iCol = aiMap ? aiMap[iMap++] : 0; pIn->addrInTop = sqlite3VdbeAddOp3(v,OP_Column,iTab, iCol, iOut); } sqlite3VdbeAddOp1(v, OP_IsNull, iOut); VdbeCoverage(v); if( i==iEq ){ |
︙ | ︙ |