szehon-ho commented on code in PR #10020:
URL: https://github.com/apache/iceberg/pull/10020#discussion_r1635600379


##########
api/src/main/java/org/apache/iceberg/Schema.java:
##########
@@ -507,4 +539,48 @@ public String toString() {
                 .map(this::identifierFieldToString)
                 .collect(Collectors.toList())));
   }
+
+  /**
+   * Fields identified as 'Metadata Fields' will have their field ID's 
reassigned.
+   *
+   * @return map of original to reassigned field ids
+   */
+  public Map<Integer, Integer> idsToReassigned() {
+    return idsToReassigned != null ? idsToReassigned : Collections.emptyMap();
+  }
+
+  /**
+   * All ids of metadata fields are reassigned.
+   *
+   * @return map of reassigned to original field ids of metadata fields
+   */
+  public Map<Integer, Integer> idsToOriginal() {
+    return idsToOriginal != null ? idsToOriginal : Maps.newHashMap();
+  }
+
+  private List<NestedField> reassignMetadataFieldIds(
+      List<NestedField> columns, Set<Integer> metadataFieldIds) {
+    Set<Integer> usedIds =
+        Sets.difference(TypeUtil.indexById(StructType.of(columns)).keySet(), 
metadataFieldIds)
+            .immutableCopy();
+    AtomicInteger nextId = new AtomicInteger();
+
+    Type res =
+        TypeUtil.assignIds(

Review Comment:
   Im not entirely sure I get your use case.  But , we have two lists 
conceptually:  idsToReassign, usedIds.
   
   We go through all the fields, and if find an idToReassign, we just find the 
next value that is not in usedIds.
   
   Are you asking, what if we both have idToReassign = usedIds = (1000).  I 
think its ok, it will just pick the next one 1001, (even though it didnt have 
to..)



-- 
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: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to