aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorva-kuznecov <va-kuznecov@ydb.tech>2023-01-26 17:53:47 +0300
committerva-kuznecov <va-kuznecov@ydb.tech>2023-01-26 17:53:47 +0300
commitdaa040e0b99d0f487b6b1ee167a7079ba474f6e4 (patch)
tree09b4ccd65de743570a0330daa67ceed83f79a904
parent6f0e6612354340dcd903ce1a4184ae6d99ca91e8 (diff)
downloadydb-daa040e0b99d0f487b6b1ee167a7079ba474f6e4.tar.gz
Pass EnableLlvm flag thought TPreparedQuery proto
-rw-r--r--ydb/core/kqp/common/kqp_prepared_query.h8
-rw-r--r--ydb/core/kqp/compile_service/kqp_compile_actor.cpp3
-rw-r--r--ydb/core/kqp/session_actor/kqp_session_actor.cpp3
-rw-r--r--ydb/core/protos/kqp.proto1
4 files changed, 14 insertions, 1 deletions
diff --git a/ydb/core/kqp/common/kqp_prepared_query.h b/ydb/core/kqp/common/kqp_prepared_query.h
index 9de89807e70..2d1475c58aa 100644
--- a/ydb/core/kqp/common/kqp_prepared_query.h
+++ b/ydb/core/kqp/common/kqp_prepared_query.h
@@ -141,6 +141,14 @@ public:
const NKqpProto::TKqpPhyQuery& GetPhysicalQuery() const {
return Proto->GetPhysicalQuery();
}
+
+ std::optional<bool> GetEnableLlvm() const {
+ if (Proto->HasEnableLlvm()) {
+ return Proto->GetEnableLlvm();
+ } else {
+ return std::nullopt;
+ }
+ }
};
diff --git a/ydb/core/kqp/compile_service/kqp_compile_actor.cpp b/ydb/core/kqp/compile_service/kqp_compile_actor.cpp
index 02ac972c0ab..6ac44174ba5 100644
--- a/ydb/core/kqp/compile_service/kqp_compile_actor.cpp
+++ b/ydb/core/kqp/compile_service/kqp_compile_actor.cpp
@@ -270,6 +270,9 @@ private:
if (status == Ydb::StatusIds::SUCCESS) {
YQL_ENSURE(kqpResult.PreparingQuery);
+ if (Config->EnableLlvm.Get()) {
+ kqpResult.PreparingQuery->SetEnableLlvm(*Config->EnableLlvm.Get());
+ }
KqpCompileResult->PreparedQuery = std::make_shared<const TPreparedQueryHolder>(
kqpResult.PreparingQuery.release(), AppData()->FunctionRegistry);
diff --git a/ydb/core/kqp/session_actor/kqp_session_actor.cpp b/ydb/core/kqp/session_actor/kqp_session_actor.cpp
index e4b03591673..acf7577e347 100644
--- a/ydb/core/kqp/session_actor/kqp_session_actor.cpp
+++ b/ydb/core/kqp/session_actor/kqp_session_actor.cpp
@@ -995,8 +995,9 @@ public:
request.MaxComputeActors = Config->_KqpMaxComputeActors.Get().GetRef();
request.DisableLlvmForUdfStages = Config->DisableLlvmForUdfStages();
- request.LlvmEnabled = IsSqlQuery(queryState->GetType()) && Config->GetEnableLlvm() != EOptionalFlag::Disabled;
YQL_ENSURE(queryState);
+ bool enableLlvm = queryState->PreparedQuery->GetEnableLlvm().value_or(true);
+ request.LlvmEnabled = enableLlvm && IsSqlQuery(queryState->GetType());
request.Snapshot = queryState->TxCtx->GetSnapshot();
return request;
diff --git a/ydb/core/protos/kqp.proto b/ydb/core/protos/kqp.proto
index 3d7b438be8c..ba19624a1a7 100644
--- a/ydb/core/protos/kqp.proto
+++ b/ydb/core/protos/kqp.proto
@@ -223,6 +223,7 @@ message TPreparedQuery {
repeated TParameterDescription Parameters = 4;
optional string Text = 5;
optional NKqpProto.TKqpPhyQuery PhysicalQuery = 6;
+ optional bool EnableLlvm = 7;
};
message TQueryResponse {