Skip to content

Commit 5f3928d

Browse files
authored
Merge replay fixes (#17066)
1 parent fd76d16 commit 5f3928d

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

ydb/tools/query_replay_yt/main.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ class TQueryReplayMapper
8686
return "uncategorized_plan_mismatch";
8787
case TQueryReplayEvents::MissingTableMetadata:
8888
return "missing_table_metadata";
89+
case TQueryReplayEvents::UncategorizedFailure:
90+
return "uncategorized_failure";
8991
default:
9092
return "unspecified";
9193
}

ydb/tools/query_replay_yt/query_compiler.cpp

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -312,33 +312,37 @@ class TReplayCompileActor: public TActorBootstrapped<TReplayCompileActor> {
312312

313313
private:
314314

315+
TKqpQueryRef MakeQueryRef() {
316+
return TKqpQueryRef(Query->Text, Query->QueryParameterTypes);
317+
}
318+
315319
void StartCompilation() {
316320
IKqpHost::TPrepareSettings prepareSettings;
317321
prepareSettings.DocumentApiRestricted = false;
318322

319323
switch (Query->Settings.QueryType) {
320324
case NKikimrKqp::QUERY_TYPE_SQL_DML:
321-
AsyncCompileResult = KqpHost->PrepareDataQuery(Query->Text, prepareSettings);
325+
AsyncCompileResult = KqpHost->PrepareDataQuery(MakeQueryRef(), prepareSettings);
322326
break;
323327

324328
case NKikimrKqp::QUERY_TYPE_AST_DML:
325-
AsyncCompileResult = KqpHost->PrepareDataQueryAst(Query->Text, prepareSettings);
329+
AsyncCompileResult = KqpHost->PrepareDataQueryAst(MakeQueryRef(), prepareSettings);
326330
break;
327331

328332
case NKikimrKqp::QUERY_TYPE_SQL_SCAN:
329333
case NKikimrKqp::QUERY_TYPE_AST_SCAN:
330-
AsyncCompileResult = KqpHost->PrepareScanQuery(Query->Text, Query->IsSql(), prepareSettings);
334+
AsyncCompileResult = KqpHost->PrepareScanQuery(MakeQueryRef(), Query->IsSql(), prepareSettings);
331335
break;
332336
case NKikimrKqp::QUERY_TYPE_SQL_GENERIC_SCRIPT:
333-
AsyncCompileResult = KqpHost->PrepareGenericScript(Query->Text, prepareSettings);
337+
AsyncCompileResult = KqpHost->PrepareGenericScript(MakeQueryRef(), prepareSettings);
334338
break;
335339
case NKikimrKqp::QUERY_TYPE_SQL_GENERIC_QUERY: {
336340
prepareSettings.ConcurrentResults = false;
337-
AsyncCompileResult = KqpHost->PrepareGenericQuery(Query->Text, prepareSettings, nullptr);
341+
AsyncCompileResult = KqpHost->PrepareGenericQuery(MakeQueryRef(), prepareSettings, nullptr);
338342
break;
339343
}
340344
case NKikimrKqp::QUERY_TYPE_SQL_GENERIC_CONCURRENT_QUERY: {
341-
AsyncCompileResult = KqpHost->PrepareGenericQuery(Query->Text, prepareSettings, nullptr);
345+
AsyncCompileResult = KqpHost->PrepareGenericQuery(MakeQueryRef(), prepareSettings, nullptr);
342346
break;
343347
}
344348

@@ -548,7 +552,9 @@ class TReplayCompileActor: public TActorBootstrapped<TReplayCompileActor> {
548552
Y_UNUSED(queryPlan);
549553
if (status != Ydb::StatusIds::SUCCESS) {
550554
ev->Success = false;
551-
if (MetadataLoader->HasMissingTableMetadata()) {
555+
if (!MetadataLoader) {
556+
ev->Status = TQueryReplayEvents::UncategorizedFailure;
557+
} else if (MetadataLoader->HasMissingTableMetadata()) {
552558
ev->Status = TQueryReplayEvents::MissingTableMetadata;
553559
} else if (status == Ydb::StatusIds::TIMEOUT) {
554560
ev->Status = TQueryReplayEvents::CompileTimeout;
@@ -578,7 +584,14 @@ class TReplayCompileActor: public TActorBootstrapped<TReplayCompileActor> {
578584

579585
std::map<TString, Ydb::Type> queryParameterTypes;
580586
if (ReplayDetails.Has("query_parameter_types")) {
581-
for (const auto& [paramName, paramType] : ReplayDetails["query_parameter_types"].GetMapSafe()) {
587+
NJson::TJsonValue qpt;
588+
Y_ENSURE(ReplayDetails["query_parameter_types"].IsString());
589+
static NJson::TJsonReaderConfig readConfig;
590+
TStringInput in(ReplayDetails["query_parameter_types"].GetStringSafe());
591+
NJson::ReadJsonTree(&in, &readConfig, &qpt, false);
592+
593+
Y_ENSURE(qpt.IsMap());
594+
for (const auto& [paramName, paramType] : qpt.GetMapSafe()) {
582595
if (!queryParameterTypes[paramName].ParseFromString(Base64Decode(paramType.GetStringSafe()))) {
583596
queryParameterTypes.erase(paramName);
584597
}

ydb/tools/query_replay_yt/query_replay.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ struct TQueryReplayEvents {
5555
WriteColumnsMismatch,
5656
UncategorizedPlanMismatch,
5757
MissingTableMetadata,
58+
UncategorizedFailure,
5859
Unspecified,
5960
};
6061

0 commit comments

Comments
 (0)