-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
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
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
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
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
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
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
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
-9b91502ef0ea9c0bfb8362c4b70314dc8449eb9e
\ No newline at end of file
+f84d9dab110c4415d9b772f8043397640162b6b2
\ No newline at end of file
** 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_"
sqlite3ErrorMsg(pParse, "incomplete SQL statement");
}
pParse->parseError = 1;
- pParse->rc = SQLITE_ERROR;
}
}
%stack_overflow {
*************************************************************************
** 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_
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 */
** 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"
va_start(ap, zFormat);
pParse->zErrMsg = sqlite3VMPrintf(zFormat, ap);
va_end(ap);
+ if( pParse->rc==SQLITE_OK ){
+ pParse->rc = SQLITE_ERROR;
+ }
}
/*
# 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]
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 {
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 {
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
#
# 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
# 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]
# 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);