diff --git a/manifest b/manifest index 0a46dea771..47e9e66a89 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Remove\sthe\salternative\sUTF-16\simplementation\sof\sSUBSTR().\s\sIt\sdoes\snot\nwork\sanymore\sand\sthe\sUTF-8\sversion\scan\sdo\severything\sthat\sthe\sUTF-16\nversion\sdoes.\s(CVS\s4009) -D 2007-05-15T14:40:11 +C Make\ssure\spParse->rc\sgets\sset\swhenever\ssqlite3ErrorMsg()\sis\scalled.\s\sThis\sis\nadded\sinsurance\sthat\sparsing\swill\sstop\squickly\safter\san\serror.\s\sThis\schange\ndid\smake\sthe\sparser\sstop\sfaster\sin\ssome\scases,\swhich\srequired\ssome\srevisions\nto\stests.\s(CVS\s4010) +D 2007-05-15T16:51:37 F Makefile.in 87b200ad9970907f76df734d29dff3d294c10935 F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -94,7 +94,7 @@ F src/os_win.c d868d5f9e95ec9c1b9e2a30c54c996053db6dddd F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b F src/pager.c acfa86f50b71b7e289508b213bb88e68273d42a0 F src/pager.h 94110a5570dca30d54a883e880a3633b2e4c05ae -F src/parse.y 5d4d60e7e1beb1ad134835ee0624d35617f36c4e +F src/parse.y e276a0c35d6579938708f0842d0eba4e9b6866e6 F src/pragma.c 6d5eb19feef9e84117b9b17a4c38b12b8c1c6897 F src/prepare.c 87c23644986b5e41a58bc76f05abebd899e00089 F src/printf.c cd91e057fa7e2661673eecd4eeecf4900b1e5cfe @@ -104,7 +104,7 @@ F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96 F src/shell.c d07ae326b3815d80f71c69b3c7584382e47f6447 F src/sqlite.h.in aa3c0c02883663944db09ee79f3165d3c4ad7c47 F src/sqlite3ext.h 7d0d363ea7327e817ef0dfe1b7eee1f171b72890 -F src/sqliteInt.h 591f857fbf89a2a30f1d7c30018abb4596c4fc71 +F src/sqliteInt.h 0f3b39aebdb6d0490abafb48bec7047e799dfbfa F src/table.c a8de75bcedf84d4060d804264b067ab3b1a3561d F src/tclsqlite.c f425c7583665ef78dd8397b2de0b8e0028e80ce2 F src/test1.c 84c841e1088f743200b87581506e93f70344bd32 @@ -130,7 +130,7 @@ F src/tokenize.c 6cef9e6fc454d789a32c5b509ccb193a2b01977b F src/trigger.c 420192efe3e6f03addf7897c60c3c8bf913d3493 F src/update.c 3359041db390a8f856d67272f299600e2104f350 F src/utf.c b881fe54498f6a35de424a62f8e071b621111728 -F src/util.c 4f6bbcec2b2b1884d652b82c9f8949ede4618d68 +F src/util.c a44710b94da6d0d606521a5e1fd40c8067282c74 F src/vacuum.c 8bd895d29e7074e78d4e80f948e35ddc9cf2beef F src/vdbe.c 5deb4cdccd57065ccf8a2e5c704e8473c90d204b F src/vdbe.h 001c5b257567c1d3de7feb2203aac71d0d7b16a3 @@ -145,7 +145,7 @@ F src/where.c f3920748cc650fc25ac916215500bdb90dee568e F tclinstaller.tcl 4356d9d94d2b5ed5e68f9f0c80c4df3048dd7617 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 F test/all.test 93a40a7612b3c5e6efd1f5b98496a8b02a45cfdb -F test/alter.test fa99dbd9cba1f813b3f5a1c127e9f4fd58dc70ba +F test/alter.test c2a9402e17a731e5294ef370214bd9f88351d18d F test/alter2.test 50c3f554b8236d179d72511c0a4f23c5eb7f2af3 F test/alter3.test a6eec8f454be9b6ce73d8d7dc711453675a10ce7 F test/altermalloc.test 19323e0f452834044c27a54c6e78554d706de7ba @@ -249,7 +249,7 @@ F test/fts2m.test 4b30142ead6f3ed076e880a2a464064c5ad58c51 F test/fts2n.test a70357e72742681eaebfdbe9007b87ff3b771638 F test/func.test bf30bac1c5ce10448ab739994268cf18f8b3fa30 F test/fuzz.test 3d382b2d3c6b909a4f08b46dc6ca6a149eeb3a81 -F test/fuzz2.test f1866329c9d0869297fb47fd1b4f597d5b66ac97 +F test/fuzz2.test ea38692ce2da99ad79fe0be5eb1a452c1c4d37bb F test/hook.test 7e7645fd9a033f79cce8fdff151e32715e7ec50a F test/icu.test e6bfae7f625c88fd14df6f540fe835bdfc1e4329 F test/in.test 369cb2aa1eab02296b4ec470732fe8c131260b1d @@ -266,7 +266,7 @@ F test/insert.test aef273dd1cee84cc92407469e6bd1b3cdcb76908 F test/insert2.test 5a20e1ace5fa0800b58d28284212290189b49aed F test/insert3.test 72ea6056811fd234f80d923f977c196089947381 F test/insert4.test 1e27f0a3e5670d5f03c1636f699aa44270945bca -F test/interrupt.test c38b7f7c17914f0cd6a119beed5d03bc3f47f9eb +F test/interrupt.test de86456bb537da5942807cd844c087b33171d97a F test/intpkey.test af4fd826c4784ec5c93b444de07adea0254d0d30 F test/ioerr.test 491d42c49bbec598966d26b01ed7901f55e5ee2d F test/ioerr2.test 65ede6b5f073b2f173228ed9f08b60f309a63d5f @@ -491,7 +491,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5 -P 262a3e6339b31f269f8f07e43d295b90827e2779 -R 861e479ebd5242df0f56a6c2828d2bb6 +P 9b91502ef0ea9c0bfb8362c4b70314dc8449eb9e +R 05f932c99108ea2fd9e2cf63bbb5a075 U drh -Z d93c42daa9b80cea36e628dd56d378c8 +Z 9a27c4d77fa449acc8811ad8c3119491 diff --git a/manifest.uuid b/manifest.uuid index 534a24dad9..9b408f13e9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9b91502ef0ea9c0bfb8362c4b70314dc8449eb9e \ No newline at end of file +f84d9dab110c4415d9b772f8043397640162b6b2 \ No newline at end of file diff --git a/src/parse.y b/src/parse.y index b262ec5ec2..e78993648f 100644 --- a/src/parse.y +++ b/src/parse.y @@ -14,7 +14,7 @@ ** the parser. Lemon will also generate a header file containing ** numeric codes for all of the tokens. ** -** @(#) $Id: parse.y,v 1.227 2007/05/15 00:09:13 drh Exp $ +** @(#) $Id: parse.y,v 1.228 2007/05/15 16:51:37 drh Exp $ */ // All token codes are small integers with #defines that begin with "TK_" @@ -39,7 +39,6 @@ sqlite3ErrorMsg(pParse, "incomplete SQL statement"); } pParse->parseError = 1; - pParse->rc = SQLITE_ERROR; } } %stack_overflow { diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 70d26ed1b1..1b831f20f6 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -11,7 +11,7 @@ ************************************************************************* ** Internal interface definitions for SQLite. ** -** @(#) $Id: sqliteInt.h,v 1.567 2007/05/15 11:55:09 drh Exp $ +** @(#) $Id: sqliteInt.h,v 1.568 2007/05/15 16:51:37 drh Exp $ */ #ifndef _SQLITEINT_H_ #define _SQLITEINT_H_ @@ -1309,7 +1309,7 @@ struct Parse { u8 nameClash; /* A permanent table name clashes with temp table name */ u8 checkSchema; /* Causes schema cookie check after an error */ u8 nested; /* Number of nested calls to the parser/code generator */ - u8 parseError; /* True if a parsing error has been seen */ + u8 parseError; /* True after a parsing error. Ticket #1794 */ int nErr; /* Number of errors seen */ int nTab; /* Number of previously allocated VDBE cursors */ int nMem; /* Number of memory cells used so far */ diff --git a/src/util.c b/src/util.c index b79a14bf1e..8d942b0680 100644 --- a/src/util.c +++ b/src/util.c @@ -14,7 +14,7 @@ ** This file contains functions for allocating memory, comparing ** strings, and stuff like that. ** -** $Id: util.c,v 1.202 2007/05/08 20:37:40 drh Exp $ +** $Id: util.c,v 1.203 2007/05/15 16:51:37 drh Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -83,6 +83,9 @@ void sqlite3ErrorMsg(Parse *pParse, const char *zFormat, ...){ va_start(ap, zFormat); pParse->zErrMsg = sqlite3VMPrintf(zFormat, ap); va_end(ap); + if( pParse->rc==SQLITE_OK ){ + pParse->rc = SQLITE_ERROR; + } } /* diff --git a/test/alter.test b/test/alter.test index fb09fdeae2..c013cc0cea 100644 --- a/test/alter.test +++ b/test/alter.test @@ -11,7 +11,7 @@ # This file implements regression tests for SQLite library. The # focus of this script is testing the ALTER TABLE statement. # -# $Id: alter.test,v 1.24 2007/05/15 14:34:32 drh Exp $ +# $Id: alter.test,v 1.25 2007/05/15 16:51:37 drh Exp $ # set testdir [file dirname $argv0] @@ -702,10 +702,13 @@ do_test alter-11.1 { ALTER TABLE t11 ADD COLUMN abc; } } {1 {duplicate column name: abc}} -do_test alter-11.2 { - execsql {INSERT INTO t11 VALUES(1,2)} - sqlite3_exec db {SELECT %c6%c6 AS xyz, abc FROM t11} -} {0 {xyz abc 1 2}} +set isutf16 [regexp 16 [db one {PRAGMA encoding}]] +if {!$isutf16} { + do_test alter-11.2 { + execsql {INSERT INTO t11 VALUES(1,2)} + sqlite3_exec db {SELECT %c6%c6 AS xyz, abc FROM t11} + } {0 {xyz abc 1 2}} +} do_test alter-11.3 { sqlite3_exec db {CREATE TABLE t11b("%81%82%83" text)} execsql { @@ -715,16 +718,18 @@ do_test alter-11.3 { ALTER TABLE t11b ADD COLUMN abc; } } {1 {duplicate column name: abc}} -do_test alter-11.4 { - execsql {INSERT INTO t11b VALUES(3,4)} - sqlite3_exec db {SELECT %81%82%83 AS xyz, abc FROM t11b} -} {0 {xyz abc 3 4}} -do_test alter-11.5 { - sqlite3_exec db {SELECT [%81%82%83] AS xyz, abc FROM t11b} -} {0 {xyz abc 3 4}} -do_test alter-11.6 { - sqlite3_exec db {SELECT "%81%82%83" AS xyz, abc FROM t11b} -} {0 {xyz abc 3 4}} +if {!$isutf16} { + do_test alter-11.4 { + execsql {INSERT INTO t11b VALUES(3,4)} + sqlite3_exec db {SELECT %81%82%83 AS xyz, abc FROM t11b} + } {0 {xyz abc 3 4}} + do_test alter-11.5 { + sqlite3_exec db {SELECT [%81%82%83] AS xyz, abc FROM t11b} + } {0 {xyz abc 3 4}} + do_test alter-11.6 { + sqlite3_exec db {SELECT "%81%82%83" AS xyz, abc FROM t11b} + } {0 {xyz abc 3 4}} +} do_test alter-11.7 { sqlite3_exec db {CREATE TABLE t11c(%81%82%83 text)} execsql { @@ -734,16 +739,18 @@ do_test alter-11.7 { ALTER TABLE t11c ADD COLUMN abc; } } {1 {duplicate column name: abc}} -do_test alter-11.8 { - execsql {INSERT INTO t11c VALUES(5,6)} - sqlite3_exec db {SELECT %81%82%83 AS xyz, abc FROM t11c} -} {0 {xyz abc 5 6}} -do_test alter-11.9 { - sqlite3_exec db {SELECT [%81%82%83] AS xyz, abc FROM t11c} -} {0 {xyz abc 5 6}} -do_test alter-11.10 { - sqlite3_exec db {SELECT "%81%82%83" AS xyz, abc FROM t11c} -} {0 {xyz abc 5 6}} +if {!$isutf16} { + do_test alter-11.8 { + execsql {INSERT INTO t11c VALUES(5,6)} + sqlite3_exec db {SELECT %81%82%83 AS xyz, abc FROM t11c} + } {0 {xyz abc 5 6}} + do_test alter-11.9 { + sqlite3_exec db {SELECT [%81%82%83] AS xyz, abc FROM t11c} + } {0 {xyz abc 5 6}} + do_test alter-11.10 { + sqlite3_exec db {SELECT "%81%82%83" AS xyz, abc FROM t11c} + } {0 {xyz abc 5 6}} +} finish_test diff --git a/test/fuzz2.test b/test/fuzz2.test index 7c35d73b51..eb5eb83a3c 100644 --- a/test/fuzz2.test +++ b/test/fuzz2.test @@ -12,86 +12,91 @@ # # This file checks error recovery from malformed SQL strings. # -# $Id: fuzz2.test,v 1.2 2007/05/15 03:56:50 drh Exp $ +# $Id: fuzz2.test,v 1.3 2007/05/15 16:51:37 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl + +proc fuzzcatch {sql} { + return [lindex [catchsql $sql] 0] +} + do_test fuzz2-1.1 { - catchsql {SELECT ALL "AAAAAA" . * GROUP BY LIMIT round(1), #12} -} {1 {near "#12": syntax error}} + fuzzcatch {SELECT ALL "AAAAAA" . * GROUP BY LIMIT round(1), #12} +} {1} do_test fuzz2-2.0 { - catchsql {SELECT + #100} -} {1 {near "#100": syntax error}} + fuzzcatch {SELECT + #100} +} {1} do_test fuzz2-2.1 { - catchsql {SELECT 1 WHERE ( #61 NOT MATCH ROUND( 1 ) )} -} {1 {near "#61": syntax error}} + fuzzcatch {SELECT 1 WHERE ( #61 NOT MATCH ROUND( 1 ) )} +} {1} do_test fuzz2-2.2 { - catchsql {SELECT 1 LIMIT NOT #59 COLLATE AAAAAA NOT IN + fuzzcatch {SELECT 1 LIMIT NOT #59 COLLATE AAAAAA NOT IN ( "AAAAAA" NOTNULL <= x'414141414141' IS NULL , ( ROUND ( 1.0 ) ) )} -} {1 {no such collation sequence: AAAAAA}} +} {1} do_test fuzz2-2.3 { - catchsql {INSERT OR REPLACE INTO AAAAAA . "AAAAAA" ( "AAAAAA" ) SELECT DISTINCT * , ( SELECT #252 IN ( SELECT DISTINCT AAAAAA . * ) )} -} {1 {near "#252": syntax error}} + fuzzcatch {INSERT OR REPLACE INTO AAAAAA . "AAAAAA" ( "AAAAAA" ) SELECT DISTINCT * , ( SELECT #252 IN ( SELECT DISTINCT AAAAAA . * ) )} +} {1} do_test fuzz2-2.4 { - catchsql {SELECT 1 LIMIT NOT #59 COLLATE AAAAAA NOT IN round(1.0)} -} {1 {near "(": syntax error}} + fuzzcatch {SELECT 1 LIMIT NOT #59 COLLATE AAAAAA NOT IN round(1.0)} +} {1} do_test fuzz2-2.5 { - catchsql {SELECT( #239 )} -} {1 {near "#239": syntax error}} + fuzzcatch {SELECT( #239 )} +} {1} do_test fuzz2-2.6 { - catchsql {DELETE FROM AAAAAA WHERE #65 NOT NULL} -} {1 {near "#65": syntax error}} + fuzzcatch {DELETE FROM AAAAAA WHERE #65 NOT NULL} +} {1} do_test fuzz2-2.7 { - catchsql {ATTACH ROUND( 1.0 ) in AAAAAA . "AAAAAA" AS #122 ISNULL} -} {1 {invalid name: "ROUND( 1.0 ) in AAAAAA . "AAAAAA""}} + fuzzcatch {ATTACH ROUND( 1.0 ) in AAAAAA . "AAAAAA" AS #122 ISNULL} +} {1} do_test fuzz2-2.8 { - catchsql {SELECT 1 LIMIT #122 ISNULL} -} {1 {near "#122": syntax error}} + fuzzcatch {SELECT 1 LIMIT #122 ISNULL} +} {1} do_test fuzz2-2.9 { - catchsql {CREATE VIEW AAAAAA . "AAAAAA" AS SELECT DISTINCT #162 IS NULL "AAAAAA"} -} {1 {unknown database AAAAAA}} + fuzzcatch {CREATE VIEW AAAAAA . "AAAAAA" AS SELECT DISTINCT #162 IS NULL "AAAAAA"} +} {1} do_test fuzz2-2.10 { - catchsql {DELETE FROM AAAAAA WHERE #202 IS NOT NULL ISNULL} -} {1 {near "#202": syntax error}} + fuzzcatch {DELETE FROM AAAAAA WHERE #202 IS NOT NULL ISNULL} +} {1} do_test fuzz2-2.11 { - catchsql {UPDATE OR IGNORE "AAAAAA" . "AAAAAA" SET "AAAAAA" = NOT #96} -} {1 {near "#96": syntax error}} + fuzzcatch {UPDATE OR IGNORE "AAAAAA" . "AAAAAA" SET "AAAAAA" = NOT #96} +} {1} do_test fuzz2-2.12 { - catchsql {SELECT - #196} -} {1 {near "#196": syntax error}} + fuzzcatch {SELECT - #196} +} {1} do_test fuzz2-3.0 { - catchsql {CREATE TRIGGER "AAAAAA" . "AAAAAA" AFTER UPDATE OF "AAAAAA" , "AAAAAA" ON "AAAAAA" . "AAAAAA" FOR EACH ROW BEGIN UPDATE AAAAAA SET "AAAAAA" = #162; END} -} {1 {near "#162": syntax error}} + fuzzcatch {CREATE TRIGGER "AAAAAA" . "AAAAAA" AFTER UPDATE OF "AAAAAA" , "AAAAAA" ON "AAAAAA" . "AAAAAA" FOR EACH ROW BEGIN UPDATE AAAAAA SET "AAAAAA" = #162; END} +} {1} do_test fuzz2-3.1 { - catchsql {CREATE TRIGGER IF NOT EXISTS "AAAAAA" UPDATE ON "AAAAAA" . AAAAAA FOR EACH ROW BEGIN DELETE FROM "AAAAAA" ; INSERT INTO AAAAAA ( "AAAAAA" ) SELECT DISTINCT "AAAAAA" "AAAAAA" , #167 AAAAAA , "AAAAAA" . * ORDER BY "AAAAAA" ASC , x'414141414141' BETWEEN RAISE ( FAIL , "AAAAAA" ) AND AAAAAA ( * ) NOT NULL DESC LIMIT AAAAAA ; REPLACE INTO AAAAAA ( AAAAAA ) VALUES ( AAAAAA ( * ) ) ; END} -} {1 {near "#167": syntax error}} + fuzzcatch {CREATE TRIGGER IF NOT EXISTS "AAAAAA" UPDATE ON "AAAAAA" . AAAAAA FOR EACH ROW BEGIN DELETE FROM "AAAAAA" ; INSERT INTO AAAAAA ( "AAAAAA" ) SELECT DISTINCT "AAAAAA" "AAAAAA" , #167 AAAAAA , "AAAAAA" . * ORDER BY "AAAAAA" ASC , x'414141414141' BETWEEN RAISE ( FAIL , "AAAAAA" ) AND AAAAAA ( * ) NOT NULL DESC LIMIT AAAAAA ; REPLACE INTO AAAAAA ( AAAAAA ) VALUES ( AAAAAA ( * ) ) ; END} +} {1} do_test fuzz2-3.2 { - catchsql {CREATE TEMP TRIGGER IF NOT EXISTS AAAAAA . "AAAAAA" BEFORE UPDATE OF "AAAAAA" ON AAAAAA . "AAAAAA" BEGIN SELECT ALL * , #175 "AAAAAA" FROM "AAAAAA" . AAAAAA; END} -} {1 {near "#175": syntax error}} + fuzzcatch {CREATE TEMP TRIGGER IF NOT EXISTS AAAAAA . "AAAAAA" BEFORE UPDATE OF "AAAAAA" ON AAAAAA . "AAAAAA" BEGIN SELECT ALL * , #175 "AAAAAA" FROM "AAAAAA" . AAAAAA; END} +} {1} do_test fuzz2-4.0 { - catchsql {ATTACH DATABASE #168 AS whatever} -} {1 {near "#168": syntax error}} + fuzzcatch {ATTACH DATABASE #168 AS whatever} +} {1} do_test fuzz2-4.1 { - catchsql {DETACH #133} -} {1 {near "#133": syntax error}} + fuzzcatch {DETACH #133} +} {1} do_test fuzz2-5.0 { - catchsql {SELECT 1 LIMIT ( SELECT DISTINCT * , AAAAAA , * , AAAAAA , "AAAAAA" . * FROM "AAAAAA" ON ROUND( 1 ) COLLATE AAAAAA OR "AAAAAA" USING ( AAAAAA , "AAAAAA" ) WHERE ROUND( 1 ) GROUP BY ORDER BY #84 ASC , #44 DESC , ( SELECT "AAAAAA" . * , "AAAAAA" . * FROM , ( ) "AAAAAA" USING ( )} -} {1 {near ",": syntax error}} + fuzzcatch {SELECT 1 LIMIT ( SELECT DISTINCT * , AAAAAA , * , AAAAAA , "AAAAAA" . * FROM "AAAAAA" ON ROUND( 1 ) COLLATE AAAAAA OR "AAAAAA" USING ( AAAAAA , "AAAAAA" ) WHERE ROUND( 1 ) GROUP BY ORDER BY #84 ASC , #44 DESC , ( SELECT "AAAAAA" . * , "AAAAAA" . * FROM , ( ) "AAAAAA" USING ( )} +} {1} do_test fuzz2-5.1 { - catchsql {SELECT 1 WHERE 1 == AAAAAA ( * ) BETWEEN + - ~ + "AAAAAA" . AAAAAA | RAISE ( IGNORE ) COLLATE AAAAAA NOT IN ( SELECT DISTINCT "AAAAAA" . * , * , * WHERE ( SELECT ALL AAAAAA AS "AAAAAA" HAVING CAST ( "AAAAAA" . "AAAAAA" . "AAAAAA" AS AAAAAA ) ORDER BY , , IS NULL ASC , ~ AND DESC LIMIT ( ( "AAAAAA" ) NOT BETWEEN ( ) NOT IN ( ) AND AAAAAA ( ) IS NOT NULL ) OFFSET AAAAAA ( ALL , , ) ) GROUP BY ORDER BY "AAAAAA" . AAAAAA ASC , NULL IN ( SELECT UNION ALL SELECT ALL WHERE HAVING ORDER BY LIMIT UNION SELECT DISTINCT FROM ( ) WHERE + HAVING >> ORDER BY LIMIT . . , "AAAAAA" ) , CAST ( ~ "AAAAAA" . AAAAAA AS "AAAAAA" AAAAAA "AAAAAA" ( + 4294967295 , - 4294967296.0 ) ) ASC LIMIT AAAAAA INTERSECT SELECT ALL * GROUP BY , AAAAAA ( DISTINCT , ) != #241 NOT IN ( , , ) , , CTIME_KW HAVING AAAAAA ORDER BY #103 DESC , #81 ASC LIMIT AAAAAA OFFSET ~ AAAAAA ( ALL AAAAAA . AAAAAA >= AAAAAA . "AAAAAA" . "AAAAAA" ) ) NOTNULL NOT NULL} -} {1 {near ",": syntax error}} + fuzzcatch {SELECT 1 WHERE 1 == AAAAAA ( * ) BETWEEN + - ~ + "AAAAAA" . AAAAAA | RAISE ( IGNORE ) COLLATE AAAAAA NOT IN ( SELECT DISTINCT "AAAAAA" . * , * , * WHERE ( SELECT ALL AAAAAA AS "AAAAAA" HAVING CAST ( "AAAAAA" . "AAAAAA" . "AAAAAA" AS AAAAAA ) ORDER BY , , IS NULL ASC , ~ AND DESC LIMIT ( ( "AAAAAA" ) NOT BETWEEN ( ) NOT IN ( ) AND AAAAAA ( ) IS NOT NULL ) OFFSET AAAAAA ( ALL , , ) ) GROUP BY ORDER BY "AAAAAA" . AAAAAA ASC , NULL IN ( SELECT UNION ALL SELECT ALL WHERE HAVING ORDER BY LIMIT UNION SELECT DISTINCT FROM ( ) WHERE + HAVING >> ORDER BY LIMIT . . , "AAAAAA" ) , CAST ( ~ "AAAAAA" . AAAAAA AS "AAAAAA" AAAAAA "AAAAAA" ( + 4294967295 , - 4294967296.0 ) ) ASC LIMIT AAAAAA INTERSECT SELECT ALL * GROUP BY , AAAAAA ( DISTINCT , ) != #241 NOT IN ( , , ) , , CTIME_KW HAVING AAAAAA ORDER BY #103 DESC , #81 ASC LIMIT AAAAAA OFFSET ~ AAAAAA ( ALL AAAAAA . AAAAAA >= AAAAAA . "AAAAAA" . "AAAAAA" ) ) NOTNULL NOT NULL} +} {1} do_test fuzz2-5.2 { - catchsql {SELECT 1 WHERE 1 == AAAAAA ( * ) BETWEEN + - ~ + "AAAAAA" . AAAAAA | RAISE ( IGNORE ) COLLATE AAAAAA NOT IN ( SELECT DISTINCT "AAAAAA" . * , * , * WHERE ( SELECT ALL AAAAAA AS "AAAAAA" HAVING CAST ( "AAAAAA" . "AAAAAA" . "AAAAAA" AS AAAAAA ) ORDER BY , , IS NULL ASC , ~ AND DESC LIMIT ( ( "AAAAAA" ) NOT BETWEEN ( ) NOT IN ( ) AND AAAAAA ( ) IS NOT NULL ) OFFSET AAAAAA ( ALL , , ) ) GROUP BY ORDER BY "AAAAAA" . AAAAAA ASC , NULL IN ( SELECT UNION ALL SELECT ALL WHERE HAVING ORDER BY LIMIT UNION SELECT DISTINCT FROM ( ) WHERE + HAVING >> ORDER BY LIMIT . . , "AAAAAA" ) , CAST ( ~ "AAAAAA" . AAAAAA AS "AAAAAA" AAAAAA "AAAAAA" ( + 4294967295 , - 4294967296.0 ) ) ASC LIMIT AAAAAA INTERSECT SELECT ALL * GROUP BY , AAAAAA ( DISTINCT , ) != #241 NOT IN ( , , ) , , CTIME_KW HAVING AAAAAA ORDER BY #103 DESC , #81 ASC LIMIT AAAAAA OFFSET ~ AAAAAA ( ALL AAAAAA . AAAAAA >= AAAAAA . "AAAAAA" . "AAAAAA" ) ) NOTNULL NOT NULL} -} {1 {near ",": syntax error}} + fuzzcatch {SELECT 1 WHERE 1 == AAAAAA ( * ) BETWEEN + - ~ + "AAAAAA" . AAAAAA | RAISE ( IGNORE ) COLLATE AAAAAA NOT IN ( SELECT DISTINCT "AAAAAA" . * , * , * WHERE ( SELECT ALL AAAAAA AS "AAAAAA" HAVING CAST ( "AAAAAA" . "AAAAAA" . "AAAAAA" AS AAAAAA ) ORDER BY , , IS NULL ASC , ~ AND DESC LIMIT ( ( "AAAAAA" ) NOT BETWEEN ( ) NOT IN ( ) AND AAAAAA ( ) IS NOT NULL ) OFFSET AAAAAA ( ALL , , ) ) GROUP BY ORDER BY "AAAAAA" . AAAAAA ASC , NULL IN ( SELECT UNION ALL SELECT ALL WHERE HAVING ORDER BY LIMIT UNION SELECT DISTINCT FROM ( ) WHERE + HAVING >> ORDER BY LIMIT . . , "AAAAAA" ) , CAST ( ~ "AAAAAA" . AAAAAA AS "AAAAAA" AAAAAA "AAAAAA" ( + 4294967295 , - 4294967296.0 ) ) ASC LIMIT AAAAAA INTERSECT SELECT ALL * GROUP BY , AAAAAA ( DISTINCT , ) != #241 NOT IN ( , , ) , , CTIME_KW HAVING AAAAAA ORDER BY #103 DESC , #81 ASC LIMIT AAAAAA OFFSET ~ AAAAAA ( ALL AAAAAA . AAAAAA >= AAAAAA . "AAAAAA" . "AAAAAA" ) ) NOTNULL NOT NULL} +} {1} do_test fuzz2-5.3 { - catchsql {UPDATE "AAAAAA" SET "AAAAAA" = - EXISTS ( SELECT DISTINCT * , * ORDER BY #202 ASC , #147 , ~ AAAAAA . "AAAAAA" ASC LIMIT AAAAAA . "AAAAAA" , RAISE ( ABORT , AAAAAA ) UNION ALL SELECT DISTINCT AAAAAA . * , * FROM ( SELECT DISTINCT} -} {1 {near "DISTINCT": syntax error}} + fuzzcatch {UPDATE "AAAAAA" SET "AAAAAA" = - EXISTS ( SELECT DISTINCT * , * ORDER BY #202 ASC , #147 , ~ AAAAAA . "AAAAAA" ASC LIMIT AAAAAA . "AAAAAA" , RAISE ( ABORT , AAAAAA ) UNION ALL SELECT DISTINCT AAAAAA . * , * FROM ( SELECT DISTINCT} +} {1} do_test fuzz2-5.4 { - catchsql {REPLACE INTO AAAAAA SELECT DISTINCT "AAAAAA" . * WHERE AAAAAA ( AAAAAA ( ) ) GROUP BY AAAAAA . AAAAAA . "AAAAAA" IN "AAAAAA" | AAAAAA ( ALL , ) ORDER BY #238, #92 DESC LIMIT 0 OFFSET - RAISE ( IGNORE ) NOT NULL > RAISE ( IGNORE ) IS NULL} -} {1 {near "#92": syntax error}} + fuzzcatch {REPLACE INTO AAAAAA SELECT DISTINCT "AAAAAA" . * WHERE AAAAAA ( AAAAAA ( ) ) GROUP BY AAAAAA . AAAAAA . "AAAAAA" IN "AAAAAA" | AAAAAA ( ALL , ) ORDER BY #238, #92 DESC LIMIT 0 OFFSET - RAISE ( IGNORE ) NOT NULL > RAISE ( IGNORE ) IS NULL} +} {1} do_test fuzz2-5.5 { - catchsql {SELECT ALL * GROUP BY EXISTS ( SELECT "AAAAAA" . * , AAAAAA ( * ) AS AAAAAA FROM "AAAAAA" . "AAAAAA" AS "AAAAAA" USING ( AAAAAA , "AAAAAA" , "AAAAAA" ) WHERE AAAAAA ( DISTINCT ) - RAISE ( FAIL , "AAAAAA" ) HAVING "AAAAAA" . "AAAAAA" . AAAAAA ORDER BY #182 , #55 ) BETWEEN EXISTS ( SELECT ALL * FROM ( ( } -} {1 {near " ": syntax error}} + fuzzcatch {SELECT ALL * GROUP BY EXISTS ( SELECT "AAAAAA" . * , AAAAAA ( * ) AS AAAAAA FROM "AAAAAA" . "AAAAAA" AS "AAAAAA" USING ( AAAAAA , "AAAAAA" , "AAAAAA" ) WHERE AAAAAA ( DISTINCT ) - RAISE ( FAIL , "AAAAAA" ) HAVING "AAAAAA" . "AAAAAA" . AAAAAA ORDER BY #182 , #55 ) BETWEEN EXISTS ( SELECT ALL * FROM ( ( } +} {1} finish_test diff --git a/test/interrupt.test b/test/interrupt.test index 7e1ec0a27e..520580357d 100644 --- a/test/interrupt.test +++ b/test/interrupt.test @@ -11,7 +11,7 @@ # This file implements regression tests for SQLite library. The # focus of this script is the sqlite_interrupt() API. # -# $Id: interrupt.test,v 1.13 2006/07/17 00:02:46 drh Exp $ +# $Id: interrupt.test,v 1.14 2007/05/15 16:51:37 drh Exp $ set testdir [file dirname $argv0] @@ -180,14 +180,11 @@ for {set i 1} {$i<$max_count-5} {incr i 1} { # Interrupt during parsing # do_test interrupt-5.1 { - proc fake_interrupt {args} {sqlite3_interrupt $::DB; return SQLITE_OK} - db collation_needed fake_interrupt - catchsql { - CREATE INDEX fake ON fake1(a COLLATE fake_collation, b, c DESC); + proc fake_interrupt {args} { + db collate fake_collation no-op + sqlite3_interrupt db + return SQLITE_OK } -} {1 interrupt} -do_test interrupt-5.2 { - proc fake_interrupt {args} {db interrupt; return SQLITE_OK} db collation_needed fake_interrupt catchsql { CREATE INDEX fake ON fake1(a COLLATE fake_collation, b, c DESC);