Initial-neko commented on a change in pull request #3614:
URL: https://github.com/apache/iceberg/pull/3614#discussion_r767218961



##########
File path: 
flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalog.java
##########
@@ -400,6 +400,24 @@ void createIcebergTable(ObjectPath tablePath, 
CatalogBaseTable table, boolean ig
     }
   }
 
+  // skip the AbstractConstraint comparison
+  public boolean schemaCompare(org.apache.flink.table.api.Schema rawSchema,
+                               org.apache.flink.table.api.Schema newSchema) {
+
+    org.apache.flink.table.api.Schema.UnresolvedPrimaryKey rawPK = 
rawSchema.getPrimaryKey().orElse(null);
+
+    org.apache.flink.table.api.Schema.UnresolvedPrimaryKey newPK = 
newSchema.getPrimaryKey().orElse(null);
+    if ((rawPK == null && newPK != null) || (rawPK != null && newPK == null)) {
+      return false;
+    }
+    boolean exp = rawSchema.getColumns().equals(newSchema.getColumns()) &&
+            
rawSchema.getWatermarkSpecs().equals(newSchema.getWatermarkSpecs());
+    boolean exp2 = rawPK != null && newPK != null ?
+            rawPK.getColumnNames().equals(newPK.getColumnNames())
+            : true;

Review comment:
       I also think it needs to be retained because it is easier to understand
   if(rawPK == null && newPK == null)   this situation always return true  
   and other situation needs to calculate 
rawPK.getColumnNames().equals(newPK.getColumnNames()) 
   via 
   ```
   if ((rawPK == null && newPK != null) || (rawPK != null && newPK == null)) {
         return false;
       }
   ```
   maybe compiler know that rawPK and newPK must be double null or not
   So When the code reaches here, if rawPK is null, newPK must be null
   exp2 can simplify like this
   ```
   exp2 = rawPK != null?
               rawPK.getColumnNames().equals(newPK.getColumnNames())
               : true;
   ```
   boolean exp2 = rawPK == null || 
rawPK.getColumnNames().equals(newPK.getColumnNames());
   this result is ok :)




-- 
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]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to