3
3
#include < ydb/core/base/appdata.h>
4
4
#include < yql/essentials/parser/pg_catalog/catalog.h>
5
5
6
+ namespace {
7
+ using NKikimrSysView::ESysViewType;
8
+ }
9
+
6
10
namespace NKikimr {
7
11
namespace NSysView {
8
12
@@ -170,6 +174,11 @@ class TSystemViewResolver : public ISystemViewResolver {
170
174
return view ? TMaybe<TSchema>(*view) : Nothing ();
171
175
}
172
176
177
+ TMaybe<TSchema> GetSystemViewSchema (ESysViewType viewType) const override final {
178
+ const TSchema* view = SystemViews.FindPtr (viewType);
179
+ return view ? TMaybe<TSchema>(*view) : Nothing ();
180
+ }
181
+
173
182
TVector<TString> GetSystemViewNames (ETarget target) const override {
174
183
TVector<TString> result;
175
184
switch (target) {
@@ -210,41 +219,50 @@ class TSystemViewResolver : public ISystemViewResolver {
210
219
211
220
private:
212
221
void RegisterPgTablesSystemViews () {
213
- auto registerView = [&](TStringBuf tableName, const TVector<Schema::PgColumn>& columns) {
222
+ auto registerView = [&](TStringBuf tableName, ESysViewType type, const TVector<Schema::PgColumn>& columns) {
214
223
auto & dsv = DomainSystemViews[tableName];
215
224
auto & sdsv = SubDomainSystemViews[tableName];
225
+ auto & sv = SystemViews[type];
216
226
for (const auto & column : columns) {
217
227
dsv.Columns [column._ColumnId + 1 ] = TSysTables::TTableColumnInfo (
218
228
column._ColumnName , column._ColumnId + 1 , column._ColumnTypeInfo , " " , -1
219
229
);
220
230
sdsv.Columns [column._ColumnId + 1 ] = TSysTables::TTableColumnInfo (
221
231
column._ColumnName , column._ColumnId + 1 , column._ColumnTypeInfo , " " , -1
222
232
);
233
+ sv.Columns [column._ColumnId + 1 ] = TSysTables::TTableColumnInfo (
234
+ column._ColumnName , column._ColumnId + 1 , column._ColumnTypeInfo , " " , -1
235
+ );
223
236
}
224
237
};
225
238
registerView (
226
239
PgTablesName,
240
+ ESysViewType::EPgTables,
227
241
Singleton<Schema::PgTablesSchemaProvider>()->GetColumns (PgTablesName)
228
242
);
229
243
registerView (
230
244
InformationSchemaTablesName,
245
+ ESysViewType::EInformationSchemaTables,
231
246
Singleton<Schema::PgTablesSchemaProvider>()->GetColumns (InformationSchemaTablesName)
232
247
);
233
248
registerView (
234
249
PgClassName,
250
+ ESysViewType::EPgClass,
235
251
Singleton<Schema::PgTablesSchemaProvider>()->GetColumns (PgClassName)
236
252
);
237
253
}
238
254
239
255
template <typename Table>
240
- void RegisterSystemView (const TStringBuf& name) {
256
+ void RegisterSystemView (const TStringBuf& name, ESysViewType type ) {
241
257
TSchemaFiller<Table>::Fill (DomainSystemViews[name]);
242
258
TSchemaFiller<Table>::Fill (SubDomainSystemViews[name]);
259
+ TSchemaFiller<Table>::Fill (SystemViews[type]);
243
260
}
244
261
245
262
template <typename Table>
246
- void RegisterDomainSystemView (const TStringBuf& name) {
263
+ void RegisterDomainSystemView (const TStringBuf& name, ESysViewType type ) {
247
264
TSchemaFiller<Table>::Fill (DomainSystemViews[name]);
265
+ TSchemaFiller<Table>::Fill (SystemViews[type]);
248
266
}
249
267
250
268
template <typename Table>
@@ -258,29 +276,29 @@ class TSystemViewResolver : public ISystemViewResolver {
258
276
}
259
277
260
278
void RegisterSystemViews () {
261
- RegisterSystemView<Schema::PartitionStats>(PartitionStatsName);
279
+ RegisterSystemView<Schema::PartitionStats>(PartitionStatsName, ESysViewType::EPartitionStats );
262
280
263
- RegisterSystemView<Schema::Nodes>(NodesName);
281
+ RegisterSystemView<Schema::Nodes>(NodesName, ESysViewType::ENodes );
264
282
265
- RegisterSystemView<Schema::QueryStats>(TopQueriesByDuration1MinuteName);
266
- RegisterSystemView<Schema::QueryStats>(TopQueriesByDuration1HourName);
267
- RegisterSystemView<Schema::QueryStats>(TopQueriesByReadBytes1MinuteName);
268
- RegisterSystemView<Schema::QueryStats>(TopQueriesByReadBytes1HourName);
269
- RegisterSystemView<Schema::QueryStats>(TopQueriesByCpuTime1MinuteName);
270
- RegisterSystemView<Schema::QueryStats>(TopQueriesByCpuTime1HourName);
271
- RegisterSystemView<Schema::QueryStats>(TopQueriesByRequestUnits1MinuteName);
272
- RegisterSystemView<Schema::QueryStats>(TopQueriesByRequestUnits1HourName);
273
- RegisterSystemView<Schema::QuerySessions>(QuerySessions);
283
+ RegisterSystemView<Schema::QueryStats>(TopQueriesByDuration1MinuteName, ESysViewType::ETopQueriesByDurationOneMinute );
284
+ RegisterSystemView<Schema::QueryStats>(TopQueriesByDuration1HourName, ESysViewType::ETopQueriesByDurationOneHour );
285
+ RegisterSystemView<Schema::QueryStats>(TopQueriesByReadBytes1MinuteName, ESysViewType::ETopQueriesByReadBytesOneMinute );
286
+ RegisterSystemView<Schema::QueryStats>(TopQueriesByReadBytes1HourName, ESysViewType::ETopQueriesByReadBytesOneHour );
287
+ RegisterSystemView<Schema::QueryStats>(TopQueriesByCpuTime1MinuteName, ESysViewType::ETopQueriesByCpuTimeOneMinute );
288
+ RegisterSystemView<Schema::QueryStats>(TopQueriesByCpuTime1HourName, ESysViewType::ETopQueriesByCpuTimeOneHour );
289
+ RegisterSystemView<Schema::QueryStats>(TopQueriesByRequestUnits1MinuteName, ESysViewType::ETopQueriesByRequestUnitsOneMinute );
290
+ RegisterSystemView<Schema::QueryStats>(TopQueriesByRequestUnits1HourName, ESysViewType::ETopQueriesByRequestUnitsOneHour );
291
+ RegisterSystemView<Schema::QuerySessions>(QuerySessions, ESysViewType::EQuerySessions );
274
292
275
- RegisterDomainSystemView<Schema::PDisks>(PDisksName);
276
- RegisterDomainSystemView<Schema::VSlots>(VSlotsName);
277
- RegisterDomainSystemView<Schema::Groups>(GroupsName);
278
- RegisterDomainSystemView<Schema::StoragePools>(StoragePoolsName);
279
- RegisterDomainSystemView<Schema::StorageStats>(StorageStatsName);
293
+ RegisterDomainSystemView<Schema::PDisks>(PDisksName, ESysViewType::EPDisks );
294
+ RegisterDomainSystemView<Schema::VSlots>(VSlotsName, ESysViewType::EVSlots );
295
+ RegisterDomainSystemView<Schema::Groups>(GroupsName, ESysViewType::EGroups );
296
+ RegisterDomainSystemView<Schema::StoragePools>(StoragePoolsName, ESysViewType::EStoragePools );
297
+ RegisterDomainSystemView<Schema::StorageStats>(StorageStatsName, ESysViewType::EStorageStats );
280
298
281
- RegisterDomainSystemView<Schema::Tablets>(TabletsName);
299
+ RegisterDomainSystemView<Schema::Tablets>(TabletsName, ESysViewType::ETablets );
282
300
283
- RegisterSystemView<Schema::QueryMetrics>(QueryMetricsName);
301
+ RegisterSystemView<Schema::QueryMetrics>(QueryMetricsName, ESysViewType::EQueryMetricsOneMinute );
284
302
285
303
RegisterOlapStoreSystemView<Schema::PrimaryIndexStats>(StorePrimaryIndexStatsName);
286
304
RegisterOlapStoreSystemView<Schema::PrimaryIndexPortionStats>(StorePrimaryIndexPortionStatsName);
@@ -291,24 +309,24 @@ class TSystemViewResolver : public ISystemViewResolver {
291
309
RegisterColumnTableSystemView<Schema::PrimaryIndexGranuleStats>(TablePrimaryIndexGranuleStatsName);
292
310
RegisterColumnTableSystemView<Schema::PrimaryIndexOptimizerStats>(TablePrimaryIndexOptimizerStatsName);
293
311
294
- RegisterSystemView<Schema::TopPartitions>(TopPartitionsByCpu1MinuteName);
295
- RegisterSystemView<Schema::TopPartitions>(TopPartitionsByCpu1HourName);
296
- RegisterSystemView<Schema::TopPartitionsTli>(TopPartitionsByTli1MinuteName);
297
- RegisterSystemView<Schema::TopPartitionsTli>(TopPartitionsByTli1HourName);
312
+ RegisterSystemView<Schema::TopPartitions>(TopPartitionsByCpu1MinuteName, ESysViewType::ETopPartitionsByCpuOneMinute );
313
+ RegisterSystemView<Schema::TopPartitions>(TopPartitionsByCpu1HourName, ESysViewType::ETopPartitionsByCpuOneHour );
314
+ RegisterSystemView<Schema::TopPartitionsTli>(TopPartitionsByTli1MinuteName, ESysViewType::ETopPartitionsByTliOneMinute );
315
+ RegisterSystemView<Schema::TopPartitionsTli>(TopPartitionsByTli1HourName, ESysViewType::ETopPartitionsByTliOneHour );
298
316
299
317
RegisterPgTablesSystemViews ();
300
318
301
- RegisterSystemView<Schema::ResourcePoolClassifiers>(ResourcePoolClassifiersName);
302
- RegisterSystemView<Schema::ResourcePools>(ResourcePoolsName);
319
+ RegisterSystemView<Schema::ResourcePoolClassifiers>(ResourcePoolClassifiersName, ESysViewType::EResourcePoolClassifiers );
320
+ RegisterSystemView<Schema::ResourcePools>(ResourcePoolsName, ESysViewType::EResourcePools );
303
321
304
322
{
305
323
using namespace NAuth ;
306
- RegisterSystemView<Schema::AuthUsers>(UsersName);
307
- RegisterSystemView<Schema::AuthGroups>(NAuth::GroupsName);
308
- RegisterSystemView<Schema::AuthGroupMembers>(GroupMembersName);
309
- RegisterSystemView<Schema::AuthOwners>(OwnersName);
310
- RegisterSystemView<Schema::AuthPermissions>(PermissionsName);
311
- RegisterSystemView<Schema::AuthPermissions>(EffectivePermissionsName);
324
+ RegisterSystemView<Schema::AuthUsers>(UsersName, ESysViewType::EAuthUsers );
325
+ RegisterSystemView<Schema::AuthGroups>(NAuth::GroupsName, ESysViewType::EAuthGroups );
326
+ RegisterSystemView<Schema::AuthGroupMembers>(GroupMembersName, ESysViewType::EAuthGroupMembers );
327
+ RegisterSystemView<Schema::AuthOwners>(OwnersName, ESysViewType::EAuthOwners );
328
+ RegisterSystemView<Schema::AuthPermissions>(PermissionsName, ESysViewType::EAuthPermissions );
329
+ RegisterSystemView<Schema::AuthPermissions>(EffectivePermissionsName, ESysViewType::EAuthEffectivePermissions );
312
330
}
313
331
}
314
332
@@ -317,6 +335,7 @@ class TSystemViewResolver : public ISystemViewResolver {
317
335
THashMap<TString, TSchema> SubDomainSystemViews;
318
336
THashMap<TString, TSchema> OlapStoreSystemViews;
319
337
THashMap<TString, TSchema> ColumnTableSystemViews;
338
+ THashMap<ESysViewType, TSchema> SystemViews;
320
339
};
321
340
322
341
class TSystemViewRewrittenResolver : public ISystemViewResolver {
@@ -346,6 +365,11 @@ class TSystemViewRewrittenResolver : public ISystemViewResolver {
346
365
return view ? TMaybe<TSchema>(*view) : Nothing ();
347
366
}
348
367
368
+ TMaybe<TSchema> GetSystemViewSchema (ESysViewType sysViewType) const override final {
369
+ Y_UNUSED (sysViewType);
370
+ return Nothing ();
371
+ }
372
+
349
373
TVector<TString> GetSystemViewNames (ETarget target) const override {
350
374
Y_UNUSED (target);
351
375
return {};
0 commit comments