SQLite

Check-in [ec70a67ebc]
Login

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

Overview
Comment:Fix to the vector less-than operator. All legacy tests passing now.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | vector-compare
Files: files | file ages | folders
SHA1: ec70a67ebc997f457be4d52d8affc37e142dc3ff
User & Date: drh 2016-08-13 12:37:47.521
Context
2016-08-13
13:03
Improvements to commits. No code changes. (check-in: 18f5a3bee4 user: drh tags: vector-compare)
12:37
Fix to the vector less-than operator. All legacy tests passing now. (check-in: ec70a67ebc user: drh tags: vector-compare)
10:02
Attempt to simplify the logic and generated code for vector comparisons. Basic comparison operators are working, but there are many indexing test failures still to be worked through. (check-in: dfc028cfbe user: drh tags: vector-compare)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/expr.c.
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
      }
      if( opx==TK_EQ ){
        sqlite3VdbeAddOp2(v, OP_IfNot, dest, addrDone); VdbeCoverage(v);
        p5 |= SQLITE_KEEPNULL;
      }else if( opx==TK_NE ){
        sqlite3VdbeAddOp2(v, OP_If, dest, addrDone); VdbeCoverage(v);
        p5 |= SQLITE_KEEPNULL;
      }else if( opx==op ){
        assert( op==TK_LT || op==TK_GT );
        sqlite3VdbeAddOp3(v, OP_If, dest, addrDone, 1);
        VdbeCoverageIf(v, op==TK_LT);
        VdbeCoverageIf(v, op==TK_GT);
      }else{
        assert( op==TK_LE || op==TK_GE );
        sqlite3VdbeAddOp2(v, OP_ElseNotEq, 0, addrDone);
        VdbeCoverageIf(v, op==TK_LE);
        VdbeCoverageIf(v, op==TK_GE);
        if( i==nLeft-2 ) opx = op;
      }
    }
    sqlite3VdbeResolveLabel(v, addrDone);
  }







|
|
|


<
<
<







481
482
483
484
485
486
487
488
489
490
491
492



493
494
495
496
497
498
499
      }
      if( opx==TK_EQ ){
        sqlite3VdbeAddOp2(v, OP_IfNot, dest, addrDone); VdbeCoverage(v);
        p5 |= SQLITE_KEEPNULL;
      }else if( opx==TK_NE ){
        sqlite3VdbeAddOp2(v, OP_If, dest, addrDone); VdbeCoverage(v);
        p5 |= SQLITE_KEEPNULL;
      }else{
        assert( op==TK_LT || op==TK_GT || op==TK_LE || op==TK_GE );
        sqlite3VdbeAddOp2(v, OP_ElseNotEq, 0, addrDone);
        VdbeCoverageIf(v, op==TK_LT);
        VdbeCoverageIf(v, op==TK_GT);



        VdbeCoverageIf(v, op==TK_LE);
        VdbeCoverageIf(v, op==TK_GE);
        if( i==nLeft-2 ) opx = op;
      }
    }
    sqlite3VdbeResolveLabel(v, addrDone);
  }
Changes to test/rowvalue2.test.
245
246
247
248
249
250
251
252
      ]
    }
  }
}


finish_test








<
245
246
247
248
249
250
251

      ]
    }
  }
}


finish_test