pick from: #36381
This commit is contained in:
@ -5921,6 +5921,10 @@ public class Env {
|
||||
return GlobalVariable.lowerCaseTableNames == 2;
|
||||
}
|
||||
|
||||
public static boolean isTableNamesCaseSensitive() {
|
||||
return GlobalVariable.lowerCaseTableNames == 0;
|
||||
}
|
||||
|
||||
private static void getTableMeta(OlapTable olapTable, TGetMetaDBMeta dbMeta) {
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("get table meta. table: {}", olapTable.getName());
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
|
||||
package org.apache.doris.mysql.privilege;
|
||||
|
||||
import org.apache.doris.catalog.Env;
|
||||
import org.apache.doris.common.AnalysisException;
|
||||
import org.apache.doris.common.CaseSensibility;
|
||||
import org.apache.doris.common.PatternMatcher;
|
||||
@ -58,7 +59,7 @@ public class TablePrivEntry extends DbPrivEntry {
|
||||
ctl, CaseSensibility.CATALOG.getCaseSensibility(), ctl.equals(ANY_CTL));
|
||||
|
||||
PatternMatcher tblPattern = PatternMatcher.createFlatPattern(
|
||||
tbl, CaseSensibility.TABLE.getCaseSensibility(), tbl.equals(ANY_TBL));
|
||||
tbl, Env.isTableNamesCaseSensitive(), tbl.equals(ANY_TBL));
|
||||
|
||||
if (privs.containsNodePriv() || privs.containsResourcePriv()) {
|
||||
throw new AnalysisException("Table privilege can not contains global or resource privileges: " + privs);
|
||||
|
||||
@ -2373,6 +2373,56 @@ public class AuthTest {
|
||||
revoke(revokeStmt);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTableNamesCaseSensitive() throws UserException {
|
||||
new Expectations() {
|
||||
{
|
||||
Env.isTableNamesCaseSensitive();
|
||||
minTimes = 0;
|
||||
result = true;
|
||||
}
|
||||
};
|
||||
UserIdentity userIdentity = new UserIdentity("sensitiveUser", "%");
|
||||
createUser(userIdentity);
|
||||
// `load_priv` and `select_priv` can not `show create view`
|
||||
GrantStmt grantStmt = new GrantStmt(userIdentity, null, new TablePattern("sensitivedb", "sensitiveTable"),
|
||||
Lists.newArrayList(new AccessPrivilegeWithCols(AccessPrivilege.SELECT_PRIV)));
|
||||
grant(grantStmt);
|
||||
Assert.assertTrue(accessManager
|
||||
.checkTblPriv(userIdentity, InternalCatalog.INTERNAL_CATALOG_NAME, "sensitivedb", "sensitiveTable",
|
||||
PrivPredicate.SELECT));
|
||||
|
||||
Assert.assertFalse(accessManager
|
||||
.checkTblPriv(userIdentity, InternalCatalog.INTERNAL_CATALOG_NAME, "sensitivedb", "sensitivetable",
|
||||
PrivPredicate.SELECT));
|
||||
dropUser(userIdentity);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTableNamesCaseInsensitive() throws UserException {
|
||||
new Expectations() {
|
||||
{
|
||||
Env.isTableNamesCaseSensitive();
|
||||
minTimes = 0;
|
||||
result = false;
|
||||
}
|
||||
};
|
||||
UserIdentity userIdentity = new UserIdentity("sensitiveUser1", "%");
|
||||
createUser(userIdentity);
|
||||
// `load_priv` and `select_priv` can not `show create view`
|
||||
GrantStmt grantStmt = new GrantStmt(userIdentity, null, new TablePattern("sensitivedb1", "sensitiveTable"),
|
||||
Lists.newArrayList(new AccessPrivilegeWithCols(AccessPrivilege.SELECT_PRIV)));
|
||||
grant(grantStmt);
|
||||
Assert.assertTrue(accessManager
|
||||
.checkTblPriv(userIdentity, InternalCatalog.INTERNAL_CATALOG_NAME, "sensitivedb1", "sensitiveTable",
|
||||
PrivPredicate.SELECT));
|
||||
|
||||
Assert.assertTrue(accessManager
|
||||
.checkTblPriv(userIdentity, InternalCatalog.INTERNAL_CATALOG_NAME, "sensitivedb1", "sensitivetable",
|
||||
PrivPredicate.SELECT));
|
||||
dropUser(userIdentity);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetInitialRootPassword() {
|
||||
// Skip set root password if `initial_root_password` set to empty string
|
||||
|
||||
Reference in New Issue
Block a user