]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Ensure that the types and collation sequences of a view are taken from the leftmost... tkt-679ed6a2
authordan <Dan Kennedy>
Sat, 10 Dec 2022 17:54:55 +0000 (17:54 +0000)
committerdan <Dan Kennedy>
Sat, 10 Dec 2022 17:54:55 +0000 (17:54 +0000)
FossilOrigin-Name: b0e49aa81a09c183b8baf8346b8a9b593c2b13073958617b6594500958d5bd46

manifest
manifest.uuid
src/select.c
test/view.test

index 7fdb6a6c7322115cebd82e6eb47f52fd4fe6a586..33209305ada9f06c65fd1ca84f3be4f8fa598de9 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\stwo\sincorrect\scalls\sto\sstructType.dipose()\swhich\sprematurely\sfreed\sobjects\sin\suse\sby\sthe\svirtual\stable\stest/demo\scode.
-D 2022-12-10T15:41:47.936
+C Ensure\sthat\sthe\stypes\sand\scollation\ssequences\sof\sa\sview\sare\staken\sfrom\sthe\sleftmost\scomponent\sof\scompound\sSELECTs,\seven\swhen\scolumn\snames\sare\sexplicitly\sprovided\sfor\sthe\sview.\sPossible\sfix\sfor\s[679ed6a2].
+D 2022-12-10T17:54:55.780
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -645,7 +645,7 @@ F src/printf.c e99ee9741e79ae3873458146f59644276657340385ade4e76a5f5d1c25793764
 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c efea4e5fbecfd6d0a9071b0be0d952620991673391b6ffaaf4c277b0bb674633
 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
-F src/select.c 56162cde2f71314826f831618eae853205628080afa25cd90faef7a9b761dee4
+F src/select.c 9a687883032642054b8f400aa3bcb6019c2c30f890850480975e95568f290c52
 F src/shell.c.in 8d9dc02dd03f8fc93f3e3cdb17d8d16e8ddb985dddad213985c08186900a3ebb
 F src/sqlite.h.in 97e8021f5db6bab8646d9c2d4231d3bab1204a2e88e5f187eca11dc7eab33ef8
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
@@ -1819,7 +1819,7 @@ F test/vacuum6.test b137b04bf3392d3f5c3b8fda0ce85a6775a70ca112f6559f74ff52dc9ce0
 F test/vacuummem.test 4b30f5b95a9ff86e9d5c20741e50a898b2dc10b0962a3211571eb165357003fb
 F test/varint.test bbce22cda8fc4d135bcc2b589574be8410614e62
 F test/veryquick.test 57ab846bacf7b90cf4e9a672721ea5c5b669b661
-F test/view.test d16e49e89ada6137d1447777ef2a74574526a3b024e6733bf53ae2960da8c17c
+F test/view.test a5662e9c7425d77b1e1eb4b07fb891fa15f20317013eddcb6f6bee009f2fccc9
 F test/view2.test db32c8138b5b556f610b35dfddd38c5a58a292f07fda5281eedb0851b2672679
 F test/view3.test ad8a8290ee2b55ff6ce66c9ef1ce3f1e47926273a3814e1c425293e128a95456
 F test/vt02.c 33ecddc0832d4cd24e9e9fa83d868981b1e049462f4ec9080710353f6479a534
@@ -2067,8 +2067,11 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 7783aa4af1331190fd1f42a71bb724041e2e82b51745f9740926e4ead83a97ed
-R 665d2c5db7dd22191a3e1edf86f2deb6
-U stephan
-Z 3ceb2605e22c9be9046cc21f4a5a89d8
+P 060eb2848975a24ff6683a8a9c4d7546ae36147323b0edae01fb42f52d9bb2d6
+R bf85bbb44793730b322c0618932f8aac
+T *branch * tkt-679ed6a2
+T *sym-tkt-679ed6a2 *
+T -sym-trunk *
+U dan
+Z c40c4832a2bdde266e2506bedc20f307
 # Remove this line to create a well-formed Fossil manifest.
index 69415e1d35f9cdc0a4e0be37493728dfac3edb83..a2fda07cb7688eb26d4ab771af84e7f68ef014b7 100644 (file)
@@ -1 +1 @@
-060eb2848975a24ff6683a8a9c4d7546ae36147323b0edae01fb42f52d9bb2d6
\ No newline at end of file
+b0e49aa81a09c183b8baf8346b8a9b593c2b13073958617b6594500958d5bd46
\ No newline at end of file
index 886ac336f22c7d488e70493ad094947069edf82c..3752aaef7126dcbd44c73d5c2a104f5701f6a898 100644 (file)
@@ -2318,6 +2318,7 @@ void sqlite3SelectAddColumnTypeAndCollation(
   assert( (pSelect->selFlags & SF_Resolved)!=0 );
   assert( pTab->nCol==pSelect->pEList->nExpr || db->mallocFailed );
   if( db->mallocFailed ) return;
+  while( pSelect->pPrior ) pSelect = pSelect->pPrior;
   memset(&sNC, 0, sizeof(sNC));
   sNC.pSrcList = pSelect->pSrc;
   a = pSelect->pEList->a;
index b0b6da2686f9ef24c6eac4e08053a4c3138f20b1..446ee3edead7c5b199d0d6a6d9595d0dbee4bc41 100644 (file)
@@ -775,5 +775,27 @@ do_catchsql_test view-29.1 {
   SELECT name FROM sqlite_schema ORDER BY name;
 } {0 {t1 t2}}
 
+#-------------------------------------------------------------------------
+# 2022-12-11.  https://sqlite.org/src/info/679ed6a2
+#
+reset_db
+do_execsql_test view-30.0 {
+  CREATE TABLE t0(a INT, b TEXT);
+
+  INSERT INTO t0 VALUES(1,'one');
+
+  CREATE VIEW t1      AS SELECT a, b FROM t0 UNION ALL SELECT 2, 2;
+  CREATE VIEW t2(a,b) AS SELECT a, b FROM t0 UNION ALL SELECT 2, 2;
+}
+
+ifcapable schema_pragmas {
+  do_execsql_test view-30.1 {
+    PRAGMA table_info = t1;
+  } { 0 a INT 0 {} 0 1 b TEXT 0 {} 0 }
+  do_execsql_test view-30.2 {
+    PRAGMA table_info = t2;
+  } { 0 a INT 0 {} 0 1 b TEXT 0 {} 0 }
+}
 
 finish_test
+