diff options
| author | atarasov5 <[email protected]> | 2026-02-20 18:15:38 +0300 |
|---|---|---|
| committer | atarasov5 <[email protected]> | 2026-02-20 18:54:31 +0300 |
| commit | e12ef8ebe5d736150ff83f7322a3717acaa83ffc (patch) | |
| tree | 1694412e1bf2948ebe8ab5b2ba47ddc6bf686623 | |
| parent | bf91e72c9630009247568464571090edf905da1a (diff) | |
YQL-20958: Pass translator flags for sql view
Описание проблемы есть в тикете.
commit_hash:61b421f6650963cb6b156498b2a19e1c4f63adc8
| -rw-r--r-- | yql/essentials/core/facade/yql_facade.cpp | 2 | ||||
| -rw-r--r-- | yql/essentials/core/facade/yql_facade.h | 2 | ||||
| -rw-r--r-- | yql/essentials/core/yql_type_annotation.h | 2 | ||||
| -rw-r--r-- | yql/essentials/public/purecalc/common/worker_factory.cpp | 30 | ||||
| -rw-r--r-- | yql/essentials/sql/settings/translation_sql_flags.cpp | 1 | ||||
| -rw-r--r-- | yql/essentials/sql/settings/translation_sql_flags.h | 11 | ||||
| -rw-r--r-- | yql/essentials/sql/settings/ya.make | 1 | ||||
| -rw-r--r-- | yt/yql/providers/yt/common/yql_configuration.h | 2 | ||||
| -rw-r--r-- | yt/yql/providers/yt/common/yql_yt_settings.h | 1 | ||||
| -rw-r--r-- | yt/yql/providers/yt/provider/yql_yt_load_table_meta.cpp | 45 | ||||
| -rw-r--r-- | yt/yql/providers/yt/provider/yql_yt_provider.cpp | 8 | ||||
| -rw-r--r-- | yt/yql/providers/yt/provider/yql_yt_provider.h | 5 | ||||
| -rw-r--r-- | yt/yql/providers/yt/provider/yql_yt_table_desc.cpp | 17 | ||||
| -rw-r--r-- | yt/yql/providers/yt/provider/yql_yt_table_desc.h | 7 |
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); }; } |
