]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Return a better error message when problems are encountered parsing a
authordrh <drh@noemail.net>
Sat, 1 Aug 2009 16:27:00 +0000 (16:27 +0000)
committerdrh <drh@noemail.net>
Sat, 1 Aug 2009 16:27:00 +0000 (16:27 +0000)
TEMP trigger or TEMP view that references objects in other databases that
have been modified or dropped.  Ticket #3810. (CVS 6956)

FossilOrigin-Name: 102785b9fbc5ab5dd740110243f080e3f3661e87

manifest
manifest.uuid
src/prepare.c
test/tkt3810.test

index 9a098362500054d2340796aa31abd7c03dbca318..d4b7e9ffe509715b1df9ac13a4e05e76fb5c8302 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sa\stestcase\sfor\sticket\s#3810.\s(CVS\s6955)
-D 2009-08-01T15:54:26
+C Return\sa\sbetter\serror\smessage\swhen\sproblems\sare\sencountered\sparsing\sa\nTEMP\strigger\sor\sTEMP\sview\sthat\sreferences\sobjects\sin\sother\sdatabases\sthat\nhave\sbeen\smodified\sor\sdropped.\s\sTicket\s#3810.\s(CVS\s6956)
+D 2009-08-01T16:27:00
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in df9359da7a726ccb67a45db905c5447d5c00c6ef
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -154,7 +154,7 @@ F src/pcache.c c92ffd4f3e1279b3766854c6d18b5bf4aac0d1fa
 F src/pcache.h 435ef324197f79391f9c92b71d7f92b548ad7a36
 F src/pcache1.c 6dc833c89feac405dd8b4858232c97e679f182ec
 F src/pragma.c 9eb44ac1d3dc1ac3ea4f444abe1a10ae8acaa16c
-F src/prepare.c 312ba96867ae9df6bd1a57cb84a9fd315e61cf8d
+F src/prepare.c 153f3eb168c3447ff770c445609bfec012daeba1
 F src/printf.c 508a1c59433353552b6553cba175eaa7331f8fc1
 F src/random.c 676b9d7ac820fe81e6fb2394ac8c10cff7f38628
 F src/resolve.c 4a61d03e49b15440878096e6030863fc628828f0
@@ -646,7 +646,7 @@ F test/tkt3762.test 2a9f3b03df44ec49ec0cfa8d5da6574c2a7853df
 F test/tkt3773.test 430b06567ce40285dfd2c4834a2a61816403efeb
 F test/tkt3791.test a6624b9a80b216a26cf473607f42f3e51898c267
 F test/tkt3793.test 754b73f0e6a9349c70dc57e522cf3247272ecd5d
-F test/tkt3810.test c51a9cd94971231ed45011eae316d1730b57beaf
+F test/tkt3810.test 9b666811c5cd504f23d07e29039b8df8cf906dba
 F test/tkt3824.test 3da2f5c81b057e3ff355f5dfc9aa0cf0a92e0206
 F test/tkt3832.test 7ebd5ac82d1e430accd5eec9768044133a94c2aa
 F test/tkt3838.test 2a1525946bc9d3751e1d49ce95f3a2472f2b7408
@@ -741,7 +741,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl 672f81d693a03f80f5ae60bfefacd8a349e76746
-P 359d78e144c2399791d341eda1760eb486f9740a
-R 624db1eaa8d87e6b2697962c8db1bbed
+P 29972f7445cede64d99c2433742572120c92b393
+R ff18f397fd87c0e1701eae3715427eb1
 U drh
-Z b5928333d6bd809b9819c0f1cdd1949f
+Z a6872a7f6773f3439623a0342ef806df
index 660049935e99435f0b4c19ef80be6a0df65f3e9f..934cd8613e15b7a2047697a8872da4a1e7ea2a53 100644 (file)
@@ -1 +1 @@
-29972f7445cede64d99c2433742572120c92b393
\ No newline at end of file
+102785b9fbc5ab5dd740110243f080e3f3661e87
\ No newline at end of file
index 55208ea1b9b3db961e6990f42b13fb75a5f75df1..afb6a7644a2e98fa716753d2abdf8c6f51053c50 100644 (file)
@@ -13,7 +13,7 @@
 ** interface, and routines that contribute to loading the database schema
 ** from disk.
 **
-** $Id: prepare.c,v 1.129 2009/07/24 17:58:53 danielk1977 Exp $
+** $Id: prepare.c,v 1.130 2009/08/01 16:27:00 drh Exp $
 */
 #include "sqliteInt.h"
 
@@ -27,13 +27,18 @@ static void corruptSchema(
   const char *zExtra   /* Error information */
 ){
   sqlite3 *db = pData->db;
+  if( pData->iDb==1 && zObj && zExtra ){
+    *pData->pzErrMsg = sqlite3MPrintf(db, "in %s: %s", zObj, zExtra);
+    pData->rc = SQLITE_ERROR;
+    return;
+  }
   if( !db->mallocFailed && (db->flags & SQLITE_RecoveryMode)==0 ){
     if( zObj==0 ) zObj = "?";
-    sqlite3SetString(pData->pzErrMsg, pData->db,
-       "malformed database schema (%s)", zObj);
+    sqlite3SetString(pData->pzErrMsg, db,
+      "malformed database schema (%s)", zObj);
     if( zExtra ){
-      *pData->pzErrMsg = sqlite3MAppendf(pData->db, *pData->pzErrMsg, "%s - %s",
-                                  *pData->pzErrMsg, zExtra);
+      *pData->pzErrMsg = sqlite3MAppendf(db, *pData->pzErrMsg, 
+                                 "%s - %s", *pData->pzErrMsg, zExtra);
     }
   }
   pData->rc = db->mallocFailed ? SQLITE_NOMEM : SQLITE_CORRUPT;
index 2375ac9e0ad594eacc5026a6497f0bfd364e6b92..06594e82f4d87609e6d2c43ca6c099167761b11e 100644 (file)
 #
 # Tests to make sure #3810 is fixed.
 #
-# $Id: tkt3810.test,v 1.1 2009/08/01 15:54:26 drh Exp $
+# $Id: tkt3810.test,v 1.2 2009/08/01 16:27:00 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
 
 # Create a table using the first database connection.
 #
-do_test tkt3810-1 {
+do_test tkt3810-1.1 {
   execsql {
     CREATE TABLE t1(x);
     INSERT INTO t1 VALUES(123);
@@ -46,8 +46,10 @@ do_test tkt3810-3 {
      CREATE TEMP TRIGGER r1 AFTER INSERT ON t1 BEGIN
        INSERT INTO t1 VALUES(2345);
      END;
-     SELECT * FROM t1;
   }
-} {}
+  catchsql {
+    SELECT * FROM t1;
+  }
+} {1 {in r1: no such table: t1}}
 
 finish_test