This is an automated email from the ASF dual-hosted git repository.
yiguolei 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 23b21fcebfd [bugfix](hms)add default value check for hms catalog with
dlf (#40336) (#40723)
23b21fcebfd is described below
commit 23b21fcebfde3f305d7e4efd310cb5fadc5e9d90
Author: wuwenchi <[email protected]>
AuthorDate: Thu Sep 12 19:19:47 2024 +0800
[bugfix](hms)add default value check for hms catalog with dlf (#40336)
(#40723)
## Proposed changes
bp #40336
---
.../java/org/apache/doris/common/util/Util.java | 7 ++-
.../doris/datasource/hive/HiveMetadataOps.java | 13 +++++-
.../hive/ddl/test_hive_database.groovy | 54 ++++++++++++++++++++++
3 files changed, 72 insertions(+), 2 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java
b/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java
index 050ab7774e0..baedf0443ca 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java
@@ -629,7 +629,12 @@ public class Util {
String rootCause = "unknown";
Throwable p = t;
while (p != null) {
- rootCause = p.getClass().getName() + ": " + p.getMessage();
+ String message = p.getMessage();
+ if (message == null) {
+ rootCause = p.getClass().getName();
+ } else {
+ rootCause = p.getClass().getName() + ": " + p.getMessage();
+ }
p = p.getCause();
}
return rootCause;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetadataOps.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetadataOps.java
index e855affc31a..5ec49c380b7 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetadataOps.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetadataOps.java
@@ -24,6 +24,7 @@ import org.apache.doris.analysis.DropDbStmt;
import org.apache.doris.analysis.DropTableStmt;
import org.apache.doris.analysis.HashDistributionDesc;
import org.apache.doris.analysis.PartitionDesc;
+import org.apache.doris.catalog.Column;
import org.apache.doris.catalog.Env;
import org.apache.doris.catalog.JdbcResource;
import org.apache.doris.catalog.PartitionType;
@@ -38,6 +39,7 @@ import org.apache.doris.datasource.ExternalDatabase;
import org.apache.doris.datasource.jdbc.client.JdbcClient;
import org.apache.doris.datasource.jdbc.client.JdbcClientConfig;
import org.apache.doris.datasource.operations.ExternalMetadataOps;
+import org.apache.doris.datasource.property.constants.HMSProperties;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
@@ -192,6 +194,15 @@ public class HiveMetadataOps implements
ExternalMetadataOps {
}
}
+ Map<String, String> properties = catalog.getProperties();
+ if (properties.containsKey(HMSProperties.HIVE_METASTORE_TYPE)
+ &&
properties.get(HMSProperties.HIVE_METASTORE_TYPE).equals(HMSProperties.DLF_TYPE))
{
+ for (Column column : stmt.getColumns()) {
+ if (column.hasDefaultValue()) {
+ throw new UserException("Default values are not
supported with `DLF` catalog.");
+ }
+ }
+ }
String comment = stmt.getComment();
Optional<String> location =
Optional.ofNullable(props.getOrDefault(LOCATION_URI_KEY, null));
HiveTableMetadata hiveTableMeta;
@@ -285,7 +296,7 @@ public class HiveMetadataOps implements ExternalMetadataOps
{
@Override
public boolean databaseExist(String dbName) {
- return listDatabaseNames().contains(dbName);
+ return listDatabaseNames().contains(dbName.toLowerCase());
}
@Override
diff --git
a/regression-test/suites/external_table_p0/hive/ddl/test_hive_database.groovy
b/regression-test/suites/external_table_p0/hive/ddl/test_hive_database.groovy
new file mode 100644
index 00000000000..efa92dac8da
--- /dev/null
+++
b/regression-test/suites/external_table_p0/hive/ddl/test_hive_database.groovy
@@ -0,0 +1,54 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("test_hive_database",
"p0,external,hive,external_docker,external_docker_hive") {
+ String enabled = context.config.otherConfigs.get("enableHiveTest")
+ if (enabled != null && enabled.equalsIgnoreCase("true")) {
+ String externalEnvIp = context.config.otherConfigs.get("externalEnvIp")
+ String hms_port = context.config.otherConfigs.get("hive2HmsPort")
+ String hdfs_port = context.config.otherConfigs.get("hive2HdfsPort")
+ String catalog_name = "test_hive_database"
+ String prefix = catalog_name
+
+ sql """drop catalog if exists ${catalog_name};"""
+
+ sql """
+ create catalog if not exists ${catalog_name} properties (
+ 'type'='hms',
+ 'hive.metastore.uris' =
'thrift://${externalEnvIp}:${hms_port}',
+ 'fs.defaultFS' = 'hdfs://${externalEnvIp}:${hdfs_port}',
+ 'use_meta_cache' = 'true'
+ );
+ """
+
+ // Database names are case insensitive
+ logger.info("catalog " + catalog_name + " created")
+ sql """switch ${catalog_name};"""
+ logger.info("switched to catalog " + catalog_name)
+
+ sql """ drop database if exists ${prefix}_db1 """
+ sql """ create database ${prefix}_Db1 """
+ def ret1 = sql """ show databases """
+ assertTrue(ret1.toString().contains("${prefix}_db1"))
+
+ test {
+ sql """ create database ${prefix}_dB1 """
+ exception "database exists"
+ }
+ sql """ drop database if exists ${prefix}_db1 """
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]