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)