SQLite

Check-in [b1cbcdc6eb]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add missing VdbeCoverage() macros to new code.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | nulls-last
Files: files | file ages | folders
SHA3-256: b1cbcdc6eb42cca0c42a05e0d6ba4c6c7f09adff0c59ecfc5b434a94dec07a41
User & Date: dan 2019-08-21 19:58:11.253
Context
2019-08-22
19:35
Merge fixes from trunk. Also fix a reference to the KeyInfo.aSortOrder field, which should now be KeyInfo.aSortFlags (check-in: 63e625c8eb user: drh tags: nulls-last)
2019-08-21
19:58
Add missing VdbeCoverage() macros to new code. (check-in: b1cbcdc6eb user: dan tags: nulls-last)
17:46
Disable broken test case in expert1.test. (check-in: 73e30c2e92 user: dan tags: nulls-last)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/where.c.
5214
5215
5216
5217
5218
5219
5220

5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
      VdbeCoverage(v);
      VdbeCoverageIf(v, pLevel->op==OP_Next);
      VdbeCoverageIf(v, pLevel->op==OP_Prev);
      VdbeCoverageIf(v, pLevel->op==OP_VNext);
      if( pLevel->regBignull ){
        sqlite3VdbeResolveLabel(v, pLevel->addrBignull);
        addr = sqlite3VdbeAddOp1(v, OP_If, pLevel->regBignull);

        sqlite3VdbeAddOp2(v, OP_Integer, 1, pLevel->regBignull);
        sqlite3VdbeAddOp2(v, OP_Goto, 0, pLevel->p2-1);
        sqlite3VdbeChangeP5(v, pLevel->p5);
        VdbeCoverage(v);
        VdbeCoverageIf(v, pLevel->op==OP_Next);
        VdbeCoverageIf(v, pLevel->op==OP_Prev);
        sqlite3VdbeJumpHere(v, addr);
      }
#ifndef SQLITE_DISABLE_SKIPAHEAD_DISTINCT
      if( addrSeek ) sqlite3VdbeJumpHere(v, addrSeek);
#endif
    }else{
      sqlite3VdbeResolveLabel(v, pLevel->addrCont);







>


<
<
<
<







5214
5215
5216
5217
5218
5219
5220
5221
5222
5223




5224
5225
5226
5227
5228
5229
5230
      VdbeCoverage(v);
      VdbeCoverageIf(v, pLevel->op==OP_Next);
      VdbeCoverageIf(v, pLevel->op==OP_Prev);
      VdbeCoverageIf(v, pLevel->op==OP_VNext);
      if( pLevel->regBignull ){
        sqlite3VdbeResolveLabel(v, pLevel->addrBignull);
        addr = sqlite3VdbeAddOp1(v, OP_If, pLevel->regBignull);
        VdbeCoverage(v);
        sqlite3VdbeAddOp2(v, OP_Integer, 1, pLevel->regBignull);
        sqlite3VdbeAddOp2(v, OP_Goto, 0, pLevel->p2-1);




        sqlite3VdbeJumpHere(v, addr);
      }
#ifndef SQLITE_DISABLE_SKIPAHEAD_DISTINCT
      if( addrSeek ) sqlite3VdbeJumpHere(v, addrSeek);
#endif
    }else{
      sqlite3VdbeResolveLabel(v, pLevel->addrCont);
Changes to src/window.c.
1903
1904
1905
1906
1907
1908
1909

1910



1911


1912
1913
1914
1915
1916
1917
1918
  sqlite3VdbeAddOp3(v, arith, regVal, reg1, reg1);
  sqlite3VdbeJumpHere(v, addrGe);
  if( pOrderBy->a[0].sortFlags & KEYINFO_ORDER_BIGNULL ){
    int addr;
    addr = sqlite3VdbeAddOp1(v, OP_NotNull, reg1); VdbeCoverage(v);
    switch( op ){
      case OP_Ge: sqlite3VdbeAddOp2(v, OP_Goto, 0, lbl); break;

      case OP_Gt: sqlite3VdbeAddOp2(v, OP_NotNull, reg2, lbl); break;



      case OP_Le: sqlite3VdbeAddOp2(v, OP_IsNull, reg2, lbl); break;


      default: assert( op==OP_Lt ); /* no-op */
    }
    sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3VdbeCurrentAddr(v)+2);
    sqlite3VdbeJumpHere(v, addr);
    sqlite3VdbeAddOp2(v, OP_IsNull, reg2, lbl); VdbeCoverage(v);
    if( op==OP_Gt || op==OP_Ge ){
      sqlite3VdbeChangeP2(v, -1, sqlite3VdbeCurrentAddr(v)+1);







>
|
>
>
>
|
>
>







1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
  sqlite3VdbeAddOp3(v, arith, regVal, reg1, reg1);
  sqlite3VdbeJumpHere(v, addrGe);
  if( pOrderBy->a[0].sortFlags & KEYINFO_ORDER_BIGNULL ){
    int addr;
    addr = sqlite3VdbeAddOp1(v, OP_NotNull, reg1); VdbeCoverage(v);
    switch( op ){
      case OP_Ge: sqlite3VdbeAddOp2(v, OP_Goto, 0, lbl); break;
      case OP_Gt: 
        sqlite3VdbeAddOp2(v, OP_NotNull, reg2, lbl); 
        VdbeCoverage(v); 
        break;
      case OP_Le: 
        sqlite3VdbeAddOp2(v, OP_IsNull, reg2, lbl); 
        VdbeCoverage(v); 
        break;
      default: assert( op==OP_Lt ); /* no-op */
    }
    sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3VdbeCurrentAddr(v)+2);
    sqlite3VdbeJumpHere(v, addr);
    sqlite3VdbeAddOp2(v, OP_IsNull, reg2, lbl); VdbeCoverage(v);
    if( op==OP_Gt || op==OP_Ge ){
      sqlite3VdbeChangeP2(v, -1, sqlite3VdbeCurrentAddr(v)+1);