vvysotskyi commented on a change in pull request #1714: DRILL-7048: Implement 
JDBC Statement.setMaxRows() with System Option
URL: https://github.com/apache/drill/pull/1714#discussion_r269263831
 
 

 ##########
 File path: 
exec/jdbc/src/test/java/org/apache/drill/jdbc/PreparedStatementTest.java
 ##########
 @@ -410,6 +417,155 @@ public void testNonTriggeredQueryTimeout() throws 
SQLException {
     }
   }
 
+  ////////////////////////////////////////
+  // Query maxRows methods:
+
+  /**
+   * Test for reading of default max rows
+   */
+  @Test
+  public void   testDefaultGetMaxRows() throws SQLException {
+    try(PreparedStatement pStmt = 
connection.prepareStatement(SYS_OPTIONS_SQL)) {
+      int maxRowsValue = pStmt.getMaxRows();
+      assertEquals(0, maxRowsValue);
+    }
+  }
+
+  /**
+   * Test Invalid parameter by giving negative maxRows value
+   */
+  @Test
+  public void testInvalidSetMaxRows() throws SQLException {
+    try (PreparedStatement pStmt = 
connection.prepareStatement(SYS_OPTIONS_SQL)) {
+      //Setting negative value
+      int valueToSet = -10;
+      try {
+        pStmt.setMaxRows(valueToSet);
+      } catch ( final SQLException e) {
+        assertThat( e.getMessage(), containsString("VALIDATION ERROR: Option 
exec.query.max_rows must be between 0 and ") );
+      }
+    }
+  }
+
+  /**
+   * Test setting a valid maxRows value
+   */
+  @Test
+  public void testValidSetMaxRows() throws SQLException {
+    try (PreparedStatement pStmt = 
connection.prepareStatement(SYS_OPTIONS_SQL)) {
+      //Setting positive value
+      int valueToSet = RANDOMIZER.nextInt(59)+1;
+      logger.info("Setting maximum resultset size as {} rows", valueToSet);
+      pStmt.setMaxRows(valueToSet);
+      assertEquals( valueToSet, pStmt.getMaxRows() );
+    }
+  }
+
+  /**
+   * Test setting maxSize as zero (i.e. no Limit)
+   */
+  @Test
+  public void testSetMaxRowsAsZero() throws SQLException {
+    try (PreparedStatement pStmt = 
connection.prepareStatement(SYS_OPTIONS_SQL)) {
+      pStmt.setMaxRows(0);
+      pStmt.execute();
+      ResultSet rs = pStmt.getResultSet();
+      int rowCount = 0;
+      while (rs.next()) {
+        rs.getBytes(1);
+        rowCount++;
+      }
+      assertTrue(rowCount > 0);
+    }
+  }
+
+  /**
+   * Test setting maxSize at a value lower than existing query limit
+   */
+  @Test
+  public void testSetMaxRowsLowerThanQueryLimit() throws SQLException {
+    try (PreparedStatement pStmt = 
connection.prepareStatement(SYS_OPTIONS_SQL_LIMIT_10)) {
+      int valueToSet = RANDOMIZER.nextInt(9)+1; //range:[1-9]
+      pStmt.setMaxRows(valueToSet);
+      pStmt.executeQuery();
+      ResultSet rs = pStmt.getResultSet();
+      int rowCount = 0;
+      while (rs.next()) {
+        rs.getBytes(1);
+        rowCount++;
+      }
+      logger.info("MaxRows was set as {} and query limited to 10 returned a 
resultSet of {} rows", valueToSet, rowCount);
 
 Review comment:
   What is the purpose of this message? It will be newer read by dev except for 
the case when a test failed and logging is enabled. But the real purpose may be 
when this message is moved into an assertion check, so in the case of test 
failure, it is printed and in other cases, logging does not happen.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to