]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a problem with using ALTER TABLE commands on database schemas that contain expres...
authordan <Dan Kennedy>
Wed, 3 Mar 2021 11:00:31 +0000 (11:00 +0000)
committerdan <Dan Kennedy>
Wed, 3 Mar 2021 11:00:31 +0000 (11:00 +0000)
FossilOrigin-Name: d2630ffafa077b8cfd75110b6b73da30f780edc920d2788769a4dc747f09d3f6

manifest
manifest.uuid
src/resolve.c
test/altercol.test

index 92c99c9248ec68e86eafe2d9780dca6cd2b43c29..c228301bca5843105dbac68b292b29e12df02142 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Cast\sa\sstring\ssize\svariable\sto\s64-bit\sto\savoid\sany\spossibility\sof\ninteger\soverflow.
-D 2021-03-02T21:07:41.429
+C Fix\sa\sproblem\swith\susing\sALTER\sTABLE\scommands\son\sdatabase\sschemas\sthat\scontain\sexpressions\sof\sthe\sform\s"<expr>\sNOT\sNULL"\sor\s"<expr>\sIS\sNULL"\sthat\scan\sbe\sevaluated\sat\sprepare\stime.
+D 2021-03-03T11:00:31.388
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -540,7 +540,7 @@ F src/pragma.h 8dc78ab7e9ec6ce3ded8332810a2066f1ef6267e2e03cd7356ee00276125c6cf
 F src/prepare.c f634a9e799a6b1c136d8ee12479cffa22862bfb807d307b1db406aa0cdb042a5
 F src/printf.c 2b03a80d7c11bb422115dca175a18bf430e9c9dbaa0eee63b758f0c022f8f34f
 F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
-F src/resolve.c 14fa255fdd2bd789bd792584c54a51c8b7a9d7856e8016197dbcd3ba5795f9b0
+F src/resolve.c 889469e6980181ce77ee8ab3fc84bd52ed6c1c3577fd102d52623d66cc65a3d0
 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
 F src/select.c 7cf048e52f678726dadc448c41fab40262f6da37eeb1d8ff0f14ef1b17feed9e
 F src/shell.c.in 844417f84df1f6c4fce1c815629a888cfdcf219e86513e9c332bbcc38832f477
@@ -647,7 +647,7 @@ F test/alter3.test e487958dec7932453e0b83baf21d6b1e71d5e7d9a55bc20eadfa62a51ddff
 F test/alter4.test dfd6086faf461b27ca2d2999848dcd207edf23352fc1592d0005c0844f3f08cf
 F test/alterauth.test 63442ba61ceb0c1eeb63aac1f4f5cebfa509d352276059d27106ae256bafc959
 F test/alterauth2.test 794ac5cef251819fe364b4fe20f12f86e9c5d68070513c7fd26c17cb244c89af
-F test/altercol.test 1d6a6fe698b81e626baea4881f5717f9bc53d7d07f1cd23ee7ad1b931f117ddf
+F test/altercol.test 65eef562f0eea7a1f5ddd4a140c4274c2bfc5712bb2ab2096f738852b0efce86
 F test/altercorrupt.test 584d707a80e106952d6382790c8919bcf9f0db678ed3a1c09fd98b7f9d1d3a10
 F test/alterdropcol.test baad37ff9b07078ea02dcc33dbfb82bde655f3eee5c453e218f69501c36f02ba
 F test/alterdropcol2.test 3948c805ca52f4621051b35968c18c09d107eb117e2b656c78cee3b2870650c0
@@ -1908,7 +1908,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 99aab32da14cc76beb5c1823a70bdeab144459398d61c42a858be4d6868d361e
-R e29356ef3c8971c7f2ece96d7e581c9d
-U drh
-Z cc62deac5b0c740612d90bc9deff87dd
+P a5940294b2ac8d157d7fa72f65ee70b713f7feb8a0a98d7f47e71acd1b6942b1
+R 7d64297e574a5c0c8d42ec3e32f9d9eb
+U dan
+Z eee2d7c12369536ff778406cd8f62fda
index 6930961c73a23b22cda44d981764cd50811e9692..137e1eb0a8e10f743079db9875562839d8db5630 100644 (file)
@@ -1 +1 @@
-a5940294b2ac8d157d7fa72f65ee70b713f7feb8a0a98d7f47e71acd1b6942b1
\ No newline at end of file
+d2630ffafa077b8cfd75110b6b73da30f780edc920d2788769a4dc747f09d3f6
\ No newline at end of file
index ef2c0c624b62e362dd0903bf9a5a933f507f6b32..6d3ed62f93e7cf69d51782fb9c2c95abc3d64d38 100644 (file)
@@ -807,7 +807,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
         anRef[i] = p->nRef;
       }
       sqlite3WalkExpr(pWalker, pExpr->pLeft);
-      if( 0==sqlite3ExprCanBeNull(pExpr->pLeft) ){
+      if( 0==sqlite3ExprCanBeNull(pExpr->pLeft) && !IN_RENAME_OBJECT ){
         if( pExpr->op==TK_NOTNULL ){
           pExpr->u.zToken = "true";
           ExprSetProperty(pExpr, EP_IsTrue);
index 1479b3a7d3fd91541737b2c99fd86308959344cb..d2406e4c9617d9ecb288f4e7f3ef5e1a7ea1e426 100644 (file)
@@ -13,8 +13,6 @@
 # file format change that may be used in the future to implement
 # "ALTER TABLE ... RENAME COLUMN ... TO".
 #
-# $Id: alter4.test,v 1.1 2009/02/02 18:03:22 drh Exp $
-#
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -804,6 +802,25 @@ do_execsql_test 20.110 {
   SELECT sql FROM sqlite_master WHERE name='t1';
 } {{CREATE TABLE t1(xx UNIQUE,yy UNIQUE,zz UNIQUE,UNIQUE(xx),PRIMARY KEY(yy),UNIQUE(zz))}}
 
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 21.0 {
+  CREATE TABLE t1(a, b, c NOT NULL);
+  CREATE TRIGGER tr1 AFTER INSERT ON t1 WHEN new.c IS NOT NULL BEGIN
+    SELECT c NOT NULL FROM t1;
+  END;
+}
+
+do_execsql_test 21.1 {
+  ALTER TABLE t1 RENAME c TO d;
+}
+
+do_execsql_test 21.2 {
+  SELECT sql FROM sqlite_schema WHERE name IS 'tr1'
+} {{CREATE TRIGGER tr1 AFTER INSERT ON t1 WHEN new.d IS NOT NULL BEGIN
+    SELECT d NOT NULL FROM t1;
+  END}
+}
 
 
 finish_test