/ Check-in [0f881955]
Login

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

Overview
Comment:Improve "PRAGMA vdbe_trace=ON" to always show the key values for the OP_IdxGT and related opcodes.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 0f881955ed173c7c35dfca2d4aeca855858e40bb951e6fb6fedd9a2fff6a5a86
User & Date: drh 2018-08-03 13:56:26
Context
2018-09-29
19:38
Add the PRAGMA table_vinfo command (with an extra "v" before "info") that works like PRAGMA table_info (without the "v") except that it also shows hidden columns on virtual tables. check-in: 8bcd1a59 user: drh tags: pragma-table-vinfo
2018-08-03
15:58
Fix the OP_SeekRowid opcode so that it has no type-change side-effects on the key register in P3. This fixes an obcure problem that arises when doing equi-joins between a table with a TEXT column against another table with an INTEGER PRIMARY KEY. The original problem was discovered when OSSFuzz created such a query and hit an assert() in OP_VerifyTabCol that was specifically designed to catch these kinds of errors at run-time. Test cases for this fix are in TH3. check-in: fa94b49e user: drh tags: trunk
13:56
Improve "PRAGMA vdbe_trace=ON" to always show the key values for the OP_IdxGT and related opcodes. check-in: 0f881955 user: drh tags: trunk
2018-07-29
18:56
In the command-line shell, always exit if realloc() fails. check-in: e390023c user: drh tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to src/vdbe.c.

  5525   5525       r.default_rc = -1;
  5526   5526     }else{
  5527   5527       assert( pOp->opcode==OP_IdxGE || pOp->opcode==OP_IdxLT );
  5528   5528       r.default_rc = 0;
  5529   5529     }
  5530   5530     r.aMem = &aMem[pOp->p3];
  5531   5531   #ifdef SQLITE_DEBUG
  5532         -  { int i; for(i=0; i<r.nField; i++) assert( memIsValid(&r.aMem[i]) ); }
         5532  +  {
         5533  +    int i;
         5534  +    for(i=0; i<r.nField; i++){
         5535  +      assert( memIsValid(&r.aMem[i]) );
         5536  +      REGISTER_TRACE(pOp->p3+i, &aMem[pOp->p3+i]);
         5537  +    }
         5538  +  }
  5533   5539   #endif
  5534   5540     res = 0;  /* Not needed.  Only used to silence a warning. */
  5535   5541     rc = sqlite3VdbeIdxKeyCompare(db, pC, &r, &res);
  5536   5542     assert( (OP_IdxLE&1)==(OP_IdxLT&1) && (OP_IdxGE&1)==(OP_IdxGT&1) );
  5537   5543     if( (pOp->opcode&1)==(OP_IdxLT&1) ){
  5538   5544       assert( pOp->opcode==OP_IdxLE || pOp->opcode==OP_IdxLT );
  5539   5545       res = -res;