diff --git a/ydb/core/grpc_services/rpc_kh_describe.cpp b/ydb/core/grpc_services/rpc_kh_describe.cpp index 0fcb9408cd89..2d9bcf69723e 100644 --- a/ydb/core/grpc_services/rpc_kh_describe.cpp +++ b/ydb/core/grpc_services/rpc_kh_describe.cpp @@ -228,7 +228,7 @@ class TKikhouseDescribeTableRPC : public TActorBootstrappedResultSet.front(); - if (entry.TableId.IsSystemView()) { + if (entry.TableId.IsSystemView() || entry.Kind == NSchemeCache::TSchemeCacheNavigate::KindSysView) { // Add fake shard for sys view auto* p = Result.add_partitions(); p->set_tablet_id(1); diff --git a/ydb/core/grpc_services/rpc_read_columns.cpp b/ydb/core/grpc_services/rpc_read_columns.cpp index 93857b55ed0b..45a81807dc7c 100644 --- a/ydb/core/grpc_services/rpc_read_columns.cpp +++ b/ydb/core/grpc_services/rpc_read_columns.cpp @@ -230,9 +230,9 @@ class TReadColumnsRPC : public TActorBootstrapped { ctx); } - if (ResolveNamesResult->ResultSet.front().TableId.IsSystemView()) { + if (entry.TableId.IsSystemView() || entry.Kind == NSchemeCache::TSchemeCacheNavigate::KindSysView) { return ScanSystemView(ctx); - } if (TryParseLocalDbPath(ResolveNamesResult->ResultSet.front().Path)) { + } if (TryParseLocalDbPath(entry.Path)) { return ScanLocalDbTable(ctx); } else { return ResolveShards(ctx); diff --git a/ydb/core/grpc_services/rpc_read_rows.cpp b/ydb/core/grpc_services/rpc_read_rows.cpp index 01a80c992231..e8d8db48609f 100644 --- a/ydb/core/grpc_services/rpc_read_rows.cpp +++ b/ydb/core/grpc_services/rpc_read_rows.cpp @@ -385,7 +385,7 @@ class TReadRowsRPC : public TActorBootstrapped { OwnerId = entry.Self->Info.GetSchemeshardId(); TableId = entry.Self->Info.GetPathId(); - if (entry.TableId.IsSystemView()) { + if (entry.TableId.IsSystemView() || entry.Kind == NSchemeCache::TSchemeCacheNavigate::KindSysView) { return ReplyWithError(Ydb::StatusIds::SCHEME_ERROR, Sprintf("Table '%s' is a system view. ReadRows is not supported.", GetTable().c_str())); } @@ -592,7 +592,7 @@ class TReadRowsRPC : public TActorBootstrapped { } case NScheme::NTypeIds::Decimal: { return NYdb::TTypeBuilder().Decimal(NYdb::TDecimalType( - typeInfo.GetDecimalType().GetPrecision(), + typeInfo.GetDecimalType().GetPrecision(), typeInfo.GetDecimalType().GetScale())) .Build(); } diff --git a/ydb/public/api/protos/ydb_scheme.proto b/ydb/public/api/protos/ydb_scheme.proto index 08d74ecae012..9d25f709ec0f 100644 --- a/ydb/public/api/protos/ydb_scheme.proto +++ b/ydb/public/api/protos/ydb_scheme.proto @@ -67,6 +67,7 @@ message Entry { VIEW = 20; RESOURCE_POOL = 21; TRANSFER = 23; + SYS_VIEW = 24; } // Name of scheme entry (dir2 of /dir1/dir2)