You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by da...@apache.org on 2019/03/06 19:08:24 UTC
[hive] 01/03: HIVE-21253: Support DB2 in JDBC StorageHandler
(Daniel Dai, reviewed by Thejas Nair)
This is an automated email from the ASF dual-hosted git repository.
daijy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
commit 125288658938dcfa1fe8c144dff8b1f800b1bcc4
Author: Daniel Dai <da...@gmail.com>
AuthorDate: Fri Mar 1 21:23:02 2019 -0800
HIVE-21253: Support DB2 in JDBC StorageHandler (Daniel Dai, reviewed by Thejas Nair)
Signed-off-by: Thejas M Nair <th...@hortonworks.com>
---
.../hive/storage/jdbc/JdbcStorageHandler.java | 4 ++
.../hive/storage/jdbc/conf/DatabaseType.java | 1 +
.../hive/storage/jdbc/dao/DB2DatabaseAccessor.java | 44 ++++++++++++++++++++++
.../storage/jdbc/dao/DatabaseAccessorFactory.java | 4 ++
4 files changed, 53 insertions(+)
diff --git a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcStorageHandler.java b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcStorageHandler.java
index d8c5433..0479eec 100644
--- a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcStorageHandler.java
+++ b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcStorageHandler.java
@@ -150,6 +150,10 @@ public class JdbcStorageHandler implements HiveStorageHandler {
} catch (Exception e) {
}
try {
+ classesToLoad.add(Class.forName("com.ibm.db2.jcc.DB2Driver"));
+ } catch (Exception e) {
+ } // Adding db2 jdbc driver if exists
+ try {
JarUtils.addDependencyJars(conf, classesToLoad);
} catch (IOException e) {
LOGGER.error("Could not add necessary JDBC storage handler dependencies to classpath", e);
diff --git a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/DatabaseType.java b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/DatabaseType.java
index b8b770f..bdcc3f3 100644
--- a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/DatabaseType.java
+++ b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/DatabaseType.java
@@ -17,6 +17,7 @@ package org.apache.hive.storage.jdbc.conf;
public enum DatabaseType {
MYSQL,
H2,
+ DB2,
DERBY,
ORACLE,
POSTGRES,
diff --git a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DB2DatabaseAccessor.java b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DB2DatabaseAccessor.java
new file mode 100644
index 0000000..fab9829
--- /dev/null
+++ b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DB2DatabaseAccessor.java
@@ -0,0 +1,44 @@
+/*
+ * 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.hive.storage.jdbc.dao;
+
+/**
+ * DB2 specific data accessor. DB2 JDBC drivers works similar to Postgres, so the current
+ * implementation of DB2DatabaseAccessor is the same as PostgresDatabaseAccessor
+ */
+public class DB2DatabaseAccessor extends GenericJdbcDatabaseAccessor {
+ @Override
+ protected String addLimitAndOffsetToQuery(String sql, int limit, int offset) {
+ if (offset == 0) {
+ return addLimitToQuery(sql, limit);
+ } else {
+ if (limit == -1) {
+ return sql;
+ }
+ return sql + " LIMIT " + limit + " OFFSET " + offset;
+ }
+ }
+
+ @Override
+ protected String addLimitToQuery(String sql, int limit) {
+ if (limit == -1) {
+ return sql;
+ }
+ return sql + " LIMIT " + limit;
+ }
+}
diff --git a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DatabaseAccessorFactory.java b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DatabaseAccessorFactory.java
index 692cb23..e531ecc 100644
--- a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DatabaseAccessorFactory.java
+++ b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DatabaseAccessorFactory.java
@@ -51,6 +51,10 @@ public class DatabaseAccessorFactory {
accessor = new MsSqlDatabaseAccessor();
break;
+ case DB2:
+ accessor = new DB2DatabaseAccessor();
+ break;
+
default:
accessor = new GenericJdbcDatabaseAccessor();
break;