From 8401d8b3e6a3b6a979c847bd7b4237d6d0c52d4d Mon Sep 17 00:00:00 2001 From: Polina Volosnikova Date: Wed, 19 Jun 2024 10:54:44 +0000 Subject: [PATCH 1/2] return only params from request --- ydb/core/kqp/session_actor/kqp_session_actor.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/ydb/core/kqp/session_actor/kqp_session_actor.cpp b/ydb/core/kqp/session_actor/kqp_session_actor.cpp index ed8edc9bcd1e..0733de410d63 100644 --- a/ydb/core/kqp/session_actor/kqp_session_actor.cpp +++ b/ydb/core/kqp/session_actor/kqp_session_actor.cpp @@ -1653,8 +1653,15 @@ class TKqpSessionActor : public TActorBootstrapped { if (replyQueryParameters) { YQL_ENSURE(QueryState->PreparedQuery); - response->MutableQueryParameters()->CopyFrom( - QueryState->PreparedQuery->GetParameters()); + THashSet requestParams; + for (auto& param : QueryState->GetYdbParameters()) { + requestParams.emplace(param.first); + } + for (auto& param : QueryState->PreparedQuery->GetParameters()) { + if (requestParams.find(param.GetName()) != requestParams.end()) { + *response->AddQueryParameters() = param; + } + } } if (replyQueryId) { From a540e8f76eb1e30d3a3360c34f356fea3cb2be4a Mon Sep 17 00:00:00 2001 From: Polina Volosnikova Date: Wed, 19 Jun 2024 18:33:05 +0000 Subject: [PATCH 2/2] fix --- ydb/core/kqp/session_actor/kqp_query_state.cpp | 6 ++++++ ydb/core/kqp/session_actor/kqp_query_state.h | 5 +++++ ydb/core/kqp/session_actor/kqp_session_actor.cpp | 14 +++++--------- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/ydb/core/kqp/session_actor/kqp_query_state.cpp b/ydb/core/kqp/session_actor/kqp_query_state.cpp index 2502db540a74..e35e25292f00 100644 --- a/ydb/core/kqp/session_actor/kqp_query_state.cpp +++ b/ydb/core/kqp/session_actor/kqp_query_state.cpp @@ -159,6 +159,12 @@ bool TKqpQueryState::SaveAndCheckCompileResult(TEvKqp::TEvCompileResponse* ev) { if (!CommandTagName) { CommandTagName = CompileResult->CommandTagName; } + for (const auto& param : PreparedQuery->GetParameters()) { + const auto& ast = CompileResult->Ast; + if (!ast || !ast->PgAutoParamValues || !ast->PgAutoParamValues->contains(param.GetName())) { + ResultParams.push_back(param); + } + } return true; } diff --git a/ydb/core/kqp/session_actor/kqp_query_state.h b/ydb/core/kqp/session_actor/kqp_query_state.h index cc43b58f04e1..1371e80e5f59 100644 --- a/ydb/core/kqp/session_actor/kqp_query_state.h +++ b/ydb/core/kqp/session_actor/kqp_query_state.h @@ -102,6 +102,7 @@ class TKqpQueryState : public TNonCopyable { ui64 ParametersSize = 0; TPreparedQueryHolder::TConstPtr PreparedQuery; TKqpCompileResult::TConstPtr CompileResult; + TVector ResultParams; TKqpStatsCompile CompileStats; TIntrusivePtr TxCtx; TQueryData::TPtr QueryData; @@ -186,6 +187,10 @@ class TKqpQueryState : public TNonCopyable { return QueryParameterTypes; } + TVector GetResultParams() const { + return ResultParams; + } + void EnsureAction() { YQL_ENSURE(RequestEv->HasAction()); } diff --git a/ydb/core/kqp/session_actor/kqp_session_actor.cpp b/ydb/core/kqp/session_actor/kqp_session_actor.cpp index 0733de410d63..21366094f8ff 100644 --- a/ydb/core/kqp/session_actor/kqp_session_actor.cpp +++ b/ydb/core/kqp/session_actor/kqp_session_actor.cpp @@ -1653,14 +1653,8 @@ class TKqpSessionActor : public TActorBootstrapped { if (replyQueryParameters) { YQL_ENSURE(QueryState->PreparedQuery); - THashSet requestParams; - for (auto& param : QueryState->GetYdbParameters()) { - requestParams.emplace(param.first); - } - for (auto& param : QueryState->PreparedQuery->GetParameters()) { - if (requestParams.find(param.GetName()) != requestParams.end()) { - *response->AddQueryParameters() = param; - } + for (auto& param : QueryState->GetResultParams()) { + *response->AddQueryParameters() = param; } } @@ -1865,7 +1859,9 @@ class TKqpSessionActor : public TActorBootstrapped { response.SetPreparedQuery(compileResult->Uid); auto& preparedQuery = compileResult->PreparedQuery; - response.MutableQueryParameters()->CopyFrom(preparedQuery->GetParameters()); + for (auto& param : QueryState->GetResultParams()) { + *response.AddQueryParameters() = param; + } response.SetQueryPlan(preparedQuery->GetPhysicalQuery().GetQueryPlan()); response.SetQueryAst(preparedQuery->GetPhysicalQuery().GetQueryAst());