]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure pParse->rc gets set whenever sqlite3ErrorMsg() is called. This is
authordrh <drh@noemail.net>
Tue, 15 May 2007 16:51:37 +0000 (16:51 +0000)
committerdrh <drh@noemail.net>
Tue, 15 May 2007 16:51:37 +0000 (16:51 +0000)
added insurance that parsing will stop quickly after an error.  This change
did make the parser stop faster in some cases, which required some revisions
to tests. (CVS 4010)

FossilOrigin-Name: f84d9dab110c4415d9b772f8043397640162b6b2

manifest
manifest.uuid
src/parse.y
src/sqliteInt.h
src/util.c
test/alter.test
test/fuzz2.test
test/interrupt.test

index 0a46dea7713897ea81876b59a3e9da6823f171d8..47e9e66a89785c2a411e1326a279337cc7a5ee86 100644 (file)
--- 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
index 534a24dad9c5324a20a49bea25468347a6d7d331..9b408f13e9afa3733e8a4a23dc38ff459294d74a 100644 (file)
@@ -1 +1 @@
-9b91502ef0ea9c0bfb8362c4b70314dc8449eb9e
\ No newline at end of file
+f84d9dab110c4415d9b772f8043397640162b6b2
\ No newline at end of file
index b262ec5ec2a5f34813f4497b7a4b6eb564df28ea..e78993648fd554f5179bff6bd341c8e98e4a058d 100644 (file)
@@ -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 {
index 70d26ed1b1d941b59c1cc3ab0a2c9c3bced4b09c..1b831f20f6081586fbf20ca121445032c58d7b46 100644 (file)
@@ -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 */
index b79a14bf1ef692470f568a39d45cfee69558c358..8d942b0680671cddb6d05c60c952e49c69cf8a1a 100644 (file)
@@ -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;
+  }
 }
 
 /*
index fb09fdeae2f10fb11044d7fdbd077108c2c33f74..c013cc0ceaf4d6bbf939a6562855381f0552c8f0 100644 (file)
@@ -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
index 7c35d73b5199116f91477efaecb0eb36a17fba9b..eb5eb83a3ccabf748282fd4d83720f03b2979e57 100644 (file)
 #
 # 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
index 7e1ec0a27e4dd4b7f92193f8b1f930920617f308..520580357dcb1f1739f257190152f43eb69c6465 100644 (file)
@@ -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);