Skip to content

Commit 9a774c0

Browse files
committed
Fixes
1 parent 4ad4b42 commit 9a774c0

13 files changed

+96
-72
lines changed

ydb/core/kqp/executer_actor/kqp_table_resolver.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class TKqpTableResolver : public TActorBootstrapped<TKqpTableResolver> {
3535
, UserToken(userToken)
3636
, Transactions(transactions)
3737
, TasksGraph(tasksGraph)
38-
, ShowCreateResolver(NSysView::CreateShowCreateResolver()) {}
38+
, SystemViewRewrittenResolver(NSysView::CreateSystemViewRewrittenResolver()) {}
3939

4040
void Bootstrap() {
4141
ResolveKeys();
@@ -173,7 +173,7 @@ class TKqpTableResolver : public TActorBootstrapped<TKqpTableResolver> {
173173

174174
stageInfo.Meta.ShardKey = ExtractKey(stageInfo.Meta.TableId, stageInfo.Meta.TableConstInfo, operation);
175175

176-
if (ShowCreateResolver->IsSystemView(stageInfo.Meta.TableId.SysViewInfo)) {
176+
if (SystemViewRewrittenResolver->IsSystemView(stageInfo.Meta.TableId.SysViewInfo)) {
177177
continue;
178178
}
179179

@@ -281,7 +281,7 @@ class TKqpTableResolver : public TActorBootstrapped<TKqpTableResolver> {
281281
TMaybe<ui32> GotUnexpectedEvent;
282282
TDuration CpuTime;
283283

284-
THolder<NSysView::ISystemViewResolver> ShowCreateResolver;
284+
THolder<NSysView::ISystemViewResolver> SystemViewRewrittenResolver;
285285
};
286286

287287
} // anonymous namespace

ydb/core/kqp/gateway/kqp_metadata_loader.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -573,15 +573,17 @@ void TKqpTableMetadataLoader::OnLoadedTableMetadata(TTableMetadataResult& loadTa
573573
}
574574
}
575575

576-
NThreading::TFuture<NYql::IKikimrGateway::TTableMetadataResult> TKqpTableMetadataLoader::LoadShowCreateMetadata(
577-
const NSysView::ISystemViewResolver::TSystemViewPath& showCreatePath, const TString& cluster, const TString& table
576+
NThreading::TFuture<NYql::IKikimrGateway::TTableMetadataResult> TKqpTableMetadataLoader::LoadSysViewRewrittenMetadata(
577+
const NSysView::ISystemViewResolver::TSystemViewPath& sysViewPath, const TString& cluster, const TString& table
578578
) {
579579
TNavigate::TEntry entry;
580580

581-
auto schema = ShowCreateResolver->GetSystemViewSchema(showCreatePath.ViewName, NSysView::ISystemViewResolver::ETarget::Domain);
581+
auto schema = SystemViewRewrittenResolver->GetSystemViewSchema(sysViewPath.ViewName, NSysView::ISystemViewResolver::ETarget::Domain);
582582
entry.Kind = TNavigate::KindTable;
583583
entry.Columns = std::move(schema->Columns);
584-
entry.TableId = TTableId(TSysTables::SysSchemeShard, 0, showCreatePath.ViewName);
584+
entry.TableId = TTableId(TSysTables::SysSchemeShard, 0, sysViewPath.ViewName);
585+
586+
Y_ENSURE(false);
585587

586588
auto result = GetTableMetadataResult(entry, cluster, table);
587589

@@ -598,9 +600,9 @@ NThreading::TFuture<TTableMetadataResult> TKqpTableMetadataLoader::LoadTableMeta
598600
try {
599601
NThreading::TFuture<TTableMetadataResult> tableMetaFuture;
600602

601-
NSysView::ISystemViewResolver::TSystemViewPath showCreatePath;
602-
if (settings.ShowCreate_ && ShowCreateResolver->IsSystemViewPath(SplitPath(table), showCreatePath)) {
603-
tableMetaFuture = LoadShowCreateMetadata(showCreatePath, cluster, table);
603+
NSysView::ISystemViewResolver::TSystemViewPath sysViewPath;
604+
if (settings.SysViewRewritten_ && SystemViewRewrittenResolver->IsSystemViewPath(SplitPath(table), sysViewPath)) {
605+
tableMetaFuture = LoadSysViewRewrittenMetadata(sysViewPath, cluster, table);
604606
} else {
605607
tableMetaFuture = LoadTableMetadataCache(cluster, table, settings, database, userToken);
606608
}

ydb/core/kqp/gateway/kqp_metadata_loader.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class TKqpTableMetadataLoader : public NYql::IKikimrGateway::IKqpTableMetadataLo
3131
, ActorSystem(actorSystem)
3232
, Config(config)
3333
, TempTablesState(std::move(tempTablesState))
34-
, ShowCreateResolver(NSysView::CreateShowCreateResolver())
34+
, SystemViewRewrittenResolver(NSysView::CreateSystemViewRewrittenResolver())
3535
{}
3636

3737
NThreading::TFuture<NYql::IKikimrGateway::TTableMetadataResult> LoadTableMetadata(
@@ -64,8 +64,8 @@ class TKqpTableMetadataLoader : public NYql::IKikimrGateway::IKqpTableMetadataLo
6464

6565
void OnLoadedTableMetadata(NYql::IKikimrGateway::TTableMetadataResult& loadTableMetadataResult);
6666

67-
NThreading::TFuture<NYql::IKikimrGateway::TTableMetadataResult> LoadShowCreateMetadata(
68-
const NSysView::ISystemViewResolver::TSystemViewPath& showCreatePath, const TString& cluster, const TString& table
67+
NThreading::TFuture<NYql::IKikimrGateway::TTableMetadataResult> LoadSysViewRewrittenMetadata(
68+
const NSysView::ISystemViewResolver::TSystemViewPath& sysViewPath, const TString& cluster, const TString& table
6969
);
7070

7171
const TString Cluster;
@@ -75,7 +75,7 @@ class TKqpTableMetadataLoader : public NYql::IKikimrGateway::IKqpTableMetadataLo
7575
TActorSystem* ActorSystem;
7676
NYql::TKikimrConfiguration::TPtr Config;
7777
TKqpTempTablesState::TConstPtr TempTablesState;
78-
THolder<NSysView::ISystemViewResolver> ShowCreateResolver;
78+
THolder<NSysView::ISystemViewResolver> SystemViewRewrittenResolver;
7979
};
8080

8181
} // namespace NKikimr::NKqp

ydb/core/kqp/provider/yql_kikimr_datasource.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,14 @@ class TKiSourceIntentDeterminationTransformer: public TKiSourceVisitorTransforme
102102

103103
private:
104104
TStatus HandleKiRead(TKiReadBase node, TExprContext& ctx) override {
105-
bool showCreateTableRewritten = false;
105+
bool sysViewRewritten = false;
106106
TExprBase currentNode(node);
107107
if (auto maybeReadTable = currentNode.Maybe<TKiReadTable>()) {
108108
auto readTable = maybeReadTable.Cast();
109109
for (auto setting : readTable.Settings()) {
110110
auto name = setting.Name().Value();
111-
if (name == "showCreateTableRewritten") {
112-
showCreateTableRewritten = true;
111+
if (name == "sysViewRewritten") {
112+
sysViewRewritten = true;
113113
}
114114
}
115115
}
@@ -120,18 +120,18 @@ class TKiSourceIntentDeterminationTransformer: public TKiSourceVisitorTransforme
120120
return TStatus::Error;
121121
}
122122

123-
return HandleKey(cluster, key, showCreateTableRewritten);
123+
return HandleKey(cluster, key, sysViewRewritten);
124124
}
125125

126126
TStatus HandleRead(TExprBase node, TExprContext& ctx) override {
127-
bool showCreateTableRewritten = false;
127+
bool sysViewRewritten = false;
128128
if (auto maybeRead = node.Maybe<TCoRead>()) {
129129
auto read = maybeRead.Cast();
130130
for (auto arg : read.FreeArgs()) {
131131
if (auto maybeTuple = arg.Maybe<TCoNameValueTuple>()) {
132132
auto tuple = maybeTuple.Cast();
133-
if (tuple.Ref().Child(0)->Content() == "showCreateTableRewritten") {
134-
showCreateTableRewritten = true;
133+
if (tuple.Ref().Child(0)->Content() == "sysViewRewritten") {
134+
sysViewRewritten = true;
135135
}
136136
}
137137
}
@@ -143,7 +143,7 @@ class TKiSourceIntentDeterminationTransformer: public TKiSourceVisitorTransforme
143143
return TStatus::Error;
144144
}
145145

146-
return HandleKey(cluster, key, showCreateTableRewritten);
146+
return HandleKey(cluster, key, sysViewRewritten);
147147
}
148148

149149
TStatus HandleLength(TExprBase node, TExprContext& ctx) override {
@@ -159,12 +159,12 @@ class TKiSourceIntentDeterminationTransformer: public TKiSourceVisitorTransforme
159159
}
160160

161161
private:
162-
TStatus HandleKey(const TStringBuf& cluster, const TKikimrKey& key, bool showCreate = false) {
162+
TStatus HandleKey(const TStringBuf& cluster, const TKikimrKey& key, bool sysViewRewritten = false) {
163163
switch (key.GetKeyType()) {
164164
case TKikimrKey::Type::Table:
165165
case TKikimrKey::Type::TableScheme: {
166166
auto& table = SessionCtx->Tables().GetOrAddTable(TString(cluster), SessionCtx->GetDatabase(),
167-
key.GetTablePath(), ETableType::Table, showCreate);
167+
key.GetTablePath(), ETableType::Table, sysViewRewritten);
168168

169169
if (key.GetKeyType() == TKikimrKey::Type::TableScheme) {
170170
table.RequireStats();
@@ -263,7 +263,7 @@ class TKiSourceLoadTableMetadataTransformer : public TGraphTransformerBase {
263263
.WithAuthInfo(table.GetNeedAuthInfo())
264264
.WithExternalSourceFactory(ExternalSourceFactory)
265265
.WithReadAttributes(readAttrs ? std::move(*readAttrs) : THashMap<TString, TString>{})
266-
.WithShowCreate(table.GetShowCreate())
266+
.WithSysViewRewritten(table.GetSysViewRewritten())
267267
);
268268

269269
futures.push_back(future.Apply([result, queryType]

ydb/core/kqp/provider/yql_kikimr_gateway.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1092,8 +1092,8 @@ class IKikimrGateway : public TThrRefBase {
10921092
return *this;
10931093
}
10941094

1095-
TLoadTableMetadataSettings& WithShowCreate(bool enable) {
1096-
ShowCreate_ = enable;
1095+
TLoadTableMetadataSettings& WithSysViewRewritten(bool enable) {
1096+
SysViewRewritten_ = enable;
10971097
return *this;
10981098
}
10991099

@@ -1103,7 +1103,7 @@ class IKikimrGateway : public TThrRefBase {
11031103
bool WithPrivateTables_ = false;
11041104
bool WithExternalDatasources_ = false;
11051105
bool RequestAuthInfo_ = true;
1106-
bool ShowCreate_ = false;
1106+
bool SysViewRewritten_ = false;
11071107
};
11081108

11091109
class IKqpTableMetadataLoader : public std::enable_shared_from_this<IKqpTableMetadataLoader> {

ydb/core/kqp/provider/yql_kikimr_opt_build.cpp

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -972,14 +972,19 @@ TExprNode::TPtr KiBuildQuery(TExprBase node, TExprContext& ctx, TStringBuf datab
972972
TKikimrKey key(ctx);
973973
YQL_ENSURE(key.Extract(content.TableKey().Ref()));
974974

975-
auto showCreateValue = Build<TCoNameValueTuple>(ctx, node.Pos())
975+
auto sysViewRewrittenValue = Build<TCoNameValueTuple>(ctx, node.Pos())
976976
.Name()
977-
.Build("showCreateTableRewritten")
977+
.Build("sysViewRewritten")
978978
.Value<TCoAtom>()
979979
.Value(key.GetTablePath())
980980
.Build()
981981
.Done();
982982

983+
auto showCreateTableValue = Build<TCoNameValueTuple>(ctx, node.Pos())
984+
.Name()
985+
.Build("showCreateTable")
986+
.Done();
987+
983988
auto showCreateTableRead = Build<TCoRead>(ctx, node.Pos())
984989
.World<TCoWorld>().Build()
985990
.DataSource<TCoDataSource>()
@@ -992,7 +997,8 @@ TExprNode::TPtr KiBuildQuery(TExprBase node, TExprContext& ctx, TStringBuf datab
992997
.Add(newKey)
993998
.Add(ctx.NewCallable(node.Pos(), "Void", {}))
994999
.Add(ctx.NewList(node.Pos(), {}))
995-
.Add(showCreateValue)
1000+
.Add(sysViewRewrittenValue)
1001+
.Add(showCreateTableValue)
9961002
.Build()
9971003
.Done().Ptr();
9981004

@@ -1009,14 +1015,21 @@ TExprNode::TPtr KiBuildQuery(TExprBase node, TExprContext& ctx, TStringBuf datab
10091015
auto right = rightMaybe.Cast();
10101016
if (auto maybeRead = right.Input().Maybe<TCoRead>()) {
10111017
auto read = maybeRead.Cast();
1018+
bool isSysViewRewritten = false;
1019+
bool isShowCreateTable = false;
10121020
for (auto arg : read.FreeArgs()) {
10131021
if (auto tuple = arg.Maybe<TCoNameValueTuple>()) {
10141022
auto name = tuple.Cast().Name().Value();
1015-
if (name == "showCreateTableRewritten") {
1016-
showCreateTableRightReplaces[input.Get()] = nullptr;
1023+
if (name == "sysViewRewritten") {
1024+
isSysViewRewritten = true;
1025+
} else if (name == "showCreateTable") {
1026+
isShowCreateTable = true;
10171027
}
10181028
}
10191029
}
1030+
if (isShowCreateTable && isSysViewRewritten) {
1031+
showCreateTableRightReplaces[input.Get()] = nullptr;
1032+
}
10201033
}
10211034
}
10221035
return true;
@@ -1030,7 +1043,7 @@ TExprNode::TPtr KiBuildQuery(TExprBase node, TExprContext& ctx, TStringBuf datab
10301043
for (auto arg : read.FreeArgs()) {
10311044
if (auto tuple = arg.Maybe<TCoNameValueTuple>()) {
10321045
auto name = tuple.Cast().Name().Value();
1033-
if (name == "showCreateTableRewritten") {
1046+
if (name == "sysViewRewritten") {
10341047
tablePath = tuple.Cast().Value().Cast().Cast<TCoAtom>().StringValue();
10351048
}
10361049
}
@@ -1109,7 +1122,7 @@ TExprNode::TPtr KiBuildQuery(TExprBase node, TExprContext& ctx, TStringBuf datab
11091122
.Repeat(TExprStep::LoadTablesMetadata)
11101123
.Repeat(TExprStep::RewriteIO);
11111124

1112-
return ctx.ReplaceNodes(std::move(resNode.Ptr()), showCreateTableRightReplaces);;
1125+
return ctx.ReplaceNodes(std::move(resNode.Ptr()), showCreateTableRightReplaces);
11131126
}
11141127

11151128
TKiExploreTxResults txExplore;

ydb/core/kqp/provider/yql_kikimr_provider.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ const TKikimrTableDescription* TKikimrTablesData::EnsureTableExists(const TStrin
173173
}
174174

175175
TKikimrTableDescription& TKikimrTablesData::GetOrAddTable(const TString& cluster, const TString& database,
176-
const TString& table, ETableType tableType, bool showCreate) {
176+
const TString& table, ETableType tableType, bool sysViewRewritten) {
177177
auto tablePath = table;
178178
if (TempTablesState) {
179179
auto tempTableInfoIt = TempTablesState->FindInfo(table, true);
@@ -193,7 +193,7 @@ TKikimrTableDescription& TKikimrTablesData::GetOrAddTable(const TString& cluster
193193
}
194194
desc.SetTableType(tableType);
195195

196-
desc.SetShowCreate(showCreate);
196+
desc.SetSysViewRewritten(sysViewRewritten);
197197

198198
return desc;
199199
}

ydb/core/kqp/provider/yql_kikimr_provider.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,15 +177,15 @@ class TKikimrTableDescription {
177177
ETableType GetTableType() const { return TableType; }
178178
void SetTableType(ETableType tableType) { TableType = tableType; }
179179

180-
void SetShowCreate(bool flag) { ShowCreate = flag; }
181-
bool GetShowCreate() const { return ShowCreate; }
180+
void SetSysViewRewritten(bool flag) { SysViewRewritten = flag; }
181+
bool GetSysViewRewritten() const { return SysViewRewritten; }
182182

183183
private:
184184
THashMap<TString, const TTypeAnnotationNode*> ColumnTypes;
185185
bool NeedsStats = false;
186186
bool NeedAuthInfo = true;
187187
ETableType TableType;
188-
bool ShowCreate = false;
188+
bool SysViewRewritten = false;
189189
};
190190

191191
class TKikimrTablesData : public TThrRefBase {
@@ -195,7 +195,7 @@ class TKikimrTablesData : public TThrRefBase {
195195
TKikimrTablesData& operator=(const TKikimrTablesData&) = delete;
196196

197197
TKikimrTableDescription& GetOrAddTable(const TString& cluster, const TString& database, const TString& table,
198-
ETableType tableType = ETableType::Table, bool showCreate = false);
198+
ETableType tableType = ETableType::Table, bool sysViewRewritten = false);
199199
TKikimrTableDescription& GetTable(const TString& cluster, const TString& table);
200200

201201
const TKikimrTableDescription* EnsureTableExists(const TString& cluster, const TString& table,

ydb/core/sys_view/common/scan_actor_base_impl.h

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#pragma once
22

3-
#include "schema.h"
43
#include "utils.h"
54

65
#include <ydb/core/kqp/compute_actor/kqp_compute_events.h>
@@ -212,13 +211,13 @@ class TScanActorBase : public TActorBootstrapped<TDerived> {
212211
return true;
213212
}
214213

215-
private:
216-
virtual void ProceedToScan() = 0;
217-
218214
void ReplyLimiterFailedAndDie() {
219215
ReplyErrorAndDie(Ydb::StatusIds::OVERLOADED, "System view: concurrent scans limit exceeded");
220216
}
221217

218+
private:
219+
virtual void ProceedToScan() = 0;
220+
222221
void ReplyNavigateFailedAndDie() {
223222
ReplyErrorAndDie(Ydb::StatusIds::UNAVAILABLE, "System view: navigate failed");
224223
}
@@ -241,7 +240,7 @@ class TScanActorBase : public TActorBootstrapped<TDerived> {
241240
}
242241
}
243242

244-
void HandleLimiter(TEvSysView::TEvGetScanLimiterResult::TPtr& ev) {
243+
virtual void HandleLimiter(TEvSysView::TEvGetScanLimiterResult::TPtr& ev) {
245244
ScanLimiter = ev->Get()->ScanLimiter;
246245

247246
if (!ScanLimiter->Inc()) {
@@ -254,14 +253,6 @@ class TScanActorBase : public TActorBootstrapped<TDerived> {
254253

255254
AllowedByLimiter = true;
256255

257-
if (TableId.SysViewInfo == ShowCreateName) {
258-
LOG_INFO_S(TlsActivationContext->AsActorContext(), NKikimrServices::SYSTEM_VIEWS,
259-
"Scan prepared, actor: " << TBase::SelfId());
260-
261-
ProceedToScan();
262-
return;
263-
}
264-
265256
using TNavigate = NSchemeCache::TSchemeCacheNavigate;
266257

267258
auto request = MakeHolder<TNavigate>();
@@ -392,15 +383,14 @@ class TScanActorBase : public TActorBootstrapped<TDerived> {
392383
bool BatchRequestInFlight = false;
393384
bool DoPipeCacheUnlink = false;
394385

395-
private:
386+
TIntrusivePtr<TScanLimiter> ScanLimiter;
387+
bool AllowedByLimiter = false;
388+
396389
enum EFailState {
397390
OK,
398391
LIMITER_FAILED,
399392
NAVIGATE_FAILED
400393
} FailState = OK;
401-
402-
TIntrusivePtr<TScanLimiter> ScanLimiter;
403-
bool AllowedByLimiter = false;
404394
};
405395

406396

0 commit comments

Comments
 (0)