Browse Source

YQL-17286: Fix sublink in projection, which has no external deps (#684)

Do not expand sublinks, which have no external deps
Mars Agliullin 1 year ago
parent
commit
cba9d6a80e

+ 1 - 1
ydb/library/yql/core/common_opt/yql_co_pgselect.cpp

@@ -3196,7 +3196,7 @@ TExprNode::TPtr ExpandPgSelectImpl(const TExprNode::TPtr& node, TExprContext& ct
                 }
             }
 
-            if (!outerInputs.empty()) {
+            if (!outerInputs.empty() && finalExtTypes && 0 < finalExtTypes->Tail().ChildrenSize()) {
                 list = JoinOuter(node->Pos(), list, finalExtTypes, outerInputs, outerInputAliases, cleanedInputs, inputAliases, ctx);
             }
 

+ 22 - 0
ydb/library/yql/tests/sql/dq_file/part0/canondata/result.json

@@ -2305,6 +2305,28 @@
         }
     ],
     "test.test[pg-sublink_order_all_corr-default.txt-Results]": [],
+    "test.test[pg-sublink_projection_uncorrelated-default.txt-Analyze]": [
+        {
+            "checksum": "b4dd508a329723c74293d80f0278c705",
+            "size": 505,
+            "uri": "https://{canondata_backend}/1031349/4e362e41dd365ac933a1de3f249df5eea8bb185d/resource.tar.gz#test.test_pg-sublink_projection_uncorrelated-default.txt-Analyze_/plan.txt"
+        }
+    ],
+    "test.test[pg-sublink_projection_uncorrelated-default.txt-Debug]": [
+        {
+            "checksum": "1aafa70160c01eddfb9563a02afc45b8",
+            "size": 399,
+            "uri": "https://{canondata_backend}/1031349/4e362e41dd365ac933a1de3f249df5eea8bb185d/resource.tar.gz#test.test_pg-sublink_projection_uncorrelated-default.txt-Debug_/opt.yql_patched"
+        }
+    ],
+    "test.test[pg-sublink_projection_uncorrelated-default.txt-Plan]": [
+        {
+            "checksum": "b4dd508a329723c74293d80f0278c705",
+            "size": 505,
+            "uri": "https://{canondata_backend}/1031349/4e362e41dd365ac933a1de3f249df5eea8bb185d/resource.tar.gz#test.test_pg-sublink_projection_uncorrelated-default.txt-Plan_/plan.txt"
+        }
+    ],
+    "test.test[pg-sublink_projection_uncorrelated-default.txt-Results]": [],
     "test.test[pg-tpcds-q43-default.txt-Analyze]": [
         {
             "checksum": "212be881133a20b5b73ef1250dbeda51",

+ 7 - 0
ydb/library/yql/tests/sql/sql2yql/canondata/result.json

@@ -12130,6 +12130,13 @@
             "uri": "https://{canondata_backend}/1599023/af9c2f81df0601cf266a0926b5ce73b6101b9115/resource.tar.gz#test_sql2yql.test_pg-sublink_projection_in_corr_/sql.yql"
         }
     ],
+    "test_sql2yql.test[pg-sublink_projection_uncorrelated]": [
+        {
+            "checksum": "79141a5b9b9c23500431069b9d31b804",
+            "size": 684,
+            "uri": "https://{canondata_backend}/1871182/2bf182d62d0d6b300a9cb187b902374eb8f27321/resource.tar.gz#test_sql2yql.test_pg-sublink_projection_uncorrelated_/sql.yql"
+        }
+    ],
     "test_sql2yql.test[pg-sublink_where_all]": [
         {
             "checksum": "fc31f83221afa091432ab14824d7f1be",

+ 2 - 0
ydb/library/yql/tests/sql/suites/pg/sublink_projection_uncorrelated.sql

@@ -0,0 +1,2 @@
+--!syntax_pg
+select 1 as one, (select 2) as two;

+ 21 - 0
ydb/library/yql/tests/sql/yt_native_file/part0/canondata/result.json

@@ -2036,6 +2036,27 @@
             "uri": "https://{canondata_backend}/1889210/fa3852f976b4938229195b3251165e823de702aa/resource.tar.gz#test.test_pg-sublink_order_all_corr-default.txt-Results_/results.txt"
         }
     ],
+    "test.test[pg-sublink_projection_uncorrelated-default.txt-Debug]": [
+        {
+            "checksum": "b0821371fc2814854f8466a6eedfbbc3",
+            "size": 343,
+            "uri": "https://{canondata_backend}/1889210/992dba7e1c711dc3d2671795b7ce1db28f5ced6a/resource.tar.gz#test.test_pg-sublink_projection_uncorrelated-default.txt-Debug_/opt.yql"
+        }
+    ],
+    "test.test[pg-sublink_projection_uncorrelated-default.txt-Plan]": [
+        {
+            "checksum": "b4dd508a329723c74293d80f0278c705",
+            "size": 505,
+            "uri": "https://{canondata_backend}/1889210/992dba7e1c711dc3d2671795b7ce1db28f5ced6a/resource.tar.gz#test.test_pg-sublink_projection_uncorrelated-default.txt-Plan_/plan.txt"
+        }
+    ],
+    "test.test[pg-sublink_projection_uncorrelated-default.txt-Results]": [
+        {
+            "checksum": "ff27962bee40696d3897bf8b2c12becd",
+            "size": 944,
+            "uri": "https://{canondata_backend}/1889210/992dba7e1c711dc3d2671795b7ce1db28f5ced6a/resource.tar.gz#test.test_pg-sublink_projection_uncorrelated-default.txt-Results_/results.txt"
+        }
+    ],
     "test.test[pg-tpcds-q43-default.txt-Debug]": [
         {
             "checksum": "6d7ab3f0ace5f5eb7ca1f3b89d22c078",