This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new bbf7701046e [fix](catalog) hide some properties in show create catalog
stmt (#39946) (#39970)
bbf7701046e is described below
commit bbf7701046e1abc098e9c72b53ab866523a447cc
Author: Mingyu Chen <[email protected]>
AuthorDate: Tue Aug 27 16:46:12 2024 +0800
[fix](catalog) hide some properties in show create catalog stmt (#39946)
(#39970)
bp #39946
---
.../java/org/apache/doris/analysis/CreateCatalogStmt.java | 4 ++--
.../java/org/apache/doris/common/util/PrintableMap.java | 7 ++++++-
.../main/java/org/apache/doris/datasource/CatalogMgr.java | 14 ++++++++------
.../java/org/apache/doris/datasource/ExternalCatalog.java | 6 ++++++
.../java/org/apache/doris/datasource/CatalogMgrTest.java | 7 +++++--
5 files changed, 27 insertions(+), 11 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateCatalogStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateCatalogStmt.java
index 720df2dbedc..89486d8033f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateCatalogStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateCatalogStmt.java
@@ -26,6 +26,7 @@ import org.apache.doris.common.UserException;
import org.apache.doris.common.util.PrintableMap;
import org.apache.doris.common.util.PropertyAnalyzer;
import org.apache.doris.common.util.Util;
+import org.apache.doris.datasource.ExternalCatalog;
import org.apache.doris.datasource.InternalCatalog;
import org.apache.doris.mysql.privilege.PrivPredicate;
import org.apache.doris.qe.ConnectContext;
@@ -41,7 +42,6 @@ import java.util.Map;
* Statement for create a new catalog.
*/
public class CreateCatalogStmt extends DdlStmt {
- public static final String CREATE_TIME_PROP = "create_time";
private final boolean ifNotExists;
private final String catalogName;
private final String resource;
@@ -101,7 +101,7 @@ public class CreateCatalogStmt extends DdlStmt {
}
String currentDateTime =
LocalDateTime.now(ZoneId.systemDefault()).toString().replace("T", " ");
- properties.put(CREATE_TIME_PROP, currentDateTime);
+ properties.put(ExternalCatalog.CREATE_TIME, currentDateTime);
PropertyAnalyzer.checkCatalogProperties(properties, false);
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/common/util/PrintableMap.java
b/fe/fe-core/src/main/java/org/apache/doris/common/util/PrintableMap.java
index 734f0ae2268..3ad8274d664 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/util/PrintableMap.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/PrintableMap.java
@@ -43,6 +43,7 @@ public class PrintableMap<K, V> {
private boolean wrap;
private boolean hidePassword;
private String entryDelimiter = ",";
+ private Set<String> additionalHiddenKeys = Sets.newHashSet();
public static final Set<String> SENSITIVE_KEY;
public static final Set<String> HIDDEN_KEY;
@@ -98,6 +99,10 @@ public class PrintableMap<K, V> {
this.hidePassword = hidePassword;
}
+ public void setAdditionalHiddenKeys(Set<String> additionalHiddenKeys) {
+ this.additionalHiddenKeys = additionalHiddenKeys;
+ }
+
@Override
public String toString() {
if (map == null) {
@@ -119,7 +124,7 @@ public class PrintableMap<K, V> {
List<Map.Entry<K, V>> entries = new ArrayList<>();
while (iter.hasNext()) {
Map.Entry<K, V> entry = iter.next();
- if (!HIDDEN_KEY.contains(entry.getKey())) {
+ if (!HIDDEN_KEY.contains(entry.getKey()) &&
!additionalHiddenKeys.contains(entry.getKey())) {
entries.add(entry);
}
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogMgr.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogMgr.java
index 6989ec23851..a24d2db022a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogMgr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogMgr.java
@@ -36,6 +36,7 @@ import org.apache.doris.common.CaseSensibility;
import org.apache.doris.common.DdlException;
import org.apache.doris.common.ErrorCode;
import org.apache.doris.common.ErrorReport;
+import org.apache.doris.common.FeConstants;
import org.apache.doris.common.PatternMatcher;
import org.apache.doris.common.PatternMatcherWrapper;
import org.apache.doris.common.UserException;
@@ -88,8 +89,6 @@ public class CatalogMgr implements Writable,
GsonPostProcessable {
public static final String METADATA_REFRESH_INTERVAL_SEC =
"metadata_refresh_interval_sec";
public static final String CATALOG_TYPE_PROP = "type";
- private static final String YES = "yes";
-
private final MonitoredReentrantReadWriteLock lock = new
MonitoredReentrantReadWriteLock(true);
@SerializedName(value = "idToCatalog")
@@ -384,12 +383,12 @@ public class CatalogMgr implements Writable,
GsonPostProcessable {
row.add(name);
row.add(catalog.getType());
if (name.equals(currentCtlg)) {
- row.add(YES);
+ row.add("Yes");
} else {
- row.add("");
+ row.add("No");
}
Map<String, String> props = catalog.getProperties();
- String createTime =
props.getOrDefault(CreateCatalogStmt.CREATE_TIME_PROP, "UNRECORDED");
+ String createTime =
props.getOrDefault(ExternalCatalog.CREATE_TIME, FeConstants.null_string);
row.add(createTime);
row.add(TimeUtils.longToTimeString(catalog.getLastUpdateTime()));
row.add(catalog.getComment());
@@ -450,7 +449,10 @@ public class CatalogMgr implements Writable,
GsonPostProcessable {
}
if (catalog.getProperties().size() > 0) {
sb.append(" PROPERTIES (\n");
- sb.append(new PrintableMap<>(catalog.getProperties(), "=",
true, true, true, true));
+ PrintableMap<String, String> printableMap = new
PrintableMap<>(catalog.getProperties(), "=", true, true,
+ true, true);
+
printableMap.setAdditionalHiddenKeys(ExternalCatalog.HIDDEN_PROPERTIES);
+ sb.append(printableMap);
sb.append("\n);");
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java
index b36644cde71..f6e5a570cc9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java
@@ -99,8 +99,14 @@ public abstract class ExternalCatalog
public static final String DORIS_VERSION = "doris.version";
public static final String DORIS_VERSION_VALUE =
Version.DORIS_BUILD_VERSION + "-" + Version.DORIS_BUILD_SHORT_HASH;
public static final String USE_META_CACHE = "use_meta_cache";
+ public static final String CREATE_TIME = "create_time";
public static final boolean DEFAULT_USE_META_CACHE = true;
+ // Properties that should not be shown in the `show create catalog` result
+ public static final Set<String> HIDDEN_PROPERTIES = Sets.newHashSet(
+ CREATE_TIME,
+ USE_META_CACHE);
+
// Unique id of this catalog, will be assigned after catalog is loaded.
@SerializedName(value = "id")
protected long id;
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/datasource/CatalogMgrTest.java
b/fe/fe-core/src/test/java/org/apache/doris/datasource/CatalogMgrTest.java
index fa546cccec9..aa5fa313be3 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/datasource/CatalogMgrTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/datasource/CatalogMgrTest.java
@@ -269,6 +269,8 @@ public class CatalogMgrTest extends TestWithFeService {
List<String> result = showResultSet.getResultRows().get(0);
Assertions.assertEquals("my_catalog", result.get(0));
Assertions.assertTrue(result.get(1).startsWith("\nCREATE CATALOG
`my_catalog`\nCOMMENT \"hms comment\"\n PROPERTIES ("));
+
Assertions.assertTrue(!result.get(1).contains(ExternalCatalog.CREATE_TIME));
+
Assertions.assertTrue(!result.get(1).contains(ExternalCatalog.USE_META_CACHE));
testCatalogMgrPersist();
@@ -355,7 +357,8 @@ public class CatalogMgrTest extends TestWithFeService {
String showCatalogSql = "SHOW CATALOGS";
ShowCatalogStmt showStmt = (ShowCatalogStmt)
parseAndAnalyzeStmt(showCatalogSql);
ShowResultSet showResultSet = mgr.showCatalogs(showStmt,
user2Ctx.getCurrentCatalog().getName());
- Assertions.assertEquals("yes",
showResultSet.getResultRows().get(1).get(3));
+ Assertions.assertEquals("Yes",
showResultSet.getResultRows().get(1).get(3));
+ Assertions.assertEquals("No",
showResultSet.getResultRows().get(0).get(3));
// user2 can switch to hive
SwitchStmt switchHive = (SwitchStmt) parseAndAnalyzeStmt("switch
hive;", user2Ctx);
@@ -365,7 +368,7 @@ public class CatalogMgrTest extends TestWithFeService {
showCatalogSql = "SHOW CATALOGS";
showStmt = (ShowCatalogStmt) parseAndAnalyzeStmt(showCatalogSql);
showResultSet = mgr.showCatalogs(showStmt,
user2Ctx.getCurrentCatalog().getName());
- Assertions.assertEquals("yes",
showResultSet.getResultRows().get(0).get(3));
+ Assertions.assertEquals("Yes",
showResultSet.getResultRows().get(0).get(3));
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]