Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -686,7 +686,7 @@ private void grantInternal(UserIdentity userIdent, String role, TablePattern tbl
writeLock();
try {
if (!isReplay) {
checkTablePatternExist(tblPattern);
checkTablePatternExist(tblPattern, privs);
}
if (role == null) {
if (!doesUserExist(userIdent)) {
Expand All @@ -706,8 +706,12 @@ private void grantInternal(UserIdentity userIdent, String role, TablePattern tbl
}
}

private void checkTablePatternExist(TablePattern tablePattern) throws DdlException {
private void checkTablePatternExist(TablePattern tablePattern, PrivBitSet privs) throws DdlException {
Objects.requireNonNull(tablePattern, "tablePattern can not be null");
Objects.requireNonNull(privs, "privs can not be null");
if (privs.containsPrivs(Privilege.CREATE_PRIV)) {
return;
}
PrivLevel privLevel = tablePattern.getPrivLevel();
if (privLevel == PrivLevel.GLOBAL) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ suite("test_grant_nonexist_table","p0,auth") {
sql """grant select_priv on internal.${dbName}.non_exist_table to ${user}"""
exception "table"
}

// contain create_triv should not check name, Same behavior as MySQL
sql """grant create_priv on internal.${dbName}.non_exist_table to ${user}"""
sql """grant create_priv,select_priv on internal.${dbName}.non_exist_table to ${user}"""

try_sql("DROP USER ${user}")
}
Loading