/ Check-in [dc511e60]
Login
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

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

Overview
Comment:Add test cases for fts4aux. Fix a bug affecting fts3 tables with multiple columns.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: dc511e60a65232a7087e12ff40b63506cf37a634
User & Date: dan 2011-02-05 14:37:57
Context
2011-02-05
15:47
Ensure fts4aux can handle a table name in single or double quotes as a constructor argument. check-in: 929d62e4 user: dan tags: trunk
14:37
Add test cases for fts4aux. Fix a bug affecting fts3 tables with multiple columns. check-in: dc511e60 user: dan tags: trunk
2011-02-04
18:56
Change fts4aux to (additionally) report on term frequency in individual columns of an fts table. check-in: 3996f92a user: dan tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ext/fts3/fts3_aux.c.

298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
          }else{            /* 2 or greater. A position. */
            pCsr->aStat[iCol+1].nOcc++;
            pCsr->aStat[0].nOcc++;
          }
          break;

        /* State 3. The integer just read is a column number. */
        case 3:
          iCol = (int)v;
          if( fts3auxGrowStatArray(pCsr, iCol+2) ) return SQLITE_NOMEM;
          pCsr->aStat[iCol+1].nDoc++;
          eState = 2;
          break;
      }
    }







|







298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
          }else{            /* 2 or greater. A position. */
            pCsr->aStat[iCol+1].nOcc++;
            pCsr->aStat[0].nOcc++;
          }
          break;

        /* State 3. The integer just read is a column number. */
        default: assert( eState==3 );
          iCol = (int)v;
          if( fts3auxGrowStatArray(pCsr, iCol+2) ) return SQLITE_NOMEM;
          pCsr->aStat[iCol+1].nDoc++;
          eState = 2;
          break;
      }
    }

Changes to test/fts3fault2.test.

35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62






63


64









65

do_faultsim_test 1.2 -prep {
  faultsim_restore_and_reopen
  db eval {SELECT * FROM sqlite_master}
} -body {
  execsql "SELECT * FROM terms"
} -test {
  faultsim_test_result {0 {a 1 1 b 1 1 c 2 2 d 1 1 e 1 1}}
}

do_faultsim_test 1.3 -prep {
  faultsim_restore_and_reopen
  db eval {SELECT * FROM sqlite_master}
} -body {
  execsql "SELECT * FROM terms WHERE term>'a' AND TERM < 'd'"
} -test {
  faultsim_test_result {0 {b 1 1 c 2 2}}
}

do_faultsim_test 1.4 -prep {
  faultsim_restore_and_reopen
  db eval {SELECT * FROM sqlite_master}
} -body {
  execsql "SELECT * FROM terms WHERE term='c'"
} -test {
  faultsim_test_result {0 {c 2 2}}
}




















finish_test







|








|








|


>
>
>
>
>
>
|
>
>

>
>
>
>
>
>
>
>
>

35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

do_faultsim_test 1.2 -prep {
  faultsim_restore_and_reopen
  db eval {SELECT * FROM sqlite_master}
} -body {
  execsql "SELECT * FROM terms"
} -test {
  faultsim_test_result {0 {a * 1 1 a 0 1 1 b * 1 1 b 0 1 1 c * 2 2 c 0 2 2 d * 1 1 d 0 1 1 e * 1 1 e 0 1 1}}
}

do_faultsim_test 1.3 -prep {
  faultsim_restore_and_reopen
  db eval {SELECT * FROM sqlite_master}
} -body {
  execsql "SELECT * FROM terms WHERE term>'a' AND TERM < 'd'"
} -test {
  faultsim_test_result {0 {b * 1 1 b 0 1 1 c * 2 2 c 0 2 2}}
}

do_faultsim_test 1.4 -prep {
  faultsim_restore_and_reopen
  db eval {SELECT * FROM sqlite_master}
} -body {
  execsql "SELECT * FROM terms WHERE term='c'"
} -test {
  faultsim_test_result {0 {c * 2 2 c 0 2 2}}
}

do_test 2.0 {
  faultsim_delete_and_reopen
  execsql {
    CREATE VIRTUAL TABLE tx USING fts4(a, b);
    INSERT INTO tx VALUES('a b c', 'x y z');
    CREATE VIRTUAL TABLE terms2 USING fts4aux(tx);
  }
  faultsim_save_and_close
} {}

do_faultsim_test 2.1 -prep {
  faultsim_restore_and_reopen
  db eval {SELECT * FROM sqlite_master}
} -body {
  execsql "SELECT * FROM terms2"
} -test {
  faultsim_test_result {0 {a * 1 1 a 0 1 1 b * 1 1 b 0 1 1 c * 1 1 c 0 1 1 x * 1 1 x 1 1 1 y * 1 1 y 1 1 1 z * 1 1 z 1 1 1}}
}

finish_test