summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <[email protected]>2025-05-15 20:55:36 +0300
committervvvv <[email protected]>2025-05-15 21:22:54 +0300
commitb0dc0cab9b58d86e59d622f820b42cab95bcb07e (patch)
tree2ea5ba877e60ef4632db285ffa77137cc780e119
parent9b2e2ed5d5e3e8ecf72699300ce1b5ffc001ff40 (diff)
YQL-19966 subqueries in views
commit_hash:d39880b60ceb7a5978a9ed1b8b95cfaf3c184373
-rw-r--r--yql/essentials/public/purecalc/ut/test_sql.cpp20
-rw-r--r--yql/essentials/sql/v1/sql_query.cpp2
2 files changed, 21 insertions, 1 deletions
diff --git a/yql/essentials/public/purecalc/ut/test_sql.cpp b/yql/essentials/public/purecalc/ut/test_sql.cpp
index 64ec760f9ec..2975f784b73 100644
--- a/yql/essentials/public/purecalc/ut/test_sql.cpp
+++ b/yql/essentials/public/purecalc/ut/test_sql.cpp
@@ -202,4 +202,24 @@ Y_UNIT_TEST_SUITE(TestSql) {
factory->MakePullListProgram(FakeIS(), FakeOS(), sql, ETranslationMode::SQL);
}());
}
+
+ Y_UNIT_TEST(TestUseDefineSubquery) {
+ auto factory = MakeProgramFactory();
+
+ auto sql = TString(R"(
+ DEFINE SUBQUERY $source() AS
+ PROCESS Input;
+ END DEFINE;
+
+ DEFINE SUBQUERY $handler($input) AS
+ PROCESS $input();
+ END DEFINE;
+
+ PROCESS $handler($source);
+ )");
+
+ UNIT_ASSERT_NO_EXCEPTION([&](){
+ factory->MakePullListProgram(FakeIS(), FakeOS(), sql, ETranslationMode::SQL);
+ }());
+ }
}
diff --git a/yql/essentials/sql/v1/sql_query.cpp b/yql/essentials/sql/v1/sql_query.cpp
index 3536b61b820..8ba4226d684 100644
--- a/yql/essentials/sql/v1/sql_query.cpp
+++ b/yql/essentials/sql/v1/sql_query.cpp
@@ -221,7 +221,7 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core&
ParseStatementName(core, internalStatementName, humanStatementName);
const auto& altCase = core.Alt_case();
if (Mode == NSQLTranslation::ESqlMode::LIMITED_VIEW && (altCase >= TRule_sql_stmt_core::kAltSqlStmtCore4 &&
- altCase != TRule_sql_stmt_core::kAltSqlStmtCore13)) {
+ altCase != TRule_sql_stmt_core::kAltSqlStmtCore13 && altCase != TRule_sql_stmt_core::kAltSqlStmtCore18)) {
Error() << humanStatementName << " statement is not supported in limited views";
return false;
}