]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Increase test coverage of fts5_vocab.c.
authordan <dan@noemail.net>
Fri, 22 May 2015 07:44:44 +0000 (07:44 +0000)
committerdan <dan@noemail.net>
Fri, 22 May 2015 07:44:44 +0000 (07:44 +0000)
FossilOrigin-Name: 065ab83a6ce36e16d3b95a61505aa3cff0bfea84

ext/fts5/fts5_vocab.c
ext/fts5/test/fts5fault4.test
ext/fts5/test/fts5vocab.test
manifest
manifest.uuid

index 6d03877ad037bd2f8bf42df0e23ed016707dc287..715811b1cae1dbcc30fdad403932ea52dbeb7a28 100644 (file)
@@ -260,8 +260,10 @@ static int fts5VocabOpenMethod(
     rc = sqlite3_prepare_v2(pTab->db, zSql, -1, &pStmt, 0);
   }
   sqlite3_free(zSql);
+  assert( rc==SQLITE_OK || pStmt==0 );
+  if( rc==SQLITE_ERROR ) rc = SQLITE_OK;
 
-  if( rc==SQLITE_OK && sqlite3_step(pStmt)==SQLITE_ROW ){
+  if( pStmt && sqlite3_step(pStmt)==SQLITE_ROW ){
     i64 iId = sqlite3_column_int64(pStmt, 0);
     pIndex = sqlite3Fts5IndexFromCsrid(pTab->pGlobal, iId, &nCol);
   }
@@ -271,8 +273,8 @@ static int fts5VocabOpenMethod(
     pStmt = 0;
     if( rc==SQLITE_OK ){
       pVTab->zErrMsg = sqlite3_mprintf(
-          "no such fts5 table: %Q.%Q", pTab->zFts5Db, pTab->zFts5Tbl
-          );
+          "no such fts5 table: %s.%s", pTab->zFts5Db, pTab->zFts5Tbl
+      );
       rc = SQLITE_ERROR;
     }
   }
@@ -304,13 +306,11 @@ static void fts5VocabResetCursor(Fts5VocabCursor *pCsr){
 ** on the xClose method of the virtual table interface.
 */
 static int fts5VocabCloseMethod(sqlite3_vtab_cursor *pCursor){
-  if( pCursor ){
-    Fts5VocabCursor *pCsr = (Fts5VocabCursor*)pCursor;
-    fts5VocabResetCursor(pCsr);
-    sqlite3Fts5BufferFree(&pCsr->term);
-    sqlite3_finalize(pCsr->pStmt);
-    sqlite3_free(pCsr);
-  }
+  Fts5VocabCursor *pCsr = (Fts5VocabCursor*)pCursor;
+  fts5VocabResetCursor(pCsr);
+  sqlite3Fts5BufferFree(&pCsr->term);
+  sqlite3_finalize(pCsr->pStmt);
+  sqlite3_free(pCsr);
   return SQLITE_OK;
 }
 
index ad1315bec0265b5eef3e8c6b580b7f7f556b5291..fe3fb0796a7a21b345b2fd0867ca5dcd6a194dff 100644 (file)
@@ -335,5 +335,41 @@ do_faultsim_test 11.1 -faults oom-t* -body {
   faultsim_test_result {0 {}} {1 {disk I/O error}}
 }
 
+#-------------------------------------------------------------------------
+# OOM while creating an fts5vocab table.
+#
+reset_db
+do_execsql_test 12.0 {
+  CREATE VIRTUAL TABLE ft USING fts5(x);
+}
+faultsim_save_and_close
+do_faultsim_test 12.1 -faults oom-t* -prep {
+  faultsim_restore_and_reopen
+  db eval { SELECT * FROM sqlite_master }
+} -body {
+  db eval { CREATE VIRTUAL TABLE vv USING fts5vocab(ft, 'row') }
+} -test {
+  faultsim_test_result {0 {}} 
+}
+
+#-------------------------------------------------------------------------
+# OOM while querying an fts5vocab table.
+#
+reset_db
+do_execsql_test 13.0 {
+  CREATE VIRTUAL TABLE ft USING fts5(x);
+  INSERT INTO ft VALUES('a b');
+  CREATE VIRTUAL TABLE vv USING fts5vocab(ft, 'row');
+}
+faultsim_save_and_close
+do_faultsim_test 13.1 -faults oom-t* -prep {
+  faultsim_restore_and_reopen
+  db eval { SELECT * FROM vv }
+} -body {
+  db eval { SELECT * FROM vv }
+} -test {
+  faultsim_test_result {0 {a 1 1 b 1 1}} 
+}
+
 finish_test
 
index fcef2b793dbf4857a6e018cfea1f844dd3a911af..2d2faac3e05ef26f2a0ee762b143fdefe19830e1 100644 (file)
@@ -120,6 +120,7 @@ foreach {tn tbl resname} {
 }
 
 #-------------------------------------------------------------------------
+# Test errors in the CREATE VIRTUAL TABLE statement.
 #
 foreach {tn sql} {
   1 { CREATE VIRTUAL TABLE aa USING fts5vocab() }
@@ -129,5 +130,82 @@ foreach {tn sql} {
 } {
   do_catchsql_test 3.$tn $sql {1 {wrong number of vtable arguments}}
 }
+
+do_catchsql_test 4.0 {
+  CREATE VIRTUAL TABLE cc USING fts5vocab(tbl, unknown);
+} {1 {fts5vocab: unknown table type: 'unknown'}}
+
+do_catchsql_test 4.1 {
+  ATTACH 'test.db' AS aux;
+  CREATE VIRTUAL TABLE aux.cc USING fts5vocab(main, tbl, row);
+} {1 {wrong number of vtable arguments}}
+
+#-------------------------------------------------------------------------
+# Test fts5vocab tables created in the temp schema. 
+#
+reset_db
+forcedelete test.db2
+do_execsql_test 5.0 {
+  ATTACH 'test.db2' AS aux;
+  CREATE VIRTUAL TABLE t1 USING fts5(x);
+  CREATE VIRTUAL TABLE temp.t1 USING fts5(x);
+  CREATE VIRTUAL TABLE aux.t1 USING fts5(x);
+
+  INSERT INTO main.t1 VALUES('a b c');
+  INSERT INTO main.t1 VALUES('d e f');
+  INSERT INTO main.t1 VALUES('a e c');
+
+  INSERT INTO temp.t1 VALUES('1 2 3');
+  INSERT INTO temp.t1 VALUES('4 5 6');
+  INSERT INTO temp.t1 VALUES('1 5 3');
+
+  INSERT INTO aux.t1 VALUES('x y z');
+  INSERT INTO aux.t1 VALUES('m n o');
+  INSERT INTO aux.t1 VALUES('x n z');
+}
+
+breakpoint
+do_execsql_test 5.1 {
+  CREATE VIRTUAL TABLE temp.vm  USING fts5vocab(main, t1, row);
+  CREATE VIRTUAL TABLE temp.vt1 USING fts5vocab(t1, row);
+  CREATE VIRTUAL TABLE temp.vt2 USING fts5vocab(temp, t1, row);
+  CREATE VIRTUAL TABLE temp.va  USING fts5vocab(aux, t1, row);
+}
+
+do_execsql_test 5.2 { SELECT * FROM vm } {
+  a 2 2 b 1 1 c 2 2 d 1 1 e 2 2 f 1 1
+}
+do_execsql_test 5.3 { SELECT * FROM vt1 } {
+  1 2 2 2 1 1 3 2 2 4 1 1 5 2 2 6 1 1
+}
+do_execsql_test 5.4 { SELECT * FROM vt2 } {
+  1 2 2 2 1 1 3 2 2 4 1 1 5 2 2 6 1 1
+}
+do_execsql_test 5.5 { SELECT * FROM va } {
+  m 1 1 n 2 2 o 1 1 x 2 2 y 1 1 z 2 2
+}
+
+#-------------------------------------------------------------------------
+#
+do_execsql_test 6.0 {
+  CREATE TABLE iii(iii);
+  CREATE TABLE jjj(x);
+}
+
+do_catchsql_test 6.1 {
+  CREATE VIRTUAL TABLE vocab1 USING fts5vocab(iii, row);
+  SELECT * FROM vocab1;
+} {1 {no such fts5 table: main.iii}}
+
+do_catchsql_test 6.2 {
+  CREATE VIRTUAL TABLE vocab2 USING fts5vocab(jjj, row);
+  SELECT * FROM vocab2;
+} {1 {no such fts5 table: main.jjj}}
+
+do_catchsql_test 6.2 {
+  CREATE VIRTUAL TABLE vocab3 USING fts5vocab(lll, row);
+  SELECT * FROM vocab3;
+} {1 {no such fts5 table: main.lll}}
+
 finish_test
 
index 3f410ed24cab313e7e359dde9bc622ea096056a7..4511ac2102e4693819303d8c441b59bd911f675f 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Improve\stest\scoverage\sof\sfts5_unicode2.c.
-D 2015-05-22T06:08:25.338
+C Increase\stest\scoverage\sof\sfts5_vocab.c.
+D 2015-05-22T07:44:44.808
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 2c28e557780395095c307a6e5cb539419027eb5e
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -118,7 +118,7 @@ F ext/fts5/fts5_storage.c 5d2b51adb304643d8f825ba89283d628418b20c2
 F ext/fts5/fts5_tcl.c 7ea165878e4ae3598e89acd470a0ee1b5a00e33c
 F ext/fts5/fts5_tokenize.c 24649425adfea2c4877d8f69f2754b70374940ec
 F ext/fts5/fts5_unicode2.c c75022368f940a38afa1d2f0164c78b11ab2f383
-F ext/fts5/fts5_vocab.c b54301e376f59f08f662b5dde1cfaf26e86e4db6
+F ext/fts5/fts5_vocab.c 3d06e4306660fcd92a596c1e57c8be58dcc779dd
 F ext/fts5/fts5parse.y 777da8e5819f75c217982c79c29d014c293acac9
 F ext/fts5/mkportersteps.tcl 5acf962d2e0074f701620bb5308155fa1e4a63ba
 F ext/fts5/test/fts5_common.tcl 6d663e8c3d8409857363f66560df96b8ca813e79
@@ -149,7 +149,7 @@ F ext/fts5/test/fts5eb.test 728a1f23f263548f5c29b29dfb851b5f2dbe723e
 F ext/fts5/test/fts5fault1.test b42d3296be8a75f557cf2cbce0d8b483fc9db45b
 F ext/fts5/test/fts5fault2.test 28c36c843bb39ae855ba79827417ecc37f114341
 F ext/fts5/test/fts5fault3.test d6e9577d4312e331a913c72931bf131704efc8f3
-F ext/fts5/test/fts5fault4.test 7c7c46559368f06b98daa940d376c4740bcdad25
+F ext/fts5/test/fts5fault4.test e7170486d71de72fe88018b5b920c0a9f6c19801
 F ext/fts5/test/fts5fault5.test 98e7e77bc1d8bb47c955e7d6dc870ab5736536e3
 F ext/fts5/test/fts5fault6.test 234dc6355f8d3f8b5be2763f30699d770247c215
 F ext/fts5/test/fts5full.test 0924bdca5416a242103239ace79c6f5aa34bab8d
@@ -172,7 +172,7 @@ F ext/fts5/test/fts5unicode2.test ad38982b03dc9213445facb16e99f668a74cc4ba
 F ext/fts5/test/fts5unicode3.test 273f9086ad33935566bbc0d0c94d0d9687ef686b
 F ext/fts5/test/fts5unindexed.test f388605341a476b6ab622b4c267cd168f59a5944
 F ext/fts5/test/fts5version.test dc34a735af6625a1a7a4a916a38d122071343887
-F ext/fts5/test/fts5vocab.test 80fb22850dd3b2c92a3896e6021605e08c0872aa
+F ext/fts5/test/fts5vocab.test 389e5fe4928eae5fddcf26bcc5a6890b0791aa75
 F ext/fts5/tool/loadfts5.tcl add4d349ae5463c5f60b26e821c24e60ed8054d3
 F ext/fts5/tool/showfts5.tcl 921f33b30c3189deefd2b2cc81f951638544aaf1
 F ext/icu/README.txt d9fbbad0c2f647c3fdf715fc9fd64af53aedfc43
@@ -1331,7 +1331,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 0e91a6a520f040b8902da6a1a4d9107dc66c0ea3
-R dac2002cb3b723a15f8d8c03f8a4c974
+P fea8a4db9d8c7b9a946017a0dc984cbca6ce240e
+R 0a9b7fd2943b1fd62b28165e907889dd
 U dan
-Z b9f569713ab52c4f747377183dfd6e18
+Z c38b4b46643fdff88e3ee48e8e4a1b8f
index 04571c82b5b90ce0d269026ecfd7fecec5028746..54bfcc0d8cf8e88418d23766f3f4501650674327 100644 (file)
@@ -1 +1 @@
-fea8a4db9d8c7b9a946017a0dc984cbca6ce240e
\ No newline at end of file
+065ab83a6ce36e16d3b95a61505aa3cff0bfea84
\ No newline at end of file