public static Stream<Arguments> testAlterColumn() {
    return Stream.of(
        Arguments.of(
            " id COMMENT 'Record id'",
            "",
            Types.StructType.of(
                Types.NestedField.optional(1, "id", Types.LongType.get(), "Record id"),
                Types.NestedField.optional(2, "data", Types.StringType.get()),
                Types.NestedField.optional(3, "ts", Types.TimestampType.withZone()),
                Types.NestedField.optional(4, "count", Types.IntegerType.get()))),
        Arguments.of(
            " count TYPE bigint",
            "",
            Types.StructType.of(
                Types.NestedField.optional(1, "id", Types.LongType.get()),
                Types.NestedField.optional(2, "data", Types.StringType.get()),
                Types.NestedField.optional(3, "ts", Types.TimestampType.withZone()),
                Types.NestedField.optional(4, "count", Types.LongType.get()))),
        Arguments.of(
            " data DROP NOT NULL",
            "",
            Types.StructType.of(
                Types.NestedField.optional(1, "id", Types.LongType.get()),
                Types.NestedField.optional(2, "data", Types.StringType.get()),
                Types.NestedField.optional(3, "ts", Types.TimestampType.withZone()),
                Types.NestedField.optional(4, "count", Types.IntegerType.get()))),
        Arguments.of(" data SET NOT NULL", "", null),
        Arguments.of(
            " count AFTER id",
            "",
            Types.StructType.of(
                Types.NestedField.optional(1, "id", Types.LongType.get()),
                Types.NestedField.optional(4, "count", Types.IntegerType.get()),
                Types.NestedField.optional(2, "data", Types.StringType.get()),
                Types.NestedField.optional(3, "ts", Types.TimestampType.withZone()))),
        Arguments.of(
            " id COMMENT 'Record id'",
            ", PRIMARY KEY(id)",
            Types.StructType.of(
                Types.NestedField.required(1, "id", Types.LongType.get(), "Record id"),
                Types.NestedField.optional(2, "data", Types.StringType.get()),
                Types.NestedField.optional(3, "ts", Types.TimestampType.withZone()),
                Types.NestedField.optional(4, "count", Types.IntegerType.get()))),
        Arguments.of(
            " count TYPE bigint",
            ", PRIMARY KEY(id)",
            Types.StructType.of(
                Types.NestedField.required(1, "id", Types.LongType.get()),
                Types.NestedField.optional(2, "data", Types.StringType.get()),
                Types.NestedField.optional(3, "ts", Types.TimestampType.withZone()),
                Types.NestedField.optional(4, "count", Types.LongType.get()))),
        Arguments.of(
            " data DROP NOT NULL",
            ", PRIMARY KEY(id)",
            Types.StructType.of(
                Types.NestedField.required(1, "id", Types.LongType.get()),
                Types.NestedField.optional(2, "data", Types.StringType.get()),
                Types.NestedField.optional(3, "ts", Types.TimestampType.withZone()),
                Types.NestedField.optional(4, "count", Types.IntegerType.get()))),
        Arguments.of(" data SET NOT NULL", ", PRIMARY KEY(id)", null),
        Arguments.of(
            " count AFTER id",
            ", PRIMARY KEY(id)",
            Types.StructType.of(
                Types.NestedField.required(1, "id", Types.LongType.get()),
                Types.NestedField.optional(4, "count", Types.IntegerType.get()),
                Types.NestedField.optional(2, "data", Types.StringType.get()),
                Types.NestedField.optional(3, "ts", Types.TimestampType.withZone()))));
  }
TODO: are arguments could be simplify? TODO: Test coverage is not enough.
amoro-format-mixed/amoro-mixed-spark/v3.2/amoro-mixed-spark-3.2/src/test/java/org/apache/amoro/spark/test/suites/sql/TestAlterTableColumnSQL.java