]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
When parsing the schema, ignore any SQL that does not begin
authordrh <drh@noemail.net>
Thu, 21 May 2015 02:07:56 +0000 (02:07 +0000)
committerdrh <drh@noemail.net>
Thu, 21 May 2015 02:07:56 +0000 (02:07 +0000)
with "CREATE". Cherrypick of [d3c00d61581c] with additional changes.

FossilOrigin-Name: 09784f376b47b6ca539a5106dfa65d8abebe1ef2

manifest
manifest.uuid
src/prepare.c
test/analyze.test
test/e_reindex.test
test/index3.test
test/trigger7.test

index 161f8120cd2c808fad36210998f25c8255b27167..ed005501cc828bba348cba63edf7b328e47b92d0 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Do\snot\sallow\svirtual\stable\sconstructors\sto\sbe\scalled\srecursively.\nCherrypick\s[0a72726da21581ab]
-D 2015-05-21T01:04:17.693
+C When\sparsing\sthe\sschema,\signore\sany\sSQL\sthat\sdoes\snot\sbegin\nwith\s"CREATE".\sCherrypick\sof\s[d3c00d61581c]\swith\sadditional\schanges.
+D 2015-05-21T02:07:56.469
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 2f37e468503dbe79d35c9f6dffcf3fae1ae9ec20
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -175,7 +175,7 @@ F src/pcache.c f8043b433a57aba85384a531e3937a804432a346
 F src/pcache.h 1b5dcc3dc8103d03e625b177023ee67764fa6b7c
 F src/pcache1.c b30b1c35908346ecc43d8d9d17f2ddf6817f8f60
 F src/pragma.c e708b3bb5704605816f617e0b1d63a5488060715
-F src/prepare.c ec4989f7f480544bdc4192fe663470d2a2d7d61e
+F src/prepare.c 5db3bd35634cf1e615e2015f92f2d6b96e20ca8b
 F src/printf.c 7ffb4ebb8b341f67e049695ba031da717b3d2699
 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
 F src/resolve.c 3d3e80a98f203ac6b9329e9621e29eda85ddfd40
@@ -263,7 +263,7 @@ F test/alter2.test 7ea05c7d92ac99349a802ef7ada17294dd647060
 F test/alter3.test 49c9d9fba2b8fcdce2dedeca97bbf1f369cc548d
 F test/alter4.test b2debc14d8cbe4c1d12ccd6a41eef88a8c1f15d5
 F test/altermalloc.test e81ac9657ed25c6c5bb09bebfa5a047cd8e4acfc
-F test/analyze.test f8ab7d15858b4093b06caf5e57e2a5ff7104bdae
+F test/analyze.test 6f5feb496ce728cec33289630bc713d6e40a311e
 F test/analyze3.test c3c7f6c3951900c188cf94b2d5ee3246d6b3ff89
 F test/analyze4.test 757b37875cf9bb528d46f74497bc789c88365045
 F test/analyze5.test 713354664c5ff1853ab2cbcb740f0cf5cb7c802e
@@ -384,7 +384,7 @@ F test/e_expr.test 5489424d3d9a452ac3701cdf4b680ae31a157894
 F test/e_fkey.test 057eed81a41a2b21b1790032f4e8aaba0b2b0e17
 F test/e_fts3.test 5c02288842e4f941896fd44afdef564dd5fc1459
 F test/e_insert.test c6ac239a97cb16dfbd0c16496f8cd871b4068c0c
-F test/e_reindex.test dfedfc32c5a282b0596c6537cbcd4217fbb1a216
+F test/e_reindex.test ce2d2b773144c9b8de9e5f6d8ab26c8cdf5ba115
 F test/e_resolve.test dcce9308fb13b934ce29591105d031d3e14fbba6
 F test/e_select.test f5d4b81205701deacfae42051ae200969c41d2c0
 F test/e_select2.test 5c3d3da19c7b3e90ae444579db2b70098599ab92
@@ -523,7 +523,7 @@ F test/incrvacuum2.test 379eeb8740b0ef60c372c439ad4cbea20b34bb9b
 F test/incrvacuum_ioerr.test 22f208d01c528403240e05beecc41dc98ed01637
 F test/index.test b5429732b3b983fa810e3ac867d7ca85dae35097
 F test/index2.test ee83c6b5e3173a3d7137140d945d9a5d4fdfb9d6
-F test/index3.test 423a25c789fc8cc51aaf2a4370bbdde2d9e9eed7
+F test/index3.test 8bbf1f05e8104ffbe663666e1516991e72e4cb29
 F test/index4.test 2983216eb8c86ee62d9ed7cb206b5cc3331c0026
 F test/indexedby.test be501e381b82b2f8ab406309ba7aac46e221f4ad
 F test/indexfault.test 31d4ab9a7d2f6e9616933eb079722362a883eb1d
@@ -865,7 +865,7 @@ F test/trigger3.test d2c60d8be271c355d61727411e753181e877230a
 F test/trigger4.test 74700b76ebf3947b2f7a92405141eb2cf2a5d359
 F test/trigger5.test 619391a3e9fc194081d22cefd830d811e7badf83
 F test/trigger6.test 0e411654f122552da6590f0b4e6f781048a4a9b9
-F test/trigger7.test b39e6dee1debe0ff9c2ef66326668f149f07c9c4
+F test/trigger7.test 200dd51e728c9cdc20c72d99d9e9d45c667248f8
 F test/trigger8.test 30cb0530bd7c4728055420e3f739aa00412eafa4
 F test/trigger9.test 5b0789f1c5c4600961f8e68511b825b87be53e31
 F test/triggerA.test e0aaba16d3547193d36bbd82a1b0ed75e9c88d40
@@ -992,8 +992,9 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
 F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
-P a71e2a72c592f014051a00af9c7cb5c390612cb2
-Q +0a72726da21581ab16cb3e964bd825b8f2e931e4
-R 8a644e69b3a7726913eb23696e1937e1
+P 0f0694e4245083f6abb4ce104c39add45f2eb71a
+Q +2c649cdf7e058cf490597ffbddd5dc1eb5c3b346
+Q +d3c00d61581c8ba6dce5618391432d3af8d324d4
+R d9dd499bc0772f79ea4a61d9b9920aea
 U drh
-Z 95187feec4c184bfd6cb010b3ad956ea
+Z 50e7ee5eace512a88d2256e7d4efb230
index 705f7ab61f981e6a44fd6177b3ede9b1044b3e68..869c696efad2d9802d4cba73cec47b3cc8f6c9ca 100644 (file)
@@ -1 +1 @@
-0f0694e4245083f6abb4ce104c39add45f2eb71a
\ No newline at end of file
+09784f376b47b6ca539a5106dfa65d8abebe1ef2
\ No newline at end of file
index faeefa894f8bcce72b601724131466ec2d0a00e4..d775de1c0a153b361ad9c408aea7188a19d1093a 100644 (file)
@@ -67,7 +67,7 @@ int sqlite3InitCallback(void *pInit, int argc, char **argv, char **NotUsed){
   if( argv==0 ) return 0;   /* Might happen if EMPTY_RESULT_CALLBACKS are on */
   if( argv[1]==0 ){
     corruptSchema(pData, argv[0], 0);
-  }else if( argv[2] && argv[2][0] ){
+  }else if( argv[2] && sqlite3_strnicmp(argv[2],"create ",7)==0 ){
     /* Call the parser to process a CREATE TABLE, INDEX or VIEW.
     ** But because db->init.busy is set to 1, no VDBE code is generated
     ** or executed.  All the parser does is build the internal data
@@ -98,8 +98,8 @@ int sqlite3InitCallback(void *pInit, int argc, char **argv, char **NotUsed){
       }
     }
     sqlite3_finalize(pStmt);
-  }else if( argv[0]==0 ){
-    corruptSchema(pData, 0, 0);
+  }else if( argv[0]==0 || (argv[2]!=0 && argv[2][0]!=0) ){
+    corruptSchema(pData, argv[0], 0);
   }else{
     /* If the SQL column is blank it means this is an index that
     ** was created to be the PRIMARY KEY or to fulfill a UNIQUE
index 362702a9c2cfd7a2e65ce67af5fff8dc1c317434..e1d9d2e19afa65ce9581f28916a81f0cb0cb56dc 100644 (file)
@@ -358,7 +358,7 @@ do_test analyze-99.1 {
   catchsql {
     ANALYZE
   }
-} {1 {malformed database schema (sqlite_stat1) - near "nonsense": syntax error}}
+} {1 {malformed database schema (sqlite_stat1)}}
 
 
 finish_test
index b39f37e0de98c355d40d6b42171c1a1c415d64aa..cff0c9d134a4734feec285d513939f9a13bc3a86 100644 (file)
@@ -48,8 +48,10 @@ do_execsql_test e_reindex-1.1 {
   INSERT INTO t1 VALUES(1, 2);
   INSERT INTO t1 VALUES(3, 4);
   INSERT INTO t1 VALUES(5, 6);
+  CREATE TABLE saved(a,b,c,d,e);
+  INSERT INTO saved SELECT * FROM sqlite_master WHERE type = 'index';
   PRAGMA writable_schema = 1;
-  UPDATE sqlite_master SET sql = '-- ' || sql WHERE type = 'index';
+  DELETE FROM sqlite_master WHERE type = 'index';
 } {}
 
 db close
@@ -59,7 +61,8 @@ do_execsql_test e_reindex-1.2 {
   INSERT INTO t1 VALUES(7, 8);
   INSERT INTO t1 VALUES(9, 10);
   PRAGMA writable_schema = 1;
-  UPDATE sqlite_master SET sql = substr(sql, 4) WHERE type = 'index';
+  INSERT INTO sqlite_master SELECT * FROM saved;
+  DROP TABLE saved;
 } {}
 
 db close
index 161ddecc01277b2d94572fd1b0f190ad555e5cf2..4f119b354ac3448cb650e78d3f6e289740831c55 100644 (file)
@@ -51,6 +51,6 @@ do_test index3-99.1 {
   db close
   catch { sqlite3 db test.db }
   catchsql { DROP INDEX i1 }
-} {1 {malformed database schema (t1) - near "nonsense": syntax error}}
+} {1 {malformed database schema (t1)}}
 
 finish_test
index 8fde2004f87bd0c283b3a1e3ee25d1ac1fbb3c4d..221962406b86b697219088c252ec28502d681692 100644 (file)
@@ -114,6 +114,6 @@ do_test trigger7-99.1 {
   db close
   catch { sqlite3 db test.db }
   catchsql { DROP TRIGGER t2r5 }
-} {1 {malformed database schema (t2r12) - near "nonsense": syntax error}}
+} {1 {malformed database schema (t2r12)}}
 
 finish_test