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 <dai...@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 <the...@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;