Skip to content

Commit 588f0d0

Browse files
chestnut-cchestnufang
authored andcommitted
[Hotfix][Connector-Jdbc] Write MySQL to support set collection data type (apache#9553)
Co-authored-by: chestnufang <[email protected]>
1 parent 9958648 commit 588f0d0

File tree

2 files changed

+18
-0
lines changed
  • seatunnel-connectors-v2/connector-jdbc/src

2 files changed

+18
-0
lines changed

seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MySqlTypeConverter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public class MySqlTypeConverter implements TypeConverter<BasicTypeDefine<MysqlTy
7575
static final String MYSQL_LONGTEXT = "LONGTEXT";
7676
static final String MYSQL_JSON = "JSON";
7777
static final String MYSQL_ENUM = "ENUM";
78+
static final String MYSQL_SET = "SET";
7879

7980
// ------------------------------time-------------------------
8081
static final String MYSQL_DATE = "DATE";
@@ -243,6 +244,7 @@ public Column convert(BasicTypeDefine typeDefine) {
243244
builder.scale(decimalUnsignedType.getScale());
244245
break;
245246
case MYSQL_ENUM:
247+
case MYSQL_SET:
246248
builder.dataType(BasicType.STRING_TYPE);
247249
if (typeDefine.getLength() == null || typeDefine.getLength() <= 0) {
248250
builder.columnLength(100L);

seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/mysql/MySqlTypeConverterTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1082,4 +1082,20 @@ public void testReconvertDatetimeForV55() {
10821082
Assertions.assertEquals(MySqlTypeConverter.MYSQL_DATETIME, typeDefine.getColumnType());
10831083
Assertions.assertEquals(MySqlTypeConverter.MYSQL_DATETIME, typeDefine.getDataType());
10841084
}
1085+
1086+
@Test
1087+
public void testConvertSet() {
1088+
BasicTypeDefine<Object> typeDefine =
1089+
BasicTypeDefine.builder()
1090+
.name("test")
1091+
.columnType("SET('reading','sports','music','travel')")
1092+
.dataType("SET")
1093+
.length(3L)
1094+
.build();
1095+
Column column = MySqlTypeConverter.DEFAULT_INSTANCE.convert(typeDefine);
1096+
Assertions.assertEquals(typeDefine.getName(), column.getName());
1097+
Assertions.assertEquals(BasicType.STRING_TYPE, column.getDataType());
1098+
Assertions.assertEquals(3, column.getColumnLength());
1099+
Assertions.assertEquals(typeDefine.getColumnType(), column.getSourceType());
1100+
}
10851101
}

0 commit comments

Comments
 (0)