This is an automated email from the ASF dual-hosted git repository. michaelsmith pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/impala.git
commit 753dd105838b4aaf96597dddf26905f7f9cb1434 Author: Tamas Mate <[email protected]> AuthorDate: Tue Jun 6 12:43:40 2023 +0200 IMPALA-12186: Add table property to Iceberg LOAD DATA tmp tables Iceberg LOAD DATA creates a temporary table during execution. To help Apache Atlas identify these tables properly 'TEMPORARY' table property was added to the tmp table's CREATE statement in this commit. Testing: - Manually checked the presence of the table property Change-Id: Ic0985950672a461894e85cdb3387936d10769690 Reviewed-on: http://gerrit.cloudera.org:8080/20015 Tested-by: Impala Public Jenkins <[email protected]> Reviewed-by: Zoltan Borok-Nagy <[email protected]> --- .../org/apache/impala/analysis/LoadDataStmt.java | 1 + .../apache/impala/analysis/QueryStringBuilder.java | 23 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/fe/src/main/java/org/apache/impala/analysis/LoadDataStmt.java b/fe/src/main/java/org/apache/impala/analysis/LoadDataStmt.java index 479ba9142..a828d41b8 100644 --- a/fe/src/main/java/org/apache/impala/analysis/LoadDataStmt.java +++ b/fe/src/main/java/org/apache/impala/analysis/LoadDataStmt.java @@ -272,6 +272,7 @@ public class LoadDataStmt extends StatementBase { + "format, file '%s' has '%s' magic string.", filePathForLike, magicString)); } createTableQueryBuilder.tableLocation("%s"); + createTableQueryBuilder.addTableProperty("TEMPORARY", "true"); } catch (IOException e) { throw new AnalysisException("Failed to generate CREATE TABLE subquery " + "statement. ", e); diff --git a/fe/src/main/java/org/apache/impala/analysis/QueryStringBuilder.java b/fe/src/main/java/org/apache/impala/analysis/QueryStringBuilder.java index 05131b69e..6515bf872 100644 --- a/fe/src/main/java/org/apache/impala/analysis/QueryStringBuilder.java +++ b/fe/src/main/java/org/apache/impala/analysis/QueryStringBuilder.java @@ -17,6 +17,10 @@ package org.apache.impala.analysis; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + /** * This class standardizes the query string building process. At this point only used for * child query creation for Iceberg LOAD DATA INPATH queries. Each inner class is @@ -33,8 +37,11 @@ public class QueryStringBuilder { private String likeLocation_; private String storedAsFileFormat_; private String tableLocation_; + private List<String> tableProperties_; - public Create() {} + public Create() { + tableProperties_ = new ArrayList<String>(); + } public Create table(String tableName, Boolean external) { tableName_ = tableName; @@ -59,6 +66,11 @@ public class QueryStringBuilder { return this; } + public Create addTableProperty(String key, String value) { + tableProperties_.add("'" + key + "'='" + value + "'"); + return this; + } + public String build() { StringBuilder builder = new StringBuilder(); if (!external_) { @@ -72,6 +84,15 @@ public class QueryStringBuilder { } builder.append("STORED AS " + storedAsFileFormat_ + " "); builder.append("LOCATION '" + tableLocation_ + "'"); + if (!tableProperties_.isEmpty()) { + builder.append(" TBLPROPERTIES ("); + Iterator<String> it = tableProperties_.iterator(); + while(it.hasNext()) { + builder.append(it.next()); + if(it.hasNext()) builder.append(", "); + } + builder.append(")"); + } return builder.toString(); } }
