This is an automated email from the ASF dual-hosted git repository.
corgy 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 64b8f1752e [Fix][Connector-V2] Fix starrocks decimal column definition
generation(#9470) (#9471)
64b8f1752e is described below
commit 64b8f1752e4f879413d640c995c654390c4cbffd
Author: huangkuilin <[email protected]>
AuthorDate: Thu Jun 26 21:38:08 2025 +0800
[Fix][Connector-V2] Fix starrocks decimal column definition
generation(#9470) (#9471)
---
.../starrocks/datatypes/StarRocksType.java | 18 +++------
.../datatypes/StarRocksTypeConverter.java | 35 +++++++----------
.../catalog/StarRocksTypeConverterTest.java | 44 +++++++++++-----------
3 files changed, 41 insertions(+), 56 deletions(-)
diff --git
a/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/datatypes/StarRocksType.java
b/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/datatypes/StarRocksType.java
index 56511e6494..8a4cbf86a5 100644
---
a/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/datatypes/StarRocksType.java
+++
b/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/datatypes/StarRocksType.java
@@ -32,7 +32,6 @@ public class StarRocksType {
public static final String SR_FLOAT = "FLOAT";
public static final String SR_DOUBLE = "DOUBLE";
public static final String SR_DECIMAL = "DECIMAL";
- public static final String SR_DECIMALV3 = "DECIMALV3";
public static final String SR_DATE = "DATE";
public static final String SR_DATETIME = "DATETIME";
public static final String SR_CHAR = "CHAR";
@@ -46,22 +45,17 @@ public class StarRocksType {
public static final String SR_BIGINT_ARRAY = "ARRAY<bigint>";
public static final String SR_FLOAT_ARRAY = "ARRAY<float>";
public static final String SR_DOUBLE_ARRAY = "ARRAY<double>";
- public static final String SR_DECIMALV3_ARRAY = "ARRAY<DECIMALV3>";
- public static final String SR_DECIMALV3_ARRAY_COLUMN_TYPE_TMP =
"ARRAY<DECIMALV3(%s, %s)>";
- public static final String SR_DATEV2_ARRAY = "ARRAY<DATEV2>";
- public static final String SR_DATETIMEV2_ARRAY = "ARRAY<DATETIMEV2>";
+ public static final String SR_DECIMAL_ARRAY = "ARRAY<DECIMAL>";
+ public static final String SR_DECIMAL_ARRAY_COLUMN_TYPE_TMP =
"ARRAY<DECIMAL(%s, %s)>";
+ public static final String SR_DATE_ARRAY = "ARRAY<DATE>";
+ public static final String SR_DATETIME_ARRAY = "ARRAY<DATETIME>";
public static final String SR_STRING_ARRAY = "ARRAY<STRING>";
// Because can not get the column length from array, So the following
types of arrays cannot be
// generated properly.
public static final String SR_LARGEINT_ARRAY = "ARRAY<largeint>";
- public static final String SR_CHAR_ARRAY = "ARRAY<CHAR>";
- public static final String SR_CHAR_ARRAY_COLUMN_TYPE_TMP =
"ARRAY<CHAR(%s)>";
- public static final String SR_VARCHAR_ARRAY = "ARRAY<VARCHAR>";
- public static final String SR_VARCHAR_ARRAY_COLUMN_TYPE_TMP =
"ARRAY<VARCHAR(%s)>";
public static final String SR_JSON = "JSON";
- public static final String SR_JSONB = "JSONB";
public static final String SR_ARRAY = "ARRAY";
@@ -71,10 +65,8 @@ public class StarRocksType {
public static final String SR_ARRAY_INT_INTER = "int(11)";
public static final String SR_ARRAY_BIGINT_INTER = "bigint(20)";
public static final String SR_ARRAY_DECIMAL_PRE = "DECIMAL";
- public static final String SR_ARRAY_DATE_INTER = "date";
- public static final String SR_ARRAY_DATEV2_INTER = "DATEV2";
+ public static final String SR_ARRAY_DATE_INTER = "DATE";
public static final String SR_ARRAY_DATETIME_INTER = "DATETIME";
- public static final String SR_ARRAY_DATETIMEV2_INTER = "DATETIMEV2";
public static final String SR_MAP = "MAP";
public static final String SR_MAP_COLUMN_TYPE = "MAP<%s, %s>";
diff --git
a/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/datatypes/StarRocksTypeConverter.java
b/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/datatypes/StarRocksTypeConverter.java
index dcaa0e3254..536598759e 100644
---
a/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/datatypes/StarRocksTypeConverter.java
+++
b/seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/datatypes/StarRocksTypeConverter.java
@@ -42,9 +42,7 @@ import java.util.regex.Pattern;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_ARRAY;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_ARRAY_BIGINT_INTER;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_ARRAY_BOOLEAN_INTER;
-import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_ARRAY_DATETIMEV2_INTER;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_ARRAY_DATETIME_INTER;
-import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_ARRAY_DATEV2_INTER;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_ARRAY_DATE_INTER;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_ARRAY_DECIMAL_PRE;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_ARRAY_INT_INTER;
@@ -58,12 +56,11 @@ import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.Star
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_CHAR;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DATE;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DATETIME;
-import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DATETIMEV2_ARRAY;
-import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DATEV2_ARRAY;
+import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DATETIME_ARRAY;
+import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DATE_ARRAY;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DECIMAL;
-import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DECIMALV3;
-import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DECIMALV3_ARRAY;
-import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DECIMALV3_ARRAY_COLUMN_TYPE_TMP;
+import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DECIMAL_ARRAY;
+import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DECIMAL_ARRAY_COLUMN_TYPE_TMP;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DOUBLE;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DOUBLE_ARRAY;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_FLOAT;
@@ -91,7 +88,6 @@ public class StarRocksTypeConverter implements
TypeConverter<BasicTypeDefine<Sta
public static final long MAX_STRING_LENGTH = 2147483643;
public static final Long MAX_PRECISION = 38L;
public static final Integer MAX_SCALE = 10;
- public static final Integer MAX_DATETIME_SCALE = 6;
public static final long POWER_2_8 = (long) Math.pow(2, 8);
public static final StarRocksTypeConverter INSTANCE = new
StarRocksTypeConverter();
@@ -148,7 +144,6 @@ public class StarRocksTypeConverter implements
TypeConverter<BasicTypeDefine<Sta
builder.dataType(BasicType.DOUBLE_TYPE);
break;
case SR_DECIMAL:
- case SR_DECIMALV3:
setDecimalType(builder, typeDefine);
break;
case SR_CHAR:
@@ -290,8 +285,8 @@ public class StarRocksTypeConverter implements
TypeConverter<BasicTypeDefine<Sta
precision,
scale);
}
- builder.columnType(String.format("%s(%s,%s)", SR_DECIMALV3,
precision, scale));
- builder.dataType(SR_DECIMALV3);
+ builder.columnType(String.format("%s(%s,%s)", SR_DECIMAL,
precision, scale));
+ builder.dataType(SR_DECIMAL);
builder.precision((long) precision);
builder.scale(scale);
break;
@@ -381,11 +376,9 @@ public class StarRocksTypeConverter implements
TypeConverter<BasicTypeDefine<Sta
new DecimalArrayType(
new DecimalType(precisionAndScale[0],
precisionAndScale[1]));
builder.dataType(decimalArray);
- } else if (columnInterType.equalsIgnoreCase(SR_ARRAY_DATE_INTER)
- || columnInterType.equalsIgnoreCase(SR_ARRAY_DATEV2_INTER)) {
+ } else if (columnInterType.equalsIgnoreCase(SR_ARRAY_DATE_INTER)) {
builder.dataType(ArrayType.LOCAL_DATE_ARRAY_TYPE);
- } else if (columnInterType.equalsIgnoreCase(SR_ARRAY_DATETIME_INTER)
- ||
columnInterType.equalsIgnoreCase(SR_ARRAY_DATETIMEV2_INTER)) {
+ } else if (columnInterType.equalsIgnoreCase(SR_ARRAY_DATETIME_INTER)) {
builder.dataType(ArrayType.LOCAL_DATE_TIME_ARRAY_TYPE);
} else if (columnInterType.equalsIgnoreCase(SR_LARGEINT)) {
DecimalArrayType decimalArray = new DecimalArrayType(new
DecimalType(20, 0));
@@ -539,10 +532,10 @@ public class StarRocksTypeConverter implements
TypeConverter<BasicTypeDefine<Sta
int[] precisionAndScale =
getPrecisionAndScale(elementType.toString());
builder.columnType(
String.format(
- SR_DECIMALV3_ARRAY_COLUMN_TYPE_TMP,
+ SR_DECIMAL_ARRAY_COLUMN_TYPE_TMP,
precisionAndScale[0],
precisionAndScale[1]));
- builder.dataType(SR_DECIMALV3_ARRAY);
+ builder.dataType(SR_DECIMAL_ARRAY);
break;
case STRING:
case TIME:
@@ -550,12 +543,12 @@ public class StarRocksTypeConverter implements
TypeConverter<BasicTypeDefine<Sta
builder.dataType(SR_STRING_ARRAY);
break;
case DATE:
- builder.columnType(SR_DATEV2_ARRAY);
- builder.dataType(SR_DATEV2_ARRAY);
+ builder.columnType(SR_DATE_ARRAY);
+ builder.dataType(SR_DATE_ARRAY);
break;
case TIMESTAMP:
- builder.columnType(SR_DATETIMEV2_ARRAY);
- builder.dataType(SR_DATETIMEV2_ARRAY);
+ builder.columnType(SR_DATETIME_ARRAY);
+ builder.dataType(SR_DATETIME_ARRAY);
break;
default:
throw CommonError.convertToConnectorTypeError(
diff --git
a/seatunnel-connectors-v2/connector-starrocks/src/test/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksTypeConverterTest.java
b/seatunnel-connectors-v2/connector-starrocks/src/test/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksTypeConverterTest.java
index d57832c7b0..8bd4ca5f21 100644
---
a/seatunnel-connectors-v2/connector-starrocks/src/test/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksTypeConverterTest.java
+++
b/seatunnel-connectors-v2/connector-starrocks/src/test/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksTypeConverterTest.java
@@ -43,9 +43,9 @@ import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.Star
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_CHAR;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DATE;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DATETIME;
-import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DATETIMEV2_ARRAY;
-import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DATEV2_ARRAY;
-import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DECIMALV3;
+import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DATETIME_ARRAY;
+import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DATE_ARRAY;
+import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DECIMAL;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DOUBLE;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_DOUBLE_ARRAY;
import static
org.apache.seatunnel.connectors.seatunnel.starrocks.datatypes.StarRocksType.SR_FLOAT;
@@ -255,7 +255,7 @@ public class StarRocksTypeConverterTest {
BasicTypeDefine<StarRocksType> typeDefine =
BasicTypeDefine.<StarRocksType>builder()
.name("test")
- .columnType("decimalv3")
+ .columnType("decimal")
.dataType("decimal")
.precision(9L)
.scale(2)
@@ -270,7 +270,7 @@ public class StarRocksTypeConverterTest {
typeDefine =
BasicTypeDefine.<StarRocksType>builder()
.name("test")
- .columnType("decimalv3(36,2)")
+ .columnType("decimal(36,2)")
.dataType("decimal")
.precision(38L)
.scale(2)
@@ -465,7 +465,7 @@ public class StarRocksTypeConverterTest {
typeDefine =
BasicTypeDefine.<StarRocksType>builder()
.name("test")
- .columnType("array<decimalv3(10, 2)>")
+ .columnType("array<decimal(10, 2)>")
.dataType("ARRAY")
.build();
column = converter.convert(typeDefine);
@@ -598,7 +598,7 @@ public class StarRocksTypeConverterTest {
typeDefine =
BasicTypeDefine.<StarRocksType>builder()
.name("test")
- .columnType("map<string,decimalv3(10, 2)>")
+ .columnType("map<string,decimal(10, 2)>")
.dataType("MAP")
.build();
column = converter.convert(typeDefine);
@@ -610,7 +610,7 @@ public class StarRocksTypeConverterTest {
typeDefine =
BasicTypeDefine.<StarRocksType>builder()
.name("test")
- .columnType("map<decimalv3(10, 2),date>")
+ .columnType("map<decimal(10, 2),date>")
.dataType("MAP")
.build();
column = converter.convert(typeDefine);
@@ -779,19 +779,19 @@ public class StarRocksTypeConverterTest {
Assertions.assertEquals(
String.format(
"%s(%s,%s)",
- SR_DECIMALV3,
+ SR_DECIMAL,
StarRocksTypeConverter.MAX_PRECISION,
StarRocksTypeConverter.MAX_SCALE),
typeDefine.getColumnType());
- Assertions.assertEquals(SR_DECIMALV3, typeDefine.getDataType());
+ Assertions.assertEquals(SR_DECIMAL, typeDefine.getDataType());
column = PhysicalColumn.builder().name("test").dataType(new
DecimalType(10, 2)).build();
typeDefine = converter.reconvert(column);
Assertions.assertEquals(column.getName(), typeDefine.getName());
- Assertions.assertEquals(SR_DECIMALV3, typeDefine.getDataType());
+ Assertions.assertEquals(SR_DECIMAL, typeDefine.getDataType());
Assertions.assertEquals(
- String.format("%s(%s,%s)", SR_DECIMALV3, 10, 2),
typeDefine.getColumnType());
+ String.format("%s(%s,%s)", SR_DECIMAL, 10, 2),
typeDefine.getColumnType());
column = PhysicalColumn.builder().name("test").dataType(new
DecimalType(40, 2)).build();
@@ -1098,8 +1098,8 @@ public class StarRocksTypeConverterTest {
typeDefine = converter.reconvert(column);
Assertions.assertEquals(column.getName(), typeDefine.getName());
- Assertions.assertEquals(SR_DATEV2_ARRAY, typeDefine.getColumnType());
- Assertions.assertEquals(SR_DATEV2_ARRAY, typeDefine.getDataType());
+ Assertions.assertEquals(SR_DATE_ARRAY, typeDefine.getColumnType());
+ Assertions.assertEquals(SR_DATE_ARRAY, typeDefine.getDataType());
column =
PhysicalColumn.builder()
@@ -1109,16 +1109,16 @@ public class StarRocksTypeConverterTest {
typeDefine = converter.reconvert(column);
Assertions.assertEquals(column.getName(), typeDefine.getName());
- Assertions.assertEquals(SR_DATETIMEV2_ARRAY,
typeDefine.getColumnType());
- Assertions.assertEquals(SR_DATETIMEV2_ARRAY, typeDefine.getDataType());
+ Assertions.assertEquals(SR_DATETIME_ARRAY, typeDefine.getColumnType());
+ Assertions.assertEquals(SR_DATETIME_ARRAY, typeDefine.getDataType());
DecimalArrayType decimalArrayType = new DecimalArrayType(new
DecimalType(10, 2));
column =
PhysicalColumn.builder().name("test").dataType(decimalArrayType).build();
typeDefine = converter.reconvert(column);
Assertions.assertEquals(column.getName(), typeDefine.getName());
- Assertions.assertEquals("ARRAY<DECIMALV3(10, 2)>",
typeDefine.getColumnType());
- Assertions.assertEquals("ARRAY<DECIMALV3>", typeDefine.getDataType());
+ Assertions.assertEquals("ARRAY<DECIMAL(10, 2)>",
typeDefine.getColumnType());
+ Assertions.assertEquals("ARRAY<DECIMAL>", typeDefine.getDataType());
decimalArrayType = new DecimalArrayType(new DecimalType(20, 0));
column =
@@ -1129,8 +1129,8 @@ public class StarRocksTypeConverterTest {
.build();
typeDefine = converter.reconvert(column);
Assertions.assertEquals(column.getName(), typeDefine.getName());
- Assertions.assertEquals("ARRAY<DECIMALV3(20, 0)>",
typeDefine.getColumnType());
- Assertions.assertEquals("ARRAY<DECIMALV3>", typeDefine.getDataType());
+ Assertions.assertEquals("ARRAY<DECIMAL(20, 0)>",
typeDefine.getColumnType());
+ Assertions.assertEquals("ARRAY<DECIMAL>", typeDefine.getDataType());
}
@Test
@@ -1222,8 +1222,8 @@ public class StarRocksTypeConverterTest {
typeDefine = converter.reconvert(column);
Assertions.assertEquals(column.getName(), typeDefine.getName());
- Assertions.assertEquals("MAP<DECIMALV3(10,2), STRING>",
typeDefine.getColumnType());
- Assertions.assertEquals("MAP<DECIMALV3(10,2), STRING>",
typeDefine.getDataType());
+ Assertions.assertEquals("MAP<DECIMAL(10,2), STRING>",
typeDefine.getColumnType());
+ Assertions.assertEquals("MAP<DECIMAL(10,2), STRING>",
typeDefine.getDataType());
column =
PhysicalColumn.builder()