This is an automated email from the ASF dual-hosted git repository.

wanghailin pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git


The following commit(s) were added to refs/heads/dev by this push:
     new 16cf632d3e [Fix][API] Fix column length can not be long (#8039)
16cf632d3e is described below

commit 16cf632d3e59343be62fa498a9f0b0f658a382fe
Author: Jia Fan <[email protected]>
AuthorDate: Thu Nov 14 10:09:44 2024 +0800

    [Fix][API] Fix column length can not be long (#8039)
---
 .../seatunnel/api/table/catalog/schema/ReadonlyConfigParser.java    | 6 ++----
 .../seatunnel/api/table/catalog/schema/TableSchemaOptions.java      | 6 +++---
 .../api/table/catalog/schema/ReadonlyConfigParserTest.java          | 5 +++--
 seatunnel-api/src/test/resources/conf/catalog/schema_column.conf    | 2 ++
 .../seatunnel/assertion/rule/AssertCatalogTableRuleParser.java      | 2 +-
 5 files changed, 11 insertions(+), 10 deletions(-)

diff --git 
a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParser.java
 
b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParser.java
index ab85455b34..8cbea1de83 100644
--- 
a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParser.java
+++ 
b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParser.java
@@ -131,14 +131,12 @@ public class ReadonlyConfigParser implements 
TableSchemaParser<ReadonlyConfig> {
                                                                 new 
IllegalArgumentException(
                                                                         
"schema.columns.* config need option [type], please correct your config 
first"));
 
-                                Integer columnLength =
+                                Long columnLength =
                                         columnConfig.get(
                                                 
TableSchemaOptions.ColumnOptions.COLUMN_LENGTH);
-
                                 Integer columnScale =
                                         columnConfig.get(
                                                 
TableSchemaOptions.ColumnOptions.COLUMN_SCALE);
-
                                 Boolean nullable =
                                         
columnConfig.get(TableSchemaOptions.ColumnOptions.NULLABLE);
                                 Object defaultValue =
@@ -149,7 +147,7 @@ public class ReadonlyConfigParser implements 
TableSchemaParser<ReadonlyConfig> {
                                 return PhysicalColumn.of(
                                         name,
                                         seaTunnelDataType,
-                                        Long.valueOf(columnLength),
+                                        columnLength,
                                         columnScale,
                                         nullable,
                                         defaultValue,
diff --git 
a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/schema/TableSchemaOptions.java
 
b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/schema/TableSchemaOptions.java
index 9ede187ea9..794dbe833c 100644
--- 
a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/schema/TableSchemaOptions.java
+++ 
b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/schema/TableSchemaOptions.java
@@ -92,10 +92,10 @@ public class TableSchemaOptions {
                         .noDefaultValue()
                         .withDescription("SeaTunnel Schema Column scale");
 
-        public static final Option<Integer> COLUMN_LENGTH =
+        public static final Option<Long> COLUMN_LENGTH =
                 Options.key("columnLength")
-                        .intType()
-                        .defaultValue(0)
+                        .longType()
+                        .defaultValue(0L)
                         .withDescription("SeaTunnel Schema Column Length");
 
         public static final Option<Boolean> NULLABLE =
diff --git 
a/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParserTest.java
 
b/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParserTest.java
index bc10be1b9f..7ab713e672 100644
--- 
a/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParserTest.java
+++ 
b/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParserTest.java
@@ -77,7 +77,7 @@ class ReadonlyConfigParserTest extends BaseConfigParserTest {
                 constraintKey.getColumnNames().get(0).getSortType());
     }
 
-    private void assertColumn(TableSchema tableSchema, boolean 
checkDefaultValue) {
+    private void assertColumn(TableSchema tableSchema, boolean 
comeFromColumnConfig) {
         List<Column> columns = tableSchema.getColumns();
         Assertions.assertEquals(19, columns.size());
 
@@ -109,12 +109,13 @@ class ReadonlyConfigParserTest extends 
BaseConfigParserTest {
         SeaTunnelRowType seatunnalRowType1 = (SeaTunnelRowType) 
seaTunnelRowType.getFieldType(17);
         Assertions.assertEquals(17, seatunnalRowType1.getTotalFields());
 
-        if (checkDefaultValue) {
+        if (comeFromColumnConfig) {
             Assertions.assertEquals(0, columns.get(0).getDefaultValue());
             Assertions.assertEquals("I'm default value", 
columns.get(4).getDefaultValue());
             Assertions.assertEquals(false, columns.get(5).getDefaultValue());
             Assertions.assertEquals(1.1, columns.get(10).getDefaultValue());
             Assertions.assertEquals("2020-01-01", 
columns.get(15).getDefaultValue());
+            Assertions.assertEquals(4294967295L, 
columns.get(4).getColumnLength());
         }
     }
 }
diff --git a/seatunnel-api/src/test/resources/conf/catalog/schema_column.conf 
b/seatunnel-api/src/test/resources/conf/catalog/schema_column.conf
index 5e6c987e27..4578c26755 100644
--- a/seatunnel-api/src/test/resources/conf/catalog/schema_column.conf
+++ b/seatunnel-api/src/test/resources/conf/catalog/schema_column.conf
@@ -47,6 +47,8 @@ schema = {
         type = "string"
         nullable = true
         defaultValue = "I'm default value"
+        // bigger than integer max value
+        columnLength = 4294967295
         comment = "string value"
       },
       {
diff --git 
a/seatunnel-connectors-v2/connector-assert/src/main/java/org/apache/seatunnel/connectors/seatunnel/assertion/rule/AssertCatalogTableRuleParser.java
 
b/seatunnel-connectors-v2/connector-assert/src/main/java/org/apache/seatunnel/connectors/seatunnel/assertion/rule/AssertCatalogTableRuleParser.java
index 964f0de566..87a7a52db0 100644
--- 
a/seatunnel-connectors-v2/connector-assert/src/main/java/org/apache/seatunnel/connectors/seatunnel/assertion/rule/AssertCatalogTableRuleParser.java
+++ 
b/seatunnel-connectors-v2/connector-assert/src/main/java/org/apache/seatunnel/connectors/seatunnel/assertion/rule/AssertCatalogTableRuleParser.java
@@ -87,7 +87,7 @@ public class AssertCatalogTableRuleParser {
                                 config -> {
                                     String name = 
config.getString(COLUMN_NAME);
                                     String type = 
config.getString(COLUMN_TYPE);
-                                    Integer columnLength =
+                                    Long columnLength =
                                             TypesafeConfigUtils.getConfig(
                                                     config,
                                                     COLUMN_LENGTH,

Reply via email to