This is an automated email from the ASF dual-hosted git repository.
krisztiankasa pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new ac2019c2adc HIVE-27161: MetaException when executing CTAS query in
Druid storage handler (Krisztian Kasa, reviewed by Denys Kuzmenko)
ac2019c2adc is described below
commit ac2019c2adcd7ca5da8cadc885b80bdc94fc225b
Author: Krisztian Kasa <[email protected]>
AuthorDate: Thu Dec 21 13:40:46 2023 +0100
HIVE-27161: MetaException when executing CTAS query in Druid storage
handler (Krisztian Kasa, reviewed by Denys Kuzmenko)
---
.../org/apache/iceberg/mr/hive/HiveIcebergStorageHandler.java | 6 ++++++
.../org/apache/hadoop/hive/ql/metadata/HiveStorageHandler.java | 9 ++++++++-
.../java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 3 ++-
3 files changed, 16 insertions(+), 2 deletions(-)
diff --git
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergStorageHandler.java
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergStorageHandler.java
index 6e9e9870cfe..985e7d48f61 100644
---
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergStorageHandler.java
+++
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergStorageHandler.java
@@ -73,6 +73,7 @@ import org.apache.hadoop.hive.ql.QueryState;
import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
import org.apache.hadoop.hive.ql.ddl.table.AbstractAlterTableDesc;
import org.apache.hadoop.hive.ql.ddl.table.AlterTableType;
+import org.apache.hadoop.hive.ql.ddl.table.create.CreateTableDesc;
import org.apache.hadoop.hive.ql.ddl.table.create.like.CreateTableLikeDesc;
import
org.apache.hadoop.hive.ql.ddl.table.misc.properties.AlterTableSetPropertiesDesc;
import org.apache.hadoop.hive.ql.exec.ColumnInfo;
@@ -1647,6 +1648,11 @@ public class HiveIcebergStorageHandler implements
HiveStoragePredicateHandler, H
}
}
+ @Override
+ public void setTableLocationForCTAS(CreateTableDesc desc, String location) {
+ desc.setLocation(location);
+ }
+
@Override
public Map<String, String>
getNativeProperties(org.apache.hadoop.hive.ql.metadata.Table table) {
Table origTable = IcebergTableUtil.getTable(conf, table.getTTable());
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveStorageHandler.java
b/ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveStorageHandler.java
index 9fe61c0bdc3..e9a0d139e90 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveStorageHandler.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveStorageHandler.java
@@ -24,7 +24,6 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collections;
import org.apache.hadoop.conf.Configurable;
-import org.apache.hadoop.hive.common.TableName;
import org.apache.hadoop.hive.common.classification.InterfaceAudience;
import org.apache.hadoop.hive.common.classification.InterfaceStability;
import org.apache.hadoop.hive.common.type.SnapshotContext;
@@ -43,6 +42,7 @@ import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
import org.apache.hadoop.hive.ql.ErrorMsg;
import org.apache.hadoop.hive.ql.ddl.table.AbstractAlterTableDesc;
import org.apache.hadoop.hive.ql.ddl.table.AlterTableType;
+import org.apache.hadoop.hive.ql.ddl.table.create.CreateTableDesc;
import org.apache.hadoop.hive.ql.ddl.table.create.like.CreateTableLikeDesc;
import org.apache.hadoop.hive.ql.exec.ColumnInfo;
import org.apache.hadoop.hive.ql.hooks.WriteEntity;
@@ -378,6 +378,13 @@ public interface HiveStorageHandler extends Configurable {
Map<String, String> origParams) {
}
+ /**
+ * Sets tables physical location at create table as select.
+ * Some storage handlers requires specifying the location of tables others
generates it internally.
+ */
+ default void setTableLocationForCTAS(CreateTableDesc desc, String location) {
+ }
+
/**
* Extract the native properties of the table which aren't stored in the HMS
* @param table the table
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 2f386931957..c1c04526bcf 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -7949,7 +7949,8 @@ public class SemanticAnalyzer extends
BaseSemanticAnalyzer {
}
} else {
if (tblDesc.isCTAS() && tblDesc.getStorageHandler() != null) {
- tblDesc.setLocation(getCtasOrCMVLocation(tblDesc, viewDesc,
createTableUseSuffix).toString());
+ tblDesc.toTable(conf).getStorageHandler().setTableLocationForCTAS(
+ tblDesc, getCtasOrCMVLocation(tblDesc, viewDesc,
false).toString());
}
tableDescriptor = PlanUtils.getTableDesc(tblDesc, cols, colTypes);
}