Skip to content

Commit fd627c1

Browse files
authored
Merge pull request ClickHouse#91765 from ClickHouse/backport/25.8/90928
Backport ClickHouse#90928 to 25.8: Fix handling global grants with wildcard revokes
2 parents a43affd + c1dbd29 commit fd627c1

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/Access/AccessRights.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,8 @@ namespace
239239
{
240240
case GLOBAL_LEVEL: return AccessFlags::allFlagsGrantableOnGlobalLevel();
241241
case DATABASE_LEVEL: return AccessFlags::allFlagsGrantableOnDatabaseLevel() | AccessFlags::allFlagsGrantableOnGlobalWithParameterLevel();
242-
case TABLE_LEVEL: return AccessFlags::allFlagsGrantableOnTableLevel() | AccessFlags::allSourceFlags();
243-
case COLUMN_LEVEL: return AccessFlags::allFlagsGrantableOnColumnLevel();
242+
case TABLE_LEVEL: return AccessFlags::allFlagsGrantableOnTableLevel() | AccessFlags::allSourceFlags() | AccessFlags::allFlagsGrantableOnGlobalWithParameterLevel();
243+
case COLUMN_LEVEL: return AccessFlags::allFlagsGrantableOnColumnLevel() | AccessFlags::allFlagsGrantableOnGlobalWithParameterLevel();
244244
}
245245
chassert(false);
246246
}

src/Access/tests/gtest_access_rights_ops.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,21 @@ TEST(AccessRights, Filter)
547547
ASSERT_EQ(res.size(), 0);
548548
}
549549

550+
TEST(AccessRights, RevokeWithParameters)
551+
{
552+
AccessRights root;
553+
root.grantWithGrantOption(AccessType::SELECT);
554+
root.grantWithGrantOption(AccessType::CREATE_USER);
555+
root.revokeWildcard(AccessType::SELECT, "default", "zoo");
556+
ASSERT_EQ(root.toString(), "GRANT SELECT ON *.* WITH GRANT OPTION, GRANT CREATE USER ON * WITH GRANT OPTION, REVOKE SELECT ON default.zoo*");
557+
558+
root = {};
559+
root.grantWithGrantOption(AccessType::SELECT);
560+
root.grantWithGrantOption(AccessType::CREATE_USER);
561+
root.revokeWildcard(AccessType::SELECT, "default", "foo", "bar");
562+
ASSERT_EQ(root.toString(), "GRANT SELECT ON *.* WITH GRANT OPTION, GRANT CREATE USER ON * WITH GRANT OPTION, REVOKE SELECT(bar*) ON default.foo");
563+
}
564+
550565
TEST(AccessRights, ParialRevokeWithGrantOption)
551566
{
552567
AccessRights root;

0 commit comments

Comments
 (0)