Repository: hive
Updated Branches:
  refs/heads/master 5553c59e3 -> 1fe471d31


HIVE-20937: Postgres jdbc query fail with "LIMIT must not be negative" (Daniel 
Dai, reviewed by Thejas Nair)

Signed-off-by: Thejas M Nair <the...@hortonworks.com>


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/1fe471d3
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/1fe471d3
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/1fe471d3

Branch: refs/heads/master
Commit: 1fe471d31867fdffd8fd62ac5180a9377bef13e5
Parents: 5553c59
Author: Daniel Dai <dai...@gmail.com>
Authored: Mon Nov 19 15:04:34 2018 -0800
Committer: Daniel Dai <dai...@gmail.com>
Committed: Mon Nov 19 15:04:42 2018 -0800

----------------------------------------------------------------------
 .../apache/hive/storage/jdbc/dao/MsSqlDatabaseAccessor.java   | 7 ++++++-
 .../apache/hive/storage/jdbc/dao/OracleDatabaseAccessor.java  | 6 ++++++
 .../hive/storage/jdbc/dao/PostgresDatabaseAccessor.java       | 6 ++++++
 3 files changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/1fe471d3/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/MsSqlDatabaseAccessor.java
----------------------------------------------------------------------
diff --git 
a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/MsSqlDatabaseAccessor.java
 
b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/MsSqlDatabaseAccessor.java
index 5c5455f..d6e117e 100644
--- 
a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/MsSqlDatabaseAccessor.java
+++ 
b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/MsSqlDatabaseAccessor.java
@@ -28,6 +28,9 @@ public class MsSqlDatabaseAccessor extends 
GenericJdbcDatabaseAccessor {
     if (offset == 0) {
       return addLimitToQuery(sql, limit);
     } else {
+      if (limit == -1) {
+        return sql;
+      }
       // Order by is not necessary, but MS SQL require it to use FETCH
       return sql + " ORDER BY 1 OFFSET " + offset + " ROWS FETCH NEXT " + 
limit + " ROWS ONLY";
     }
@@ -35,7 +38,9 @@ public class MsSqlDatabaseAccessor extends 
GenericJdbcDatabaseAccessor {
 
   @Override
   protected String addLimitToQuery(String sql, int limit) {
+    if (limit == -1) {
+      return sql;
+    }
     return sql + " {LIMIT " + limit + "}";
   }
-
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/1fe471d3/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/OracleDatabaseAccessor.java
----------------------------------------------------------------------
diff --git 
a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/OracleDatabaseAccessor.java
 
b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/OracleDatabaseAccessor.java
index 39c4cda..4a993fb 100644
--- 
a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/OracleDatabaseAccessor.java
+++ 
b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/OracleDatabaseAccessor.java
@@ -31,6 +31,9 @@ public class OracleDatabaseAccessor extends 
GenericJdbcDatabaseAccessor {
     if (offset == 0) {
       return addLimitToQuery(sql, limit);
     } else {
+      if (limit == -1) {
+        return sql;
+      }
       // A simple ROWNUM > offset and ROWNUM <= (offset + limit) won't work, 
it will return nothing
       return "SELECT * FROM (SELECT t.*, ROWNUM AS " + ROW_NUM_COLUMN_NAME + " 
FROM (" + sql + ") t) WHERE "
           +  ROW_NUM_COLUMN_NAME + " >" + offset + " AND " + 
ROW_NUM_COLUMN_NAME + " <=" + (offset + limit);
@@ -40,6 +43,9 @@ public class OracleDatabaseAccessor extends 
GenericJdbcDatabaseAccessor {
 
   @Override
   protected String addLimitToQuery(String sql, int limit) {
+    if (limit == -1) {
+      return sql;
+    }
     return "SELECT * FROM (" + sql + ") WHERE ROWNUM <= " + limit;
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/1fe471d3/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/PostgresDatabaseAccessor.java
----------------------------------------------------------------------
diff --git 
a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/PostgresDatabaseAccessor.java
 
b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/PostgresDatabaseAccessor.java
index c0280fd..866b82f 100644
--- 
a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/PostgresDatabaseAccessor.java
+++ 
b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/PostgresDatabaseAccessor.java
@@ -28,12 +28,18 @@ public class PostgresDatabaseAccessor extends 
GenericJdbcDatabaseAccessor {
     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;
   }
 }

Reply via email to