diff options
author | udovichenko-r <udovichenko-r@yandex-team.ru> | 2022-05-26 02:04:40 +0300 |
---|---|---|
committer | udovichenko-r <udovichenko-r@yandex-team.ru> | 2022-05-26 02:04:40 +0300 |
commit | 7a42c7c45ddca559a8d6030c8577a31ec830e119 (patch) | |
tree | 356b64da223ec7baeb148c6860390e4ece24986f | |
parent | c0223db1203f245e25eb353465849bee6f14075f (diff) | |
download | ydb-7a42c7c45ddca559a8d6030c8577a31ec830e119.tar.gz |
[yql] Disable DQ/hybrid for system python
YQL-14902
ref:04cb29c5d5e7464047e9f8e02af1ab595c287427
4 files changed, 19 insertions, 3 deletions
diff --git a/ydb/library/yql/minikql/mkql_program_builder.cpp b/ydb/library/yql/minikql/mkql_program_builder.cpp index feee860636b..816682fe4cf 100644 --- a/ydb/library/yql/minikql/mkql_program_builder.cpp +++ b/ydb/library/yql/minikql/mkql_program_builder.cpp @@ -258,6 +258,13 @@ bool IsCustomPython(EScriptType type) { type == EScriptType::CustomPython3; } +bool IsSystemPython(EScriptType type) { + return type == EScriptType::SystemPython2 + || type == EScriptType::SystemPython3 + || type == EScriptType::Python + || type == EScriptType::Python2; +} + EScriptType CanonizeScriptType(EScriptType type) { if (type == EScriptType::Python) { return EScriptType::Python2; diff --git a/ydb/library/yql/minikql/mkql_program_builder.h b/ydb/library/yql/minikql/mkql_program_builder.h index 80f0c328dee..33432e6b173 100644 --- a/ydb/library/yql/minikql/mkql_program_builder.h +++ b/ydb/library/yql/minikql/mkql_program_builder.h @@ -107,6 +107,7 @@ enum class EScriptType { std::string_view ScriptTypeAsStr(EScriptType type); EScriptType ScriptTypeFromStr(std::string_view str); bool IsCustomPython(EScriptType type); +bool IsSystemPython(EScriptType type); EScriptType CanonizeScriptType(EScriptType type); struct TSwitchInput { diff --git a/ydb/library/yql/providers/dq/provider/CMakeLists.txt b/ydb/library/yql/providers/dq/provider/CMakeLists.txt index eabbad6bdbc..45f65099922 100644 --- a/ydb/library/yql/providers/dq/provider/CMakeLists.txt +++ b/ydb/library/yql/providers/dq/provider/CMakeLists.txt @@ -36,6 +36,7 @@ target_link_libraries(providers-dq-provider PUBLIC providers-dq-opt providers-dq-planner providers-result-expr_nodes + library-yql-minikql ) target_sources(providers-dq-provider PRIVATE ${CMAKE_SOURCE_DIR}/ydb/library/yql/providers/dq/provider/yql_dq_control.cpp diff --git a/ydb/library/yql/providers/dq/provider/yql_dq_recapture.cpp b/ydb/library/yql/providers/dq/provider/yql_dq_recapture.cpp index d8c8ab7b87b..3c625dd11db 100644 --- a/ydb/library/yql/providers/dq/provider/yql_dq_recapture.cpp +++ b/ydb/library/yql/providers/dq/provider/yql_dq_recapture.cpp @@ -12,6 +12,7 @@ #include <ydb/library/yql/ast/yql_expr.h> #include <ydb/library/yql/utils/log/log.h> #include <ydb/library/yql/dq/opt/dq_opt.h> +#include <ydb/library/yql/minikql/mkql_program_builder.h> #include <util/generic/scope.h> @@ -225,9 +226,15 @@ private: } } } - else if (!State_->TypeCtx->UdfSupportsYield && TCoScriptUdf::Match(&node)) { - if (IsCallableTypeHasStreams(node.GetTypeAnn()->Cast<TCallableExprType>())) { - AddInfo(ctx, TStringBuilder() << "script udf with streams"); + else if (TCoScriptUdf::Match(&node)) { + if (!State_->TypeCtx->UdfSupportsYield) { + if (IsCallableTypeHasStreams(node.GetTypeAnn()->Cast<TCallableExprType>())) { + AddInfo(ctx, TStringBuilder() << "script udf with streams"); + good = false; + } + } + if (NKikimr::NMiniKQL::IsSystemPython(NKikimr::NMiniKQL::ScriptTypeFromStr(node.Head().Content()))) { + AddInfo(ctx, TStringBuilder() << "system python udf"); good = false; } if (good) { |