aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordcherednik <dcherednik@ydb.tech>2023-06-22 17:46:56 +0300
committerdcherednik <dcherednik@ydb.tech>2023-06-22 17:46:56 +0300
commitdc1cd35d4a42277a0f145a9d513d8c1a8fbd56e4 (patch)
tree3036ebd4148471773b5011e65462e9df94bfe4a8
parent6d818f0d96fee2df1b7c7e31d12442a39f81f8eb (diff)
downloadydb-dc1cd35d4a42277a0f145a9d513d8c1a8fbd56e4.tar.gz
Pass column meta to TQueryResponse proto for Explain queries.
-rw-r--r--ydb/core/kqp/host/CMakeLists.darwin-x86_64.txt1
-rw-r--r--ydb/core/kqp/host/CMakeLists.linux-aarch64.txt1
-rw-r--r--ydb/core/kqp/host/CMakeLists.linux-x86_64.txt1
-rw-r--r--ydb/core/kqp/host/CMakeLists.windows-x86_64.txt1
-rw-r--r--ydb/core/kqp/host/kqp_host.cpp21
-rw-r--r--ydb/core/kqp/host/ya.make1
-rw-r--r--ydb/core/kqp/session_actor/kqp_worker_actor.cpp18
7 files changed, 24 insertions, 20 deletions
diff --git a/ydb/core/kqp/host/CMakeLists.darwin-x86_64.txt b/ydb/core/kqp/host/CMakeLists.darwin-x86_64.txt
index 35f11fc1934..620aebb8231 100644
--- a/ydb/core/kqp/host/CMakeLists.darwin-x86_64.txt
+++ b/ydb/core/kqp/host/CMakeLists.darwin-x86_64.txt
@@ -19,7 +19,6 @@ target_link_libraries(core-kqp-host PUBLIC
core-kqp-opt
core-kqp-provider
tx-long_tx_service-public
- library-yql-ast
yql-core-services
minikql-invoke_builtins-llvm
library-yql-sql
diff --git a/ydb/core/kqp/host/CMakeLists.linux-aarch64.txt b/ydb/core/kqp/host/CMakeLists.linux-aarch64.txt
index bb1b772bf43..873c5c85dab 100644
--- a/ydb/core/kqp/host/CMakeLists.linux-aarch64.txt
+++ b/ydb/core/kqp/host/CMakeLists.linux-aarch64.txt
@@ -20,7 +20,6 @@ target_link_libraries(core-kqp-host PUBLIC
core-kqp-opt
core-kqp-provider
tx-long_tx_service-public
- library-yql-ast
yql-core-services
minikql-invoke_builtins-llvm
library-yql-sql
diff --git a/ydb/core/kqp/host/CMakeLists.linux-x86_64.txt b/ydb/core/kqp/host/CMakeLists.linux-x86_64.txt
index bb1b772bf43..873c5c85dab 100644
--- a/ydb/core/kqp/host/CMakeLists.linux-x86_64.txt
+++ b/ydb/core/kqp/host/CMakeLists.linux-x86_64.txt
@@ -20,7 +20,6 @@ target_link_libraries(core-kqp-host PUBLIC
core-kqp-opt
core-kqp-provider
tx-long_tx_service-public
- library-yql-ast
yql-core-services
minikql-invoke_builtins-llvm
library-yql-sql
diff --git a/ydb/core/kqp/host/CMakeLists.windows-x86_64.txt b/ydb/core/kqp/host/CMakeLists.windows-x86_64.txt
index 35f11fc1934..620aebb8231 100644
--- a/ydb/core/kqp/host/CMakeLists.windows-x86_64.txt
+++ b/ydb/core/kqp/host/CMakeLists.windows-x86_64.txt
@@ -19,7 +19,6 @@ target_link_libraries(core-kqp-host PUBLIC
core-kqp-opt
core-kqp-provider
tx-long_tx_service-public
- library-yql-ast
yql-core-services
minikql-invoke_builtins-llvm
library-yql-sql
diff --git a/ydb/core/kqp/host/kqp_host.cpp b/ydb/core/kqp/host/kqp_host.cpp
index bfe6f2347b6..e2a37754bc8 100644
--- a/ydb/core/kqp/host/kqp_host.cpp
+++ b/ydb/core/kqp/host/kqp_host.cpp
@@ -8,7 +8,6 @@
#include <ydb/core/kqp/provider/yql_kikimr_provider_impl.h>
#include <ydb/core/kqp/provider/yql_kikimr_results.h>
-#include <ydb/library/yql/ast/yql_type_string.h>
#include <ydb/library/yql/core/yql_opt_proposed_by_data.h>
#include <ydb/library/yql/core/services/yql_plan.h>
#include <ydb/library/yql/core/services/yql_transform_pipeline.h>
@@ -36,6 +35,14 @@ using namespace NThreading;
namespace {
+void FillColumnMeta(const NKqpProto::TKqpPhyQuery& phyQuery, IKqpHost::TQueryResult& queryResult) {
+ const auto& bindings = phyQuery.GetResultBindings();
+ for (const auto& binding: bindings) {
+ auto meta = queryResult.ResultSetsMeta.Add();
+ meta->CopyFrom(binding.GetResultSetMeta());
+ }
+}
+
void AddQueryStats(NKqpProto::TKqpStatsQuery& total, NKqpProto::TKqpStatsQuery&& stats) {
// NOTE: Do not add duration & compilation stats as they are computed for the
// whole query in KQP worker.
@@ -294,11 +301,8 @@ public:
YQL_ENSURE(ExecuteCtx.QueryResults.size() == 1);
queryResult = std::move(ExecuteCtx.QueryResults[0]);
queryResult.QueryPlan = queryResult.PreparingQuery->GetPhysicalQuery().GetQueryPlan();
- auto& bindings = queryResult.PreparingQuery->GetPhysicalQuery().GetResultBindings();
- for (const auto& binding: bindings) {
- auto meta = queryResult.ResultSetsMeta.Add();
- meta->CopyFrom(binding.GetResultSetMeta());
- }
+
+ FillColumnMeta(queryResult.PreparingQuery->GetPhysicalQuery(), queryResult);
}
private:
@@ -324,6 +328,8 @@ public:
YQL_ENSURE(QueryCtx->PrepareOnly);
YQL_ENSURE(QueryCtx->PreparingQuery);
+ FillColumnMeta(QueryCtx->PreparingQuery->GetPhysicalQuery(), prepareResult);
+
// TODO: it's a const function, why do we move from class members?
prepareResult.PreparingQuery = std::move(QueryCtx->PreparingQuery);
prepareResult.PreparingQuery->SetText(std::move(QueryText));
@@ -1245,6 +1251,9 @@ private:
TQueryResult explainResult;
explainResult.SetSuccess();
YQL_ENSURE(prepared.PreparingQuery->GetVersion() == NKikimrKqp::TPreparedQuery::VERSION_PHYSICAL_V1);
+
+ FillColumnMeta(prepared.PreparingQuery->GetPhysicalQuery(), explainResult);
+
explainResult.QueryPlan = std::move(prepared.QueryPlan);
explainResult.QueryAst = std::move(*prepared.PreparingQuery->MutablePhysicalQuery()->MutableQueryAst());
explainResult.SqlVersion = prepared.SqlVersion;
diff --git a/ydb/core/kqp/host/ya.make b/ydb/core/kqp/host/ya.make
index 3caaeba32f8..88bb492d552 100644
--- a/ydb/core/kqp/host/ya.make
+++ b/ydb/core/kqp/host/ya.make
@@ -14,7 +14,6 @@ PEERDIR(
ydb/core/kqp/opt
ydb/core/kqp/provider
ydb/core/tx/long_tx_service/public
- ydb/library/yql/ast
ydb/library/yql/core/services
ydb/library/yql/minikql/invoke_builtins/llvm
ydb/library/yql/sql
diff --git a/ydb/core/kqp/session_actor/kqp_worker_actor.cpp b/ydb/core/kqp/session_actor/kqp_worker_actor.cpp
index 8f20984b4e0..cae1bd5d244 100644
--- a/ydb/core/kqp/session_actor/kqp_worker_actor.cpp
+++ b/ydb/core/kqp/session_actor/kqp_worker_actor.cpp
@@ -800,8 +800,6 @@ private:
Counters->ReportSqlVersion(Settings.DbCounters, *queryResult.SqlVersion);
}
- FillTxInfo(responseEv->Record);
-
auto& stats = queryResult.QueryStats;
stats.SetDurationUs(queryDuration.MicroSeconds());
stats.SetWorkerCpuTimeUs(QueryState->CpuTime.MicroSeconds());
@@ -924,11 +922,18 @@ private:
AddQueryIssues(*ev.MutableResponse(), issues);
if (replyResults) {
+ auto resp = ev.MutableResponse();
for (auto& result : queryResult.Results) {
// If we have result it must be allocated on protobuf arena
Y_ASSERT(result->GetArena());
- Y_ASSERT(ev.MutableResponse()->GetArena() == result->GetArena());
- ev.MutableResponse()->AddResults()->Swap(result);
+ Y_ASSERT(resp->GetArena() == result->GetArena());
+ resp->AddResults()->Swap(result);
+ }
+ } else {
+ auto resp = ev.MutableResponse();
+ for (auto& result : queryResult.ResultSetsMeta) {
+ auto ydbRes = resp->AddYdbResults();
+ ydbRes->mutable_columns()->Swap(result.mutable_columns());
}
}
@@ -979,11 +984,6 @@ private:
YQL_ENSURE(!replyQueryId);
}
- void FillTxInfo(TEvKqp::TProtoArenaHolder<NKikimrKqp::TEvQueryResponse>& record) {
- Y_UNUSED(record);
- return;
- }
-
void MakeNewQueryState() {
++QueryId;
QueryState.Reset(MakeHolder<TKqpQueryState>());