Skip to content

Commit 3be09f1

Browse files
authored
Do not fill tables for prepared query on compilation failure (#8210)
1 parent dd45bbe commit 3be09f1

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

ydb/core/kqp/compile_service/kqp_compile_actor.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -452,9 +452,9 @@ class TKqpCompileActor : public TActorBootstrapped<TKqpCompileActor> {
452452
}
453453

454454
void FillCompileResult(std::unique_ptr<NKikimrKqp::TPreparedQuery> preparingQuery, NKikimrKqp::EQueryType queryType,
455-
bool allowCache) {
455+
bool allowCache, bool success) {
456456
auto preparedQueryHolder = std::make_shared<TPreparedQueryHolder>(
457-
preparingQuery.release(), AppData()->FunctionRegistry);
457+
preparingQuery.release(), AppData()->FunctionRegistry, !success);
458458
preparedQueryHolder->MutableLlvmSettings().Fill(Config, queryType);
459459
KqpCompileResult->PreparedQuery = preparedQueryHolder;
460460
KqpCompileResult->AllowCache = CanCacheQuery(KqpCompileResult->PreparedQuery->GetPhysicalQuery()) && allowCache;
@@ -503,7 +503,7 @@ class TKqpCompileActor : public TActorBootstrapped<TKqpCompileActor> {
503503

504504
if (status == Ydb::StatusIds::SUCCESS) {
505505
YQL_ENSURE(kqpResult.PreparingQuery);
506-
FillCompileResult(std::move(kqpResult.PreparingQuery), queryType, kqpResult.AllowCache);
506+
FillCompileResult(std::move(kqpResult.PreparingQuery), queryType, kqpResult.AllowCache, true);
507507

508508
auto now = TInstant::Now();
509509
auto duration = now - StartTime;
@@ -514,7 +514,7 @@ class TKqpCompileActor : public TActorBootstrapped<TKqpCompileActor> {
514514
<< ", duration: " << duration);
515515
} else {
516516
if (kqpResult.PreparingQuery) {
517-
FillCompileResult(std::move(kqpResult.PreparingQuery), queryType, kqpResult.AllowCache);
517+
FillCompileResult(std::move(kqpResult.PreparingQuery), queryType, kqpResult.AllowCache, false);
518518
}
519519

520520
LOG_ERROR_S(ctx, NKikimrServices::KQP_COMPILE_ACTOR, "Compilation failed"

ydb/core/kqp/query_data/kqp_prepared_query.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ const NKikimr::NKqp::TStagePredictor& TKqpPhyTxHolder::GetCalculationPredictor(c
154154
}
155155

156156
TPreparedQueryHolder::TPreparedQueryHolder(NKikimrKqp::TPreparedQuery* proto,
157-
const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry)
157+
const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry, bool noFillTables)
158158
: Proto(proto)
159159
, Alloc(nullptr)
160160
, TableConstInfoById(MakeIntrusive<TTableConstInfoMap>())
@@ -164,6 +164,11 @@ TPreparedQueryHolder::TPreparedQueryHolder(NKikimrKqp::TPreparedQuery* proto,
164164
Alloc = std::make_shared<TPreparedQueryAllocHolder>(functionRegistry);
165165
}
166166

167+
// In case of some compilation failures filling tables may produce new problems which may replace original error messages.
168+
if (noFillTables) {
169+
return;
170+
}
171+
167172
THashSet<TString> tablesSet;
168173
const auto& phyQuery = Proto->GetPhysicalQuery();
169174
Transactions.reserve(phyQuery.TransactionsSize());

ydb/core/kqp/query_data/kqp_prepared_query.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,10 @@ class TPreparedQueryHolder {
143143

144144
public:
145145

146-
TPreparedQueryHolder(NKikimrKqp::TPreparedQuery* proto, const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry);
146+
TPreparedQueryHolder(
147+
NKikimrKqp::TPreparedQuery* proto,
148+
const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry,
149+
bool noFillTables = false);
147150
~TPreparedQueryHolder();
148151

149152
using TConstPtr = std::shared_ptr<const TPreparedQueryHolder>;

0 commit comments

Comments
 (0)