@@ -312,33 +312,37 @@ class TReplayCompileActor: public TActorBootstrapped<TReplayCompileActor> {
312
312
313
313
private:
314
314
315
+ TKqpQueryRef MakeQueryRef () {
316
+ return TKqpQueryRef (Query->Text , Query->QueryParameterTypes );
317
+ }
318
+
315
319
void StartCompilation () {
316
320
IKqpHost::TPrepareSettings prepareSettings;
317
321
prepareSettings.DocumentApiRestricted = false ;
318
322
319
323
switch (Query->Settings .QueryType ) {
320
324
case NKikimrKqp::QUERY_TYPE_SQL_DML:
321
- AsyncCompileResult = KqpHost->PrepareDataQuery (Query-> Text , prepareSettings);
325
+ AsyncCompileResult = KqpHost->PrepareDataQuery (MakeQueryRef () , prepareSettings);
322
326
break ;
323
327
324
328
case NKikimrKqp::QUERY_TYPE_AST_DML:
325
- AsyncCompileResult = KqpHost->PrepareDataQueryAst (Query-> Text , prepareSettings);
329
+ AsyncCompileResult = KqpHost->PrepareDataQueryAst (MakeQueryRef () , prepareSettings);
326
330
break ;
327
331
328
332
case NKikimrKqp::QUERY_TYPE_SQL_SCAN:
329
333
case NKikimrKqp::QUERY_TYPE_AST_SCAN:
330
- AsyncCompileResult = KqpHost->PrepareScanQuery (Query-> Text , Query->IsSql (), prepareSettings);
334
+ AsyncCompileResult = KqpHost->PrepareScanQuery (MakeQueryRef () , Query->IsSql (), prepareSettings);
331
335
break ;
332
336
case NKikimrKqp::QUERY_TYPE_SQL_GENERIC_SCRIPT:
333
- AsyncCompileResult = KqpHost->PrepareGenericScript (Query-> Text , prepareSettings);
337
+ AsyncCompileResult = KqpHost->PrepareGenericScript (MakeQueryRef () , prepareSettings);
334
338
break ;
335
339
case NKikimrKqp::QUERY_TYPE_SQL_GENERIC_QUERY: {
336
340
prepareSettings.ConcurrentResults = false ;
337
- AsyncCompileResult = KqpHost->PrepareGenericQuery (Query-> Text , prepareSettings, nullptr );
341
+ AsyncCompileResult = KqpHost->PrepareGenericQuery (MakeQueryRef () , prepareSettings, nullptr );
338
342
break ;
339
343
}
340
344
case NKikimrKqp::QUERY_TYPE_SQL_GENERIC_CONCURRENT_QUERY: {
341
- AsyncCompileResult = KqpHost->PrepareGenericQuery (Query-> Text , prepareSettings, nullptr );
345
+ AsyncCompileResult = KqpHost->PrepareGenericQuery (MakeQueryRef () , prepareSettings, nullptr );
342
346
break ;
343
347
}
344
348
@@ -548,7 +552,9 @@ class TReplayCompileActor: public TActorBootstrapped<TReplayCompileActor> {
548
552
Y_UNUSED (queryPlan);
549
553
if (status != Ydb::StatusIds::SUCCESS) {
550
554
ev->Success = false ;
551
- if (MetadataLoader->HasMissingTableMetadata ()) {
555
+ if (!MetadataLoader) {
556
+ ev->Status = TQueryReplayEvents::UncategorizedFailure;
557
+ } else if (MetadataLoader->HasMissingTableMetadata ()) {
552
558
ev->Status = TQueryReplayEvents::MissingTableMetadata;
553
559
} else if (status == Ydb::StatusIds::TIMEOUT) {
554
560
ev->Status = TQueryReplayEvents::CompileTimeout;
@@ -578,7 +584,14 @@ class TReplayCompileActor: public TActorBootstrapped<TReplayCompileActor> {
578
584
579
585
std::map<TString, Ydb::Type> queryParameterTypes;
580
586
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 ()) {
582
595
if (!queryParameterTypes[paramName].ParseFromString (Base64Decode (paramType.GetStringSafe ()))) {
583
596
queryParameterTypes.erase (paramName);
584
597
}
0 commit comments