Skip to content

Commit 76810ca

Browse files
authored
pass db path to pg_tables instead of tenant name. Resolves #7616 (#8061)
1 parent 009889b commit 76810ca

File tree

6 files changed

+57
-29
lines changed

6 files changed

+57
-29
lines changed

ydb/core/grpc_services/rpc_read_columns.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,7 @@ class TReadColumnsRPC : public TActorBootstrapped<TReadColumnsRPC> {
317317
TTableRange range(MinKey.GetCells(), MinKeyInclusive, MaxKey.GetCells(), MaxKeyInclusive);
318318
auto tableScanActor = NSysView::CreateSystemViewScan(ctx.SelfID, 0,
319319
ResolveNamesResult->ResultSet.front().TableId,
320+
JoinPath(ResolveNamesResult->ResultSet.front().Path),
320321
range,
321322
columns);
322323

ydb/core/kqp/compute_actor/kqp_pure_compute_actor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ void TKqpComputeActor::DoBootstrap() {
108108
ScanData->TaskId = GetTask().GetId();
109109
ScanData->TableReader = CreateKqpTableReader(*ScanData);
110110

111-
auto scanActor = NSysView::CreateSystemViewScan(SelfId(), 0, ScanData->TableId, ranges, columns);
111+
auto scanActor = NSysView::CreateSystemViewScan(SelfId(), 0, ScanData->TableId, ScanData->TablePath, ranges, columns);
112112

113113
if (!scanActor) {
114114
InternalError(TIssuesIds::DEFAULT_ERROR, TStringBuilder()

ydb/core/sys_view/pg_tables/pg_tables.cpp

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,13 @@ constexpr auto TPgTablesScanBase::ActorActivityType() {
8080
}
8181

8282
void TPgTablesScanBase::ProceedToScan() {
83-
auto request = MakeHolder<NSchemeShard::TEvSchemeShard::TEvDescribeScheme>(AppData()->TenantName);
83+
auto request = MakeHolder<NSchemeShard::TEvSchemeShard::TEvDescribeScheme>();
8484
NKikimrSchemeOp::TDescribePath& record = request->Record;
85-
record.SetPath(AppData()->TenantName);
85+
auto pathVec = SplitPath(TablePath_);
86+
auto sz = pathVec.size();
87+
Y_ENSURE(sz > 2 && pathVec[sz - 2] == ".sys");
88+
pathVec.pop_back(); pathVec.pop_back();
89+
record.SetPath(JoinPath(pathVec));
8690
record.MutableOptions()->SetReturnPartitioningInfo(false);
8791
record.MutableOptions()->SetReturnPartitionConfig(false);
8892
record.MutableOptions()->SetReturnChildren(true);
@@ -158,25 +162,29 @@ void TPgTablesScanBase::StateWork(TAutoPtr<IEventHandle>& ev) {
158162

159163
TPgTablesScanBase::TPgTablesScanBase(
160164
const NActors::TActorId &ownerId, ui32 scanId, const TTableId &tableId,
165+
const TString& tablePath,
161166
const TTableRange &tableRange,
162167
const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn> &columns,
163168
const TVector<Schema::PgColumn>& schemaColumns,
164169
THashMap<TString, TRowFiller>&& fillers,
165170
THashMap<TString, TStaticRowFiller>&& staticFillers)
166171
: NKikimr::NSysView::TScanActorBase<TPgTablesScanBase>(ownerId, scanId, tableId, tableRange, columns),
172+
TablePath_(tablePath),
167173
SchemaColumns_(schemaColumns),
168174
Fillers_(std::move(fillers)),
169175
StaticFillers_(std::move(staticFillers)) {}
170176

171177

172178
TPgTablesScan::TPgTablesScan(
173179
const NActors::TActorId &ownerId, ui32 scanId, const TTableId &tableId,
180+
const TString& tablePath,
174181
const TTableRange &tableRange,
175182
const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn> &columns)
176183
: TPgTablesScanBase(
177184
ownerId,
178185
scanId,
179186
tableId,
187+
tablePath,
180188
tableRange,
181189
columns,
182190
Singleton<Schema::PgTablesSchemaProvider>()->GetColumns(PgTablesName),
@@ -214,12 +222,14 @@ TPgTablesScan::TPgTablesScan(
214222

215223
TInformationSchemaTablesScan::TInformationSchemaTablesScan(
216224
const NActors::TActorId &ownerId, ui32 scanId, const TTableId &tableId,
225+
const TString& tablePath,
217226
const TTableRange &tableRange,
218227
const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn> &columns)
219228
: TPgTablesScanBase(
220229
ownerId,
221230
scanId,
222231
tableId,
232+
tablePath,
223233
tableRange,
224234
columns,
225235
Singleton<Schema::PgTablesSchemaProvider>()->GetColumns(InformationSchemaTablesName),
@@ -242,12 +252,14 @@ TInformationSchemaTablesScan::TInformationSchemaTablesScan(
242252

243253
TPgClassScan::TPgClassScan(
244254
const NActors::TActorId &ownerId, ui32 scanId, const TTableId &tableId,
255+
const TString& tablePath,
245256
const TTableRange &tableRange,
246257
const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn> &columns)
247258
: TPgTablesScanBase(
248259
ownerId,
249260
scanId,
250261
tableId,
262+
tablePath,
251263
tableRange,
252264
columns,
253265
Singleton<Schema::PgTablesSchemaProvider>()->GetColumns(PgClassName),
@@ -304,22 +316,22 @@ TPgClassScan::TPgClassScan(
304316
});
305317
}
306318

307-
THolder<NActors::IActor> CreatePgTablesScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
319+
THolder<NActors::IActor> CreatePgTablesScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId, const TString& tablePath,
308320
const TTableRange& tableRange, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns)
309321
{
310-
return MakeHolder<TPgTablesScan>(ownerId, scanId, tableId, tableRange, columns);
322+
return MakeHolder<TPgTablesScan>(ownerId, scanId, tableId, tablePath, tableRange, columns);
311323
}
312324

313-
THolder<NActors::IActor> CreateInformationSchemaTablesScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
325+
THolder<NActors::IActor> CreateInformationSchemaTablesScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId, const TString& tablePath,
314326
const TTableRange& tableRange, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns)
315327
{
316-
return MakeHolder<TInformationSchemaTablesScan>(ownerId, scanId, tableId, tableRange, columns);
328+
return MakeHolder<TInformationSchemaTablesScan>(ownerId, scanId, tableId, tablePath, tableRange, columns);
317329
}
318330

319-
THolder<NActors::IActor> CreatePgClassScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
331+
THolder<NActors::IActor> CreatePgClassScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId, const TString& tablePath,
320332
const TTableRange& tableRange, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns)
321333
{
322-
return MakeHolder<TPgClassScan>(ownerId, scanId, tableId, tableRange, columns);
334+
return MakeHolder<TPgClassScan>(ownerId, scanId, tableId, tablePath, tableRange, columns);
323335
}
324336

325337
} // NSysView

ydb/core/sys_view/pg_tables/pg_tables.h

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class TPgTablesScanBase : public NKikimr::NSysView::TScanActorBase<TPgTablesScan
2727
const NActors::TActorId& ownerId,
2828
ui32 scanId,
2929
const TTableId& tableId,
30+
const TString& tablePath,
3031
const TTableRange& tableRange,
3132
const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns,
3233
const TVector<Schema::PgColumn>& schemaColumns,
@@ -39,36 +40,37 @@ class TPgTablesScanBase : public NKikimr::NSysView::TScanActorBase<TPgTablesScan
3940
void StateWork(TAutoPtr<IEventHandle>& ev);
4041
protected:
4142
TString ConvertError_;
43+
TString TablePath_;
4244
const TVector<Schema::PgColumn>& SchemaColumns_;
4345
const THashMap<TString, TRowFiller> Fillers_;
4446
const THashMap<TString, TStaticRowFiller> StaticFillers_;
4547
};
4648

4749
class TPgTablesScan : public TPgTablesScanBase {
4850
public:
49-
TPgTablesScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
51+
TPgTablesScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId, const TString& tablePath,
5052
const TTableRange& tableRange, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns);
5153
};
5254
class TInformationSchemaTablesScan : public TPgTablesScanBase {
5355
public:
54-
TInformationSchemaTablesScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
56+
TInformationSchemaTablesScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId, const TString& tablePath,
5557
const TTableRange& tableRange, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns);
5658
};
5759

5860
class TPgClassScan : public TPgTablesScanBase {
5961
public:
60-
TPgClassScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
62+
TPgClassScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId, const TString& tablePath,
6163
const TTableRange& tableRange, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns);
6264
private:
6365
THashMap<TString, ui32> namespaces;
6466
ui32 btreeAmOid;
6567
};
6668

67-
THolder<NActors::IActor> CreatePgTablesScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
69+
THolder<NActors::IActor> CreatePgTablesScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId, const TString& tablePath,
6870
const TTableRange& tableRange, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns);
69-
THolder<NActors::IActor> CreateInformationSchemaTablesScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
71+
THolder<NActors::IActor> CreateInformationSchemaTablesScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId, const TString& tablePath,
7072
const TTableRange& tableRange, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns);
71-
THolder<NActors::IActor> CreatePgClassScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
73+
THolder<NActors::IActor> CreatePgClassScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId, const TString& tablePath,
7274
const TTableRange& tableRange, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns);
7375

7476

ydb/core/sys_view/scan.cpp

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,14 @@ class TSysViewRangesReader : public TActor<TSysViewRangesReader> {
3333
const NActors::TActorId& ownerId,
3434
ui32 scanId,
3535
const TTableId& tableId,
36+
const TString& tablePath,
3637
TVector<TSerializedTableRange> ranges,
3738
const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns)
3839
: TBase(&TSysViewRangesReader::ScanState)
3940
, OwnerId(ownerId)
4041
, ScanId(scanId)
4142
, TableId(tableId)
43+
, TablePath(tablePath)
4244
, Ranges(std::move(ranges))
4345
, Columns(columns.begin(), columns.end())
4446
{
@@ -74,7 +76,7 @@ class TSysViewRangesReader : public TActor<TSysViewRangesReader> {
7476
if (!ScanActorId) {
7577
if (CurrentRange < Ranges.size()) {
7678
auto actor = CreateSystemViewScan(
77-
SelfId(), ScanId, TableId, Ranges[CurrentRange].ToTableRange(),
79+
SelfId(), ScanId, TableId, TablePath, Ranges[CurrentRange].ToTableRange(),
7880
Columns);
7981
ScanActorId = Register(actor.Release());
8082
CurrentRange += 1;
@@ -135,26 +137,37 @@ class TSysViewRangesReader : public TActor<TSysViewRangesReader> {
135137
TActorId OwnerId;
136138
ui32 ScanId;
137139
TTableId TableId;
140+
TString TablePath;
138141
TVector<TSerializedTableRange> Ranges;
139142
TVector<NMiniKQL::TKqpComputeContextBase::TColumn> Columns;
140143

141144
ui64 CurrentRange = 0;
142145
TMaybe<TActorId> ScanActorId;
143146
};
144147

145-
THolder<NActors::IActor> CreateSystemViewScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
146-
TVector<TSerializedTableRange> ranges, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns)
147-
{
148+
THolder<NActors::IActor> CreateSystemViewScan(
149+
const NActors::TActorId& ownerId,
150+
ui32 scanId,
151+
const TTableId& tableId,
152+
const TString& tablePath,
153+
TVector<TSerializedTableRange> ranges,
154+
const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns
155+
) {
148156
if (ranges.size() == 1) {
149-
return CreateSystemViewScan(ownerId, scanId, tableId, ranges[0].ToTableRange(), columns);
157+
return CreateSystemViewScan(ownerId, scanId, tableId, tablePath, ranges[0].ToTableRange(), columns);
150158
} else {
151-
return MakeHolder<TSysViewRangesReader>(ownerId, scanId, tableId, ranges, columns);
159+
return MakeHolder<TSysViewRangesReader>(ownerId, scanId, tableId, tablePath, ranges, columns);
152160
}
153161
}
154162

155-
THolder<NActors::IActor> CreateSystemViewScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
156-
const TTableRange& tableRange, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns)
157-
{
163+
THolder<NActors::IActor> CreateSystemViewScan(
164+
const NActors::TActorId& ownerId,
165+
ui32 scanId,
166+
const TTableId& tableId,
167+
const TString& tablePath,
168+
const TTableRange& tableRange,
169+
const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns
170+
) {
158171
if (tableId.SysViewInfo == PartitionStatsName) {
159172
return CreatePartitionStatsScan(ownerId, scanId, tableId, tableRange, columns);
160173
}
@@ -214,14 +227,14 @@ THolder<NActors::IActor> CreateSystemViewScan(const NActors::TActorId& ownerId,
214227
}
215228

216229
if (tableId.SysViewInfo == PgTablesName) {
217-
return CreatePgTablesScan(ownerId, scanId, tableId, tableRange, columns);
230+
return CreatePgTablesScan(ownerId, scanId, tableId, tablePath, tableRange, columns);
218231
}
219232

220233
if (tableId.SysViewInfo == InformationSchemaTablesName) {
221-
return CreateInformationSchemaTablesScan(ownerId, scanId, tableId, tableRange, columns);
234+
return CreateInformationSchemaTablesScan(ownerId, scanId, tableId, tablePath, tableRange, columns);
222235
}
223236
if (tableId.SysViewInfo == PgClassName) {
224-
return CreatePgClassScan(ownerId, scanId, tableId, tableRange, columns);
237+
return CreatePgClassScan(ownerId, scanId, tableId, tablePath, tableRange, columns);
225238
}
226239

227240
return {};

ydb/core/sys_view/scan.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ namespace NKikimr {
88
namespace NSysView {
99

1010
THolder<NActors::IActor> CreateSystemViewScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
11-
TVector<TSerializedTableRange> ranges, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns);
11+
const TString& tablePath, TVector<TSerializedTableRange> ranges, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns);
1212

1313
THolder<NActors::IActor> CreateSystemViewScan(const NActors::TActorId& ownerId, ui32 scanId, const TTableId& tableId,
14-
const TTableRange& tableRange, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns);
14+
const TString& tablePath, const TTableRange& tableRange, const TArrayRef<NMiniKQL::TKqpComputeContextBase::TColumn>& columns);
1515

1616
} // NSysView
1717
} // NKikimr

0 commit comments

Comments
 (0)