diff --git a/ydb/core/kqp/compile_service/kqp_compile_actor.cpp b/ydb/core/kqp/compile_service/kqp_compile_actor.cpp index 5afa2af3de7b..c925489cffd8 100644 --- a/ydb/core/kqp/compile_service/kqp_compile_actor.cpp +++ b/ydb/core/kqp/compile_service/kqp_compile_actor.cpp @@ -142,7 +142,7 @@ class TKqpCompileActor : public TActorBootstrapped { TVector GetAstStatements(const TActorContext &ctx) { TString cluster = QueryId.Cluster; ui16 kqpYqlSyntaxVersion = Config->_KqpYqlSyntaxVersion.Get().GetRef(); - + TKqpTranslationSettingsBuilder settingsBuilder(ConvertType(QueryId.Settings.QueryType), kqpYqlSyntaxVersion, cluster, QueryId.Text, Config->BindingsMode, GUCSettings); settingsBuilder.SetKqpTablePathPrefix(Config->_KqpTablePathPrefix.Get().GetRef()) .SetIsEnableExternalDataSources(AppData(ctx)->FeatureFlags.GetEnableExternalDataSources()) @@ -352,15 +352,16 @@ class TKqpCompileActor : public TActorBootstrapped { ReplayMessage = std::move(message); } - void Reply(const TKqpCompileResult::TConstPtr& compileResult) { + void Reply() { + Y_ENSURE(KqpCompileResult); ALOG_DEBUG(NKikimrServices::KQP_COMPILE_ACTOR, "Send response" << ", self: " << SelfId() << ", owner: " << Owner - << ", status: " << compileResult->Status - << ", issues: " << compileResult->Issues.ToString() - << ", uid: " << compileResult->Uid); + << ", status: " << KqpCompileResult->Status + << ", issues: " << KqpCompileResult->Issues.ToString() + << ", uid: " << KqpCompileResult->Uid); - auto responseEv = MakeHolder(compileResult); + auto responseEv = MakeHolder(KqpCompileResult); responseEv->ReplayMessage = std::move(ReplayMessage); responseEv->ReplayMessageUserView = std::move(ReplayMessageUserView); @@ -382,7 +383,13 @@ class TKqpCompileActor : public TActorBootstrapped { } void ReplyError(Ydb::StatusIds::StatusCode status, const TIssues& issues) { - Reply(TKqpCompileResult::Make(Uid, status, issues, ETableReadType::Other, std::move(QueryId))); + if (!KqpCompileResult) { + KqpCompileResult = TKqpCompileResult::Make(Uid, status, issues, ETableReadType::Other, std::move(QueryId)); + } else { + KqpCompileResult = TKqpCompileResult::Make(Uid, status, issues, ETableReadType::Other, std::move(KqpCompileResult->Query)); + } + + Reply(); } void InternalError(const TString message) { @@ -477,7 +484,7 @@ class TKqpCompileActor : public TActorBootstrapped { if (kqpResult.NeedToSplit) { KqpCompileResult = TKqpCompileResult::Make( Uid, status, kqpResult.Issues(), ETableReadType::Other, std::move(QueryId), {}, true); - Reply(KqpCompileResult); + Reply(); return; } @@ -520,7 +527,7 @@ class TKqpCompileActor : public TActorBootstrapped { Counters->ReportCompileError(DbCounters); } - Reply(KqpCompileResult); + Reply(); } void HandleTimeout() {