Add a test case for creating an FTS3 table with no module arguments or opening/closing brackets in the CREATE VIRTUAL TABLE statement.

FossilOrigin-Name: a9cba7ea0a06efa7a63a3069b219cc30fb127e98
This commit is contained in:
dan 2009-11-28 15:35:16 +00:00
parent 1e6349900d
commit 8e9f6aedae
6 changed files with 331 additions and 298 deletions

View File

@ -657,8 +657,8 @@ int fts3InitVtab(
int nDb;
int nName;
const char *zTokenizer = 0;
sqlite3_tokenizer *pTokenizer; /* Tokenizer for this table */
const char *zTokenizer = 0; /* Name of tokenizer to use */
sqlite3_tokenizer *pTokenizer = 0; /* Tokenizer for this table */
nDb = strlen(argv[1]) + 1;
nName = strlen(argv[2]) + 1;
@ -749,9 +749,13 @@ int fts3InitVtab(
*ppVTab = &p->base;
fts3_init_out:
assert( p || (pTokenizer && rc!=SQLITE_OK) );
if( rc!=SQLITE_OK ){
if( p ) fts3DisconnectMethod((sqlite3_vtab *)p);
else if( pTokenizer ) pTokenizer->pModule->xDestroy(pTokenizer);
if( p ){
fts3DisconnectMethod((sqlite3_vtab *)p);
}else{
pTokenizer->pModule->xDestroy(pTokenizer);
}
}
return rc;
}

View File

@ -1,8 +1,5 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
C Initialize\sa\svariable\s(unnecessarily)\sto\savoid\sa\scompiler\swarning.
D 2009-11-28T13:46:52
C Add\sa\stest\scase\sfor\screating\san\sFTS3\stable\swith\sno\smodule\sarguments\sor\sopening/closing\sbrackets\sin\sthe\sCREATE\sVIRTUAL\sTABLE\sstatement.
D 2009-11-28T15:35:17
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in c5827ead754ab32b9585487177c93bb00b9497b3
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@ -59,7 +56,7 @@ F ext/fts2/mkfts2amal.tcl 974d5d438cb3f7c4a652639262f82418c1e4cff0
F ext/fts3/README.syntax a19711dc5458c20734b8e485e75fb1981ec2427a
F ext/fts3/README.tokenizers 998756696647400de63d5ba60e9655036cb966e9
F ext/fts3/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d
F ext/fts3/fts3.c 524b080a1a7e9c4ebe7ce49e63f8f22a40a8b795
F ext/fts3/fts3.c 591a84934108c7838f31bd0379fd2ac9f5b6c2ef
F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe
F ext/fts3/fts3Int.h 74b21db1c4479c220e803ecf45a78de3b5ac9480
F ext/fts3/fts3_expr.c bdf11f3602f62f36f0e42823680bf22033dae0de
@ -328,8 +325,8 @@ F test/descidx2.test 1310ed1326cdfed4ea2c55169631579f082d174f
F test/descidx3.test 3394ad4d089335cac743c36a14129d6d931c316f
F test/diskfull.test 0cede7ef9d8f415d9d3944005c76be7589bb5ebb
F test/distinctagg.test 1a6ef9c87a58669438fc771450d7a72577417376
F test/e_fkey.test f0fbfbcc01b24ad840ed61227b66a05201a7856d
F test/e_fts3.test 50fcbde25544ee8ab268bfa1e06dda1e570d12d1
F test/e_fkey.test fd1fcf89badd5f2773d7ac04775b5ff3488eda17
F test/e_fts3.test 488055f7c223e289ea341d55a7e1dd5281893b93
F test/enc.test e54531cd6bf941ee6760be041dff19a104c7acea
F test/enc2.test 6d91a5286f59add0cfcbb2d0da913b76f2242398
F test/enc3.test 5c550d59ff31dccdba5d1a02ae11c7047d77c041
@ -380,7 +377,7 @@ F test/fts2q.test b2fbbe038b7a31a52a6079b215e71226d8c6a682
F test/fts2r.test b154c30b63061d8725e320fba1a39e2201cadd5e
F test/fts2token.test d8070b241a15ff13592a9ae4a8b7c171af6f445a
F test/fts3.test f4f380d3717493605270dfa3b0fa893ea0afb18d
F test/fts3_common.tcl b4d857bbc29ea8039cec556e49671168812cca08
F test/fts3_common.tcl cdc89bb78754d54b19d8a5dfabd14575742a5293
F test/fts3aa.test 5327d4c1d9b6c61021696746cc9a6cdc5bf159c0
F test/fts3ab.test 09aeaa162aee6513d9ff336b6932211008b9d1f9
F test/fts3ac.test 356280144a2c92aa7b11474afadfe62a437fcd69
@ -778,14 +775,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
P eada284bc10cafcab9beb3473bb0c70b3b4de2f9
R 87acf1a9d3ff5d757611a22dd3e075e3
U drh
Z 179b4156acc3071052b9a653aa102271
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFLESnQoxKgR168RlERAhmAAJ9mDOo95xYTPVvvON42jITcYZk7/QCfdr/k
+pNzb15NPCcKrG7vQsDshIw=
=6eZn
-----END PGP SIGNATURE-----
P db65fd5913aae4d83d2c2bc243653175be3c3d35
R 9fcbd85e4dfbef4d1cba73d182c5e027
U dan
Z a8040dc309e6b365539843242aa4e716

View File

@ -1 +1 @@
db65fd5913aae4d83d2c2bc243653175be3c3d35
a9cba7ea0a06efa7a63a3069b219cc30fb127e98

File diff suppressed because it is too large Load Diff

View File

@ -22,8 +22,6 @@ ifcapable !fts3 {
}
source $testdir/fts3_common.tcl
set DO_MALLOC_TEST 0
# Procs used to make the tests in this file easier to read.
#
proc ddl_test {tn ddl} {
@ -36,7 +34,14 @@ proc read_test {tn sql result} {
uplevel [list do_select_test e_fts3-$tn $sql $result]
}
#-----------------------------------------------------------------
foreach DO_MALLOC_TEST {0 1 2} {
db close
file delete -force test.db test.db-journal
sqlite3 db test.db
if {$DO_MALLOC_TEST} { sqlite3_db_config_lookaside db 0 0 0 }
##########################################################################
# Test the example CREATE VIRTUAL TABLE statements in section 1.1
# of fts3.in.
#
@ -69,4 +74,35 @@ read_test 1.3.4 {
SELECT subject IS NULL, length(body) FROM mail
} [list 1 100000]
ddl_test 1.4.1 {
CREATE VIRTUAL TABLE papers USING fts3(author, document, tokenize=porter)
}
read_test 1.4.2 {
PRAGMA table_info(papers)
} {0 author {} 0 {} 0 1 document {} 0 {} 0}
ddl_test 1.5.1 {
CREATE VIRTUAL TABLE simpledata USING fts3(tokenize=simple)
}
read_test 1.5.2 {
PRAGMA table_info(simpledata)
} {0 content {} 0 {} 0}
ddl_test 1.6.1 {DROP TABLE data}
ddl_test 1.6.2 {DROP TABLE pages}
ddl_test 1.6.3 {DROP TABLE mail}
ddl_test 1.6.4 {DROP TABLE papers}
ddl_test 1.6.5 {DROP TABLE simpledata}
read_test 1.6.6 {SELECT * FROM sqlite_master} {}
# The following is not one of the examples in section 1.1. It tests
# specifying an FTS3 table with no module arguments using a slightly
# different syntax.
ddl_test 1.7.1 {CREATE VIRTUAL TABLE data USING fts3;}
read_test 1.7.2 {PRAGMA table_info(data)} {0 content {} 0 {} 0}
ddl_test 1.7.3 {DROP TABLE data}
##########################################################################
}
finish_test

View File

@ -378,10 +378,13 @@ proc do_write_test {name tbl sql} {
# Calculate the initial table checksum.
set cksum1 [db one $cksumsql]
if {$::DO_MALLOC_TEST } {
set answers [list {1 {out of memory}} {0 {}}]
set modes [list 100000 transient 1 persistent]
if {$::DO_MALLOC_TEST==1} {
set modes {100000 transient}
} else {
set modes {1 persistent}
}
} else {
set answers [list {0 {}}]
set modes [list 0 nofail]