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

github-merge-queue[bot] pushed a commit to branch 
gh-readonly-queue/dev/pr-11874-5acb54618d05263c59e2aacd66597fe015a53213
in repository https://gitbox.apache.org/repos/asf/seatunnel.git

commit a01f5f03e7d9ab93b814e8ab10ba7d37a0d1c618
Author: Arvin <[email protected]>
AuthorDate: Sun Aug 30 16:26:07 2026 +0000

    [Fix][Connector-V2] Support YashanDB VARCHAR2 and NVARCHAR2 type conversion 
(#11874)
---
 .../dialect/yashandb/YashanDbTypeConverter.java    |  4 ++++
 .../yashandb/YashanDbTypeConverterTest.java        | 26 ++++++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git 
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/yashandb/YashanDbTypeConverter.java
 
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/yashandb/YashanDbTypeConverter.java
index 163646a8b0..11cdc6aa92 100644
--- 
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/yashandb/YashanDbTypeConverter.java
+++ 
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/yashandb/YashanDbTypeConverter.java
@@ -73,10 +73,12 @@ public class YashanDbTypeConverter implements 
TypeConverter<BasicTypeDefine> {
     // CHAR: [1,8000] bytes; VARCHAR: [1,65534] bytes
     public static final String CHAR = "CHAR";
     public static final String VARCHAR = "VARCHAR";
+    public static final String VARCHAR2 = "VARCHAR2";
 
     // NCHAR: [1,4000]; NVARCHAR: [1,32767] (Unicode)
     public static final String NCHAR = "NCHAR";
     public static final String NVARCHAR = "NVARCHAR";
+    public static final String NVARCHAR2 = "NVARCHAR2";
 
     // ============================ Date & Time Data Types 
============================
 
@@ -213,11 +215,13 @@ public class YashanDbTypeConverter implements 
TypeConverter<BasicTypeDefine> {
                 // ====================== Character types 
======================
             case CHAR:
             case VARCHAR:
+            case VARCHAR2:
                 builder.dataType(BasicType.STRING_TYPE);
                 
builder.columnLength(TypeDefineUtils.charTo4ByteLength(typeDefine.getLength()));
                 break;
             case NCHAR:
             case NVARCHAR:
+            case NVARCHAR2:
                 builder.dataType(BasicType.STRING_TYPE);
                 builder.columnLength(
                         
TypeDefineUtils.doubleByteTo4ByteLength(typeDefine.getLength()));
diff --git 
a/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/yashandb/YashanDbTypeConverterTest.java
 
b/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/yashandb/YashanDbTypeConverterTest.java
index ce881127a6..c64664d210 100644
--- 
a/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/yashandb/YashanDbTypeConverterTest.java
+++ 
b/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/yashandb/YashanDbTypeConverterTest.java
@@ -257,6 +257,32 @@ public class YashanDbTypeConverterTest {
         column = INSTANCE.convert(typeDefine);
         Assertions.assertEquals(BasicType.STRING_TYPE, column.getDataType());
         Assertions.assertEquals(200L, column.getColumnLength());
+
+        // VARCHAR2(100) -> STRING with columnLength = 100 * 4 (byte-length 
semantics, same as
+        // VARCHAR)
+        typeDefine =
+                BasicTypeDefine.builder()
+                        .name("test")
+                        .columnType("VARCHAR2(100)")
+                        .dataType("VARCHAR2")
+                        .length(100L)
+                        .build();
+        column = INSTANCE.convert(typeDefine);
+        Assertions.assertEquals(BasicType.STRING_TYPE, column.getDataType());
+        Assertions.assertEquals(400L, column.getColumnLength());
+
+        // NVARCHAR2(100) -> STRING with columnLength = 100 * 2 (char-length 
semantics, same as
+        // NVARCHAR)
+        typeDefine =
+                BasicTypeDefine.builder()
+                        .name("test")
+                        .columnType("NVARCHAR2(100)")
+                        .dataType("NVARCHAR2")
+                        .length(100L)
+                        .build();
+        column = INSTANCE.convert(typeDefine);
+        Assertions.assertEquals(BasicType.STRING_TYPE, column.getDataType());
+        Assertions.assertEquals(200L, column.getColumnLength());
     }
 
     @Test

Reply via email to