summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraneporada <[email protected]>2025-07-15 22:17:48 +0300
committeraneporada <[email protected]>2025-07-15 22:33:40 +0300
commit532483114946405240dc983cc9ec6fd3bd55bd1d (patch)
tree9ce46d1abe75bd6125dab51b856a314eec066924
parenta40bd4f45bbc18fd95b1596e655b8942ceb2cf4b (diff)
Fix 'Member over renaming FlatMap' optimizer
commit_hash:589383be883e0948cdf7db8928c5842d60c5c628
-rw-r--r--yql/essentials/core/common_opt/yql_co_simple1.cpp4
-rw-r--r--yql/essentials/tests/sql/minirun/part5/canondata/result.json14
-rw-r--r--yql/essentials/tests/sql/sql2yql/canondata/result.json12
-rw-r--r--yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_optimizers-yql-20199_/formatted.sql5
-rw-r--r--yql/essentials/tests/sql/suites/optimizers/yql-20199.sql4
5 files changed, 39 insertions, 0 deletions
diff --git a/yql/essentials/core/common_opt/yql_co_simple1.cpp b/yql/essentials/core/common_opt/yql_co_simple1.cpp
index 038ae67e35e..5ea6c89e5b8 100644
--- a/yql/essentials/core/common_opt/yql_co_simple1.cpp
+++ b/yql/essentials/core/common_opt/yql_co_simple1.cpp
@@ -3833,6 +3833,10 @@ TExprNode::TPtr MemberOverRenamingFlatMap(const TExprNode::TPtr& node, TExprCont
}
auto arg = maybeFlatMap.Cast().Lambda().Args().Arg(0);
+ if (arg.Ref().GetTypeAnn()->GetKind() != ETypeAnnotationKind::Struct) {
+ return node;
+ }
+
auto asStruct = maybeFlatMap.Cast().Lambda().Body().Maybe<TCoJust>().Input().Maybe<TCoAsStruct>();
if (!asStruct) {
return node;
diff --git a/yql/essentials/tests/sql/minirun/part5/canondata/result.json b/yql/essentials/tests/sql/minirun/part5/canondata/result.json
index c4a1afdf6ee..fe83c9cab87 100644
--- a/yql/essentials/tests/sql/minirun/part5/canondata/result.json
+++ b/yql/essentials/tests/sql/minirun/part5/canondata/result.json
@@ -1257,6 +1257,20 @@
"uri": "https://{canondata_backend}/1942278/297fcbf291f6e0fa588710a14ca3180cf33bc176/resource.tar.gz#test.test_match_recognize-all_rows_per_match-default.txt-Results_/results.txt"
}
],
+ "test.test[optimizers-yql-20199-default.txt-Debug]": [
+ {
+ "checksum": "85a9c936b46b8fe82d6fbab106f522da",
+ "size": 501,
+ "uri": "https://{canondata_backend}/1775319/048c1be5aaee67a6b9cc60e77f446900ff732239/resource.tar.gz#test.test_optimizers-yql-20199-default.txt-Debug_/opt.yql"
+ }
+ ],
+ "test.test[optimizers-yql-20199-default.txt-Results]": [
+ {
+ "checksum": "f9a40ce704e450668912cbb5f4baeef9",
+ "size": 887,
+ "uri": "https://{canondata_backend}/1775319/048c1be5aaee67a6b9cc60e77f446900ff732239/resource.tar.gz#test.test_optimizers-yql-20199-default.txt-Results_/results.txt"
+ }
+ ],
"test.test[order_by-order_by_missing_project_column_join--Debug]": [
{
"checksum": "85439b6307060d061d29938fb5dc523a",
diff --git a/yql/essentials/tests/sql/sql2yql/canondata/result.json b/yql/essentials/tests/sql/sql2yql/canondata/result.json
index ca885d5c66e..f1fa4c311b8 100644
--- a/yql/essentials/tests/sql/sql2yql/canondata/result.json
+++ b/yql/essentials/tests/sql/sql2yql/canondata/result.json
@@ -4836,6 +4836,13 @@
"uri": "https://{canondata_backend}/1784826/73292dd2b499c72f7236e320f3f6e992baf8a929/resource.tar.gz#test_sql2yql.test_optimizers-yql-20126_/sql.yql"
}
],
+ "test_sql2yql.test[optimizers-yql-20199]": [
+ {
+ "checksum": "10f7b89cfe882ce905570ef7b94040f2",
+ "size": 1370,
+ "uri": "https://{canondata_backend}/1775319/e70830498e74cb7a968bf75bc0cc93d31ec8d1e2/resource.tar.gz#test_sql2yql.test_optimizers-yql-20199_/sql.yql"
+ }
+ ],
"test_sql2yql.test[optimizers-yson_dup_serialize]": [
{
"checksum": "c4d71b8c49a1202b8b7d0b439671a102",
@@ -11287,6 +11294,11 @@
"uri": "file://test_sql_format.test_optimizers-yql-20126_/formatted.sql"
}
],
+ "test_sql_format.test[optimizers-yql-20199]": [
+ {
+ "uri": "file://test_sql_format.test_optimizers-yql-20199_/formatted.sql"
+ }
+ ],
"test_sql_format.test[optimizers-yson_dup_serialize]": [
{
"uri": "file://test_sql_format.test_optimizers-yson_dup_serialize_/formatted.sql"
diff --git a/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_optimizers-yql-20199_/formatted.sql b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_optimizers-yql-20199_/formatted.sql
new file mode 100644
index 00000000000..cba063bcea3
--- /dev/null
+++ b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_optimizers-yql-20199_/formatted.sql
@@ -0,0 +1,5 @@
+PRAGMA warning('disable', '4510');
+
+SELECT
+ YQL::FlatMap(Opaque(Just(Just(AsStruct(1 AS x)))), ($optS) -> (Just(AsStruct($optS.x AS x)))).x
+;
diff --git a/yql/essentials/tests/sql/suites/optimizers/yql-20199.sql b/yql/essentials/tests/sql/suites/optimizers/yql-20199.sql
new file mode 100644
index 00000000000..8f6492c9889
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/optimizers/yql-20199.sql
@@ -0,0 +1,4 @@
+PRAGMA warning('disable', '4510');
+
+select YQL::FlatMap(Opaque(Just(Just(AsStruct(1 as x)))), ($optS)->(Just(AsStruct($optS.x as x)))).x;
+