Skip to content

Commit e8b2605

Browse files
committed
Add database name to pg_database view: resolves ydb-platform#3068
1 parent df15728 commit e8b2605

26 files changed

+387
-101
lines changed

ydb/core/kqp/compute_actor/kqp_compute_actor.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ IActor* CreateKqpComputeActor(const TActorId& executerId, ui64 txId, NYql::NDqPr
4747
const NYql::NDq::TComputeRuntimeSettings& settings, const NYql::NDq::TComputeMemoryLimits& memoryLimits,
4848
NWilson::TTraceId traceId,
4949
TIntrusivePtr<NActors::TProtoArenaHolder> arena,
50-
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup);
50+
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup, const TGUCSettings::TPtr& GUCSettings);
5151

5252
IActor* CreateKqpScanComputeActor(const TActorId& executerId, ui64 txId,
5353
NYql::NDqProto::TDqTask* task, NYql::NDq::IDqAsyncIoFactory::TPtr asyncIoFactory,

ydb/core/kqp/compute_actor/kqp_pure_compute_actor.cpp

+5-4
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ TKqpComputeActor::TKqpComputeActor(const TActorId& executerId, ui64 txId, NDqPro
1414
IDqAsyncIoFactory::TPtr asyncIoFactory,
1515
const TComputeRuntimeSettings& settings, const TComputeMemoryLimits& memoryLimits,
1616
NWilson::TTraceId traceId, TIntrusivePtr<NActors::TProtoArenaHolder> arena,
17-
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup)
18-
: TBase(executerId, txId, task, std::move(asyncIoFactory), settings, memoryLimits, /* ownMemoryQuota = */ true, /* passExceptions = */ true, /*taskCounters = */ nullptr, std::move(traceId), std::move(arena))
17+
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup, const TGUCSettings::TPtr& GUCSettings)
18+
: TBase(executerId, txId, task, std::move(asyncIoFactory), settings, memoryLimits, /* ownMemoryQuota = */ true, /* passExceptions = */ true, /*taskCounters = */ nullptr, std::move(traceId), std::move(arena), GUCSettings)
1919
, ComputeCtx(settings.StatsMode)
2020
, FederatedQuerySetup(federatedQuerySetup)
2121
{
@@ -280,10 +280,11 @@ IActor* CreateKqpComputeActor(const TActorId& executerId, ui64 txId, NDqProto::T
280280
IDqAsyncIoFactory::TPtr asyncIoFactory,
281281
const TComputeRuntimeSettings& settings, const TComputeMemoryLimits& memoryLimits,
282282
NWilson::TTraceId traceId, TIntrusivePtr<NActors::TProtoArenaHolder> arena,
283-
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup)
283+
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup,
284+
const TGUCSettings::TPtr& GUCSettings)
284285
{
285286
return new TKqpComputeActor(executerId, txId, task, std::move(asyncIoFactory),
286-
settings, memoryLimits, std::move(traceId), std::move(arena), federatedQuerySetup);
287+
settings, memoryLimits, std::move(traceId), std::move(arena), federatedQuerySetup, GUCSettings);
287288
}
288289

289290
} // namespace NKqp

ydb/core/kqp/compute_actor/kqp_pure_compute_actor.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class TKqpComputeActor : public TDqSyncComputeActorBase<TKqpComputeActor> {
2929
IDqAsyncIoFactory::TPtr asyncIoFactory,
3030
const TComputeRuntimeSettings& settings, const TComputeMemoryLimits& memoryLimits,
3131
NWilson::TTraceId traceId, TIntrusivePtr<NActors::TProtoArenaHolder> arena,
32-
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup);
32+
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup, const TGUCSettings::TPtr& GUCSettings);
3333

3434
void DoBootstrap();
3535

@@ -68,7 +68,7 @@ IActor* CreateKqpComputeActor(const TActorId& executerId, ui64 txId, NDqProto::T
6868
IDqAsyncIoFactory::TPtr asyncIoFactory,
6969
const TComputeRuntimeSettings& settings, const TComputeMemoryLimits& memoryLimits,
7070
NWilson::TTraceId traceId, TIntrusivePtr<NActors::TProtoArenaHolder> arena,
71-
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup);
71+
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup, const TGUCSettings::TPtr& GUCSettings);
7272

7373
} // namespace NKqp
7474
} // namespace NKikimr

ydb/core/kqp/executer_actor/kqp_data_executer.cpp

+8-4
Original file line numberDiff line numberDiff line change
@@ -129,13 +129,15 @@ class TKqpDataExecuter : public TKqpExecuterBase<TKqpDataExecuter, EExecType::Da
129129
const NKikimrConfig::TTableServiceConfig::EChannelTransportVersion chanTransportVersion,
130130
const NKikimrConfig::TTableServiceConfig::TAggregationConfig& aggregation,
131131
const TActorId& creator, TDuration maximalSecretsSnapshotWaitTime, const TIntrusivePtr<TUserRequestContext>& userRequestContext,
132-
const bool enableOlapSink, const bool useEvWrite, ui32 statementResultIndex, const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup)
132+
const bool enableOlapSink, const bool useEvWrite, ui32 statementResultIndex, const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup,
133+
const TGUCSettings::TPtr& GUCSettings)
133134
: TBase(std::move(request), database, userToken, counters, executerRetriesConfig, chanTransportVersion, aggregation,
134135
maximalSecretsSnapshotWaitTime, userRequestContext, statementResultIndex, TWilsonKqp::DataExecuter, "DataExecuter", streamResult)
135136
, AsyncIoFactory(std::move(asyncIoFactory))
136137
, EnableOlapSink(enableOlapSink)
137138
, UseEvWrite(useEvWrite)
138139
, FederatedQuerySetup(federatedQuerySetup)
140+
, GUCSettings(GUCSettings)
139141
{
140142
Target = creator;
141143

@@ -2430,7 +2432,8 @@ class TKqpDataExecuter : public TKqpExecuterBase<TKqpDataExecuter, EExecType::Da
24302432
.AllowSinglePartitionOpt = singlePartitionOptAllowed,
24312433
.UserRequestContext = GetUserRequestContext(),
24322434
.FederatedQuerySetup = FederatedQuerySetup,
2433-
.OutputChunkMaxSize = Request.OutputChunkMaxSize
2435+
.OutputChunkMaxSize = Request.OutputChunkMaxSize,
2436+
.GUCSettings = GUCSettings
24342437
});
24352438

24362439
auto err = Planner->PlanExecution();
@@ -2636,6 +2639,7 @@ class TKqpDataExecuter : public TKqpExecuterBase<TKqpDataExecuter, EExecType::Da
26362639
bool EnableOlapSink = false;
26372640
bool UseEvWrite = false;
26382641
const std::optional<TKqpFederatedQuerySetup> FederatedQuerySetup;
2642+
const TGUCSettings::TPtr GUCSettings;
26392643

26402644
bool HasExternalSources = false;
26412645
bool SecretSnapshotRequired = false;
@@ -2680,11 +2684,11 @@ IActor* CreateKqpDataExecuter(IKqpGateway::TExecPhysicalRequest&& request, const
26802684
NYql::NDq::IDqAsyncIoFactory::TPtr asyncIoFactory, const NKikimrConfig::TTableServiceConfig::EChannelTransportVersion chanTransportVersion, const TActorId& creator,
26812685
TDuration maximalSecretsSnapshotWaitTime, const TIntrusivePtr<TUserRequestContext>& userRequestContext,
26822686
const bool enableOlapSink, const bool useEvWrite, ui32 statementResultIndex,
2683-
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup)
2687+
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup, const TGUCSettings::TPtr& GUCSettings)
26842688
{
26852689
return new TKqpDataExecuter(std::move(request), database, userToken, counters, streamResult, executerRetriesConfig,
26862690
std::move(asyncIoFactory), chanTransportVersion, aggregation, creator, maximalSecretsSnapshotWaitTime, userRequestContext,
2687-
enableOlapSink, useEvWrite, statementResultIndex, federatedQuerySetup);
2691+
enableOlapSink, useEvWrite, statementResultIndex, federatedQuerySetup, GUCSettings);
26882692
}
26892693

26902694
} // namespace NKqp

ydb/core/kqp/executer_actor/kqp_executer.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ IActor* CreateKqpExecuter(IKqpGateway::TExecPhysicalRequest&& request, const TSt
104104
const NKikimrConfig::TTableServiceConfig::EChannelTransportVersion chanTransportVersion, const TActorId& creator,
105105
TDuration maximalSecretsSnapshotWaitTime, const TIntrusivePtr<TUserRequestContext>& userRequestContext,
106106
const bool enableOlapSink, const bool useEvWrite, ui32 statementResultIndex,
107-
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup);
107+
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup, const TGUCSettings::TPtr& GUCSettings);
108108

109109
IActor* CreateKqpSchemeExecuter(
110110
TKqpPhyTxHolder::TConstPtr phyTx, NKikimrKqp::EQueryType queryType, const TActorId& target,

ydb/core/kqp/executer_actor/kqp_executer_impl.cpp

+24-5
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,17 @@ IActor* CreateKqpExecuter(IKqpGateway::TExecPhysicalRequest&& request, const TSt
8484
const NKikimrConfig::TTableServiceConfig::EChannelTransportVersion chanTransportVersion, const TActorId& creator,
8585
TDuration maximalSecretsSnapshotWaitTime, const TIntrusivePtr<TUserRequestContext>& userRequestContext,
8686
const bool enableOlapSink, const bool useEvWrite, ui32 statementResultIndex,
87-
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup)
87+
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup, const TGUCSettings::TPtr& GUCSettings)
8888
{
8989
if (request.Transactions.empty()) {
9090
// commit-only or rollback-only data transaction
9191
YQL_ENSURE(request.LocksOp == ELocksOp::Commit || request.LocksOp == ELocksOp::Rollback);
92-
return CreateKqpDataExecuter(std::move(request), database, userToken, counters, false, aggregation, executerRetriesConfig, std::move(asyncIoFactory), chanTransportVersion, creator, maximalSecretsSnapshotWaitTime, userRequestContext, enableOlapSink, useEvWrite, statementResultIndex, federatedQuerySetup);
92+
return CreateKqpDataExecuter(
93+
std::move(request), database, userToken, counters, false,
94+
aggregation, executerRetriesConfig, std::move(asyncIoFactory), chanTransportVersion, creator,
95+
maximalSecretsSnapshotWaitTime, userRequestContext, enableOlapSink, useEvWrite, statementResultIndex,
96+
federatedQuerySetup, /*GUCSettings*/nullptr
97+
);
9398
}
9499

95100
TMaybe<NKqpProto::TKqpPhyTx::EType> txsType;
@@ -107,13 +112,27 @@ IActor* CreateKqpExecuter(IKqpGateway::TExecPhysicalRequest&& request, const TSt
107112
switch (*txsType) {
108113
case NKqpProto::TKqpPhyTx::TYPE_COMPUTE:
109114
case NKqpProto::TKqpPhyTx::TYPE_DATA:
110-
return CreateKqpDataExecuter(std::move(request), database, userToken, counters, false, aggregation, executerRetriesConfig, std::move(asyncIoFactory), chanTransportVersion, creator, maximalSecretsSnapshotWaitTime, userRequestContext, enableOlapSink, useEvWrite, statementResultIndex, federatedQuerySetup);
115+
return CreateKqpDataExecuter(
116+
std::move(request), database, userToken, counters, false,
117+
aggregation, executerRetriesConfig, std::move(asyncIoFactory), chanTransportVersion, creator,
118+
maximalSecretsSnapshotWaitTime, userRequestContext, enableOlapSink, useEvWrite, statementResultIndex,
119+
federatedQuerySetup, /*GUCSettings*/nullptr
120+
);
111121

112122
case NKqpProto::TKqpPhyTx::TYPE_SCAN:
113-
return CreateKqpScanExecuter(std::move(request), database, userToken, counters, aggregation, executerRetriesConfig, preparedQuery, chanTransportVersion, maximalSecretsSnapshotWaitTime, userRequestContext, statementResultIndex);
123+
return CreateKqpScanExecuter(
124+
std::move(request), database, userToken, counters, aggregation,
125+
executerRetriesConfig, preparedQuery, chanTransportVersion, maximalSecretsSnapshotWaitTime, userRequestContext,
126+
statementResultIndex
127+
);
114128

115129
case NKqpProto::TKqpPhyTx::TYPE_GENERIC:
116-
return CreateKqpDataExecuter(std::move(request), database, userToken, counters, true, aggregation, executerRetriesConfig, std::move(asyncIoFactory), chanTransportVersion, creator, maximalSecretsSnapshotWaitTime, userRequestContext, enableOlapSink, useEvWrite, statementResultIndex, federatedQuerySetup);
130+
return CreateKqpDataExecuter(
131+
std::move(request), database, userToken, counters, true,
132+
aggregation, executerRetriesConfig, std::move(asyncIoFactory), chanTransportVersion, creator,
133+
maximalSecretsSnapshotWaitTime, userRequestContext, enableOlapSink, useEvWrite, statementResultIndex,
134+
federatedQuerySetup, GUCSettings
135+
);
117136

118137
default:
119138
YQL_ENSURE(false, "Unsupported physical tx type: " << (ui32)*txsType);

ydb/core/kqp/executer_actor/kqp_executer_impl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -1983,7 +1983,7 @@ IActor* CreateKqpDataExecuter(IKqpGateway::TExecPhysicalRequest&& request, const
19831983
const NKikimrConfig::TTableServiceConfig::EChannelTransportVersion chanTransportVersion, const TActorId& creator,
19841984
TDuration maximalSecretsSnapshotWaitTime, const TIntrusivePtr<TUserRequestContext>& userRequestContext,
19851985
const bool enableOlapSink, const bool useEvWrite, ui32 statementResultIndex,
1986-
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup);
1986+
const std::optional<TKqpFederatedQuerySetup>& federatedQuerySetup, const TGUCSettings::TPtr& GUCSettings);
19871987

19881988
IActor* CreateKqpScanExecuter(IKqpGateway::TExecPhysicalRequest&& request, const TString& database,
19891989
const TIntrusiveConstPtr<NACLib::TUserToken>& userToken, TKqpRequestCounters::TPtr counters,

ydb/core/kqp/executer_actor/kqp_planner.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ TKqpPlanner::TKqpPlanner(TKqpPlanner::TArgs&& args)
7979
, UserRequestContext(args.UserRequestContext)
8080
, FederatedQuerySetup(args.FederatedQuerySetup)
8181
, OutputChunkMaxSize(args.OutputChunkMaxSize)
82+
, GUCSettings(std::move(args.GUCSettings))
8283
{
8384
if (!Database) {
8485
// a piece of magic for tests
@@ -203,6 +204,10 @@ std::unique_ptr<TEvKqpNode::TEvStartKqpTasksRequest> TKqpPlanner::SerializeReque
203204
request.SetOutputChunkMaxSize(OutputChunkMaxSize);
204205
}
205206

207+
if (GUCSettings) {
208+
request.SetSerializedGUCSettings(GUCSettings->SerializeToString());
209+
}
210+
206211
return result;
207212
}
208213

@@ -349,7 +354,7 @@ void TKqpPlanner::ExecuteDataComputeTask(ui64 taskId, bool shareMailbox, bool op
349354
limits.MemoryQuotaManager = std::make_shared<NYql::NDq::TGuaranteeQuotaManager>(limit * 2, limit);
350355

351356
auto computeActor = NKikimr::NKqp::CreateKqpComputeActor(ExecuterId, TxId, taskDesc, AsyncIoFactory,
352-
settings, limits, ExecuterSpan.GetTraceId(), TasksGraph.GetMeta().GetArenaIntrusivePtr(), FederatedQuerySetup);
357+
settings, limits, ExecuterSpan.GetTraceId(), TasksGraph.GetMeta().GetArenaIntrusivePtr(), FederatedQuerySetup, GUCSettings);
353358

354359
if (optimizeProtoForLocalExecution) {
355360
TVector<google::protobuf::Message*>& taskSourceSettings = static_cast<TKqpComputeActor*>(computeActor)->MutableTaskSourceSettings();

ydb/core/kqp/executer_actor/kqp_planner.h

+2
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class TKqpPlanner {
6262
const TIntrusivePtr<TUserRequestContext>& UserRequestContext;
6363
const std::optional<TKqpFederatedQuerySetup>& FederatedQuerySetup;
6464
const ui64 OutputChunkMaxSize = 0;
65+
const TGUCSettings::TPtr GUCSettings;
6566
};
6667

6768
TKqpPlanner(TKqpPlanner::TArgs&& args);
@@ -124,6 +125,7 @@ class TKqpPlanner {
124125
TIntrusivePtr<TUserRequestContext> UserRequestContext;
125126
const std::optional<TKqpFederatedQuerySetup> FederatedQuerySetup;
126127
const ui64 OutputChunkMaxSize;
128+
const TGUCSettings::TPtr GUCSettings;
127129

128130
public:
129131
static bool UseMockEmptyPlanner; // for tests: if true then use TKqpMockEmptyPlanner that leads to the error

ydb/core/kqp/executer_actor/kqp_scan_executer.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,8 @@ class TKqpScanExecuter : public TKqpExecuterBase<TKqpScanExecuter, EExecType::Sc
338338
.AllowSinglePartitionOpt = false,
339339
.UserRequestContext = GetUserRequestContext(),
340340
.FederatedQuerySetup = std::nullopt,
341-
.OutputChunkMaxSize = Request.OutputChunkMaxSize
341+
.OutputChunkMaxSize = Request.OutputChunkMaxSize,
342+
.GUCSettings = nullptr
342343
});
343344

344345
LOG_D("Execute scan tx, PendingComputeTasks: " << TasksGraph.GetTasks().size());

ydb/core/kqp/node_service/kqp_node_service.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -498,9 +498,13 @@ class TKqpNodeService : public TActorBootstrapped<TKqpNodeService> {
498498
taskCtx.ComputeActorId = Register(computeActor);
499499
info.MutableActorIds().emplace_back(taskCtx.ComputeActorId);
500500
} else {
501+
std::shared_ptr<TGUCSettings> GUCSettings;
502+
if (ev->Get()->Record.HasSerializedGUCSettings()) {
503+
GUCSettings = std::make_shared<TGUCSettings>(ev->Get()->Record.GetSerializedGUCSettings());
504+
}
501505
if (Y_LIKELY(!CaFactory)) {
502506
computeActor = CreateKqpComputeActor(request.Executer, txId, &dqTask, AsyncIoFactory,
503-
runtimeSettings, memoryLimits, NWilson::TTraceId(ev->TraceId), ev->Get()->Arena, FederatedQuerySetup);
507+
runtimeSettings, memoryLimits, NWilson::TTraceId(ev->TraceId), ev->Get()->Arena, FederatedQuerySetup, GUCSettings);
504508
taskCtx.ComputeActorId = Register(computeActor);
505509
} else {
506510
computeActor = CaFactory->CreateKqpComputeActor(request.Executer, txId, &dqTask,

ydb/core/kqp/session_actor/kqp_session_actor.cpp

+11-4
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ class TKqpSessionActor : public TActorBootstrapped<TKqpSessionActor> {
174174
, QueryServiceConfig(queryServiceConfig)
175175
, MetadataProviderConfig(metadataProviderConfig)
176176
, KqpTempTablesAgentActor(kqpTempTablesAgentActor)
177+
, GUCSettings(std::make_shared<TGUCSettings>())
177178
{
178179
RequestCounters = MakeIntrusive<TKqpRequestCounters>();
179180
RequestCounters->Counters = Counters;
@@ -185,6 +186,7 @@ class TKqpSessionActor : public TActorBootstrapped<TKqpSessionActor> {
185186
FillSettings.RowsLimitPerWrite = Config->_ResultRowsLimit.Get();
186187
FillSettings.Format = IDataProvider::EResultFormat::Custom;
187188
FillSettings.FormatDetails = TString(KikimrMkqlProtoFormat);
189+
FillGUCSettings();
188190

189191
auto optSessionId = TryDecodeYdbSessionId(SessionId);
190192
YQL_ENSURE(optSessionId, "Can't decode ydb session Id");
@@ -1168,6 +1170,12 @@ class TKqpSessionActor : public TActorBootstrapped<TKqpSessionActor> {
11681170
return false;
11691171
}
11701172

1173+
void FillGUCSettings() {
1174+
if (Settings.Database) {
1175+
GUCSettings->Set("database", Settings.Database.substr(1, Settings.Database.Size() - 1));
1176+
}
1177+
}
1178+
11711179
void SendToSchemeExecuter(const TKqpPhyTxHolder::TConstPtr& tx) {
11721180
YQL_ENSURE(QueryState);
11731181

@@ -1205,7 +1213,7 @@ class TKqpSessionActor : public TActorBootstrapped<TKqpSessionActor> {
12051213
RequestCounters, Settings.TableService.GetAggregationConfig(), Settings.TableService.GetExecuterRetriesConfig(),
12061214
AsyncIoFactory, QueryState ? QueryState->PreparedQuery : nullptr, Settings.TableService.GetChannelTransportVersion(), SelfId(), 2 * TDuration::Seconds(MetadataProviderConfig.GetRefreshPeriodSeconds()),
12071215
QueryState ? QueryState->UserRequestContext : MakeIntrusive<TUserRequestContext>("", Settings.Database, SessionId),
1208-
Settings.TableService.GetEnableOlapSink(), useEvWrite, QueryState ? QueryState->StatementResultIndex : 0, FederatedQuerySetup);
1216+
Settings.TableService.GetEnableOlapSink(), useEvWrite, QueryState ? QueryState->StatementResultIndex : 0, FederatedQuerySetup, GUCSettings);
12091217

12101218
auto exId = RegisterWithSameMailbox(executerActor);
12111219
LOG_D("Created new KQP executer: " << exId << " isRollback: " << isRollback);
@@ -2420,7 +2428,7 @@ class TKqpSessionActor : public TActorBootstrapped<TKqpSessionActor> {
24202428
bool HasOlapTable = false;
24212429
bool HasOltpTable = false;
24222430

2423-
TGUCSettings::TPtr GUCSettings = std::make_shared<TGUCSettings>();
2431+
TGUCSettings::TPtr GUCSettings;
24242432
};
24252433

24262434
} // namespace
@@ -2436,8 +2444,7 @@ IActor* CreateKqpSessionActor(const TActorId& owner, const TString& sessionId,
24362444
{
24372445
return new TKqpSessionActor(owner, sessionId, kqpSettings, workerSettings, federatedQuerySetup,
24382446
std::move(asyncIoFactory), std::move(moduleResolverState), counters,
2439-
queryServiceConfig, metadataProviderConfig, kqpTempTablesAgentActor
2440-
);
2447+
queryServiceConfig, metadataProviderConfig, kqpTempTablesAgentActor);
24412448
}
24422449

24432450
}

0 commit comments

Comments
 (0)