This is an automated email from the ASF dual-hosted git repository. joemcdonnell pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/impala.git
commit 135a8e76dcee4e7b6e405b879adbf1fcb9d496ad Author: Noemi Pap-Takacs <[email protected]> AuthorDate: Mon Jul 15 12:48:51 2024 +0200 IMPALA-12850: Add better error message for REFRESH iceberg_tbl PARTITION(...) Iceberg table partition keys are not recorded in HMS, because of the various partition transforms that the Iceberg spec makes possible. Therefore Iceberg tables do not support partition-grained refresh. The previous error message was not descriptive; it originated from the different partition handling logic that Impala has for Iceberg tables compared to HDFS tables. Added a more user-friendly, Iceberg-specific error message. Testing: - AnalyzerTest Change-Id: Id4bccf3eac533a00c156d2a5631523684b5e5b9c Reviewed-on: http://gerrit.cloudera.org:8080/21594 Reviewed-by: Impala Public Jenkins <[email protected]> Tested-by: Impala Public Jenkins <[email protected]> --- fe/src/main/java/org/apache/impala/analysis/PartitionSpec.java | 6 ++++++ fe/src/main/java/org/apache/impala/analysis/PartitionSpecBase.java | 4 ++-- fe/src/test/java/org/apache/impala/analysis/AnalyzerTest.java | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/fe/src/main/java/org/apache/impala/analysis/PartitionSpec.java b/fe/src/main/java/org/apache/impala/analysis/PartitionSpec.java index 2ce541c3a..156e67ba9 100644 --- a/fe/src/main/java/org/apache/impala/analysis/PartitionSpec.java +++ b/fe/src/main/java/org/apache/impala/analysis/PartitionSpec.java @@ -26,6 +26,7 @@ import java.util.Set; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.impala.catalog.Column; +import org.apache.impala.catalog.FeIcebergTable; import org.apache.impala.catalog.HdfsTable; import org.apache.impala.catalog.Type; import org.apache.impala.common.AnalysisException; @@ -61,6 +62,11 @@ public class PartitionSpec extends PartitionSpecBase { @Override public void analyze(Analyzer analyzer) throws AnalysisException { super.analyze(analyzer); + // Iceberg partition keys are not stored in HMS. + if (table_ instanceof FeIcebergTable) { + throw new AnalysisException(String.format("Partition clause in this statement is " + + "not supported for Iceberg tables.")); + } // Make sure static partition key values only contain constant exprs. for (PartitionKeyValue kv: partitionSpec_) { diff --git a/fe/src/main/java/org/apache/impala/analysis/PartitionSpecBase.java b/fe/src/main/java/org/apache/impala/analysis/PartitionSpecBase.java index 723b90db8..aca9a47b4 100644 --- a/fe/src/main/java/org/apache/impala/analysis/PartitionSpecBase.java +++ b/fe/src/main/java/org/apache/impala/analysis/PartitionSpecBase.java @@ -83,12 +83,12 @@ public abstract class PartitionSpecBase extends StmtNode { throw new AnalysisException(e.getMessage(), e); } - // Make sure the target table is partitioned. + // Make sure the target table is partitioned. The table format can be either HDFS or + // Iceberg, but only HDFS table partition keys are stored in HMS. if (!isPartitioned(table)) { throw new AnalysisException("Table is not partitioned: " + tableName_); } - // Only HDFS tables are partitioned. Preconditions.checkState(table instanceof FeFsTable); table_ = (FeFsTable) table; nullPartitionKeyValue_ = table_.getNullPartitionKeyValue(); diff --git a/fe/src/test/java/org/apache/impala/analysis/AnalyzerTest.java b/fe/src/test/java/org/apache/impala/analysis/AnalyzerTest.java index aa761a239..397885a12 100644 --- a/fe/src/test/java/org/apache/impala/analysis/AnalyzerTest.java +++ b/fe/src/test/java/org/apache/impala/analysis/AnalyzerTest.java @@ -458,6 +458,9 @@ public class AnalyzerTest extends FrontendTestBase { + "Expected type: 'INT'"); AnalysisError("refresh functional.zipcode_incomes partition (year=2009, month=1)", "Table is not partitioned: functional.zipcode_incomes"); + AnalysisError( + "refresh functional_parquet.iceberg_partitioned partition(action='view')", + "Partition clause in this statement is not supported for Iceberg tables."); } @Test
