Skip to content

Commit 0202e7d

Browse files
authored
[fix](catalog) hide some properties in show create catalog stmt (#39946)
the `use_meta_cache` and `create_time` property should not be visible in show create catalog stmt. These properties are not for user. But you can still see them in `show catalog xxx` stmt
1 parent d6eed3b commit 0202e7d

File tree

5 files changed

+27
-11
lines changed

5 files changed

+27
-11
lines changed

fe/fe-core/src/main/java/org/apache/doris/analysis/CreateCatalogStmt.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.apache.doris.common.util.PrintableMap;
2727
import org.apache.doris.common.util.PropertyAnalyzer;
2828
import org.apache.doris.common.util.Util;
29+
import org.apache.doris.datasource.ExternalCatalog;
2930
import org.apache.doris.datasource.InternalCatalog;
3031
import org.apache.doris.mysql.privilege.PrivPredicate;
3132
import org.apache.doris.qe.ConnectContext;
@@ -41,7 +42,6 @@
4142
* Statement for create a new catalog.
4243
*/
4344
public class CreateCatalogStmt extends DdlStmt implements NotFallbackInParser {
44-
public static final String CREATE_TIME_PROP = "create_time";
4545
private final boolean ifNotExists;
4646
private final String catalogName;
4747
private final String resource;
@@ -101,7 +101,7 @@ public void analyze(Analyzer analyzer) throws UserException {
101101
}
102102

103103
String currentDateTime = LocalDateTime.now(ZoneId.systemDefault()).toString().replace("T", " ");
104-
properties.put(CREATE_TIME_PROP, currentDateTime);
104+
properties.put(ExternalCatalog.CREATE_TIME, currentDateTime);
105105
PropertyAnalyzer.checkCatalogProperties(properties, false);
106106
}
107107

fe/fe-core/src/main/java/org/apache/doris/common/util/PrintableMap.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public class PrintableMap<K, V> {
4343
private boolean wrap;
4444
private boolean hidePassword;
4545
private String entryDelimiter = ",";
46+
private Set<String> additionalHiddenKeys = Sets.newHashSet();
4647

4748
public static final Set<String> SENSITIVE_KEY;
4849
public static final Set<String> HIDDEN_KEY;
@@ -98,6 +99,10 @@ public PrintableMap(Map<K, V> map, String keyValueSeparator,
9899
this.hidePassword = hidePassword;
99100
}
100101

102+
public void setAdditionalHiddenKeys(Set<String> additionalHiddenKeys) {
103+
this.additionalHiddenKeys = additionalHiddenKeys;
104+
}
105+
101106
@Override
102107
public String toString() {
103108
if (map == null) {
@@ -119,7 +124,7 @@ private List<Map.Entry<K, V>> showEntries() {
119124
List<Map.Entry<K, V>> entries = new ArrayList<>();
120125
while (iter.hasNext()) {
121126
Map.Entry<K, V> entry = iter.next();
122-
if (!HIDDEN_KEY.contains(entry.getKey())) {
127+
if (!HIDDEN_KEY.contains(entry.getKey()) && !additionalHiddenKeys.contains(entry.getKey())) {
123128
entries.add(entry);
124129
}
125130
}

fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogMgr.java

+8-6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.apache.doris.common.DdlException;
3737
import org.apache.doris.common.ErrorCode;
3838
import org.apache.doris.common.ErrorReport;
39+
import org.apache.doris.common.FeConstants;
3940
import org.apache.doris.common.PatternMatcher;
4041
import org.apache.doris.common.PatternMatcherWrapper;
4142
import org.apache.doris.common.UserException;
@@ -88,8 +89,6 @@ public class CatalogMgr implements Writable, GsonPostProcessable {
8889
public static final String METADATA_REFRESH_INTERVAL_SEC = "metadata_refresh_interval_sec";
8990
public static final String CATALOG_TYPE_PROP = "type";
9091

91-
private static final String YES = "yes";
92-
9392
private final MonitoredReentrantReadWriteLock lock = new MonitoredReentrantReadWriteLock(true);
9493

9594
@SerializedName(value = "idToCatalog")
@@ -384,12 +383,12 @@ public ShowResultSet showCatalogs(ShowCatalogStmt showStmt, String currentCtlg)
384383
row.add(name);
385384
row.add(catalog.getType());
386385
if (name.equals(currentCtlg)) {
387-
row.add(YES);
386+
row.add("Yes");
388387
} else {
389-
row.add("");
388+
row.add("No");
390389
}
391390
Map<String, String> props = catalog.getProperties();
392-
String createTime = props.getOrDefault(CreateCatalogStmt.CREATE_TIME_PROP, "UNRECORDED");
391+
String createTime = props.getOrDefault(ExternalCatalog.CREATE_TIME, FeConstants.null_string);
393392
row.add(createTime);
394393
row.add(TimeUtils.longToTimeString(catalog.getLastUpdateTime()));
395394
row.add(catalog.getComment());
@@ -450,7 +449,10 @@ public ShowResultSet showCreateCatalog(ShowCreateCatalogStmt showStmt) throws An
450449
}
451450
if (catalog.getProperties().size() > 0) {
452451
sb.append(" PROPERTIES (\n");
453-
sb.append(new PrintableMap<>(catalog.getProperties(), "=", true, true, true, true));
452+
PrintableMap<String, String> printableMap = new PrintableMap<>(catalog.getProperties(), "=", true, true,
453+
true, true);
454+
printableMap.setAdditionalHiddenKeys(ExternalCatalog.HIDDEN_PROPERTIES);
455+
sb.append(printableMap);
454456
sb.append("\n);");
455457
}
456458

fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java

+6
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,14 @@ public abstract class ExternalCatalog
101101
public static final String DORIS_VERSION = "doris.version";
102102
public static final String DORIS_VERSION_VALUE = Version.DORIS_BUILD_VERSION + "-" + Version.DORIS_BUILD_SHORT_HASH;
103103
public static final String USE_META_CACHE = "use_meta_cache";
104+
public static final String CREATE_TIME = "create_time";
104105
public static final boolean DEFAULT_USE_META_CACHE = true;
105106

107+
// Properties that should not be shown in the `show create catalog` result
108+
public static final Set<String> HIDDEN_PROPERTIES = Sets.newHashSet(
109+
CREATE_TIME,
110+
USE_META_CACHE);
111+
106112
// Unique id of this catalog, will be assigned after catalog is loaded.
107113
@SerializedName(value = "id")
108114
protected long id;

fe/fe-core/src/test/java/org/apache/doris/datasource/CatalogMgrTest.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,8 @@ public void testNormalCase() throws Exception {
269269
List<String> result = showResultSet.getResultRows().get(0);
270270
Assertions.assertEquals("my_catalog", result.get(0));
271271
Assertions.assertTrue(result.get(1).startsWith("\nCREATE CATALOG `my_catalog`\nCOMMENT \"hms comment\"\n PROPERTIES ("));
272+
Assertions.assertTrue(!result.get(1).contains(ExternalCatalog.CREATE_TIME));
273+
Assertions.assertTrue(!result.get(1).contains(ExternalCatalog.USE_META_CACHE));
272274

273275
testCatalogMgrPersist();
274276

@@ -355,7 +357,8 @@ public void testSwitchCommand() throws Exception {
355357
String showCatalogSql = "SHOW CATALOGS";
356358
ShowCatalogStmt showStmt = (ShowCatalogStmt) parseAndAnalyzeStmt(showCatalogSql);
357359
ShowResultSet showResultSet = mgr.showCatalogs(showStmt, user2Ctx.getCurrentCatalog().getName());
358-
Assertions.assertEquals("yes", showResultSet.getResultRows().get(1).get(3));
360+
Assertions.assertEquals("Yes", showResultSet.getResultRows().get(1).get(3));
361+
Assertions.assertEquals("No", showResultSet.getResultRows().get(0).get(3));
359362

360363
// user2 can switch to hive
361364
SwitchStmt switchHive = (SwitchStmt) parseAndAnalyzeStmt("switch hive;", user2Ctx);
@@ -365,7 +368,7 @@ public void testSwitchCommand() throws Exception {
365368
showCatalogSql = "SHOW CATALOGS";
366369
showStmt = (ShowCatalogStmt) parseAndAnalyzeStmt(showCatalogSql);
367370
showResultSet = mgr.showCatalogs(showStmt, user2Ctx.getCurrentCatalog().getName());
368-
Assertions.assertEquals("yes", showResultSet.getResultRows().get(0).get(3));
371+
Assertions.assertEquals("Yes", showResultSet.getResultRows().get(0).get(3));
369372
}
370373

371374
@Test

0 commit comments

Comments
 (0)