diff options
6 files changed, 49 insertions, 8 deletions
diff --git a/yql/essentials/providers/result/provider/yql_result_provider.cpp b/yql/essentials/providers/result/provider/yql_result_provider.cpp index c159cb7dd66..e47a33dcb8a 100644 --- a/yql/essentials/providers/result/provider/yql_result_provider.cpp +++ b/yql/essentials/providers/result/provider/yql_result_provider.cpp @@ -619,13 +619,13 @@ namespace { input.Ptr()->SetState(TExprNode::EState::ExecutionInProgress); auto status = DelegatedProvider->GetCallableExecutionTransformer().Transform(DelegatedNode, DelegatedNodeOutput, ctx); if (status.Level != TStatus::Async) { - FinishNode(*input.Ptr(), ctx, status); + status = FinishNode(*input.Ptr(), ctx, status); } return status; } - void FinishNode(TExprNode& input, TExprContext& ctx, IGraphTransformer::TStatus status) { + IGraphTransformer::TStatus FinishNode(TExprNode& input, TExprContext& ctx, IGraphTransformer::TStatus status) { if (status.Level == TStatus::Ok) { auto data = DelegatedNode->GetResult().Content(); const bool needWriter = input.Content() != TResIf::CallableName() @@ -638,6 +638,7 @@ namespace { } else { input.SetResult(ctx.NewAtom(input.Pos(), data)); input.SetState(TExprNode::EState::ExecutionRequired); + status = IGraphTransformer::TStatus::Repeat; } } else if (status.Level == TStatus::Error) { if (const auto issies = ctx.AssociativeIssues.extract(DelegatedNode.Get())) { @@ -650,6 +651,7 @@ namespace { DelegatedProvider = nullptr; DelegatedNode = nullptr; DelegatedNodeOutput = nullptr; + return status; } private: diff --git a/yql/essentials/tests/sql/minirun/part6/canondata/result.json b/yql/essentials/tests/sql/minirun/part6/canondata/result.json index d09d3fa9e87..8bae492b7ab 100644 --- a/yql/essentials/tests/sql/minirun/part6/canondata/result.json +++ b/yql/essentials/tests/sql/minirun/part6/canondata/result.json @@ -57,16 +57,16 @@ ], "test.test[action-runtime_for_select-default.txt-Debug]": [ { - "checksum": "00df4fa47bd1329b8d700ba120719be8", - "size": 1842, - "uri": "https://{canondata_backend}/1937367/b6bc878e9971cb3293892fcd550e8dfbdcd963c0/resource.tar.gz#test.test_action-runtime_for_select-default.txt-Debug_/opt.yql" + "checksum": "82f091a10f928e1cbf120543ab7aac8c", + "size": 1836, + "uri": "https://{canondata_backend}/1942100/3e33d7929facca390789438146a295ea293c8844/resource.tar.gz#test.test_action-runtime_for_select-default.txt-Debug_/opt.yql" } ], "test.test[action-runtime_for_select-default.txt-Results]": [ { - "checksum": "b03b73cdb59a9d899643565da1548390", - "size": 696, - "uri": "https://{canondata_backend}/1937367/b6bc878e9971cb3293892fcd550e8dfbdcd963c0/resource.tar.gz#test.test_action-runtime_for_select-default.txt-Results_/results.txt" + "checksum": "160f973e87365f85a49d5052aeb877ae", + "size": 5549, + "uri": "https://{canondata_backend}/1942100/3e33d7929facca390789438146a295ea293c8844/resource.tar.gz#test.test_action-runtime_for_select-default.txt-Results_/results.txt" } ], "test.test[action-runtime_parse_type-default.txt-Debug]": [ diff --git a/yql/essentials/tests/sql/minirun/part8/canondata/result.json b/yql/essentials/tests/sql/minirun/part8/canondata/result.json index bfac0bdf52a..882d4a17409 100644 --- a/yql/essentials/tests/sql/minirun/part8/canondata/result.json +++ b/yql/essentials/tests/sql/minirun/part8/canondata/result.json @@ -55,6 +55,20 @@ "uri": "https://{canondata_backend}/1925821/dbb639c652a305ac0d22d675f471bfcd73848bae/resource.tar.gz#test.test_action-runtime_format_type-default.txt-Results_/results.txt" } ], + "test.test[action-runtime_if_select-default.txt-Debug]": [ + { + "checksum": "04d92468af815d926ef48bb679b8bd39", + "size": 291, + "uri": "https://{canondata_backend}/1936273/e7d9339881e50d7c4c0d41e5fe57f7dd46fae5cb/resource.tar.gz#test.test_action-runtime_if_select-default.txt-Debug_/opt.yql" + } + ], + "test.test[action-runtime_if_select-default.txt-Results]": [ + { + "checksum": "3432be66794780aaeaad6d43b71e08e5", + "size": 695, + "uri": "https://{canondata_backend}/1936273/e7d9339881e50d7c4c0d41e5fe57f7dd46fae5cb/resource.tar.gz#test.test_action-runtime_if_select-default.txt-Results_/results.txt" + } + ], "test.test[action-runtime_repr_code-default.txt-Debug]": [ { "checksum": "be55b3039018b00715c802e2bbcda15e", diff --git a/yql/essentials/tests/sql/sql2yql/canondata/result.json b/yql/essentials/tests/sql/sql2yql/canondata/result.json index aff3020614c..862bc360de1 100644 --- a/yql/essentials/tests/sql/sql2yql/canondata/result.json +++ b/yql/essentials/tests/sql/sql2yql/canondata/result.json @@ -216,6 +216,13 @@ "uri": "https://{canondata_backend}/1942173/99e88108149e222741552e7e6cddef041d6a2846/resource.tar.gz#test_sql2yql.test_action-runtime_format_type_/sql.yql" } ], + "test_sql2yql.test[action-runtime_if_select]": [ + { + "checksum": "50e9b31ae41747a4e57a5ed47153bc6e", + "size": 1191, + "uri": "https://{canondata_backend}/1903885/2a4db0b1b800bed75f168256955a114ce055541f/resource.tar.gz#test_sql2yql.test_action-runtime_if_select_/sql.yql" + } + ], "test_sql2yql.test[action-runtime_make_code]": [ { "checksum": "55cf665957c32c9f7172c43244f9997c", @@ -7084,6 +7091,11 @@ "uri": "file://test_sql_format.test_action-runtime_format_type_/formatted.sql" } ], + "test_sql_format.test[action-runtime_if_select]": [ + { + "uri": "file://test_sql_format.test_action-runtime_if_select_/formatted.sql" + } + ], "test_sql_format.test[action-runtime_make_code]": [ { "uri": "file://test_sql_format.test_action-runtime_make_code_/formatted.sql" diff --git a/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_action-runtime_if_select_/formatted.sql b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_action-runtime_if_select_/formatted.sql new file mode 100644 index 00000000000..86f00708849 --- /dev/null +++ b/yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_action-runtime_if_select_/formatted.sql @@ -0,0 +1,7 @@ +$predicate = 1 < 2; + +IF $predicate DO BEGIN + SELECT + 1 + ; +END DO; diff --git a/yql/essentials/tests/sql/suites/action/runtime_if_select.sql b/yql/essentials/tests/sql/suites/action/runtime_if_select.sql new file mode 100644 index 00000000000..07e3f5c447a --- /dev/null +++ b/yql/essentials/tests/sql/suites/action/runtime_if_select.sql @@ -0,0 +1,6 @@ +$predicate = 1 < 2; + +if $predicate do begin + select 1; +end do; + |
