]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a problem where self-joins on views that are aggregate queries may return the...
authordan <dan@noemail.net>
Fri, 3 May 2019 17:19:10 +0000 (17:19 +0000)
committerdan <dan@noemail.net>
Fri, 3 May 2019 17:19:10 +0000 (17:19 +0000)
FossilOrigin-Name: 74ef97bf51dd531a277cf22fa4d42043d93799d5a5bd550812648834460fe0b7

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

index 7214de0286a5ae7250bd12ac991e1dbc0a2574e7..4adcf5eb1e05ef48cde360a0fd59080ed635fd77 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sthe\s".open\s--hexdb"\scommand\sin\sthe\sCLI\sso\sthat\sit\sworks\seven\swith\nterminal\sinput.
-D 2019-05-03T02:41:36.666
+C Fix\sa\sproblem\swhere\sself-joins\son\sviews\sthat\sare\saggregate\squeries\smay\sreturn\sthe\swrong\sresult.
+D 2019-05-03T17:19:10.246
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -519,7 +519,7 @@ F src/printf.c 67f79227273a9009d86a017619717c3f554f50b371294526da59faa6014ed2cd
 F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
 F src/resolve.c 408632d9531ca8f1df8591f00530797daaa7bde3fe0d3211de4d431cbb99347e
 F src/rowset.c d977b011993aaea002cab3e0bb2ce50cf346000dff94e944d547b989f4b1fe93
-F src/select.c b7304d2f491c11a03a7fbdf34bc218282ac54052377809d4dc3b4b1e7f4bfc93
+F src/select.c ef860c7e5882c89c030432a6d2cf13c67d1d51fd511cf45cbdfd5c2faf44d51d
 F src/shell.c.in 5470f08809ca5d9ac79f782f8f16d96a4299e584dbc456d8ef4aa6ca0824b5b3
 F src/sqlite.h.in 38390767acc1914d58930e03149595ee4710afa4e3c43ab6c3a8aea3f1a6b8cd
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
@@ -1597,7 +1597,7 @@ F test/vacuum5.test 263b144d537e92ad8e9ca8a73cc6e1583f41cfd0dda9432b87f7806174a2
 F test/vacuummem.test 7b42abb3208bd82dd23a7536588396f295a314f2
 F test/varint.test bbce22cda8fc4d135bcc2b589574be8410614e62
 F test/veryquick.test 57ab846bacf7b90cf4e9a672721ea5c5b669b661
-F test/view.test 71e1bf4c0e2e0d37c84d7db5b33cd47eb4a7662c19d93ede4112b350b186f61f
+F test/view.test ee9262cee79c7f4002fd2869887d3e8eccf70d9a4e1016f847242851edb18964
 F test/vtab1.test 60b4f70aafa6078d6fdfc11417af3bd216d7ef5eafce16707a6ca3dae5166d20
 F test/vtab2.test 14d4ab26cee13ba6cf5c5601b158e4f57552d3b055cdd9406cf7f711e9c84082
 F test/vtab3.test b45f47d20f225ccc9c28dc915d92740c2dee311e
@@ -1822,7 +1822,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 48889530a9de22fee536edfd1627be62396ed18d842d5fd6d91e010b4337be95
-R 6c4a08d775f402ededf164c110b85e69
-U drh
-Z 460ffd8bf743873ca175586bdb28c5f1
+P 9b5d943426c9273162ecb4c561eb3b25e843318dd438239c882c9db50f788454
+R 3a762b6259a99ea92c807013215a2169
+U dan
+Z a881ecc4521ccc109413c9747ca34901
index 8b98d46674c110363cd34dec11635a7e2a0a721a..10ef7c5bdf293e7906bdee2f01239e3bdb6c42ad 100644 (file)
@@ -1 +1 @@
-9b5d943426c9273162ecb4c561eb3b25e843318dd438239c882c9db50f788454
\ No newline at end of file
+74ef97bf51dd531a277cf22fa4d42043d93799d5a5bd550812648834460fe0b7
\ No newline at end of file
index 2df79e2e6c9063b973afb40a2e055f0e80f287ad..375441909287c9046bdd084fbf52b0525b1ae475 100644 (file)
@@ -5481,7 +5481,9 @@ static struct SrcList_item *isSelfJoinView(
       ** names in the same FROM clause. */
       continue;
     }
-    if( sqlite3ExprCompare(0, pThis->pSelect->pWhere, pS1->pWhere, -1) ){
+    if( sqlite3ExprCompare(0, pThis->pSelect->pWhere, pS1->pWhere, -1)
+     || sqlite3ExprCompare(0, pThis->pSelect->pHaving, pS1->pHaving, -1) 
+    ){
       /* The view was modified by some other optimization such as
       ** pushDownWhereTerms() */
       continue;
index 59ff55c6920f59c7bf623d04ce44b719919fa00a..1107ecb365a67847ad929e8e4b75d14a9c26fc51 100644 (file)
@@ -701,4 +701,19 @@ do_test view-25.2 {
   set log
 } $res
 
+#-------------------------------------------------------------------------
+do_execsql_test view-26.0 {
+  CREATE TABLE t16(a, b, c UNIQUE);
+  INSERT INTO t16 VALUES(1, 1, 1);
+  INSERT INTO t16 VALUES(2, 2, 2);
+  INSERT INTO t16 VALUES(3, 3, 3);
+  CREATE VIEW v16 AS SELECT max(a) AS mx, min(b) AS mn FROM t16 GROUP BY c;
+
+  SELECT * FROM v16 AS one, v16 AS two WHERE one.mx=1;
+} {
+  1 1 1 1 
+  1 1 2 2 
+  1 1 3 3
+}
+
 finish_test