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]