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 @@ protected String addLimitAndOffsetToQuery(String sql, int limit, int offset) { 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 @@ protected String addLimitAndOffsetToQuery(String sql, int limit, int 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/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 @@ protected String addLimitAndOffsetToQuery(String sql, int limit, int offset) { 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 @@ protected String addLimitAndOffsetToQuery(String sql, int limit, int offset) { @Override protected String addLimitToQuery(String sql, int limit) { + if (limit == -1) { + return sql; + } return "SELECT * FROM (" + sql + ") WHERE ROWNUM <= " + limit; } 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 @@ 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; } }