summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--yql/essentials/providers/result/provider/yql_result_provider.cpp6
-rw-r--r--yql/essentials/tests/sql/minirun/part6/canondata/result.json12
-rw-r--r--yql/essentials/tests/sql/minirun/part8/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_action-runtime_if_select_/formatted.sql7
-rw-r--r--yql/essentials/tests/sql/suites/action/runtime_if_select.sql6
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;
+