Skip to content

Commit 802da27

Browse files
committed
refactor SQL translators YQL-19594
commit_hash:401d21dd23ee9bb7ee52b2fc42e596cb3e4bdda7
1 parent b49c2fc commit 802da27

File tree

34 files changed

+211
-134
lines changed

34 files changed

+211
-134
lines changed

yql/essentials/core/extract_predicate/ut/extract_predicate_ut.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <yql/essentials/providers/common/provider/yql_provider_names.h>
77
#include <yql/essentials/sql/settings/translation_settings.h>
88
#include <yql/essentials/sql/sql.h>
9+
#include <yql/essentials/sql/v1/sql.h>
910
#include <yql/essentials/ast/yql_ast_annotation.h>
1011
#include <yql/essentials/ast/yql_expr.h>
1112
#include <yql/essentials/core/cbo/simple/cbo_simple.h>
@@ -53,7 +54,13 @@ Y_UNIT_TEST_SUITE(TYqlExtractPredicate) {
5354
NSQLTranslation::TTranslationSettings settings;
5455
settings.SyntaxVersion = 1;
5556

56-
TAstParseResult astRes = SqlToYql(program, settings);
57+
NSQLTranslation::TTranslators translators(
58+
nullptr,
59+
NSQLTranslationV1::MakeTranslator(),
60+
nullptr
61+
);
62+
63+
TAstParseResult astRes = SqlToYql(translators, program, settings);
5764
UNIT_ASSERT(astRes.IsOk());
5865
TExprNode::TPtr exprRoot;
5966
UNIT_ASSERT(CompileExpr(*astRes.Root, exprRoot, exprCtx, nullptr, nullptr));

yql/essentials/core/extract_predicate/ut/ya.make

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ PEERDIR(
2121
yql/essentials/minikql/invoke_builtins/llvm16
2222
yql/essentials/sql/pg
2323
yql/essentials/parser/pg_wrapper
24+
yql/essentials/sql
25+
yql/essentials/sql/v1
2426
)
2527

2628
YQL_LAST_ABI_VERSION()

yql/essentials/core/facade/ya.make

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ PEERDIR(
2121
yql/essentials/core/qplayer/storage/interface
2222
yql/essentials/core/qplayer/udf_resolver
2323
yql/essentials/sql
24+
yql/essentials/sql/v1
25+
yql/essentials/parser/pg_wrapper/interface
2426
yql/essentials/utils/log
2527
yql/essentials/core
2628
yql/essentials/core/type_ann

yql/essentials/core/facade/yql_facade.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
#include <yql/essentials/core/type_ann/type_ann_expr.h>
1111
#include <yql/essentials/core/services/yql_plan.h>
1212
#include <yql/essentials/core/services/yql_eval_params.h>
13+
#include <yql/essentials/sql/sql.h>
14+
#include <yql/essentials/sql/v1/sql.h>
15+
#include <yql/essentials/parser/pg_wrapper/interface/parser.h>
1316
#include <yql/essentials/utils/log/context.h>
1417
#include <yql/essentials/utils/log/profile.h>
1518
#include <yql/essentials/utils/limiting_allocator.h>
@@ -728,7 +731,13 @@ bool TProgram::ParseSql(const NSQLTranslation::TTranslationSettings& settings)
728731
}
729732

730733
currentSettings->EmitReadsForExists = true;
731-
return FillParseResult(SqlToYql(sourceCode, *currentSettings, &warningRules), &warningRules);
734+
NSQLTranslation::TTranslators translators(
735+
nullptr,
736+
NSQLTranslationV1::MakeTranslator(),
737+
NSQLTranslationPG::MakeTranslator()
738+
);
739+
740+
return FillParseResult(SqlToYql(translators, sourceCode, *currentSettings, &warningRules), &warningRules);
732741
}
733742

734743
bool TProgram::Compile(const TString& username, bool skipLibraries) {

yql/essentials/core/services/mounts/ya.make

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ PEERDIR(
1010
yql/essentials/core/user_data
1111
yql/essentials/core
1212
yql/essentials/utils/log
13+
yql/essentials/sql
14+
yql/essentials/sql/v1
1315
)
1416

1517
YQL_LAST_ABI_VERSION()

yql/essentials/core/services/mounts/yql_mounts.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#include "yql_mounts.h"
22

33
#include <yql/essentials/core/yql_library_compiler.h>
4+
#include <yql/essentials/sql/sql.h>
5+
#include <yql/essentials/sql/v1/sql.h>
46
#include <yql/essentials/utils/log/profile.h>
57

68
#include <library/cpp/resource/resource.h>
@@ -124,16 +126,22 @@ namespace NYql {
124126
TUserDataTable mounts;
125127
LoadYqlDefaultMounts(mounts);
126128

129+
NSQLTranslation::TTranslators translators(
130+
nullptr,
131+
NSQLTranslationV1::MakeTranslator(),
132+
nullptr
133+
);
134+
127135
TModulesTable modulesTable;
128-
if (!CompileLibraries(mounts, *ctx, modulesTable, optimizeLibraries)) {
136+
if (!CompileLibraries(translators, mounts, *ctx, modulesTable, optimizeLibraries)) {
129137
return {};
130138
}
131139

132140
for (const auto& item : userData) {
133141
AddUserDataToTable(mounts, item);
134142
}
135143

136-
moduleResolver = std::make_shared<TModuleResolver>(std::move(modulesTable), ctx->NextUniqueId,
144+
moduleResolver = std::make_shared<TModuleResolver>(translators, std::move(modulesTable), ctx->NextUniqueId,
137145
clusterMapping, sqlFlags, optimizeLibraries, std::move(ownedCtx));
138146
return mounts;
139147
}

yql/essentials/core/ut/ya.make

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ PEERDIR(
3232
yql/essentials/minikql/invoke_builtins/llvm16
3333
yql/essentials/parser/pg_wrapper
3434
yql/essentials/sql/pg
35+
yql/essentials/sql
36+
yql/essentials/sql/v1
3537
yql/essentials/udfs/common/string
3638
)
3739

yql/essentials/core/ut/yql_library_compiler_ut.cpp

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,25 @@
22

33
#include "yql_library_compiler.h"
44

5+
#include <yql/essentials/sql/sql.h>
6+
#include <yql/essentials/sql/v1/sql.h>
7+
58
namespace NYql {
69

710
Y_UNIT_TEST_SUITE(TLibraryCompilerTests) {
811

912
static const char* alias = "/lib/ut.yql";
1013

1114
static bool CompileAndLink(const THashMap<TString, TString>& libs, TExprContext& ctx) {
15+
NSQLTranslation::TTranslators translators(
16+
nullptr,
17+
NSQLTranslationV1::MakeTranslator(),
18+
nullptr
19+
);
20+
1221
THashMap<TString, TLibraryCohesion> compiled;
1322
for (const auto& lib : libs)
14-
if (!CompileLibrary(alias, lib.second, ctx, compiled[lib.first]))
23+
if (!CompileLibrary(translators, alias, lib.second, ctx, compiled[lib.first]))
1524
return false;
1625

1726
return LinkLibraries(compiled, ctx, ctx);
@@ -25,9 +34,15 @@ Y_UNIT_TEST_SUITE(TLibraryCompilerTests) {
2534
"(export X)\n"
2635
")\n";
2736

37+
NSQLTranslation::TTranslators translators(
38+
nullptr,
39+
NSQLTranslationV1::MakeTranslator(),
40+
nullptr
41+
);
42+
2843
TExprContext ctx;
2944
TLibraryCohesion cohesion;
30-
UNIT_ASSERT(CompileLibrary(alias, s, ctx, cohesion));
45+
UNIT_ASSERT(CompileLibrary(translators, alias, s, ctx, cohesion));
3146
UNIT_ASSERT_VALUES_EQUAL(2, cohesion.Exports.Symbols().size());
3247
UNIT_ASSERT(cohesion.Imports.empty());
3348
}
@@ -41,9 +56,15 @@ Y_UNIT_TEST_SUITE(TLibraryCompilerTests) {
4156
"(export ex)\n"
4257
")\n";
4358

59+
NSQLTranslation::TTranslators translators(
60+
nullptr,
61+
NSQLTranslationV1::MakeTranslator(),
62+
nullptr
63+
);
64+
4465
TExprContext ctx;
4566
TLibraryCohesion cohesion;
46-
UNIT_ASSERT(CompileLibrary(alias, s, ctx, cohesion));
67+
UNIT_ASSERT(CompileLibrary(translators, alias, s, ctx, cohesion));
4768
UNIT_ASSERT_VALUES_EQUAL(1, cohesion.Exports.Symbols().size());
4869
UNIT_ASSERT_VALUES_EQUAL(2, cohesion.Imports.size());
4970
}

yql/essentials/core/yql_library_compiler.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,15 @@ bool OptimizeLibrary(TLibraryCohesion& cohesion, TExprContext& ctx) {
8989
return true;
9090
}
9191

92-
bool CompileLibrary(const TString& alias, const TString& script, TExprContext& ctx, TLibraryCohesion& cohesion, bool optimize)
92+
bool CompileLibrary(const NSQLTranslation::TTranslators& translators, const TString& alias,
93+
const TString& script, TExprContext& ctx, TLibraryCohesion& cohesion, bool optimize)
9394
{
9495
TAstParseResult res;
9596
if (alias.EndsWith(".sql")) {
9697
NSQLTranslation::TTranslationSettings translationSettings;
9798
translationSettings.SyntaxVersion = 1;
9899
translationSettings.Mode = NSQLTranslation::ESqlMode::LIBRARY;
99-
res = NSQLTranslation::SqlToYql(script, translationSettings);
100+
res = NSQLTranslation::SqlToYql(translators, script, translationSettings);
100101
} else {
101102
res = ParseAst(script, nullptr, alias);
102103
}
@@ -198,7 +199,8 @@ bool LinkLibraries(THashMap<TString, TLibraryCohesion>& libs, TExprContext& ctx,
198199
return true;
199200
}
200201

201-
bool CompileLibraries(const TUserDataTable& userData, TExprContext& ctx, TModulesTable& modules, bool optimize)
202+
bool CompileLibraries(const NSQLTranslation::TTranslators& translators, const TUserDataTable& userData,
203+
TExprContext& ctx, TModulesTable& modules, bool optimize)
202204
{
203205
THashMap<TString, TLibraryCohesion> libs;
204206
for (const auto& data : userData) {
@@ -212,7 +214,7 @@ bool CompileLibraries(const TUserDataTable& userData, TExprContext& ctx, TModule
212214
}
213215

214216
if (!libraryData.empty()) {
215-
if (CompileLibrary(alias, libraryData, ctx, libs[alias], optimize))
217+
if (CompileLibrary(translators, alias, libraryData, ctx, libs[alias], optimize))
216218
modules[TModuleResolver::NormalizeModuleName(alias)] = libs[alias].Exports;
217219
else
218220
return false;
@@ -223,4 +225,8 @@ bool CompileLibraries(const TUserDataTable& userData, TExprContext& ctx, TModule
223225
return LinkLibraries(libs, ctx, ctx);
224226
}
225227

228+
bool CompileLibraries(const TUserDataTable& userData, TExprContext& ctx, TModulesTable& modules, bool optimize) {
229+
return CompileLibraries(NSQLTranslation::MakeAllTranslators(), userData, ctx, modules, optimize);
230+
}
231+
226232
}

yql/essentials/core/yql_library_compiler.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,19 @@
22

33
#include <yql/essentials/ast/yql_expr.h>
44
#include "yql_type_annotation.h"
5+
#include <yql/essentials/sql/sql.h>
56

67
namespace NYql {
78

89
bool OptimizeLibrary(TLibraryCohesion& cohesion, TExprContext& ctx);
9-
bool CompileLibrary(const TString& alias, const TString& script, TExprContext& ctx, TLibraryCohesion& cohesion, bool optimize = true);
10+
bool CompileLibrary(const NSQLTranslation::TTranslators& translators, const TString& alias,
11+
const TString& script, TExprContext& ctx, TLibraryCohesion& cohesion, bool optimize = true);
1012

1113
bool LinkLibraries(THashMap<TString, TLibraryCohesion>& libs, TExprContext& ctx, TExprContext& ctxToClone, const std::function<const TExportTable*(const TString&)>& module2ExportTable);
1214
bool LinkLibraries(THashMap<TString, TLibraryCohesion>& libs, TExprContext& ctx, TExprContext& ctxToClone, const TModulesTable* loadedModules = nullptr);
1315

16+
bool CompileLibraries(const NSQLTranslation::TTranslators& translators, const TUserDataTable& userData,
17+
TExprContext& ctx, TModulesTable& modules, bool optimize = true);
18+
//FIXME remove
1419
bool CompileLibraries(const TUserDataTable& userData, TExprContext& ctx, TModulesTable& modules, bool optimize = true);
1520
}

0 commit comments

Comments
 (0)