[Hotfix][Connector-Jdbc] Write MySQL to support set collection data type (#9553)
Co-authored-by: chestnufang <chestnufang@tencent.com>
diff --git a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MySqlTypeConverter.java b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MySqlTypeConverter.java
index b815f34..d8706da 100644
--- a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MySqlTypeConverter.java
+++ b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MySqlTypeConverter.java
@@ -75,6 +75,7 @@
static final String MYSQL_LONGTEXT = "LONGTEXT";
static final String MYSQL_JSON = "JSON";
static final String MYSQL_ENUM = "ENUM";
+ static final String MYSQL_SET = "SET";
// ------------------------------time-------------------------
static final String MYSQL_DATE = "DATE";
@@ -243,6 +244,7 @@
builder.scale(decimalUnsignedType.getScale());
break;
case MYSQL_ENUM:
+ case MYSQL_SET:
builder.dataType(BasicType.STRING_TYPE);
if (typeDefine.getLength() == null || typeDefine.getLength() <= 0) {
builder.columnLength(100L);
diff --git a/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MySqlTypeConverterTest.java b/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MySqlTypeConverterTest.java
index fa0b715..4c10a60 100644
--- a/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MySqlTypeConverterTest.java
+++ b/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MySqlTypeConverterTest.java
@@ -1082,4 +1082,20 @@
Assertions.assertEquals(MySqlTypeConverter.MYSQL_DATETIME, typeDefine.getColumnType());
Assertions.assertEquals(MySqlTypeConverter.MYSQL_DATETIME, typeDefine.getDataType());
}
+
+ @Test
+ public void testConvertSet() {
+ BasicTypeDefine<Object> typeDefine =
+ BasicTypeDefine.builder()
+ .name("test")
+ .columnType("SET('reading','sports','music','travel')")
+ .dataType("SET")
+ .length(3L)
+ .build();
+ Column column = MySqlTypeConverter.DEFAULT_INSTANCE.convert(typeDefine);
+ Assertions.assertEquals(typeDefine.getName(), column.getName());
+ Assertions.assertEquals(BasicType.STRING_TYPE, column.getDataType());
+ Assertions.assertEquals(3, column.getColumnLength());
+ Assertions.assertEquals(typeDefine.getColumnType(), column.getSourceType());
+ }
}