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 2e002ce09b [bugfix] fix oracle query table length (#7627)
2e002ce09b is described below
commit 2e002ce09b84fb41e5fbb4c204e32f1aeaa87d97
Author: 老王 <[email protected]>
AuthorDate: Wed Sep 11 15:38:31 2024 +0800
[bugfix] fix oracle query table length (#7627)
---
.../jdbc/internal/dialect/oracle/OracleTypeConverter.java | 2 +-
.../jdbc/internal/dialect/oracle/OracleTypeMapper.java | 3 ---
.../internal/dialect/oracle/OracleTypeConverterTest.java | 6 +++---
.../seatunnel/jdbc/JdbcOracleLowercaseTableIT.java | 12 ++++++++++++
4 files changed, 16 insertions(+), 7 deletions(-)
diff --git
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeConverter.java
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeConverter.java
index 023fa949cf..01aa92ce7e 100644
---
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeConverter.java
+++
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeConverter.java
@@ -173,7 +173,7 @@ public class OracleTypeConverter implements
TypeConverter<BasicTypeDefine> {
case ORACLE_VARCHAR:
case ORACLE_VARCHAR2:
builder.dataType(BasicType.STRING_TYPE);
- builder.columnLength(typeDefine.getLength());
+
builder.columnLength(TypeDefineUtils.charTo4ByteLength(typeDefine.getLength()));
break;
case ORACLE_NCHAR:
case ORACLE_NVARCHAR2:
diff --git
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeMapper.java
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeMapper.java
index bbdd19af8e..ee725fb1b4 100644
---
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeMapper.java
+++
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeMapper.java
@@ -59,9 +59,6 @@ public class OracleTypeMapper implements
JdbcDialectTypeMapper {
} else if (Arrays.asList("NVARCHAR2", "NCHAR").contains(nativeType)) {
long doubleByteLength =
TypeDefineUtils.charToDoubleByteLength(precision);
precision = doubleByteLength;
- } else if (Arrays.asList("CHAR", "VARCHAR",
"VARCHAR2").contains(nativeType)) {
- long octetByteLength =
TypeDefineUtils.charTo4ByteLength(precision);
- precision = octetByteLength;
}
BasicTypeDefine typeDefine =
diff --git
a/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeConverterTest.java
b/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeConverterTest.java
index d4a8defdda..72e6c1bde1 100644
---
a/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeConverterTest.java
+++
b/seatunnel-connectors-v2/connector-jdbc/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeConverterTest.java
@@ -355,7 +355,7 @@ public class OracleTypeConverterTest {
Assertions.assertEquals(typeDefine.getName(), column.getName());
Assertions.assertEquals(BasicType.STRING_TYPE, column.getDataType());
- Assertions.assertEquals(typeDefine.getLength(),
column.getColumnLength());
+ Assertions.assertEquals(typeDefine.getLength() * 4,
column.getColumnLength());
Assertions.assertEquals(typeDefine.getColumnType(),
column.getSourceType());
typeDefine =
@@ -383,7 +383,7 @@ public class OracleTypeConverterTest {
Assertions.assertEquals(typeDefine.getName(), column.getName());
Assertions.assertEquals(BasicType.STRING_TYPE, column.getDataType());
- Assertions.assertEquals(typeDefine.getLength(),
column.getColumnLength());
+ Assertions.assertEquals(typeDefine.getLength() * 4,
column.getColumnLength());
Assertions.assertEquals(typeDefine.getColumnType(),
column.getSourceType());
typeDefine =
@@ -397,7 +397,7 @@ public class OracleTypeConverterTest {
Assertions.assertEquals(typeDefine.getName(), column.getName());
Assertions.assertEquals(BasicType.STRING_TYPE, column.getDataType());
- Assertions.assertEquals(typeDefine.getLength(),
column.getColumnLength());
+ Assertions.assertEquals(typeDefine.getLength() * 4,
column.getColumnLength());
Assertions.assertEquals(typeDefine.getColumnType(),
column.getSourceType());
typeDefine =
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-6/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOracleLowercaseTableIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-6/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOracleLowercaseTableIT.java
index 73feb9ab57..54316d678b 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-6/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOracleLowercaseTableIT.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-6/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOracleLowercaseTableIT.java
@@ -19,6 +19,7 @@
package org.apache.seatunnel.connectors.seatunnel.jdbc;
import org.apache.seatunnel.api.table.catalog.CatalogTable;
+import org.apache.seatunnel.api.table.catalog.Column;
import org.apache.seatunnel.api.table.catalog.TablePath;
import org.apache.seatunnel.api.table.type.SeaTunnelRow;
import
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.oracle.OracleCatalog;
@@ -36,6 +37,7 @@ import org.testcontainers.utility.DockerLoggerFactory;
import org.testcontainers.utility.MountableFile;
import com.google.common.collect.Lists;
+import lombok.SneakyThrows;
import java.math.BigDecimal;
import java.sql.Date;
@@ -275,6 +277,16 @@ public class JdbcOracleLowercaseTableIT extends
AbstractJdbcIT {
Assertions.assertEquals(
table.getTableSchema().getColumns().get(1).getComment(),
"\"#¥%……&*();;',,..``````//'@特殊注释'\\'\"");
+ testTableOfQuery(oracleCatalog);
oracleCatalog.close();
}
+
+ @SneakyThrows
+ private void testTableOfQuery(OracleCatalog oracleCatalog) {
+ String querySql = "select * from TESTUSER.E2E_TABLE_SOURCE_LOWER";
+ CatalogTable tableOfQuery = oracleCatalog.getTable(querySql);
+ final List<Column> columns =
tableOfQuery.getTableSchema().getColumns();
+ Assertions.assertEquals(columns.get(0).getColumnLength(), 40);
+ Assertions.assertEquals(columns.get(1).getColumnLength(), 40);
+ }
}