You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by pa...@apache.org on 2015/05/06 07:26:21 UTC

[5/9] drill git commit: DRILL-2904: Fix wrong "before rows" message to "after rows" message

DRILL-2904: Fix wrong "before rows" message to "after rows" message

- Worked around Avatica isBeforeFirst()/next() bug.
- Fixed corresponding error in unit test.
- Also fixed other backwards test-failure message wording.


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

Branch: refs/heads/master
Commit: c492d4f88fa8ae2546205105c76ac48728cfecbe
Parents: 7b776e7
Author: dbarclay <db...@maprtech.com>
Authored: Tue Apr 28 11:14:11 2015 -0700
Committer: Parth Chandra <pc...@maprtech.com>
Committed: Tue May 5 19:29:17 2015 -0700

----------------------------------------------------------------------
 .../org/apache/drill/jdbc/AvaticaDrillSqlAccessor.java | 13 +++++++++----
 .../java/org/apache/drill/jdbc/DrillResultSetTest.java |  9 +++++----
 2 files changed, 14 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/c492d4f8/exec/jdbc/src/main/java/org/apache/drill/jdbc/AvaticaDrillSqlAccessor.java
----------------------------------------------------------------------
diff --git a/exec/jdbc/src/main/java/org/apache/drill/jdbc/AvaticaDrillSqlAccessor.java b/exec/jdbc/src/main/java/org/apache/drill/jdbc/AvaticaDrillSqlAccessor.java
index 2b20f23..f5aa3b7 100644
--- a/exec/jdbc/src/main/java/org/apache/drill/jdbc/AvaticaDrillSqlAccessor.java
+++ b/exec/jdbc/src/main/java/org/apache/drill/jdbc/AvaticaDrillSqlAccessor.java
@@ -58,13 +58,18 @@ public class AvaticaDrillSqlAccessor implements Accessor {
   }
 
   private int getCurrentRecordNumber() throws SQLException {
-    if ( cursor.getResultSet().isBeforeFirst() ) {
+    // WORKAROUND:  isBeforeFirst can't be called first here because AvaticaResultSet
+    // .next() doesn't increment its row field when cursor.next() returns false,
+    // so in that case row can be left at -1, so isBeforeFirst() returns true
+    // even though we're not longer before the empty set of rows--and it's all
+    // private, so we can't get to it to override any of several candidates.
+    if ( cursor.getResultSet().isAfterLast() ) {
       throw new InvalidCursorStateSqlException(
-          "Result set cursor is positioned before all rows.  Call next() first." );
+          "Result set cursor is already positioned past all rows." );
     }
-    else if ( cursor.getResultSet().isAfterLast() ) {
+    else if ( cursor.getResultSet().isBeforeFirst() ) {
       throw new InvalidCursorStateSqlException(
-          "Result set cursor is already positioned past all rows." );
+          "Result set cursor is positioned before all rows.  Call next() first." );
     }
     else {
       return cursor.getCurrentRecordNumber();

http://git-wip-us.apache.org/repos/asf/drill/blob/c492d4f8/exec/jdbc/src/test/java/org/apache/drill/jdbc/DrillResultSetTest.java
----------------------------------------------------------------------
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/DrillResultSetTest.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/DrillResultSetTest.java
index 64be408..2df173e 100644
--- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/DrillResultSetTest.java
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/DrillResultSetTest.java
@@ -106,7 +106,7 @@ public class DrillResultSetTest extends DrillTest {
     // Main check:  That row data access methods now throw SQLException.
     try {
       resultSet.getInt( 1 );
-      fail( "Did get expected SQLException." );
+      fail( "Didn't get expected SQLException." );
     }
     catch ( SQLException e ) {
       // Expect something like current InvalidCursorStateSqlException saying
@@ -139,13 +139,14 @@ public class DrillResultSetTest extends DrillTest {
     // Main check:  That row data access methods throw SQLException.
     try {
       resultSet.getString( 1 );
-      fail( "Did get expected SQLException." );
+      fail( "Didn't get expected SQLException." );
     }
     catch ( SQLException e ) {
       // Expect something like current InvalidRowSQLException saying
-      // "Result set cursor is still before all rows.  Call next() first."
+      // "Result set cursor is already positioned past all rows."
       assertThat( e, instanceOf( InvalidCursorStateSqlException.class ) );
-      assertThat( e.toString(), containsString( "before" ) );
+      assertThat( e.toString(), containsString( "past" ) );
+      assertThat( e.toString(), containsString( "rows" ) );
     }
     // (Any non-SQLException exception is unexpected result.)