You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Khurram Faraaz (JIRA)" <ji...@apache.org> on 2016/06/13 08:49:21 UTC

[jira] [Created] (DRILL-4718) call to ResultSet.getObject(int columnIndex) results in InvalidCursorStateSqlException

Khurram Faraaz created DRILL-4718:
-------------------------------------

             Summary: call to ResultSet.getObject(int columnIndex) results in InvalidCursorStateSqlException
                 Key: DRILL-4718
                 URL: https://issues.apache.org/jira/browse/DRILL-4718
             Project: Apache Drill
          Issue Type: Bug
          Components: Client - JDBC
    Affects Versions: 1.7.0
         Environment: CentOS 6.8
            Reporter: Khurram Faraaz


The JDBC snippet below results in the exception on Drill 1.7.0

Result set cursor is positioned before all rows.  Call next() first.
org.apache.drill.jdbc.InvalidCursorStateSqlException: Result set cursor is positioned before all rows.  Call next() first.

Drill git.commit.id=6286c0a
JDBC Driver : drill-jdbc-all-1.7.0-SNAPSHOT.jar

{noformat}
try {
                final String URL_STRING = "jdbc:drill:schema=dfs.tmp;drillbit=<IP-ADDRESS>";
                Class.forName("org.apache.drill.jdbc.Driver").newInstance();
                Connection conn = DriverManager.getConnection(URL_STRING,"test","test");
                Statement stmt = conn.createStatement();

                String query = "select columns[0] from `t3.csv`";
                ResultSet rs = stmt.executeQuery(query);

                System.out.println("ResultSet.getObject(1) :"+rs.getObject(1));
                while (rs.next()) {
                }
                if (rs != null)
                    rs.close();
                stmt.close();
                conn.close();
        } catch ( Exception e ) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
{noformat}

data used in above query in t3.csv
{noformat}
abcd
efgh
ijkl
mnop
qrst
{noformat}

Here is the Exception

{noformat}
...
row_count: 5
def {
  record_count: 5
  field {
    major_type {
      minor_type: VARCHAR
      mode: OPTIONAL
    }
    name_part {
      name: "EXPR$0"
    }
    child {
      major_type {
        minor_type: UINT1
        mode: REQUIRED
      }
      name_part {
        name: "$bits$"
      }
      value_count: 5
      buffer_length: 5
    }
    child {
      major_type {
        minor_type: VARCHAR
        mode: OPTIONAL
      }
      name_part {
        name: "EXPR$0"
      }
      child {
        major_type {
          minor_type: UINT4
          mode: REQUIRED
        }
        name_part {
          name: "$offsets$"
        }
        value_count: 6
        buffer_length: 24
      }
      value_count: 5
      buffer_length: 44
    }
    value_count: 5
    buffer_length: 49
  }
  carries_two_byte_selection_vector: false
}
, data=DrillBuf[14], udle: [9 131..180]].
08:37:17.483 [USER-rpc-event-queue] DEBUG o.a.d.e.rpc.user.QueryResultHandler - resultArrived: queryState: COMPLETED, queryId = 28a18f42-410f-bbc4-6445-0c95423ca341
08:37:17.484 [USER-rpc-event-queue] DEBUG o.a.d.j.i.DrillResultSetImpl$ResultsListener - [#1] Received query completion: COMPLETED.
08:37:17.485 [USER-rpc-event-queue] DEBUG o.a.drill.exec.rpc.user.UserClient - Sending response with Sender 1404764360
Result set cursor is positioned before all rows.  Call next() first.
org.apache.drill.jdbc.InvalidCursorStateSqlException: Result set cursor is positioned before all rows.  Call next() first.
	at org.apache.drill.jdbc.impl.AvaticaDrillSqlAccessor.getCurrentRecordNumber(AvaticaDrillSqlAccessor.java:73)
	at org.apache.drill.jdbc.impl.AvaticaDrillSqlAccessor.getObject(AvaticaDrillSqlAccessor.java:179)
	at net.hydromatic.avatica.AvaticaResultSet.getObject(AvaticaResultSet.java:351)
	at org.apache.drill.jdbc.impl.DrillResultSetImpl.getObject(DrillResultSetImpl.java:420)
	at GetTblName.main(GetTblName.java:28)
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)