[ 
https://issues.apache.org/jira/browse/HIVE-26385?focusedWorklogId=792239&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-792239
 ]

ASF GitHub Bot logged work on HIVE-26385:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 18/Jul/22 16:42
            Start Date: 18/Jul/22 16:42
    Worklog Time Spent: 10m 
      Work Description: pvary commented on code in PR #3430:
URL: https://github.com/apache/hive/pull/3430#discussion_r923589002


##########
ql/src/java/org/apache/hadoop/hive/ql/parse/UpdateDeleteSemanticAnalyzer.java:
##########
@@ -285,30 +278,11 @@ private void analyzeSplitUpdate(ASTNode tree, Table 
mTable, ASTNode tabNameNode)
     rewrittenQueryStr.append("(SELECT ");
 
     boolean nonNativeAcid = AcidUtils.isNonNativeAcidTable(mTable);
-    int columnOffset;
-    List<String> deleteValues;
-    if (nonNativeAcid) {
-      List<FieldSchema> acidSelectColumns = 
mTable.getStorageHandler().acidSelectColumns(mTable, operation);
-      deleteValues = new ArrayList<>(acidSelectColumns.size());
-      for (FieldSchema fieldSchema : acidSelectColumns) {
-        String identifier = HiveUtils.unparseIdentifier(fieldSchema.getName(), 
this.conf);
-        rewrittenQueryStr.append(identifier).append(" AS ");
-        String prefixedIdentifier = HiveUtils.unparseIdentifier(DELETE_PREFIX 
+ fieldSchema.getName(), this.conf);
-        rewrittenQueryStr.append(prefixedIdentifier);
-        rewrittenQueryStr.append(",");
-        deleteValues.add(String.format("%s.%s", SUB_QUERY_ALIAS, 
prefixedIdentifier));
-      }
-
-      columnOffset = acidSelectColumns.size();
-    } else {
-      rewrittenQueryStr.append("ROW__ID,");
-      deleteValues = new ArrayList<>(1 + mTable.getPartCols().size());
-      deleteValues.add(SUB_QUERY_ALIAS + ".ROW__ID");
-      for (FieldSchema fieldSchema : mTable.getPartCols()) {
-        deleteValues.add(SUB_QUERY_ALIAS + "." + 
HiveUtils.unparseIdentifier(fieldSchema.getName(), conf));
-      }
-      columnOffset = 1;
-    }
+    ColumnAppender columnAppender = nonNativeAcid ? new 
NonNativeAcidColumnAppender(mTable, conf, SUB_QUERY_ALIAS) :
+            new NativeAcidColumnAppender(mTable, conf, SUB_QUERY_ALIAS);

Review Comment:
   Would it worth to create an util method for this?
   ```
   pubic static ColumnAppender AcidUtils.getAppender(mTable);
   ```





Issue Time Tracking
-------------------

    Worklog Id:     (was: 792239)
    Time Spent: 0.5h  (was: 20m)

> Iceberg integration: Implement merge into iceberg table
> -------------------------------------------------------
>
>                 Key: HIVE-26385
>                 URL: https://issues.apache.org/jira/browse/HIVE-26385
>             Project: Hive
>          Issue Type: Improvement
>          Components: File Formats
>            Reporter: Krisztian Kasa
>            Assignee: Krisztian Kasa
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 4.0.0
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> {code}
> create external table target_ice(a int, b string, c int) partitioned by spec 
> (bucket(16, a), truncate(3, b)) stored by iceberg stored as orc tblproperties 
> ('format-version'='2');
> create table source(a int, b string, c int);
> ...
> merge into target_ice as t using source src ON t.a = src.a
> when matched and t.a > 100 THEN DELETE
> when matched then update set b = 'Merged', c = t.c + 10
> when not matched then insert values (src.a, src.b, src.c);
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to