You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@seatunnel.apache.org by GitBox <gi...@apache.org> on 2022/10/25 07:15:25 UTC

[GitHub] [incubator-seatunnel] nutsjian commented on a diff in pull request #3089: [Feature][Connector-V2][JDBC] support sqlite Source & Sink

nutsjian commented on code in PR #3089:
URL: https://github.com/apache/incubator-seatunnel/pull/3089#discussion_r1004090792


##########
seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/sqlite/SqliteTypeMapper.java:
##########
@@ -0,0 +1,176 @@
+/*
+ * 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.seatunnel.connectors.seatunnel.jdbc.internal.dialect.sqlite;
+
+import org.apache.seatunnel.api.table.type.BasicType;
+import org.apache.seatunnel.api.table.type.PrimitiveByteArrayType;
+import org.apache.seatunnel.api.table.type.SeaTunnelDataType;
+import org.apache.seatunnel.connectors.seatunnel.jdbc.internal.dialect.JdbcDialectTypeMapper;
+
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+
+@Slf4j
+public class SqliteTypeMapper implements JdbcDialectTypeMapper {
+
+    private static final Logger LOG = LoggerFactory.getLogger(SqliteTypeMapper.class);
+
+    // ============================data types=====================
+
+    private static final String SQLITE_UNKNOWN = "UNKNOWN";
+    private static final String SQLITE_BIT = "BIT";
+    private static final String SQLITE_BOOLEAN = "BOOLEAN";
+
+    // -------------------------integer----------------------------
+    private static final String SQLITE_TINYINT = "TINYINT";
+    private static final String SQLITE_TINYINT_UNSIGNED = "TINYINT UNSIGNED";
+    private static final String SQLITE_SMALLINT = "SMALLINT";
+    private static final String SQLITE_SMALLINT_UNSIGNED = "SMALLINT UNSIGNED";
+    private static final String SQLITE_MEDIUMINT = "MEDIUMINT";
+    private static final String SQLITE_MEDIUMINT_UNSIGNED = "MEDIUMINT UNSIGNED";
+    private static final String SQLITE_INT = "INT";
+    private static final String SQLITE_INT_UNSIGNED = "INT UNSIGNED";
+    private static final String SQLITE_INTEGER = "INTEGER";
+    private static final String SQLITE_INTEGER_UNSIGNED = "INTEGER UNSIGNED";
+    private static final String SQLITE_BIGINT = "BIGINT";
+    private static final String SQLITE_BIGINT_UNSIGNED = "BIGINT UNSIGNED";
+    private static final String SQLITE_DECIMAL = "DECIMAL";
+    private static final String SQLITE_DECIMAL_UNSIGNED = "DECIMAL UNSIGNED";
+    private static final String SQLITE_FLOAT = "FLOAT";
+    private static final String SQLITE_FLOAT_UNSIGNED = "FLOAT UNSIGNED";
+    private static final String SQLITE_DOUBLE = "DOUBLE";
+    private static final String SQLITE_DOUBLE_PRECISION = "DOUBLE PRECISION";
+    private static final String SQLITE_DOUBLE_UNSIGNED = "DOUBLE UNSIGNED";
+    private static final String SQLITE_NUMERIC = "NUMERIC";
+    private static final String SQLITE_REAL = "REAL";
+
+    // -------------------------text----------------------------
+    private static final String SQLITE_CHAR = "CHAR";
+    private static final String SQLITE_CHARACTER = "CHARACTER";
+    private static final String SQLITE_VARYING_CHARACTER = "VARYING_CHARACTER";
+    private static final String SQLITE_NATIVE_CHARACTER = "NATIVE_CHARACTER";
+    private static final String SQLITE_NCHAR = "NCHAR";
+    private static final String SQLITE_VARCHAR = "VARCHAR";
+    private static final String SQLITE_LONGVARCHAR = "LONGVARCHAR";
+    private static final String SQLITE_LONGNVARCHAR = "LONGNVARCHAR";
+    private static final String SQLITE_NVARCHAR = "NVARCHAR";
+    private static final String SQLITE_TINYTEXT = "TINYTEXT";
+    private static final String SQLITE_MEDIUMTEXT = "MEDIUMTEXT";
+    private static final String SQLITE_TEXT = "TEXT";
+    private static final String SQLITE_LONGTEXT = "LONGTEXT";
+    private static final String SQLITE_JSON = "JSON";
+    private static final String SQLITE_CLOB = "CLOB";
+
+    // ------------------------------time(text)-------------------------
+    private static final String SQLITE_DATE = "DATE";
+    private static final String SQLITE_DATETIME = "DATETIME";
+    private static final String SQLITE_TIME = "TIME";
+    private static final String SQLITE_TIMESTAMP = "TIMESTAMP";
+
+    // ------------------------------blob-------------------------
+    private static final String SQLITE_TINYBLOB = "TINYBLOB";
+    private static final String SQLITE_MEDIUMBLOB = "MEDIUMBLOB";
+    private static final String SQLITE_BLOB = "BLOB";
+    private static final String SQLITE_LONGBLOB = "LONGBLOB";
+    private static final String SQLITE_BINARY = "BINARY";
+    private static final String SQLITE_VARBINARY = "VARBINARY";
+    private static final String SQLITE_LONGVARBINARY = "LONGVARBINARY";
+
+    @Override
+    public SeaTunnelDataType<?> mapping(ResultSetMetaData metadata, int colIndex) throws SQLException {
+        String columnTypeName = metadata.getColumnTypeName(colIndex).toUpperCase().trim();
+        switch (columnTypeName) {
+            case SQLITE_BIT:
+            case SQLITE_BOOLEAN:
+                return BasicType.BOOLEAN_TYPE;
+            case SQLITE_TINYINT:
+            case SQLITE_TINYINT_UNSIGNED:
+            case SQLITE_SMALLINT:

Review Comment:
   thx, I'll test it.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@seatunnel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org