This is an automated email from the ASF dual-hosted git repository.
zhangshenghang 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 389a49eb26 [Improve][Connector-V2] Add support for INTERVAL data types
in Oracle connector (#11825)
389a49eb26 is described below
commit 389a49eb26e31df4598b85bc2dd899eda6186f8f
Author: corgy-w <[email protected]>
AuthorDate: Tue Aug 25 10:34:26 2026 +0800
[Improve][Connector-V2] Add support for INTERVAL data types in Oracle
connector (#11825)
---
docs/en/connectors/source/Oracle.md | 2 +-
docs/zh/connectors/source/Oracle.md | 2 +-
.../internal/dialect/oracle/OracleTypeConverter.java | 20 ++++++++++++++++++++
.../connectors/seatunnel/jdbc/JdbcOracleIT.java | 17 ++++++++++++-----
.../test/resources/jdbc_oracle_source_to_sink.conf | 4 ++--
.../jdbc_oracle_source_to_sink_use_select1.conf | 4 ++--
.../jdbc_oracle_source_to_sink_use_select2.conf | 2 +-
.../jdbc_oracle_source_to_sink_use_select3.conf | 2 +-
8 files changed, 40 insertions(+), 13 deletions(-)
diff --git a/docs/en/connectors/source/Oracle.md
b/docs/en/connectors/source/Oracle.md
index a094343f2f..4b20cc45ba 100644
--- a/docs/en/connectors/source/Oracle.md
+++ b/docs/en/connectors/source/Oracle.md
@@ -56,7 +56,7 @@ Read external data source data through JDBC.
| NUMBER(scale != 0)
| DECIMAL(38, 18) |
| BINARY_DOUBLE
| DOUBLE |
| BINARY_FLOAT<br/>REAL
| FLOAT |
-|
CHAR<br/>NCHAR<br/>VARCHAR<br/>NVARCHAR2<br/>VARCHAR2<br/>LONG<br/>ROWID<br/>NCLOB<br/>CLOB<br/>XML<br/>
| STRING |
+|
CHAR<br/>NCHAR<br/>VARCHAR<br/>NVARCHAR2<br/>VARCHAR2<br/>LONG<br/>ROWID<br/>NCLOB<br/>CLOB<br/>XML<br/>INTERVAL
| STRING |
| DATE
| TIMESTAMP |
| TIMESTAMP<br/>TIMESTAMP WITH LOCAL TIME ZONE
| TIMESTAMP |
| BLOB<br/>RAW<br/>LONG RAW<br/>BFILE
| BYTES |
diff --git a/docs/zh/connectors/source/Oracle.md
b/docs/zh/connectors/source/Oracle.md
index 64434fc43c..db98f4eb2b 100644
--- a/docs/zh/connectors/source/Oracle.md
+++ b/docs/zh/connectors/source/Oracle.md
@@ -56,7 +56,7 @@ import ChangeLog from '../changelog/connector-jdbc.md';
| NUMBER(scale != 0) | DECIMAL(38, 18) |
| BINARY_DOUBLE | DOUBLE |
| BINARY_FLOAT<br/>REAL | FLOAT |
-|
CHAR<br/>NCHAR<br/>VARCHAR<br/>NVARCHAR2<br/>VARCHAR2<br/>LONG<br/>ROWID<br/>NCLOB<br/>CLOB<br/>XML
| STRING |
+|
CHAR<br/>NCHAR<br/>VARCHAR<br/>NVARCHAR2<br/>VARCHAR2<br/>LONG<br/>ROWID<br/>NCLOB<br/>CLOB<br/>XML<br/>INTERVAL
| STRING |
| DATE | TIMESTAMP |
| TIMESTAMP<br/>TIMESTAMP WITH LOCAL TIME ZONE | TIMESTAMP |
| BLOB<br/>RAW<br/>LONG RAW<br/>BFILE | BYTES |
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 2b91fdd484..b997367485 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
@@ -67,6 +67,14 @@ public class OracleTypeConverter implements
TypeConverter<BasicTypeDefine> {
public static final String ORACLE_TIMESTAMP_WITH_LOCAL_TIME_ZONE =
ORACLE_TIMESTAMP + " WITH LOCAL TIME ZONE";
+ // ------------------------------interval----------------------
+ public static final String ORACLE_INTERVAL = "INTERVAL";
+ public static final String ORACLE_INTERVAL_YEAR = ORACLE_INTERVAL + " YEAR
TO MONTH";
+ public static final String ORACLE_INTERVAL_DAY = ORACLE_INTERVAL + " DAY
TO SECOND";
+ // Type names returned by the Oracle JDBC driver
+ public static final String ORACLE_INTERVAL_YM = "INTERVALYM";
+ public static final String ORACLE_INTERVAL_DS = "INTERVALDS";
+
// ------------------------------blob-------------------------
public static final String ORACLE_BLOB = "BLOB";
public static final String ORACLE_RAW = "RAW";
@@ -120,6 +128,11 @@ public class OracleTypeConverter implements
TypeConverter<BasicTypeDefine> {
.comment(typeDefine.getComment());
String oracleType = typeDefine.getDataType().toUpperCase();
+ if (oracleType.startsWith(ORACLE_INTERVAL)) {
+ // The JDBC driver may report precision qualifiers in the type
name,
+ // e.g. "INTERVAL DAY(2) TO SECOND(6)", strip them for exact
matching.
+ oracleType = oracleType.replaceAll("\\s*\\([^)]*\\)", "");
+ }
switch (oracleType) {
case ORACLE_INTEGER:
@@ -258,6 +271,13 @@ public class OracleTypeConverter implements
TypeConverter<BasicTypeDefine> {
builder.scale(typeDefine.getScale());
}
break;
+ case ORACLE_INTERVAL:
+ case ORACLE_INTERVAL_YEAR:
+ case ORACLE_INTERVAL_DAY:
+ case ORACLE_INTERVAL_YM:
+ case ORACLE_INTERVAL_DS:
+ builder.dataType(BasicType.STRING_TYPE);
+ break;
default:
throw CommonError.convertToSeaTunnelTypeError(
DatabaseIdentifier.ORACLE, oracleType,
typeDefine.getName());
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOracleIT.java
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOracleIT.java
index f8f8f7ca58..14c40c8658 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOracleIT.java
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcOracleIT.java
@@ -49,6 +49,7 @@ import java.sql.Date;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Timestamp;
+import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
@@ -61,7 +62,7 @@ import java.util.stream.IntStream;
public class JdbcOracleIT extends AbstractJdbcIT {
- private static final String ORACLE_IMAGE =
"gvenzl/oracle-xe:21-slim-faststart";
+ private static final String ORACLE_IMAGE =
"gvenzl/oracle-free:slim-faststart";
private static final String ORACLE_NETWORK_ALIASES = "e2e_oracleDb";
private static final String DRIVER_CLASS = "oracle.jdbc.OracleDriver";
private static final int ORACLE_PORT = 1521;
@@ -101,6 +102,7 @@ public class JdbcOracleIT extends AbstractJdbcIT {
+ " TIMESTAMP_WITH_3_FRAC_SEC_COL timestamp(3),\n"
+ " TIMESTAMP_WITH_LOCAL_TZ timestamp with local
time zone,\n"
+ " XML_TYPE_COL
\"SYS\".\"XMLTYPE\",\n"
+ + " INTERVAL_COL interval day(2) to
second(6),\n"
+ " constraint PK_T_COL primary key (INTEGER_COL)"
+ ")";
@@ -124,7 +126,8 @@ public class JdbcOracleIT extends AbstractJdbcIT {
+ " DATE_COL date,\n"
+ " TIMESTAMP_WITH_3_FRAC_SEC_COL timestamp(3),\n"
+ " TIMESTAMP_WITH_LOCAL_TZ timestamp with local
time zone,\n"
- + " XML_TYPE_COL \"SYS\".\"XMLTYPE\"\n"
+ + " XML_TYPE_COL
\"SYS\".\"XMLTYPE\",\n"
+ + " INTERVAL_COL interval day(2) to
second(6)\n"
+ ")";
private static final String[] fieldNames =
@@ -146,7 +149,8 @@ public class JdbcOracleIT extends AbstractJdbcIT {
"DATE_COL",
"TIMESTAMP_WITH_3_FRAC_SEC_COL",
"TIMESTAMP_WITH_LOCAL_TZ",
- "XML_TYPE_COL"
+ "XML_TYPE_COL",
+ "INTERVAL_COL"
};
@Test
@@ -300,7 +304,8 @@ public class JdbcOracleIT extends AbstractJdbcIT {
Date.valueOf(LocalDate.now()),
Timestamp.valueOf(LocalDateTime.now()),
Timestamp.valueOf(LocalDateTime.now()),
- "<?xml version=\"1.0\"
encoding=\"UTF-8\"?><project xmlns=\"http://maven.apache.org/POM/4.0.0\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd\"><name>SeaTunnel : E2E : Connector
V2 : Oracle XMLType</name></project>"
+ "<?xml version=\"1.0\"
encoding=\"UTF-8\"?><project xmlns=\"http://maven.apache.org/POM/4.0.0\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd\"><name>SeaTunnel : E2E : Connector
V2 : Oracle XMLType</name></project>",
+ Duration.ofHours(25)
});
rows.add(row);
}
@@ -310,7 +315,9 @@ public class JdbcOracleIT extends AbstractJdbcIT {
@Override
GenericContainer<?> initContainer() {
- DockerImageName imageName = DockerImageName.parse(ORACLE_IMAGE);
+ // gvenzl/oracle-free is a multi-arch (amd64/arm64) substitute for
gvenzl/oracle-xe
+ DockerImageName imageName =
+
DockerImageName.parse(ORACLE_IMAGE).asCompatibleSubstituteFor("gvenzl/oracle-xe");
GenericContainer<?> container =
new OracleContainer(imageName)
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink.conf
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink.conf
index 7f5c7319a0..00c9da5ec9 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink.conf
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink.conf
@@ -30,7 +30,7 @@ source {
url = "jdbc:oracle:thin:@e2e_oracleDb:1521/TESTUSER"
username = testUser
password = testPassword
- query = "SELECT
VARCHAR_10_COL,CHAR_10_COL,CLOB_COL,BLOB_COL,NUMBER_1,NUMBER_6,NUMBER_10,NUMBER_3_SF_2_DP,NUMBER_7_SF_N2_DP,INTEGER_COL,FLOAT_COL,REAL_COL,BINARY_FLOAT_COL,BINARY_DOUBLE_COL,DATE_COL,TIMESTAMP_WITH_3_FRAC_SEC_COL,TIMESTAMP_WITH_LOCAL_TZ,XML_TYPE_COL
FROM E2E_TABLE_SOURCE"
+ query = "SELECT
VARCHAR_10_COL,CHAR_10_COL,CLOB_COL,BLOB_COL,NUMBER_1,NUMBER_6,NUMBER_10,NUMBER_3_SF_2_DP,NUMBER_7_SF_N2_DP,INTEGER_COL,FLOAT_COL,REAL_COL,BINARY_FLOAT_COL,BINARY_DOUBLE_COL,DATE_COL,TIMESTAMP_WITH_3_FRAC_SEC_COL,TIMESTAMP_WITH_LOCAL_TZ,XML_TYPE_COL,INTERVAL_COL
FROM E2E_TABLE_SOURCE"
properties {
database.oracle.jdbc.timezoneAsRegion = "false"
}
@@ -46,7 +46,7 @@ sink {
url = "jdbc:oracle:thin:@e2e_oracleDb:1521/TESTUSER"
username = testUser
password = testPassword
- query = "INSERT INTO E2E_TABLE_SINK
(VARCHAR_10_COL,CHAR_10_COL,CLOB_COL,BLOB_COL,NUMBER_1,NUMBER_6,NUMBER_10,NUMBER_3_SF_2_DP,NUMBER_7_SF_N2_DP,INTEGER_COL,FLOAT_COL,REAL_COL,BINARY_FLOAT_COL,BINARY_DOUBLE_COL,DATE_COL,TIMESTAMP_WITH_3_FRAC_SEC_COL,TIMESTAMP_WITH_LOCAL_TZ,XML_TYPE_COL)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
+ query = "INSERT INTO E2E_TABLE_SINK
(VARCHAR_10_COL,CHAR_10_COL,CLOB_COL,BLOB_COL,NUMBER_1,NUMBER_6,NUMBER_10,NUMBER_3_SF_2_DP,NUMBER_7_SF_N2_DP,INTEGER_COL,FLOAT_COL,REAL_COL,BINARY_FLOAT_COL,BINARY_DOUBLE_COL,DATE_COL,TIMESTAMP_WITH_3_FRAC_SEC_COL,TIMESTAMP_WITH_LOCAL_TZ,XML_TYPE_COL,INTERVAL_COL)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
properties {
database.oracle.jdbc.timezoneAsRegion = "false"
}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink_use_select1.conf
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink_use_select1.conf
index d3edd63708..03bfca98ce 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink_use_select1.conf
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink_use_select1.conf
@@ -31,7 +31,7 @@ source {
username = testUser
password = testPassword
use_select_count = true
- query = "SELECT
VARCHAR_10_COL,CHAR_10_COL,CLOB_COL,BLOB_COL,NUMBER_1,NUMBER_6,NUMBER_10,NUMBER_3_SF_2_DP,NUMBER_7_SF_N2_DP,INTEGER_COL,FLOAT_COL,REAL_COL,BINARY_FLOAT_COL,BINARY_DOUBLE_COL,DATE_COL,TIMESTAMP_WITH_3_FRAC_SEC_COL,TIMESTAMP_WITH_LOCAL_TZ,XML_TYPE_COL
FROM E2E_TABLE_SOURCE"
+ query = "SELECT
VARCHAR_10_COL,CHAR_10_COL,CLOB_COL,BLOB_COL,NUMBER_1,NUMBER_6,NUMBER_10,NUMBER_3_SF_2_DP,NUMBER_7_SF_N2_DP,INTEGER_COL,FLOAT_COL,REAL_COL,BINARY_FLOAT_COL,BINARY_DOUBLE_COL,DATE_COL,TIMESTAMP_WITH_3_FRAC_SEC_COL,TIMESTAMP_WITH_LOCAL_TZ,XML_TYPE_COL,INTERVAL_COL
FROM E2E_TABLE_SOURCE"
properties {
database.oracle.jdbc.timezoneAsRegion = "false"
}
@@ -47,7 +47,7 @@ sink {
url = "jdbc:oracle:thin:@e2e_oracleDb:1521/TESTUSER"
username = testUser
password = testPassword
- query = "INSERT INTO E2E_TABLE_SINK
(VARCHAR_10_COL,CHAR_10_COL,CLOB_COL,BLOB_COL,NUMBER_1,NUMBER_6,NUMBER_10,NUMBER_3_SF_2_DP,NUMBER_7_SF_N2_DP,INTEGER_COL,FLOAT_COL,REAL_COL,BINARY_FLOAT_COL,BINARY_DOUBLE_COL,DATE_COL,TIMESTAMP_WITH_3_FRAC_SEC_COL,TIMESTAMP_WITH_LOCAL_TZ,XML_TYPE_COL)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
+ query = "INSERT INTO E2E_TABLE_SINK
(VARCHAR_10_COL,CHAR_10_COL,CLOB_COL,BLOB_COL,NUMBER_1,NUMBER_6,NUMBER_10,NUMBER_3_SF_2_DP,NUMBER_7_SF_N2_DP,INTEGER_COL,FLOAT_COL,REAL_COL,BINARY_FLOAT_COL,BINARY_DOUBLE_COL,DATE_COL,TIMESTAMP_WITH_3_FRAC_SEC_COL,TIMESTAMP_WITH_LOCAL_TZ,XML_TYPE_COL,INTERVAL_COL)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
properties {
database.oracle.jdbc.timezoneAsRegion = "false"
}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink_use_select2.conf
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink_use_select2.conf
index 2ad11c534e..944cb8971a 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink_use_select2.conf
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink_use_select2.conf
@@ -47,7 +47,7 @@ sink {
url = "jdbc:oracle:thin:@e2e_oracleDb:1521/TESTUSER"
username = testUser
password = testPassword
- query = "INSERT INTO E2E_TABLE_SINK
(VARCHAR_10_COL,CHAR_10_COL,CLOB_COL,BLOB_COL,NUMBER_1,NUMBER_6,NUMBER_10,NUMBER_3_SF_2_DP,NUMBER_7_SF_N2_DP,INTEGER_COL,FLOAT_COL,REAL_COL,BINARY_FLOAT_COL,BINARY_DOUBLE_COL,DATE_COL,TIMESTAMP_WITH_3_FRAC_SEC_COL,TIMESTAMP_WITH_LOCAL_TZ,XML_TYPE_COL)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
+ query = "INSERT INTO E2E_TABLE_SINK
(VARCHAR_10_COL,CHAR_10_COL,CLOB_COL,BLOB_COL,NUMBER_1,NUMBER_6,NUMBER_10,NUMBER_3_SF_2_DP,NUMBER_7_SF_N2_DP,INTEGER_COL,FLOAT_COL,REAL_COL,BINARY_FLOAT_COL,BINARY_DOUBLE_COL,DATE_COL,TIMESTAMP_WITH_3_FRAC_SEC_COL,TIMESTAMP_WITH_LOCAL_TZ,XML_TYPE_COL,INTERVAL_COL)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
properties {
database.oracle.jdbc.timezoneAsRegion = "false"
}
diff --git
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink_use_select3.conf
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink_use_select3.conf
index d751394109..5403497311 100644
---
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink_use_select3.conf
+++
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/resources/jdbc_oracle_source_to_sink_use_select3.conf
@@ -48,7 +48,7 @@ sink {
url = "jdbc:oracle:thin:@e2e_oracleDb:1521/TESTUSER"
username = testUser
password = testPassword
- query = "INSERT INTO E2E_TABLE_SINK
(VARCHAR_10_COL,CHAR_10_COL,CLOB_COL,BLOB_COL,NUMBER_1,NUMBER_6,NUMBER_10,NUMBER_3_SF_2_DP,NUMBER_7_SF_N2_DP,INTEGER_COL,FLOAT_COL,REAL_COL,BINARY_FLOAT_COL,BINARY_DOUBLE_COL,DATE_COL,TIMESTAMP_WITH_3_FRAC_SEC_COL,TIMESTAMP_WITH_LOCAL_TZ,XML_TYPE_COL)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
+ query = "INSERT INTO E2E_TABLE_SINK
(VARCHAR_10_COL,CHAR_10_COL,CLOB_COL,BLOB_COL,NUMBER_1,NUMBER_6,NUMBER_10,NUMBER_3_SF_2_DP,NUMBER_7_SF_N2_DP,INTEGER_COL,FLOAT_COL,REAL_COL,BINARY_FLOAT_COL,BINARY_DOUBLE_COL,DATE_COL,TIMESTAMP_WITH_3_FRAC_SEC_COL,TIMESTAMP_WITH_LOCAL_TZ,XML_TYPE_COL,INTERVAL_COL)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
properties {
database.oracle.jdbc.timezoneAsRegion = "false"
}