FANNG1 commented on code in PR #4349:
URL: https://github.com/apache/gravitino/pull/4349#discussion_r1706347712


##########
catalogs/catalog-lakehouse-paimon/src/main/java/org/apache/gravitino/catalog/lakehouse/paimon/utils/TableOpsUtils.java:
##########
@@ -18,20 +18,125 @@
  */
 package org.apache.gravitino.catalog.lakehouse.paimon.utils;
 
+import static 
org.apache.gravitino.catalog.lakehouse.paimon.PaimonTablePropertiesMetadata.COMMENT;
+import static 
org.apache.gravitino.catalog.lakehouse.paimon.utils.TypeUtils.toPaimonType;
+import static org.apache.paimon.schema.SchemaChange.addColumn;
+import static org.apache.paimon.schema.SchemaChange.dropColumn;
+import static org.apache.paimon.schema.SchemaChange.removeOption;
+import static org.apache.paimon.schema.SchemaChange.renameColumn;
+import static org.apache.paimon.schema.SchemaChange.setOption;
+import static org.apache.paimon.schema.SchemaChange.updateColumnComment;
+import static org.apache.paimon.schema.SchemaChange.updateColumnNullability;
+import static org.apache.paimon.schema.SchemaChange.updateColumnPosition;
+import static org.apache.paimon.schema.SchemaChange.updateColumnType;
+import static org.apache.paimon.schema.SchemaChange.updateComment;
+
+import com.google.common.base.Joiner;
 import com.google.common.base.Preconditions;
+import java.util.ArrayList;
+import java.util.List;
 import org.apache.gravitino.catalog.lakehouse.paimon.ops.PaimonCatalogOps;
 import org.apache.gravitino.rel.Column;
+import org.apache.gravitino.rel.TableChange;
+import org.apache.gravitino.rel.TableChange.AddColumn;
+import org.apache.gravitino.rel.TableChange.After;
+import org.apache.gravitino.rel.TableChange.ColumnChange;
+import org.apache.gravitino.rel.TableChange.ColumnPosition;
+import org.apache.gravitino.rel.TableChange.Default;
+import org.apache.gravitino.rel.TableChange.DeleteColumn;
+import org.apache.gravitino.rel.TableChange.First;
+import org.apache.gravitino.rel.TableChange.RemoveProperty;
+import org.apache.gravitino.rel.TableChange.RenameColumn;
+import org.apache.gravitino.rel.TableChange.SetProperty;
+import org.apache.gravitino.rel.TableChange.UpdateColumnComment;
+import org.apache.gravitino.rel.TableChange.UpdateColumnNullability;
+import org.apache.gravitino.rel.TableChange.UpdateColumnPosition;
+import org.apache.gravitino.rel.TableChange.UpdateColumnType;
+import org.apache.gravitino.rel.TableChange.UpdateComment;
 import org.apache.gravitino.rel.expressions.Expression;
+import org.apache.paimon.schema.SchemaChange;
+import org.apache.paimon.schema.SchemaChange.Move;
 
 /** Utilities of {@link PaimonCatalogOps} to support table operation. */
 public class TableOpsUtils {
 
+  public static final Joiner DOT = Joiner.on(".");
+
   public static void checkColumnCapability(
       String fieldName, Expression defaultValue, boolean autoIncrement) {
     checkColumnDefaultValue(fieldName, defaultValue);
     checkColumnAutoIncrement(fieldName, autoIncrement);
   }
 
+  public static List<SchemaChange> buildSchemaChanges(TableChange... 
tableChanges)
+      throws UnsupportedOperationException {
+    List<SchemaChange> schemaChanges = new ArrayList<>();
+    for (TableChange tableChange : tableChanges) {
+      schemaChanges.add(buildSchemaChange(tableChange));
+    }
+    return schemaChanges;
+  }
+
+  public static SchemaChange buildSchemaChange(TableChange tableChange)
+      throws UnsupportedOperationException {
+    if (tableChange instanceof ColumnChange) {
+

Review Comment:
   please remove empty line



##########
catalogs/catalog-lakehouse-paimon/src/main/java/org/apache/gravitino/catalog/lakehouse/paimon/PaimonTablePropertiesMetadata.java:
##########
@@ -35,15 +35,26 @@
 public class PaimonTablePropertiesMetadata extends BasePropertiesMetadata {
 
   public static final String COMMENT = "comment";
-  public static final String CREATOR = "creator";
+  public static final String OWNER = "owner";
+  public static final String BUCKET_KEY = "bucket-key";
+  public static final String MERGE_ENGINE = "merge-engine";
+  public static final String SEQUENCE_FIELD = "sequence.field";
+  public static final String ROWKIND_FIELD = "rowkind.field";
+  public static final String PRIMARY_KEY = "primary-key";
+  public static final String PARTITION = "partition";
 
   private static final Map<String, PropertyEntry<?>> PROPERTIES_METADATA;
 
   static {
     List<PropertyEntry<?>> propertyEntries =
         ImmutableList.of(
-            stringReservedPropertyEntry(COMMENT, "The table comment", true),

Review Comment:
   why remove COMMENT and CREATOR?



##########
catalogs/catalog-lakehouse-paimon/src/main/java/org/apache/gravitino/catalog/lakehouse/paimon/utils/TableOpsUtils.java:
##########
@@ -46,4 +153,39 @@ private static void checkColumnAutoIncrement(String 
fieldName, boolean autoIncre
         String.format(
             "Paimon does not support auto increment column. Illegal column: 
%s.", fieldName));
   }
+
+  private static void checkNestedColumn(String[] fieldNames) {
+    Preconditions.checkArgument(
+        fieldNames.length == 1,
+        String.format(
+            "Paimon does not support update nested column. Illegal column: 
%s.",
+            fieldName(fieldNames)));
+  }
+
+  public static String[] fieldName(String fieldName) {
+    return new String[] {fieldName};
+  }
+
+  public static String fieldName(String[] fieldName) {
+    return DOT.join(fieldName);
+  }
+
+  private static String fieldName(ColumnChange columnChange) {
+    return fieldName(columnChange.fieldName());
+  }
+
+  private static Move move(String fieldName, ColumnPosition columnPosition)
+      throws UnsupportedOperationException {
+    if (columnPosition instanceof After) {
+      return Move.after(fieldName, ((After) columnPosition).getColumn());
+    } else if (columnPosition instanceof Default) {
+      return null;

Review Comment:
   Iceberg did some logic when updateColumnPosition is `default`, but this 
seems ridiculous after another thought, tracked in #4412 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to