summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql
diff options
context:
space:
mode:
authorvvvv <[email protected]>2025-02-16 01:37:05 +0300
committervvvv <[email protected]>2025-02-16 01:52:10 +0300
commit802da2736bf00631aa408e495b80d6e125f10a9f (patch)
tree054610611d17d22a8b2677e9c9f8ae5ec6e0eeef /yql/essentials/sql
parentb49c2fc9d96aa43f8f993a9e2f037209f0ebdb68 (diff)
refactor SQL translators YQL-19594
commit_hash:401d21dd23ee9bb7ee52b2fc42e596cb3e4bdda7
Diffstat (limited to 'yql/essentials/sql')
-rw-r--r--yql/essentials/sql/pg/ut/util.h14
-rw-r--r--yql/essentials/sql/sql.cpp16
-rw-r--r--yql/essentials/sql/v1/sql_ut.cpp4
-rw-r--r--yql/essentials/sql/v1/sql_ut.h12
-rw-r--r--yql/essentials/sql/v1/sql_ut_antlr4.cpp4
-rw-r--r--yql/essentials/sql/v1/sql_ut_antlr4.h10
6 files changed, 42 insertions, 18 deletions
diff --git a/yql/essentials/sql/pg/ut/util.h b/yql/essentials/sql/pg/ut/util.h
index e1fff55beb2..72739103643 100644
--- a/yql/essentials/sql/pg/ut/util.h
+++ b/yql/essentials/sql/pg/ut/util.h
@@ -5,6 +5,7 @@
#include <yql/essentials/sql/sql.h>
#include <yql/essentials/parser/pg_catalog/catalog.h>
#include <yql/essentials/parser/pg_wrapper/interface/config.h>
+#include <yql/essentials/parser/pg_wrapper/interface/parser.h>
enum class EDebugOutput {
None,
@@ -183,7 +184,14 @@ inline NYql::TAstParseResult SqlToYqlWithMode(const TString& query, NSQLTranslat
settings.PgParser = true;
TTestAutoParamBuilderFactory autoParamFactory;
settings.AutoParamBuilderFactory = &autoParamFactory;
- auto res = SqlToYql(query, settings);
+
+ NSQLTranslation::TTranslators translators(
+ nullptr,
+ nullptr,
+ NSQLTranslationPG::MakeTranslator()
+ );
+
+ auto res = SqlToYql(translators, query, settings);
if (debug == EDebugOutput::ToCerr) {
Err2Str(res, debug);
}
@@ -206,10 +214,10 @@ inline void VisitAstNodes(const NYql::TAstNode& root, const TAstNodeVisitFunc& v
}
}
-
+
inline TMaybe<const NYql::TAstNode*> MaybeGetQuotedValue(const NYql::TAstNode& node) {
const bool isQuotedList =
- node.IsListOfSize(2) && node.GetChild(0)->IsAtom()
+ node.IsListOfSize(2) && node.GetChild(0)->IsAtom()
&& node.GetChild(0)->GetContent() == "quote";
if (isQuotedList) {
return node.GetChild(1);
diff --git a/yql/essentials/sql/sql.cpp b/yql/essentials/sql/sql.cpp
index 9e18a1bb017..4d768852c66 100644
--- a/yql/essentials/sql/sql.cpp
+++ b/yql/essentials/sql/sql.cpp
@@ -14,6 +14,14 @@
namespace NSQLTranslation {
+ TTranslators MakeAllTranslators() {
+ return TTranslators(
+ NSQLTranslationV0::MakeTranslator(),
+ NSQLTranslationV1::MakeTranslator(),
+ NSQLTranslationPG::MakeTranslator()
+ );
+ }
+
NYql::TAstParseResult SqlToYql(const TTranslators& translators, const TString& query, const TTranslationSettings& settings,
NYql::TWarningRules* warningRules, NYql::TStmtParseInfo* stmtParseInfo, TTranslationSettings* effectiveSettings)
{
@@ -244,14 +252,6 @@ namespace NSQLTranslation {
return SqlToAstStatements(MakeAllTranslators(), query, settings, warningRules, actualSyntaxVersion, stmtParseInfo);
}
- TTranslators MakeAllTranslators() {
- return TTranslators(
- NSQLTranslationV0::MakeTranslator(),
- NSQLTranslationV1::MakeTranslator(),
- NSQLTranslationPG::MakeTranslator()
- );
- }
-
TTranslators::TTranslators(TTranslatorPtr v0, TTranslatorPtr v1, TTranslatorPtr pg)
: V0(v0 ? v0 : MakeDummyTranslator("v0"))
, V1(v1 ? v1 : MakeDummyTranslator("v1"))
diff --git a/yql/essentials/sql/v1/sql_ut.cpp b/yql/essentials/sql/v1/sql_ut.cpp
index 03d7c1e99a9..bdde5cddab9 100644
--- a/yql/essentials/sql/v1/sql_ut.cpp
+++ b/yql/essentials/sql/v1/sql_ut.cpp
@@ -2996,7 +2996,7 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
Y_UNIT_TEST(WithNonStructSchemaS3) {
NSQLTranslation::TTranslationSettings settings;
settings.ClusterMapping["s3bucket"] = NYql::S3ProviderName;
- UNIT_ASSERT(SqlToYql("select * from s3bucket.`foo` with schema (col1 Int32, String as col2, Int64 as col3);", settings).IsOk());
+ UNIT_ASSERT(SqlToYqlWithSettings("select * from s3bucket.`foo` with schema (col1 Int32, String as col2, Int64 as col3);", settings).IsOk());
}
Y_UNIT_TEST(AllowNestedTuplesInGroupBy) {
@@ -5201,7 +5201,7 @@ select FormatType($f());
Y_UNIT_TEST(WarnForDeprecatedSchema) {
NSQLTranslation::TTranslationSettings settings;
settings.ClusterMapping["s3bucket"] = NYql::S3ProviderName;
- NYql::TAstParseResult res = SqlToYql("select * from s3bucket.`foo` with schema (col1 Int32, String as col2, Int64 as col3);", settings);
+ NYql::TAstParseResult res = SqlToYqlWithSettings("select * from s3bucket.`foo` with schema (col1 Int32, String as col2, Int64 as col3);", settings);
UNIT_ASSERT(res.Root);
UNIT_ASSERT_STRING_CONTAINS(res.Issues.ToString(), "Warning: Deprecated syntax for positional schema: please use 'column type' instead of 'type AS column', code: 4535\n");
}
diff --git a/yql/essentials/sql/v1/sql_ut.h b/yql/essentials/sql/v1/sql_ut.h
index 7e9c3df8e8e..d01df1af2ba 100644
--- a/yql/essentials/sql/v1/sql_ut.h
+++ b/yql/essentials/sql/v1/sql_ut.h
@@ -1,6 +1,7 @@
#include <yql/essentials/providers/common/provider/yql_provider_names.h>
#include <yql/essentials/sql/sql.h>
+#include <yql/essentials/sql/v1/sql.h>
#include <util/generic/map.h>
#include <library/cpp/regex/pcre/pcre.h>
@@ -44,7 +45,14 @@ inline NYql::TAstParseResult SqlToYqlWithMode(const TString& query, NSQLTranslat
settings.AnsiLexer = ansiLexer;
settings.Antlr4Parser = false;
settings.SyntaxVersion = 1;
- auto res = SqlToYql(query, settings);
+
+ NSQLTranslation::TTranslators translators(
+ nullptr,
+ NSQLTranslationV1::MakeTranslator(),
+ nullptr
+ );
+
+ auto res = SqlToYql(translators, query, settings);
if (debug == EDebugOutput::ToCerr) {
Err2Str(res, debug);
}
@@ -55,7 +63,7 @@ inline NYql::TAstParseResult SqlToYql(const TString& query, size_t maxErrors = 1
return SqlToYqlWithMode(query, NSQLTranslation::ESqlMode::QUERY, maxErrors, provider, debug);
}
-inline NYql::TAstParseResult
+inline NYql::TAstParseResult
SqlToYqlWithSettings(const TString& query, const NSQLTranslation::TTranslationSettings& settings) {
return SqlToYqlWithMode(query, NSQLTranslation::ESqlMode::QUERY, 10, {}, EDebugOutput::None, false, settings);
}
diff --git a/yql/essentials/sql/v1/sql_ut_antlr4.cpp b/yql/essentials/sql/v1/sql_ut_antlr4.cpp
index 9472e015437..2784f85f0b6 100644
--- a/yql/essentials/sql/v1/sql_ut_antlr4.cpp
+++ b/yql/essentials/sql/v1/sql_ut_antlr4.cpp
@@ -3114,7 +3114,7 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
Y_UNIT_TEST(WithNonStructSchemaS3) {
NSQLTranslation::TTranslationSettings settings;
settings.ClusterMapping["s3bucket"] = NYql::S3ProviderName;
- UNIT_ASSERT(SqlToYql("select * from s3bucket.`foo` with schema (col1 Int32, String as col2, Int64 as col3);", settings).IsOk());
+ UNIT_ASSERT(SqlToYqlWithSettings("select * from s3bucket.`foo` with schema (col1 Int32, String as col2, Int64 as col3);", settings).IsOk());
}
Y_UNIT_TEST(AllowNestedTuplesInGroupBy) {
@@ -5197,7 +5197,7 @@ select FormatType($f());
Y_UNIT_TEST(WarnForDeprecatedSchema) {
NSQLTranslation::TTranslationSettings settings;
settings.ClusterMapping["s3bucket"] = NYql::S3ProviderName;
- NYql::TAstParseResult res = SqlToYql("select * from s3bucket.`foo` with schema (col1 Int32, String as col2, Int64 as col3);", settings);
+ NYql::TAstParseResult res = SqlToYqlWithSettings("select * from s3bucket.`foo` with schema (col1 Int32, String as col2, Int64 as col3);", settings);
UNIT_ASSERT(res.Root);
UNIT_ASSERT_STRING_CONTAINS(res.Issues.ToString(), "Warning: Deprecated syntax for positional schema: please use 'column type' instead of 'type AS column', code: 4535\n");
}
diff --git a/yql/essentials/sql/v1/sql_ut_antlr4.h b/yql/essentials/sql/v1/sql_ut_antlr4.h
index 9a0029b67ad..ab473e48d10 100644
--- a/yql/essentials/sql/v1/sql_ut_antlr4.h
+++ b/yql/essentials/sql/v1/sql_ut_antlr4.h
@@ -1,6 +1,7 @@
#include <yql/essentials/providers/common/provider/yql_provider_names.h>
#include <yql/essentials/sql/sql.h>
+#include <yql/essentials/sql/v1/sql.h>
#include <util/generic/map.h>
#include <library/cpp/testing/unittest/registar.h>
@@ -43,7 +44,14 @@ inline NYql::TAstParseResult SqlToYqlWithMode(const TString& query, NSQLTranslat
settings.AnsiLexer = ansiLexer;
settings.Antlr4Parser = true;
settings.SyntaxVersion = 1;
- auto res = SqlToYql(query, settings);
+
+ NSQLTranslation::TTranslators translators(
+ nullptr,
+ NSQLTranslationV1::MakeTranslator(),
+ nullptr
+ );
+
+ auto res = SqlToYql(translators, query, settings);
if (debug == EDebugOutput::ToCerr) {
Err2Str(res, debug);
}