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();
     }
   }

Reply via email to