aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorudovichenko-r <udovichenko-r@yandex-team.ru>2022-05-26 02:04:40 +0300
committerudovichenko-r <udovichenko-r@yandex-team.ru>2022-05-26 02:04:40 +0300
commit7a42c7c45ddca559a8d6030c8577a31ec830e119 (patch)
tree356b64da223ec7baeb148c6860390e4ece24986f
parentc0223db1203f245e25eb353465849bee6f14075f (diff)
downloadydb-7a42c7c45ddca559a8d6030c8577a31ec830e119.tar.gz
[yql] Disable DQ/hybrid for system python
YQL-14902 ref:04cb29c5d5e7464047e9f8e02af1ab595c287427
-rw-r--r--ydb/library/yql/minikql/mkql_program_builder.cpp7
-rw-r--r--ydb/library/yql/minikql/mkql_program_builder.h1
-rw-r--r--ydb/library/yql/providers/dq/provider/CMakeLists.txt1
-rw-r--r--ydb/library/yql/providers/dq/provider/yql_dq_recapture.cpp13
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) {