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

martijnvisser pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-connector-jdbc.git

commit 0246064b1262d6e8889dfdc96a1ea1e6a6a640aa
Author: Joao Boto <b...@boto.pro>
AuthorDate: Mon Jan 30 10:30:08 2023 +0100

    [FLINK-30790] Refactor JdbcDataTypeTest create tests by dialect
---
 .../flink/connector/jdbc/JdbcDataTypeTest.java     | 230 ---------------------
 .../jdbc/dialect/JdbcDialectTypeTest.java          | 135 ++++++++++++
 .../jdbc/dialect/mysql/MySqlDialectTypeTest.java   |  65 ++++++
 .../jdbc/dialect/oracle/OracleDialectTypeTest.java |  60 ++++++
 .../dialect/postgres/PostgresDialectTypeTest.java  |  65 ++++++
 5 files changed, 325 insertions(+), 230 deletions(-)

diff --git 
a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/JdbcDataTypeTest.java
 
b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/JdbcDataTypeTest.java
deleted file mode 100644
index 75be19a..0000000
--- 
a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/JdbcDataTypeTest.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.flink.connector.jdbc;
-
-import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
-import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
-import org.apache.flink.testutils.junit.extensions.parameterized.Parameter;
-import 
org.apache.flink.testutils.junit.extensions.parameterized.ParameterizedTestExtension;
-import org.apache.flink.testutils.junit.extensions.parameterized.Parameters;
-
-import org.junit.jupiter.api.TestTemplate;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-import javax.annotation.Nullable;
-
-import java.util.Arrays;
-import java.util.List;
-
-import static org.apache.flink.core.testutils.FlinkAssertions.anyCauseMatches;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
-/** Tests for all DataTypes and Dialects of JDBC connector. */
-@ExtendWith(ParameterizedTestExtension.class)
-public class JdbcDataTypeTest {
-
-    private static final String DDL_FORMAT =
-            "CREATE TABLE T(\n"
-                    + "f0 %s\n"
-                    + ") WITH (\n"
-                    + "  'connector'='jdbc',\n"
-                    + "  'url'='"
-                    + "jdbc:%s:memory:test"
-                    + "',\n"
-                    + "  'table-name'='myTable'\n"
-                    + ")";
-
-    @Parameters(name = "{0}")
-    public static List<TestItem> testData() {
-        return Arrays.asList(
-                createTestItem("derby", "CHAR"),
-                createTestItem("derby", "VARCHAR"),
-                createTestItem("derby", "BOOLEAN"),
-                createTestItem("derby", "TINYINT"),
-                createTestItem("derby", "SMALLINT"),
-                createTestItem("derby", "INTEGER"),
-                createTestItem("derby", "BIGINT"),
-                createTestItem("derby", "FLOAT"),
-                createTestItem("derby", "DOUBLE"),
-                createTestItem("derby", "DECIMAL(10, 4)"),
-                createTestItem("derby", "DATE"),
-                createTestItem("derby", "TIME"),
-                createTestItem("derby", "TIMESTAMP(3)"),
-                createTestItem("derby", "TIMESTAMP WITHOUT TIME ZONE"),
-                createTestItem("derby", "TIMESTAMP(9) WITHOUT TIME ZONE"),
-                createTestItem("derby", "VARBINARY"),
-                createTestItem("mysql", "CHAR"),
-                createTestItem("mysql", "VARCHAR"),
-                createTestItem("mysql", "BOOLEAN"),
-                createTestItem("mysql", "TINYINT"),
-                createTestItem("mysql", "SMALLINT"),
-                createTestItem("mysql", "INTEGER"),
-                createTestItem("mysql", "BIGINT"),
-                createTestItem("mysql", "FLOAT"),
-                createTestItem("mysql", "DOUBLE"),
-                createTestItem("mysql", "DECIMAL(10, 4)"),
-                createTestItem("mysql", "DECIMAL(38, 18)"),
-                createTestItem("mysql", "DATE"),
-                createTestItem("mysql", "TIME"),
-                createTestItem("mysql", "TIMESTAMP(3)"),
-                createTestItem("mysql", "TIMESTAMP WITHOUT TIME ZONE"),
-                createTestItem("mysql", "VARBINARY"),
-                createTestItem("postgresql", "CHAR"),
-                createTestItem("postgresql", "VARCHAR"),
-                createTestItem("postgresql", "BOOLEAN"),
-                createTestItem("postgresql", "TINYINT"),
-                createTestItem("postgresql", "SMALLINT"),
-                createTestItem("postgresql", "INTEGER"),
-                createTestItem("postgresql", "BIGINT"),
-                createTestItem("postgresql", "FLOAT"),
-                createTestItem("postgresql", "DOUBLE"),
-                createTestItem("postgresql", "DECIMAL(10, 4)"),
-                createTestItem("postgresql", "DECIMAL(38, 18)"),
-                createTestItem("postgresql", "DATE"),
-                createTestItem("postgresql", "TIME"),
-                createTestItem("postgresql", "TIMESTAMP(3)"),
-                createTestItem("postgresql", "TIMESTAMP WITHOUT TIME ZONE"),
-                createTestItem("postgresql", "VARBINARY"),
-                createTestItem("postgresql", "ARRAY<INTEGER>"),
-                createTestItem("oracle", "CHAR"),
-                createTestItem("oracle", "VARCHAR"),
-                createTestItem("oracle", "BOOLEAN"),
-                createTestItem("oracle", "TINYINT"),
-                createTestItem("oracle", "SMALLINT"),
-                createTestItem("oracle", "INTEGER"),
-                createTestItem("oracle", "BIGINT"),
-                createTestItem("oracle", "FLOAT"),
-                createTestItem("oracle", "DOUBLE"),
-                createTestItem("oracle", "DECIMAL(10, 4)"),
-                createTestItem("oracle", "DECIMAL(38, 18)"),
-                createTestItem("oracle", "DATE"),
-                createTestItem("oracle", "TIME"),
-                createTestItem("oracle", "TIMESTAMP(3)"),
-                createTestItem("oracle", "TIMESTAMP WITHOUT TIME ZONE"),
-                createTestItem("oracle", "VARBINARY"),
-
-                // Unsupported types throws errors.
-                createTestItem(
-                        "derby", "BINARY", "The Derby dialect doesn't support 
type: BINARY(1)."),
-                createTestItem(
-                        "derby",
-                        "VARBINARY(10)",
-                        "The Derby dialect doesn't support type: 
VARBINARY(10)."),
-                createTestItem(
-                        "derby",
-                        "TIMESTAMP_LTZ(3)",
-                        "The Derby dialect doesn't support type: 
TIMESTAMP_LTZ(3)."),
-                createTestItem(
-                        "derby",
-                        "DECIMAL(38, 18)",
-                        "The precision of field 'f0' is out of the DECIMAL 
precision range [1, 31] supported by Derby dialect."),
-                createTestItem(
-                        "mysql", "BINARY", "The MySQL dialect doesn't support 
type: BINARY(1)."),
-                createTestItem(
-                        "mysql",
-                        "VARBINARY(10)",
-                        "The MySQL dialect doesn't support type: 
VARBINARY(10)."),
-                createTestItem(
-                        "mysql",
-                        "TIMESTAMP(9) WITHOUT TIME ZONE",
-                        "The precision of field 'f0' is out of the TIMESTAMP 
precision range [0, 6] supported by MySQL dialect."),
-                createTestItem(
-                        "mysql",
-                        "TIMESTAMP_LTZ(3)",
-                        "The MySQL dialect doesn't support type: 
TIMESTAMP_LTZ(3)."),
-                createTestItem(
-                        "postgresql",
-                        "BINARY",
-                        "The PostgreSQL dialect doesn't support type: 
BINARY(1)."),
-                createTestItem(
-                        "postgresql",
-                        "VARBINARY(10)",
-                        "The PostgreSQL dialect doesn't support type: 
VARBINARY(10)."),
-                createTestItem(
-                        "postgresql",
-                        "TIMESTAMP(9) WITHOUT TIME ZONE",
-                        "The precision of field 'f0' is out of the TIMESTAMP 
precision range [1, 6] supported by PostgreSQL dialect."),
-                createTestItem(
-                        "postgresql", "TIMESTAMP_LTZ(3)", "Unsupported 
type:TIMESTAMP_LTZ(3)"),
-                createTestItem(
-                        "oracle", "BINARY", "The Oracle dialect doesn't 
support type: BINARY(1)."),
-                createTestItem(
-                        "oracle",
-                        "VARBINARY(10)",
-                        "The Oracle dialect doesn't support type: 
VARBINARY(10)."));
-    }
-
-    private static TestItem createTestItem(Object... args) {
-        assertThat(args).hasSizeGreaterThanOrEqualTo(2);
-        TestItem item = TestItem.fromDialectAndType((String) args[0], (String) 
args[1]);
-        if (args.length == 3) {
-            item.withExpectError((String) args[2]);
-        }
-        return item;
-    }
-
-    @Parameter public TestItem testItem;
-
-    @TestTemplate
-    void testDataTypeValidate() {
-        String sqlDDL = String.format(DDL_FORMAT, testItem.dataTypeExpr, 
testItem.dialect);
-
-        StreamExecutionEnvironment env = 
StreamExecutionEnvironment.getExecutionEnvironment();
-        StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);
-
-        tEnv.executeSql(sqlDDL);
-
-        if (testItem.expectError != null) {
-            assertThatThrownBy(() -> tEnv.sqlQuery("SELECT * FROM T"))
-                    .satisfies(anyCauseMatches(testItem.expectError));
-        } else {
-            tEnv.sqlQuery("SELECT * FROM T");
-        }
-    }
-
-    // ~ Inner Class
-    private static class TestItem {
-
-        private final String dialect;
-
-        private final String dataTypeExpr;
-
-        @Nullable private String expectError;
-
-        private TestItem(String dialect, String dataTypeExpr) {
-            this.dialect = dialect;
-            this.dataTypeExpr = dataTypeExpr;
-        }
-
-        static TestItem fromDialectAndType(String dialect, String 
dataTypeExpr) {
-            return new TestItem(dialect, dataTypeExpr);
-        }
-
-        TestItem withExpectError(String expectError) {
-            this.expectError = expectError;
-            return this;
-        }
-
-        @Override
-        public String toString() {
-            return String.format("Dialect: %s, DataType: %s", dialect, 
dataTypeExpr);
-        }
-    }
-}
diff --git 
a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/dialect/JdbcDialectTypeTest.java
 
b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/dialect/JdbcDialectTypeTest.java
new file mode 100644
index 0000000..de51b73
--- /dev/null
+++ 
b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/dialect/JdbcDialectTypeTest.java
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.connector.jdbc.dialect;
+
+import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
+import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
+
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import javax.annotation.Nullable;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static org.apache.flink.core.testutils.FlinkAssertions.anyCauseMatches;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+/** Tests for all DataTypes and Dialects of JDBC connector. */
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+public class JdbcDialectTypeTest {
+
+    private static final String DDL_FORMAT =
+            "CREATE TABLE T (f0 %s)"
+                    + " WITH ("
+                    + "  'connector'='jdbc',"
+                    + "  'url'='jdbc:%s:memory:test',"
+                    + "  'table-name'='myTable'"
+                    + ")";
+
+    protected String testDialect() {
+        return "derby";
+    }
+
+    protected List<TestItem> testData() {
+        return Arrays.asList(
+                createTestItem("CHAR"),
+                createTestItem("VARCHAR"),
+                createTestItem("BOOLEAN"),
+                createTestItem("TINYINT"),
+                createTestItem("SMALLINT"),
+                createTestItem("INTEGER"),
+                createTestItem("BIGINT"),
+                createTestItem("FLOAT"),
+                createTestItem("DOUBLE"),
+                createTestItem("DECIMAL(10, 4)"),
+                createTestItem("DATE"),
+                createTestItem("TIME"),
+                createTestItem("TIMESTAMP(3)"),
+                createTestItem("TIMESTAMP WITHOUT TIME ZONE"),
+                createTestItem("TIMESTAMP(9) WITHOUT TIME ZONE"),
+                createTestItem("VARBINARY"),
+
+                // Not valid data
+                createTestItem("BINARY", "The Derby dialect doesn't support 
type: BINARY(1)."),
+                createTestItem(
+                        "VARBINARY(10)", "The Derby dialect doesn't support 
type: VARBINARY(10)."),
+                createTestItem(
+                        "TIMESTAMP_LTZ(3)",
+                        "The Derby dialect doesn't support type: 
TIMESTAMP_LTZ(3)."),
+                createTestItem(
+                        "DECIMAL(38, 18)",
+                        "The precision of field 'f0' is out of the DECIMAL 
precision range [1, 31] supported by Derby dialect."));
+    }
+
+    protected TestItem createTestItem(String dataType) {
+        return TestItem.of(testDialect(), dataType);
+    }
+
+    protected TestItem createTestItem(String dataType, String expectError) {
+        return TestItem.of(testDialect(), dataType, expectError);
+    }
+
+    @ParameterizedTest
+    @MethodSource("testData")
+    void testDataTypeValidate(TestItem testItem) {
+        String sqlDDL = String.format(DDL_FORMAT, testItem.dataTypeExpr, 
testItem.dialect);
+
+        StreamExecutionEnvironment env = 
StreamExecutionEnvironment.getExecutionEnvironment();
+        StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);
+
+        tEnv.executeSql(sqlDDL);
+
+        if (testItem.expectError != null) {
+            assertThatThrownBy(() -> tEnv.sqlQuery("SELECT * FROM T"))
+                    .satisfies(anyCauseMatches(testItem.expectError));
+        } else {
+            tEnv.sqlQuery("SELECT * FROM T");
+        }
+    }
+
+    // ~ Inner Class
+    /** Test item for parameterized test. */
+    public static class TestItem {
+        private final String dialect;
+        private final String dataTypeExpr;
+        private final String expectError;
+
+        private TestItem(String dialect, String dataTypeExpr, @Nullable String 
expectError) {
+            this.dialect = dialect;
+            this.dataTypeExpr = dataTypeExpr;
+            this.expectError = expectError;
+        }
+
+        static TestItem of(String dialect, String dataTypeExpr) {
+            return new TestItem(dialect, dataTypeExpr, null);
+        }
+
+        static TestItem of(String dialect, String dataTypeExpr, String 
expectError) {
+            return new TestItem(dialect, dataTypeExpr, expectError);
+        }
+
+        @Override
+        public String toString() {
+            return String.format("Dialect: %s, DataType: %s", dialect, 
dataTypeExpr);
+        }
+    }
+}
diff --git 
a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/dialect/mysql/MySqlDialectTypeTest.java
 
b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/dialect/mysql/MySqlDialectTypeTest.java
new file mode 100644
index 0000000..816d0b4
--- /dev/null
+++ 
b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/dialect/mysql/MySqlDialectTypeTest.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.connector.jdbc.dialect.mysql;
+
+import org.apache.flink.connector.jdbc.dialect.JdbcDialectTypeTest;
+
+import java.util.Arrays;
+import java.util.List;
+
+/** The MySql params for {@link JdbcDialectTypeTest}. */
+public class MySqlDialectTypeTest extends JdbcDialectTypeTest {
+
+    @Override
+    protected String testDialect() {
+        return "mysql";
+    }
+
+    @Override
+    protected List<TestItem> testData() {
+        return Arrays.asList(
+                createTestItem("CHAR"),
+                createTestItem("VARCHAR"),
+                createTestItem("BOOLEAN"),
+                createTestItem("TINYINT"),
+                createTestItem("SMALLINT"),
+                createTestItem("INTEGER"),
+                createTestItem("BIGINT"),
+                createTestItem("FLOAT"),
+                createTestItem("DOUBLE"),
+                createTestItem("DECIMAL(10, 4)"),
+                createTestItem("DECIMAL(38, 18)"),
+                createTestItem("DATE"),
+                createTestItem("TIME"),
+                createTestItem("TIMESTAMP(3)"),
+                createTestItem("TIMESTAMP WITHOUT TIME ZONE"),
+                createTestItem("VARBINARY"),
+
+                // Not valid data
+                createTestItem("BINARY", "The MySQL dialect doesn't support 
type: BINARY(1)."),
+                createTestItem(
+                        "VARBINARY(10)", "The MySQL dialect doesn't support 
type: VARBINARY(10)."),
+                createTestItem(
+                        "TIMESTAMP(9) WITHOUT TIME ZONE",
+                        "The precision of field 'f0' is out of the TIMESTAMP 
precision range [0, 6] supported by MySQL dialect."),
+                createTestItem(
+                        "TIMESTAMP_LTZ(3)",
+                        "The MySQL dialect doesn't support type: 
TIMESTAMP_LTZ(3)."));
+    }
+}
diff --git 
a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/dialect/oracle/OracleDialectTypeTest.java
 
b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/dialect/oracle/OracleDialectTypeTest.java
new file mode 100644
index 0000000..3354212
--- /dev/null
+++ 
b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/dialect/oracle/OracleDialectTypeTest.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.connector.jdbc.dialect.oracle;
+
+import org.apache.flink.connector.jdbc.dialect.JdbcDialectTypeTest;
+
+import java.util.Arrays;
+import java.util.List;
+
+/** The Oracle params for {@link JdbcDialectTypeTest}. */
+public class OracleDialectTypeTest extends JdbcDialectTypeTest {
+
+    @Override
+    protected String testDialect() {
+        return "oracle";
+    }
+
+    @Override
+    protected List<TestItem> testData() {
+        return Arrays.asList(
+                createTestItem("CHAR"),
+                createTestItem("VARCHAR"),
+                createTestItem("BOOLEAN"),
+                createTestItem("TINYINT"),
+                createTestItem("SMALLINT"),
+                createTestItem("INTEGER"),
+                createTestItem("BIGINT"),
+                createTestItem("FLOAT"),
+                createTestItem("DOUBLE"),
+                createTestItem("DECIMAL(10, 4)"),
+                createTestItem("DECIMAL(38, 18)"),
+                createTestItem("DATE"),
+                createTestItem("TIME"),
+                createTestItem("TIMESTAMP(3)"),
+                createTestItem("TIMESTAMP WITHOUT TIME ZONE"),
+                createTestItem("VARBINARY"),
+
+                // Not valid data
+                createTestItem("BINARY", "The Oracle dialect doesn't support 
type: BINARY(1)."),
+                createTestItem(
+                        "VARBINARY(10)",
+                        "The Oracle dialect doesn't support type: 
VARBINARY(10)."));
+    }
+}
diff --git 
a/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/dialect/postgres/PostgresDialectTypeTest.java
 
b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/dialect/postgres/PostgresDialectTypeTest.java
new file mode 100644
index 0000000..91d968d
--- /dev/null
+++ 
b/flink-connector-jdbc/src/test/java/org/apache/flink/connector/jdbc/dialect/postgres/PostgresDialectTypeTest.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.connector.jdbc.dialect.postgres;
+
+import org.apache.flink.connector.jdbc.dialect.JdbcDialectTypeTest;
+
+import java.util.Arrays;
+import java.util.List;
+
+/** The PostgresSql params for {@link JdbcDialectTypeTest}. */
+public class PostgresDialectTypeTest extends JdbcDialectTypeTest {
+
+    @Override
+    protected String testDialect() {
+        return "postgresql";
+    }
+
+    @Override
+    protected List<TestItem> testData() {
+        return Arrays.asList(
+                createTestItem("CHAR"),
+                createTestItem("VARCHAR"),
+                createTestItem("BOOLEAN"),
+                createTestItem("TINYINT"),
+                createTestItem("SMALLINT"),
+                createTestItem("INTEGER"),
+                createTestItem("BIGINT"),
+                createTestItem("FLOAT"),
+                createTestItem("DOUBLE"),
+                createTestItem("DECIMAL(10, 4)"),
+                createTestItem("DECIMAL(38, 18)"),
+                createTestItem("DATE"),
+                createTestItem("TIME"),
+                createTestItem("TIMESTAMP(3)"),
+                createTestItem("TIMESTAMP WITHOUT TIME ZONE"),
+                createTestItem("VARBINARY"),
+                createTestItem("ARRAY<INTEGER>"),
+
+                // Not valid data
+                createTestItem("BINARY", "The PostgreSQL dialect doesn't 
support type: BINARY(1)."),
+                createTestItem(
+                        "VARBINARY(10)",
+                        "The PostgreSQL dialect doesn't support type: 
VARBINARY(10)."),
+                createTestItem(
+                        "TIMESTAMP(9) WITHOUT TIME ZONE",
+                        "The precision of field 'f0' is out of the TIMESTAMP 
precision range [1, 6] supported by PostgreSQL dialect."),
+                createTestItem("TIMESTAMP_LTZ(3)", "Unsupported 
type:TIMESTAMP_LTZ(3)"));
+    }
+}

Reply via email to