diff --git a/src/main/java/com/databricks/jdbc/api/impl/DatabricksStatement.java b/src/main/java/com/databricks/jdbc/api/impl/DatabricksStatement.java index f7a93197a..66cb25c85 100644 --- a/src/main/java/com/databricks/jdbc/api/impl/DatabricksStatement.java +++ b/src/main/java/com/databricks/jdbc/api/impl/DatabricksStatement.java @@ -157,7 +157,11 @@ public void setMaxRows(int max) throws SQLException { LOGGER.debug(String.format("public void setMaxRows(int max = {%s})", max)); checkIfClosed(); ValidationUtil.checkIfNonNegative(max, "maxRows"); - this.maxRows = max; + if (max == 0) { + this.maxRows = DEFAULT_RESULT_ROW_LIMIT; + } else { + this.maxRows = max; + } } @Override @@ -165,7 +169,11 @@ public void setLargeMaxRows(long max) throws SQLException { LOGGER.debug("public void setLargeMaxRows(long max = {})", max); checkIfClosed(); ValidationUtil.checkIfNonNegative(max, "maxRows"); - this.maxRows = max; + if (max == 0) { + this.maxRows = DEFAULT_RESULT_ROW_LIMIT; + } else { + this.maxRows = max; + } } @Override diff --git a/src/test/java/com/databricks/jdbc/api/impl/DatabricksStatementTest.java b/src/test/java/com/databricks/jdbc/api/impl/DatabricksStatementTest.java index 71decb7c6..8599d05e5 100644 --- a/src/test/java/com/databricks/jdbc/api/impl/DatabricksStatementTest.java +++ b/src/test/java/com/databricks/jdbc/api/impl/DatabricksStatementTest.java @@ -1,5 +1,6 @@ package com.databricks.jdbc.api.impl; +import static com.databricks.jdbc.common.EnvironmentVariables.*; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; @@ -360,6 +361,19 @@ public void testGetExecutionResult_statementIdNull() throws Exception { assertThrows(DatabricksSQLException.class, statement::getExecutionResult); } + @Test + public void testGetAndSetMaxRows() throws Exception { + IDatabricksConnectionContext connectionContext = + DatabricksConnectionContext.parse(JDBC_URL, new Properties()); + DatabricksConnection connection = new DatabricksConnection(connectionContext, client); + DatabricksStatement statement = new DatabricksStatement(connection); + statement.setMaxRows(Integer.MAX_VALUE); + assertEquals(Integer.MAX_VALUE, statement.getMaxRows()); + // "no limit" + statement.setMaxRows(0); + assertEquals(DEFAULT_RESULT_ROW_LIMIT, statement.getMaxRows()); + } + @Test public void testGetAndSetLargeMaxRows() throws Exception { IDatabricksConnectionContext connectionContext = @@ -368,6 +382,9 @@ public void testGetAndSetLargeMaxRows() throws Exception { DatabricksStatement statement = new DatabricksStatement(connection); statement.setLargeMaxRows(Long.MAX_VALUE); assertEquals(Long.MAX_VALUE, statement.getLargeMaxRows()); + // "no limit" + statement.setLargeMaxRows(0); + assertEquals(DEFAULT_RESULT_ROW_LIMIT, statement.getLargeMaxRows()); } @Test