Copilot commented on code in PR #64686:
URL: https://github.com/apache/doris/pull/64686#discussion_r3451002226


##########
fe/fe-core/src/test/java/org/apache/doris/catalog/ColumnTest.java:
##########
@@ -157,6 +157,53 @@ public void testSchemaChangeArrayToArray() throws 
DdlException {
         oldColumn.checkSchemaChangeAllowed(newColumn);
     }
 
+    @Test
+    public void testSchemaChangeArrayDecimalPrecisionPromotion() throws 
DdlException {
+        Column oldColumn = new Column("a", 
ArrayType.create(ScalarType.createDecimalV3Type(5, 2), true),
+                false, null, true, "0", "");
+        Column newColumn = new Column("a", 
ArrayType.create(ScalarType.createDecimalV3Type(10, 2), true),
+                false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+    }
+
+    @Test
+    public void testSchemaChangeMapDecimalValuePrecisionPromotion() throws 
DdlException {
+        Column oldColumn = new Column("a", new MapType(Type.INT, 
ScalarType.createDecimalV3Type(5, 2)),
+                false, null, true, "0", "");
+        Column newColumn = new Column("a", new MapType(Type.INT, 
ScalarType.createDecimalV3Type(10, 2)),
+                false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+    }
+
+    @Test
+    public void testSchemaChangeStructDecimalFieldPrecisionPromotion() throws 
DdlException {
+        Column oldColumn = new Column("a", new StructType(new StructField("d", 
ScalarType.createDecimalV3Type(5, 2))),
+                false, null, true, "0", "");
+        Column newColumn = new Column("a", new StructType(new StructField("d", 
ScalarType.createDecimalV3Type(10, 2))),
+                false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+    }
+
+    @Test(expected = DdlException.class)
+    public void testSchemaChangeArrayDecimalPrecisionNarrowing() throws 
DdlException {
+        Column oldColumn = new Column("a", 
ArrayType.create(ScalarType.createDecimalV3Type(10, 2), true),
+                false, null, true, "0", "");
+        Column newColumn = new Column("a", 
ArrayType.create(ScalarType.createDecimalV3Type(5, 2), true),
+                false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+        Assert.fail("No exception throws.");

Review Comment:
   The failure message is grammatically incorrect; consider changing to a 
clearer message like \"Expected exception was not thrown.\" (applies to both 
occurrences).



##########
fe/fe-core/src/test/java/org/apache/doris/catalog/ColumnTest.java:
##########
@@ -157,6 +157,53 @@ public void testSchemaChangeArrayToArray() throws 
DdlException {
         oldColumn.checkSchemaChangeAllowed(newColumn);
     }
 
+    @Test
+    public void testSchemaChangeArrayDecimalPrecisionPromotion() throws 
DdlException {
+        Column oldColumn = new Column("a", 
ArrayType.create(ScalarType.createDecimalV3Type(5, 2), true),
+                false, null, true, "0", "");
+        Column newColumn = new Column("a", 
ArrayType.create(ScalarType.createDecimalV3Type(10, 2), true),
+                false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+    }
+
+    @Test
+    public void testSchemaChangeMapDecimalValuePrecisionPromotion() throws 
DdlException {
+        Column oldColumn = new Column("a", new MapType(Type.INT, 
ScalarType.createDecimalV3Type(5, 2)),
+                false, null, true, "0", "");
+        Column newColumn = new Column("a", new MapType(Type.INT, 
ScalarType.createDecimalV3Type(10, 2)),
+                false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+    }
+
+    @Test
+    public void testSchemaChangeStructDecimalFieldPrecisionPromotion() throws 
DdlException {
+        Column oldColumn = new Column("a", new StructType(new StructField("d", 
ScalarType.createDecimalV3Type(5, 2))),
+                false, null, true, "0", "");
+        Column newColumn = new Column("a", new StructType(new StructField("d", 
ScalarType.createDecimalV3Type(10, 2))),
+                false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+    }
+
+    @Test(expected = DdlException.class)
+    public void testSchemaChangeArrayDecimalPrecisionNarrowing() throws 
DdlException {
+        Column oldColumn = new Column("a", 
ArrayType.create(ScalarType.createDecimalV3Type(10, 2), true),
+                false, null, true, "0", "");
+        Column newColumn = new Column("a", 
ArrayType.create(ScalarType.createDecimalV3Type(5, 2), true),
+                false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+        Assert.fail("No exception throws.");
+    }
+
+    @Test(expected = DdlException.class)
+    public void testSchemaChangeArrayDecimalScaleChange() throws DdlException {
+        Column oldColumn = new Column("a", 
ArrayType.create(ScalarType.createDecimalV3Type(5, 2), true),
+                false, null, true, "0", "");
+        Column newColumn = new Column("a", 
ArrayType.create(ScalarType.createDecimalV3Type(10, 3), true),
+                false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+        Assert.fail("No exception throws.");

Review Comment:
   The failure message is grammatically incorrect; consider changing to a 
clearer message like \"Expected exception was not thrown.\" (applies to both 
occurrences).



##########
fe/fe-core/src/test/java/org/apache/doris/catalog/ColumnTest.java:
##########
@@ -157,6 +157,53 @@ public void testSchemaChangeArrayToArray() throws 
DdlException {
         oldColumn.checkSchemaChangeAllowed(newColumn);
     }
 
+    @Test
+    public void testSchemaChangeArrayDecimalPrecisionPromotion() throws 
DdlException {
+        Column oldColumn = new Column("a", 
ArrayType.create(ScalarType.createDecimalV3Type(5, 2), true),
+                false, null, true, "0", "");
+        Column newColumn = new Column("a", 
ArrayType.create(ScalarType.createDecimalV3Type(10, 2), true),
+                false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+    }
+
+    @Test
+    public void testSchemaChangeMapDecimalValuePrecisionPromotion() throws 
DdlException {
+        Column oldColumn = new Column("a", new MapType(Type.INT, 
ScalarType.createDecimalV3Type(5, 2)),
+                false, null, true, "0", "");
+        Column newColumn = new Column("a", new MapType(Type.INT, 
ScalarType.createDecimalV3Type(10, 2)),
+                false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+    }
+
+    @Test
+    public void testSchemaChangeStructDecimalFieldPrecisionPromotion() throws 
DdlException {
+        Column oldColumn = new Column("a", new StructType(new StructField("d", 
ScalarType.createDecimalV3Type(5, 2))),
+                false, null, true, "0", "");
+        Column newColumn = new Column("a", new StructType(new StructField("d", 
ScalarType.createDecimalV3Type(10, 2))),
+                false, null, true, "0", "");
+        oldColumn.checkSchemaChangeAllowed(newColumn);
+    }

Review Comment:
   The new validation behavior applies to array item types, map key/value 
types, and struct fields, but negative coverage (narrowing and scale-change 
rejection) is currently only added for arrays. To better pin down the shared 
nested-validation path, add analogous `@Test(expected = DdlException.class)` 
cases for map value and struct field for (1) precision narrowing and (2) scale 
change.



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