@@ -626,6 +626,7 @@ class TKqpProxyService : public TActorBootstrapped<TKqpProxyService> {
626
626
const auto queryAction = ev->Get ()->GetAction ();
627
627
TKqpRequestInfo requestInfo (traceId);
628
628
ui64 requestId = PendingRequests.RegisterRequest (ev->Sender , ev->Cookie , traceId, TKqpEvents::EvQueryRequest);
629
+ bool explicitSession = true ;
629
630
if (ev->Get ()->GetSessionId ().empty ()) {
630
631
TProcessResult<TKqpSessionInfo*> result;
631
632
if (!CreateNewSessionWorker (requestInfo, TString (DefaultKikimrPublicClusterName), false ,
@@ -634,7 +635,7 @@ class TKqpProxyService : public TActorBootstrapped<TKqpProxyService> {
634
635
ReplyProcessError (result.YdbStatus , result.Error , requestId);
635
636
return ;
636
637
}
637
-
638
+ explicitSession = false ;
638
639
ev->Get ()->SetSessionId (result.Value ->SessionId );
639
640
}
640
641
@@ -650,6 +651,16 @@ class TKqpProxyService : public TActorBootstrapped<TKqpProxyService> {
650
651
dbCounters = Counters->GetDbCounters (database);
651
652
}
652
653
654
+ if (queryType == NKikimrKqp::QUERY_TYPE_SQL_GENERIC_QUERY ||
655
+ queryType == NKikimrKqp::QUERY_TYPE_SQL_GENERIC_CONCURRENT_QUERY) {
656
+
657
+ if (explicitSession && sessionInfo && !sessionInfo->AttachedRpcId ) {
658
+ TString error = " Attempt to execute query on explicit session without attach" ;
659
+ ReplyProcessError (Ydb::StatusIds::BAD_REQUEST, error, requestId);
660
+ return ;
661
+ }
662
+ }
663
+
653
664
PendingRequests.SetSessionId (requestId, sessionId, dbCounters);
654
665
Counters->ReportQueryRequest (dbCounters, ev->Get ()->GetRequestSize (), ev->Get ()->GetParametersSize (), ev->Get ()->GetQuerySize ());
655
666
Counters->ReportQueryAction (dbCounters, queryAction);
0 commit comments