Skip to content

Commit e487e8e

Browse files
committed
Added creating sys views during SchemeShard init
1 parent 00ab78d commit e487e8e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+2007
-756
lines changed

ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp

Lines changed: 94 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1172,7 +1172,7 @@ Y_UNIT_TEST_SUITE(KqpScheme) {
11721172
Value String,
11731173
PRIMARY KEY (Key)
11741174
)
1175-
)")
1175+
)")
11761176
+ (СolumnTable ? TString("WITH (STORE = COLUMN)") : "");
11771177
auto result = session.ExecuteSchemeQuery(query).GetValueSync();
11781178
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
@@ -4850,6 +4850,99 @@ Y_UNIT_TEST_SUITE(KqpScheme) {
48504850
}
48514851
}
48524852

4853+
Y_UNIT_TEST(ModifySysViewDirPermissions) {
4854+
NKikimrConfig::TFeatureFlags featureFlags;
4855+
featureFlags.SetEnableRealSystemViewPaths(true);
4856+
TKikimrRunner kikimr(featureFlags, "root@builtin");
4857+
4858+
auto userSchemeClient = kikimr.GetSchemeClient();
4859+
auto db = kikimr.GetTableClient();
4860+
auto session = db.CreateSession().GetValueSync().GetSession();
4861+
4862+
{
4863+
auto result = userSchemeClient.ListDirectory("/Root/.sys").GetValueSync();
4864+
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::UNAUTHORIZED);
4865+
UNIT_ASSERT_STRING_CONTAINS_C(result.GetIssues().ToString(), "Access denied",
4866+
result.GetIssues().ToString()
4867+
);
4868+
}
4869+
{
4870+
auto query = TStringBuilder() << R"(
4871+
--!syntax_v1
4872+
GRANT DESCRIBE SCHEMA ON `/Root/.sys` TO `root@builtin`;
4873+
)";
4874+
auto result = session.ExecuteSchemeQuery(query).GetValueSync();
4875+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
4876+
CheckPermissions(session, {
4877+
{.Path = "/Root/.sys",
4878+
.Permissions = {
4879+
{"root@builtin", {"ydb.granular.describe_schema"}}
4880+
}
4881+
},
4882+
});
4883+
}
4884+
{
4885+
auto result = userSchemeClient.ListDirectory("/Root/.sys").GetValueSync();
4886+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
4887+
}
4888+
{
4889+
auto query = TStringBuilder() << R"(
4890+
--!syntax_v1
4891+
GRANT ALTER SCHEMA ON `/Root/.sys` TO `root@builtin`;
4892+
)";
4893+
auto result = session.ExecuteSchemeQuery(query).GetValueSync();
4894+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
4895+
CheckPermissions(session, {{.Path = "/Root/.sys",
4896+
.Permissions = {
4897+
{"root@builtin", {"ydb.granular.describe_schema",
4898+
"ydb.granular.alter_schema"}}
4899+
}
4900+
}});
4901+
}
4902+
}
4903+
4904+
Y_UNIT_TEST(ModifySysViewPermissions) {
4905+
NKikimrConfig::TFeatureFlags featureFlags;
4906+
featureFlags.SetEnableRealSystemViewPaths(true);
4907+
TKikimrRunner kikimr(featureFlags, "root@builtin");
4908+
4909+
auto userSchemeClient = kikimr.GetSchemeClient();
4910+
auto db = kikimr.GetTableClient();
4911+
auto userSession = db.CreateSession().GetValueSync().GetSession();
4912+
auto querySelect = TStringBuilder() << R"(
4913+
--!syntax_v1
4914+
SELECT * FROM `/Root/.sys/partition_stats`;
4915+
)";
4916+
4917+
{
4918+
auto result = userSession.ExecuteDataQuery(querySelect, TTxControl::BeginTx().CommitTx()).ExtractValueSync();
4919+
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::SCHEME_ERROR);
4920+
UNIT_ASSERT_STRING_CONTAINS_C(result.GetIssues().ToString(),
4921+
"it does not exist or you do not have access permissions",
4922+
result.GetIssues().ToString()
4923+
);
4924+
}
4925+
{
4926+
auto query = TStringBuilder() << R"(
4927+
--!syntax_v1
4928+
GRANT SELECT ON `/Root/.sys/partition_stats` TO `root@builtin`;
4929+
)";
4930+
auto result = userSession.ExecuteSchemeQuery(query).GetValueSync();
4931+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
4932+
CheckPermissions(userSession, {
4933+
{.Path = "/Root/.sys/partition_stats",
4934+
.Permissions = {
4935+
{"root@builtin", {"ydb.generic.read"}}
4936+
}
4937+
},
4938+
});
4939+
}
4940+
{
4941+
auto result = userSession.ExecuteDataQuery(querySelect, TTxControl::BeginTx().CommitTx()).ExtractValueSync();
4942+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
4943+
}
4944+
}
4945+
48534946
Y_UNIT_TEST(ModifyUnknownPermissions) {
48544947
TKikimrRunner kikimr;
48554948
auto db = kikimr.GetTableClient();

0 commit comments

Comments
 (0)