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 ed8edc9bcd1e..21366094f8ff 100644 --- a/ydb/core/kqp/session_actor/kqp_session_actor.cpp +++ b/ydb/core/kqp/session_actor/kqp_session_actor.cpp @@ -1653,8 +1653,9 @@ class TKqpSessionActor : public TActorBootstrapped { if (replyQueryParameters) { YQL_ENSURE(QueryState->PreparedQuery); - response->MutableQueryParameters()->CopyFrom( - QueryState->PreparedQuery->GetParameters()); + for (auto& param : QueryState->GetResultParams()) { + *response->AddQueryParameters() = param; + } } if (replyQueryId) { @@ -1858,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());