aokolnychyi commented on code in PR #53450:
URL: https://github.com/apache/spark/pull/53450#discussion_r2615127541
##########
sql/catalyst/src/test/scala/org/apache/spark/sql/connector/catalog/V2TableUtilSuite.scala:
##########
@@ -529,6 +530,86 @@ class V2TableUtilSuite extends SparkFunSuite {
assert(errors.head == "`person`.`attrs`.`value` type has changed from INT
to BIGINT")
}
+ test("validateCapturedColumns - ALLOW_NEW_TOP_LEVEL_FIELDS allows top-level
additions") {
+ val originCols = Array(
+ col("id", LongType, nullable = false),
+ col("name", StringType, nullable = true))
+ val currentCols = Array(
+ col("id", LongType, nullable = false),
+ col("name", StringType, nullable = true),
+ col("age", IntegerType, nullable = true))
+ val table = TestTableWithMetadataSupport("test", currentCols)
+
+ val errors = validateCapturedColumns(table, originCols,
ALLOW_NEW_TOP_LEVEL_FIELDS)
+ assert(errors.isEmpty)
+ }
+
+ test("validateCapturedColumns - ALLOW_NEW_TOP_LEVEL_FIELDS prohibits nested
additions") {
+ val originAddress = StructType(Seq(
+ StructField("street", StringType),
+ StructField("city", StringType)))
+ val originCols = Array(
+ col("id", LongType, nullable = false),
+ col("address", originAddress, nullable = true))
+ val currentAddress = StructType(Seq(
+ StructField("street", StringType),
+ StructField("city", StringType),
+ StructField("zipCode", StringType)))
+ val currentCols = Array(
+ col("id", LongType, nullable = false),
+ col("address", currentAddress, nullable = true))
+ val table = TestTableWithMetadataSupport("test", currentCols)
+
+ val errors = validateCapturedColumns(table, originCols,
ALLOW_NEW_TOP_LEVEL_FIELDS)
+ assert(errors.size == 1)
+ assert(errors.head.contains("`address`.`zipCode` STRING has been added"))
+ }
+
+ test("validateCapturedColumns - ALLOW_NEW_TOP_LEVEL_FIELDS prohibits nested
arr additions") {
Review Comment:
This would make the line longer 100 chars and fail the checks.
##########
sql/catalyst/src/test/scala/org/apache/spark/sql/connector/catalog/V2TableUtilSuite.scala:
##########
@@ -529,6 +530,86 @@ class V2TableUtilSuite extends SparkFunSuite {
assert(errors.head == "`person`.`attrs`.`value` type has changed from INT
to BIGINT")
}
+ test("validateCapturedColumns - ALLOW_NEW_TOP_LEVEL_FIELDS allows top-level
additions") {
+ val originCols = Array(
+ col("id", LongType, nullable = false),
+ col("name", StringType, nullable = true))
+ val currentCols = Array(
+ col("id", LongType, nullable = false),
+ col("name", StringType, nullable = true),
+ col("age", IntegerType, nullable = true))
+ val table = TestTableWithMetadataSupport("test", currentCols)
+
+ val errors = validateCapturedColumns(table, originCols,
ALLOW_NEW_TOP_LEVEL_FIELDS)
+ assert(errors.isEmpty)
+ }
+
+ test("validateCapturedColumns - ALLOW_NEW_TOP_LEVEL_FIELDS prohibits nested
additions") {
+ val originAddress = StructType(Seq(
+ StructField("street", StringType),
+ StructField("city", StringType)))
+ val originCols = Array(
+ col("id", LongType, nullable = false),
+ col("address", originAddress, nullable = true))
+ val currentAddress = StructType(Seq(
+ StructField("street", StringType),
+ StructField("city", StringType),
+ StructField("zipCode", StringType)))
+ val currentCols = Array(
+ col("id", LongType, nullable = false),
+ col("address", currentAddress, nullable = true))
+ val table = TestTableWithMetadataSupport("test", currentCols)
+
+ val errors = validateCapturedColumns(table, originCols,
ALLOW_NEW_TOP_LEVEL_FIELDS)
+ assert(errors.size == 1)
+ assert(errors.head.contains("`address`.`zipCode` STRING has been added"))
+ }
+
+ test("validateCapturedColumns - ALLOW_NEW_TOP_LEVEL_FIELDS prohibits nested
arr additions") {
Review Comment:
This would make the line longer than 100 chars and fail the checks.
--
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]