SQLite

Check-in [71b6c26053]
Login

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

Overview
Comment:Fix a potential NULL-pointer dereference following an OOM error in the query planner logic for virtual tables with OR-connected terms.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | IN-with-ORDERBY
Files: files | file ages | folders
SHA1: 71b6c26053fdf2a5a84116e005bad1f2ca873a66
User & Date: drh 2013-02-08 23:18:18.222
Context
2013-02-13
01:00
Allow an index to be used for sorting even if prior terms of the index are constrained by IN operators. (check-in: 2cef8b68f0 user: drh tags: trunk)
2013-02-08
23:18
Fix a potential NULL-pointer dereference following an OOM error in the query planner logic for virtual tables with OR-connected terms. (Closed-Leaf check-in: 71b6c26053 user: drh tags: IN-with-ORDERBY)
20:39
Make sure the virtual tables that take advantage of IN operators sort the RHS of the IN operator in the correct order according to the ORDER BY clause. (check-in: b016b7546d user: drh tags: IN-with-ORDERBY)
Changes
Side-by-Side Diff Ignore Whitespace Patch
Changes to src/where.c.
3661
3662
3663
3664
3665
3666
3667

3668

3669
3670
3671
3672
3673
3674
3675
3661
3662
3663
3664
3665
3666
3667
3668

3669
3670
3671
3672
3673
3674
3675
3676







+
-
+







*/
static void bestIndex(WhereBestIdx *p){
#ifndef SQLITE_OMIT_VIRTUALTABLE
  if( IsVirtual(p->pSrc->pTab) ){
    sqlite3_index_info *pIdxInfo = 0;
    p->ppIdxInfo = &pIdxInfo;
    bestVirtualIndex(p);
    assert( pIdxInfo!=0 || p->pParse->db->mallocFailed );
    if( pIdxInfo->needToFreeIdxStr ){
    if( pIdxInfo && pIdxInfo->needToFreeIdxStr ){
      sqlite3_free(pIdxInfo->idxStr);
    }
    sqlite3DbFree(p->pParse->db, pIdxInfo);
  }else
#endif
  {
    bestBtreeIndex(p);