riemenschneider commented on code in PR #13697:
URL: https://github.com/apache/iceberg/pull/13697#discussion_r2246944587


##########
core/src/test/java/org/apache/iceberg/TestSchemaUpdate.java:
##########
@@ -779,6 +779,22 @@ public void testAddRequiredColumnCaseInsensitive() {
         .hasMessage("Cannot add column, name already exists: ID");
   }
 
+  @Test
+  public void testAddMultipleRequiredColumnCaseInsensitive() {
+    Schema schema = new Schema(required(1, "id", Types.IntegerType.get()));
+
+    assertThatThrownBy(
+            () ->
+                new SchemaUpdate(schema, 1)
+                    .caseSensitive(false)
+                    .allowIncompatibleChanges()
+                    .addRequiredColumn("data", Types.StringType.get())
+                    .addRequiredColumn("DATA", Types.StringType.get())
+                    .apply())
+        .isInstanceOf(IllegalArgumentException.class)
+        .hasMessage("Cannot build lower case index: data and DATA collide");

Review Comment:
   Naming conflicts with the original schema are detected when the 
`addColumn()` or `addRequiredColumn()` method is called, at which point an 
appropriate exception (`Cannot add column, name already exists: ...`) is 
thrown. Conflicts between added columns are detected when the `apply()` method 
is called. While the error message provides all the necessary information, the 
indexing part is not helpful to the end user. It seems as though some of the 
relevant checks are duplicated.
   
   Ideally, the `addColumn()` method would fail at this point with an 
appropriate error message, since all the necessary information is already 
available. In this case, the relevant check in the `apply()` method could be 
skipped entirely (or kept as a safety net). However, this would definitely 
require a significant change to the existing code.



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