diff options
author | aneporada <[email protected]> | 2025-07-15 22:17:48 +0300 |
---|---|---|
committer | aneporada <[email protected]> | 2025-07-15 22:33:40 +0300 |
commit | 532483114946405240dc983cc9ec6fd3bd55bd1d (patch) | |
tree | 9ce46d1abe75bd6125dab51b856a314eec066924 | |
parent | a40bd4f45bbc18fd95b1596e655b8942ceb2cf4b (diff) |
Fix 'Member over renaming FlatMap' optimizer
commit_hash:589383be883e0948cdf7db8928c5842d60c5c628
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; + |