summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoratarasov5 <[email protected]>2026-02-20 18:15:38 +0300
committeratarasov5 <[email protected]>2026-02-20 18:54:31 +0300
commite12ef8ebe5d736150ff83f7322a3717acaa83ffc (patch)
tree1694412e1bf2948ebe8ab5b2ba47ddc6bf686623
parentbf91e72c9630009247568464571090edf905da1a (diff)
YQL-20958: Pass translator flags for sql view
Описание проблемы есть в тикете. commit_hash:61b421f6650963cb6b156498b2a19e1c4f63adc8
-rw-r--r--yql/essentials/core/facade/yql_facade.cpp2
-rw-r--r--yql/essentials/core/facade/yql_facade.h2
-rw-r--r--yql/essentials/core/yql_type_annotation.h2
-rw-r--r--yql/essentials/public/purecalc/common/worker_factory.cpp30
-rw-r--r--yql/essentials/sql/settings/translation_sql_flags.cpp1
-rw-r--r--yql/essentials/sql/settings/translation_sql_flags.h11
-rw-r--r--yql/essentials/sql/settings/ya.make1
-rw-r--r--yt/yql/providers/yt/common/yql_configuration.h2
-rw-r--r--yt/yql/providers/yt/common/yql_yt_settings.h1
-rw-r--r--yt/yql/providers/yt/provider/yql_yt_load_table_meta.cpp45
-rw-r--r--yt/yql/providers/yt/provider/yql_yt_provider.cpp8
-rw-r--r--yt/yql/providers/yt/provider/yql_yt_provider.h5
-rw-r--r--yt/yql/providers/yt/provider/yql_yt_table_desc.cpp17
-rw-r--r--yt/yql/providers/yt/provider/yql_yt_table_desc.h7
14 files changed, 105 insertions, 29 deletions
diff --git a/yql/essentials/core/facade/yql_facade.cpp b/yql/essentials/core/facade/yql_facade.cpp
index 0862e2e74d7..207f7301fa9 100644
--- a/yql/essentials/core/facade/yql_facade.cpp
+++ b/yql/essentials/core/facade/yql_facade.cpp
@@ -938,6 +938,7 @@ bool TProgram::ParseSql(const NSQLTranslation::TTranslationSettings& settings)
HandleTranslationSettings(loadedSettings, currentSettings);
}
+ SqlFlags_ = currentSettings->Flags;
currentSettings->EmitReadsForExists = true;
currentSettings->LangVer = LangVer_;
@@ -2127,6 +2128,7 @@ TTypeAnnotationContextPtr TProgram::BuildTypeAnnotationContext(const TString& us
typeAnnotationContext->FileStorage = FileStorage_;
typeAnnotationContext->QContext = QContext_;
typeAnnotationContext->HiddenMode = HiddenMode_;
+ typeAnnotationContext->SqlFlags = SqlFlags_;
for (auto& [alias, provider] : RemoteLayersProviders_) {
typeAnnotationContext->AddRemoteLayersProvider(alias, provider);
}
diff --git a/yql/essentials/core/facade/yql_facade.h b/yql/essentials/core/facade/yql_facade.h
index 3c2ac5c259c..78cf21a4e0a 100644
--- a/yql/essentials/core/facade/yql_facade.h
+++ b/yql/essentials/core/facade/yql_facade.h
@@ -443,6 +443,8 @@ private:
TVector<TDataProviderInitializer> DataProvidersInit_;
TLangVersion LangVer_;
TLangVersion MaxLangVer_;
+ TMaybe<NSQLTranslation::TSqlFlags> SqlFlags_;
+
bool VolatileResults_;
TAdaptiveLock DataProvidersLock_;
TVector<TDataProviderInfo> DataProviders_;
diff --git a/yql/essentials/core/yql_type_annotation.h b/yql/essentials/core/yql_type_annotation.h
index 521e7fbc619..6845ef63183 100644
--- a/yql/essentials/core/yql_type_annotation.h
+++ b/yql/essentials/core/yql_type_annotation.h
@@ -17,6 +17,7 @@
#include <yql/essentials/core/qplayer/storage/interface/yql_qstorage.h>
#include <yql/essentials/core/layers/layers.h>
#include <yql/essentials/ast/yql_expr.h>
+#include <yql/essentials/sql/settings/translation_sql_flags.h>
#include <yql/essentials/sql/sql.h>
#include <library/cpp/yson/node/node.h>
@@ -469,6 +470,7 @@ struct TTypeAnnotationContext: public TThrRefBase {
ECostBasedOptimizerType CostBasedOptimizer = ECostBasedOptimizerType::Disable;
ui32 CostBasedOptimizerVersion = 0;
bool MatchRecognize = false;
+ TMaybe<NSQLTranslation::TSqlFlags> SqlFlags;
EMatchRecognizeStreamingMode MatchRecognizeStreaming = EMatchRecognizeStreamingMode::Force;
i64 TimeOrderRecoverDelay = -10'000'000; //microseconds
i64 TimeOrderRecoverAhead = 10'000'000; //microseconds
diff --git a/yql/essentials/public/purecalc/common/worker_factory.cpp b/yql/essentials/public/purecalc/common/worker_factory.cpp
index fea8d474b2c..1c3c67fd121 100644
--- a/yql/essentials/public/purecalc/common/worker_factory.cpp
+++ b/yql/essentials/public/purecalc/common/worker_factory.cpp
@@ -43,6 +43,24 @@
using namespace NYql;
using namespace NYql::NPureCalc;
+namespace {
+
+NSQLTranslation::TSqlFlags GetSqlFlags(EBlockEngineMode blockEngineMode) {
+ NSQLTranslation::TSqlFlags flags = {
+ "AnsiOrderByLimitInUnionAll",
+ "AnsiRankForNullableKeys",
+ "DisableAnsiOptionalAs",
+ "DisableCoalesceJoinKeysOnQualifiedAll",
+ "DisableUnorderedSubqueries",
+ "FlexibleTypes"};
+ if (blockEngineMode != EBlockEngineMode::Disable) {
+ flags.insert("EmitAggApply");
+ }
+ return flags;
+}
+
+} // namespace
+
template <typename TBase>
TWorkerFactory<TBase>::TWorkerFactory(TWorkerFactoryOptions options, EProcessorMode processorMode)
: Factory_(std::move(options.Factory))
@@ -173,6 +191,7 @@ TIntrusivePtr<TTypeAnnotationContext> TWorkerFactory<TBase>::PrepareTypeContext(
auto configProvider = CreateConfigProvider(*typeContext, nullptr, "");
typeContext->AddDataSource(ConfigProviderName, configProvider);
typeContext->Initialize(ExprContext_);
+ typeContext->SqlFlags = GetSqlFlags(BlockEngineMode_);
if (auto modules = dynamic_cast<TModuleResolver*>(moduleResolver.get())) {
modules->AttachUserData(typeContext->UserDataStorage);
@@ -226,16 +245,7 @@ TExprNode::TPtr TWorkerFactory<TBase>::Compile(
settings.ModuleMapping = modules;
settings.EnableGenericUdfs = true;
settings.File = "generated.sql";
- settings.Flags = {
- "AnsiOrderByLimitInUnionAll",
- "AnsiRankForNullableKeys",
- "DisableAnsiOptionalAs",
- "DisableCoalesceJoinKeysOnQualifiedAll",
- "DisableUnorderedSubqueries",
- "FlexibleTypes"};
- if (BlockEngineMode_ != EBlockEngineMode::Disable) {
- settings.Flags.insert("EmitAggApply");
- }
+ settings.Flags = GetSqlFlags(BlockEngineMode_);
for (const auto& [key, block] : UserData_) {
TStringBuf alias(key.Alias());
if (block.Usage.Test(EUserDataBlockUsage::Library) && !alias.StartsWith("/lib")) {
diff --git a/yql/essentials/sql/settings/translation_sql_flags.cpp b/yql/essentials/sql/settings/translation_sql_flags.cpp
new file mode 100644
index 00000000000..cb8ad75c184
--- /dev/null
+++ b/yql/essentials/sql/settings/translation_sql_flags.cpp
@@ -0,0 +1 @@
+#include "translation_sql_flags.h"
diff --git a/yql/essentials/sql/settings/translation_sql_flags.h b/yql/essentials/sql/settings/translation_sql_flags.h
new file mode 100644
index 00000000000..ba9a3bacc06
--- /dev/null
+++ b/yql/essentials/sql/settings/translation_sql_flags.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include <util/generic/fwd.h>
+
+namespace NSQLTranslation {
+
+using TSqlFlags = THashSet<TString>;
+
+#define TRANSLATOR_FLAGS_IN_MIGRATION_MODE 1
+
+} // namespace NSQLTranslation
diff --git a/yql/essentials/sql/settings/ya.make b/yql/essentials/sql/settings/ya.make
index 4e27ec7b400..a95518c0cd0 100644
--- a/yql/essentials/sql/settings/ya.make
+++ b/yql/essentials/sql/settings/ya.make
@@ -3,6 +3,7 @@ LIBRARY()
SRCS(
partitioning.cpp
translation_settings.cpp
+ translation_sql_flags.cpp
translator.cpp
)
diff --git a/yt/yql/providers/yt/common/yql_configuration.h b/yt/yql/providers/yt/common/yql_configuration.h
index 1dd45ab9f2b..659352c165e 100644
--- a/yt/yql/providers/yt/common/yql_configuration.h
+++ b/yt/yql/providers/yt/common/yql_configuration.h
@@ -55,6 +55,8 @@ constexpr ui64 DEFAULT_MAX_CHUNKS_FOR_DQ_READ = 500;
constexpr bool DEFAULT_USE_KEY_BOUND_API = true;
+constexpr bool DEFAULT_PASS_SQL_FLAGS_FOR_VIEW_TRANSLATION = false;
+
constexpr ui32 DEFAULT_MAX_OPERATION_FILES = 1000;
constexpr bool DEFAULT_JOIN_COMMON_USE_MULTI_OUT = false;
diff --git a/yt/yql/providers/yt/common/yql_yt_settings.h b/yt/yql/providers/yt/common/yql_yt_settings.h
index 796af4e2518..5799abfcde3 100644
--- a/yt/yql/providers/yt/common/yql_yt_settings.h
+++ b/yt/yql/providers/yt/common/yql_yt_settings.h
@@ -325,6 +325,7 @@ public:
NCommon::TConfSetting<bool, Static> UseNativeDescSort;
NCommon::TConfSetting<bool, Static> UseIntermediateSchema;
NCommon::TConfSetting<bool, Static> UseIntermediateStreams;
+ NCommon::TConfSetting<bool, Static> PassSqlFlagsForViewTranslation;
NCommon::TConfSetting<bool, Static> UseFlow;
NCommon::TConfSetting<ui16, Static> WideFlowLimit;
NCommon::TConfSetting<bool, Static> UseSystemColumns;
diff --git a/yt/yql/providers/yt/provider/yql_yt_load_table_meta.cpp b/yt/yql/providers/yt/provider/yql_yt_load_table_meta.cpp
index 905c3c391c8..d8608cab88c 100644
--- a/yt/yql/providers/yt/provider/yql_yt_load_table_meta.cpp
+++ b/yt/yql/providers/yt/provider/yql_yt_load_table_meta.cpp
@@ -30,6 +30,45 @@ namespace {
using namespace NNodes;
+const NSQLTranslation::TSqlFlags& UncoditionallyAllowedViewCompilationSqlFlags() {
+ static const NSQLTranslation::TSqlFlags flags = {
+ "WindowNewPipeline",
+ "DisableWindowNewPipeline"};
+ return flags;
+}
+
+NSQLTranslation::TSqlFlags FilterAllowedFlags(const NSQLTranslation::TSqlFlags& sqlFlags) {
+ NSQLTranslation::TSqlFlags result;
+ for (const auto& flag : sqlFlags) {
+ if (UncoditionallyAllowedViewCompilationSqlFlags().contains(flag)) {
+ result.insert(flag);
+ }
+ }
+ return result;
+}
+
+// Extract SQL flags used for view compilation from the main query.
+// We must ensure that every SQL VIEW is compiled with the same translator flags as the main query.
+// However, for now, we allow omitting SQL flags since not all clients have been migrated yet.
+NSQLTranslation::TSqlFlags ExtractViewCompilationSqlFlags(TYtState::TPtr ytState) {
+// TODO(YQL-20958): Enable this check when removing TRANSLATOR_FLAGS_IN_MIGRATION_MODE.
+#if !defined(TRANSLATOR_FLAGS_IN_MIGRATION_MODE)
+ YQL_ENSURE(ytState->Types->SqlFlags.Defined(), "SqlFlags must be defined. "
+ "This at least ensures that every SQL VIEW"
+ " is compiled with the same flags as the main query.");
+#else // !defined(TRANSLATOR_FLAGS_IN_MIGRATION_MODE)
+ if (!ytState->Types->SqlFlags.Defined()) {
+ return NSQLTranslation::TSqlFlags();
+ }
+#endif // !defined(TRANSLATOR_FLAGS_IN_MIGRATION_MODE)
+
+ const auto& sqlFlags = *ytState->Types->SqlFlags;
+ if (!ytState->Configuration->PassSqlFlagsForViewTranslation.Get().GetOrElse(DEFAULT_PASS_SQL_FLAGS_FOR_VIEW_TRANSLATION)) {
+ return FilterAllowedFlags(sqlFlags);
+ }
+ return sqlFlags;
+}
+
class TYtLoadTableMetadataTransformer : public TGraphTransformerBase {
private:
struct TLoadContext: public TThrRefBase {
@@ -107,7 +146,8 @@ public:
clusterAndTable.first, clusterAndTable.second, State_->Types->QContext, ctx,
State_->Types->Modules.get(), State_->Types->UrlListerManager.Get(), *State_->Types->RandomProvider,
State_->Configuration->ViewIsolation.Get().GetOrElse(false),
- State_->Types->UdfResolver
+ State_->Types->UdfResolver,
+ ExtractViewCompilationSqlFlags(State_)
)) {
return TStatus::Error;
}
@@ -261,7 +301,8 @@ public:
cluster, tableName, State_->Types->QContext, ctx,
State_->Types->Modules.get(), State_->Types->UrlListerManager.Get(), *State_->Types->RandomProvider,
State_->Configuration->ViewIsolation.Get().GetOrElse(false),
- State_->Types->UdfResolver
+ State_->Types->UdfResolver,
+ ExtractViewCompilationSqlFlags(State_)
)) {
return TStatus::Error;
}
diff --git a/yt/yql/providers/yt/provider/yql_yt_provider.cpp b/yt/yql/providers/yt/provider/yql_yt_provider.cpp
index d07a1bae049..9da4a2594a9 100644
--- a/yt/yql/providers/yt/provider/yql_yt_provider.cpp
+++ b/yt/yql/providers/yt/provider/yql_yt_provider.cpp
@@ -19,7 +19,7 @@ namespace NYql {
bool TYtTableDescription::Fill(
const TString& cluster, const TString& table, const TQContext& qContext, TExprContext& ctx,
IModuleResolver* moduleResolver, IUrlListerManager* urlListerManager, IRandomProvider& randomProvider,
- bool allowViewIsolation, IUdfResolver::TPtr udfResolver) {
+ bool allowViewIsolation, IUdfResolver::TPtr udfResolver, const NSQLTranslation::TSqlFlags& sqlFlags) {
const TStructExprType* type = RowSpec ? RowSpec->GetType() : nullptr;
if (!type) {
TVector<const TItemExprType*> items;
@@ -33,7 +33,7 @@ bool TYtTableDescription::Fill(
if (!TYtTableDescriptionBase::Fill(TString{YtProviderName}, cluster,
table, type, Meta->SqlView, Meta->SqlViewSyntaxVersion, qContext, Meta->Attrs, ctx,
- moduleResolver, urlListerManager, randomProvider, allowViewIsolation, udfResolver)) {
+ moduleResolver, urlListerManager, randomProvider, allowViewIsolation, udfResolver, sqlFlags)) {
return false;
}
if (QB2RowSpec) {
@@ -249,10 +249,10 @@ void TYtTableDescription::SetConstraintsReady() {
bool TYtTableDescription::FillViews(
const TString& cluster, const TString& table, const TQContext& qContext, TExprContext& ctx,
IModuleResolver* moduleResolver, IUrlListerManager* urlListerManager, IRandomProvider& randomProvider,
- bool allowViewIsolation, IUdfResolver::TPtr udfResolver) {
+ bool allowViewIsolation, IUdfResolver::TPtr udfResolver, const NSQLTranslation::TSqlFlags& sqlFlags) {
return TYtTableDescriptionBase::FillViews(
TString{YtProviderName}, cluster, table, Meta->Attrs, qContext, ctx,
- moduleResolver, urlListerManager, randomProvider, allowViewIsolation, udfResolver);
+ moduleResolver, urlListerManager, randomProvider, allowViewIsolation, udfResolver, sqlFlags);
}
const TYtTableDescription& TYtTablesData::GetTable(const TString& cluster, const TString& table, TMaybe<ui32> epoch) const {
diff --git a/yt/yql/providers/yt/provider/yql_yt_provider.h b/yt/yql/providers/yt/provider/yql_yt_provider.h
index d415643a4a3..64514618af5 100644
--- a/yt/yql/providers/yt/provider/yql_yt_provider.h
+++ b/yt/yql/providers/yt/provider/yql_yt_provider.h
@@ -8,6 +8,7 @@
#include <yt/yql/providers/yt/common/yql_yt_settings.h>
#include <yt/yql/providers/yt/lib/full_capture/yql_yt_full_capture.h>
#include <yt/yql/providers/yt/lib/row_spec/yql_row_spec.h>
+#include <yql/essentials/sql/settings/translation_sql_flags.h>
#include <yql/essentials/core/cbo/cbo_optimizer_new.h>
#include <yql/essentials/core/dq_integration/yql_dq_integration.h>
#include <yql/essentials/core/dq_integration/yql_dq_helper.h>
@@ -58,7 +59,7 @@ struct TYtTableDescription: public TYtTableDescriptionBase {
bool Fill(
const TString& cluster, const TString& table, const TQContext& qContext, TExprContext& ctx,
IModuleResolver* moduleResolver, IUrlListerManager* urlListerManager, IRandomProvider& randomProvider,
- bool allowViewIsolation, IUdfResolver::TPtr udfResolver);
+ bool allowViewIsolation, IUdfResolver::TPtr udfResolver, const NSQLTranslation::TSqlFlags& sqlFlags);
void ToYson(NYson::TYsonWriter& writer, const TString& cluster, const TString& table, const TString& view) const;
bool Validate(TPosition pos, TStringBuf cluster, TStringBuf tableName, bool withQB,
const THashMap<std::pair<TString, TString>, TString>& anonymousLabels, TExprContext& ctx) const;
@@ -66,7 +67,7 @@ struct TYtTableDescription: public TYtTableDescriptionBase {
bool FillViews(
const TString& cluster, const TString& table, const TQContext& qContext, TExprContext& ctx,
IModuleResolver* moduleResolver, IUrlListerManager* urlListerManager, IRandomProvider& randomProvider,
- bool allowViewIsolation, IUdfResolver::TPtr udfResolver);
+ bool allowViewIsolation, IUdfResolver::TPtr udfResolver, const NSQLTranslation::TSqlFlags& sqlFlags);
};
// Anonymous tables are kept by labels
diff --git a/yt/yql/providers/yt/provider/yql_yt_table_desc.cpp b/yt/yql/providers/yt/provider/yql_yt_table_desc.cpp
index fdf2ce35438..62bd51e5468 100644
--- a/yt/yql/providers/yt/provider/yql_yt_table_desc.cpp
+++ b/yt/yql/providers/yt/provider/yql_yt_table_desc.cpp
@@ -160,10 +160,11 @@ TExprNode::TPtr BuildIgnoreTypeV3Remapper(const TStructExprType* rowType, TExprC
TExprNode::TPtr CompileViewSql(const TString& provider, const TString& cluster, const TString& sql, ui16 syntaxVersion,
const TString& viewId, const TQContext& qContext,
TExprContext& ctx, IModuleResolver* moduleResolver, IUrlListerManager* urlListerManager,
- IRandomProvider& randomProvider, bool enableViewIsolation, IUdfResolver::TPtr udfResolver)
+ IRandomProvider& randomProvider, bool enableViewIsolation, IUdfResolver::TPtr udfResolver, const NSQLTranslation::TSqlFlags& sqlFlags)
{
NSQLTranslation::TTranslationSettings settings;
settings.Mode = NSQLTranslation::ESqlMode::LIMITED_VIEW;
+ settings.Flags = sqlFlags;
settings.DefaultCluster = cluster.empty() ? "view" : cluster;
settings.ClusterMapping[settings.DefaultCluster] = cluster.empty() ? "data" : provider;
settings.SyntaxVersion = syntaxVersion;
@@ -306,11 +307,11 @@ TExprNode::TPtr CompileViewSql(const TString& provider, const TString& cluster,
bool TYtViewDescription::Fill(const TString& provider, const TString& cluster, const TString& sql, ui16 syntaxVersion,
const TString& viewId, const TQContext& qContext, TExprContext& ctx,
IModuleResolver* moduleResolver, IUrlListerManager* urlListerManager, IRandomProvider& randomProvider, bool enableViewIsolation,
- IUdfResolver::TPtr udfResolver)
+ IUdfResolver::TPtr udfResolver, const NSQLTranslation::TSqlFlags& sqlFlags)
{
Sql = sql;
CompiledSql = CompileViewSql(provider, cluster, sql, syntaxVersion, viewId, qContext,
- ctx, moduleResolver, urlListerManager, randomProvider, enableViewIsolation, udfResolver);
+ ctx, moduleResolver, urlListerManager, randomProvider, enableViewIsolation, udfResolver, sqlFlags);
return bool(CompiledSql);
}
@@ -323,7 +324,7 @@ bool TYtTableDescriptionBase::Fill(const TString& provider, const TString& clust
const TStructExprType* type, const TString& viewSql, ui16 syntaxVersion, const TQContext& qContext,
const THashMap<TString, TString>& metaAttrs,
TExprContext& ctx, IModuleResolver* moduleResolver, IUrlListerManager* urlListerManager, IRandomProvider& randomProvider, bool enableViewIsolation,
- IUdfResolver::TPtr udfResolver)
+ IUdfResolver::TPtr udfResolver, const NSQLTranslation::TSqlFlags& sqlFlags)
{
// (1) row type
RawRowType = type;
@@ -402,14 +403,14 @@ bool TYtTableDescriptionBase::Fill(const TString& provider, const TString& clust
}
// (3) views
- if (!FillViews(provider, cluster, table, metaAttrs, qContext, ctx, moduleResolver, urlListerManager, randomProvider, enableViewIsolation, udfResolver)) {
+ if (!FillViews(provider, cluster, table, metaAttrs, qContext, ctx, moduleResolver, urlListerManager, randomProvider, enableViewIsolation, udfResolver, sqlFlags)) {
return false;
}
if (viewSql) {
if (!View) {
auto viewId = cluster + "/" + table;
- if (!View.ConstructInPlace().Fill(provider, cluster, viewSql, syntaxVersion, viewId, qContext, ctx, moduleResolver, urlListerManager, randomProvider, enableViewIsolation, udfResolver)) {
+ if (!View.ConstructInPlace().Fill(provider, cluster, viewSql, syntaxVersion, viewId, qContext, ctx, moduleResolver, urlListerManager, randomProvider, enableViewIsolation, udfResolver, sqlFlags)) {
ctx.AddError(TIssue(TPosition(),
TStringBuilder() << "Can't load sql view, table: " << cluster << '.' << table));
return false;
@@ -422,7 +423,7 @@ bool TYtTableDescriptionBase::Fill(const TString& provider, const TString& clust
bool TYtTableDescriptionBase::FillViews(const TString& provider, const TString& cluster, const TString& table,
const THashMap<TString, TString>& metaAttrs, const TQContext& qContext, TExprContext& ctx, IModuleResolver* moduleResolver, IUrlListerManager* urlListerManager,
- IRandomProvider& randomProvider, bool allowViewIsolation, IUdfResolver::TPtr udfResolver)
+ IRandomProvider& randomProvider, bool allowViewIsolation, IUdfResolver::TPtr udfResolver, const NSQLTranslation::TSqlFlags& sqlFlags)
{
for (auto& view: Views) {
TYtViewDescription& viewDesc = view.second;
@@ -450,7 +451,7 @@ bool TYtTableDescriptionBase::FillViews(const TString& provider, const TString&
}
auto viewId = cluster + "/" + table + "/" + view.first;
- if (!viewDesc.Fill(provider, cluster, viewSql, syntaxVersion, viewId, qContext, ctx, moduleResolver, urlListerManager, randomProvider, allowViewIsolation, udfResolver)) {
+ if (!viewDesc.Fill(provider, cluster, viewSql, syntaxVersion, viewId, qContext, ctx, moduleResolver, urlListerManager, randomProvider, allowViewIsolation, udfResolver, sqlFlags)) {
ctx.AddError(TIssue(TPosition(),
TStringBuilder() << "Can't load sql view " << viewSql.Quote()
<< ", table: " << cluster << '.' << table
diff --git a/yt/yql/providers/yt/provider/yql_yt_table_desc.h b/yt/yql/providers/yt/provider/yql_yt_table_desc.h
index c66349497e5..2b0bef33530 100644
--- a/yt/yql/providers/yt/provider/yql_yt_table_desc.h
+++ b/yt/yql/providers/yt/provider/yql_yt_table_desc.h
@@ -3,6 +3,7 @@
#include <yql/essentials/ast/yql_expr.h>
#include <yql/essentials/core/url_lister/interface/url_lister_manager.h>
#include <yql/essentials/core/yql_udf_resolver.h>
+#include <yql/essentials/sql/settings/translation_sql_flags.h>
#include <library/cpp/random_provider/random_provider.h>
@@ -55,7 +56,7 @@ struct TYtViewDescription {
bool Fill(const TString& provider, const TString& cluster, const TString& sql, ui16 syntaxVersion,
const TString& viewId, const TQContext& qContext, TExprContext& ctx,
IModuleResolver* moduleResolver, IUrlListerManager* urlListerManager, IRandomProvider& randomProvider,
- bool enableViewIsolation, IUdfResolver::TPtr udfResolver);
+ bool enableViewIsolation, IUdfResolver::TPtr udfResolver, const NSQLTranslation::TSqlFlags& sqlFlags);
void CleanupCompiledSQL();
};
@@ -77,11 +78,11 @@ struct TYtTableDescriptionBase {
bool Fill(const TString& provider, const TString& cluster, const TString& table, const TStructExprType* type,
const TString& viewSql, ui16 syntaxVersion, const TQContext& qContext, const THashMap<TString, TString>& metaAttrs, TExprContext& ctx,
IModuleResolver* moduleResolver, IUrlListerManager* urlListerManager, IRandomProvider& randomProvider,
- bool enableViewIsolation, IUdfResolver::TPtr udfResolver);
+ bool enableViewIsolation, IUdfResolver::TPtr udfResolver, const NSQLTranslation::TSqlFlags& sqlFlags);
void CleanupCompiledSQL();
bool FillViews(const TString& provider, const TString& cluster, const TString& table, const THashMap<TString, TString>& metaAttrs,
const TQContext& qContext, TExprContext& ctx, IModuleResolver* moduleResolver, IUrlListerManager* urlListerManager, IRandomProvider& randomProvider,
- bool enableViewIsolation, IUdfResolver::TPtr udfResolver);
+ bool enableViewIsolation, IUdfResolver::TPtr udfResolver, const NSQLTranslation::TSqlFlags& sqlFlags);
};
}