NPE running res.next() for a select statement ---------------------------------------------
Key: CASSANDRA-2734 URL: https://issues.apache.org/jira/browse/CASSANDRA-2734 Project: Cassandra Issue Type: Bug Affects Versions: 0.8.0 beta 2 Reporter: Cathy Daw Priority: Minor *The following statement fails when used with a Statement or PreparedStatement* {code} res = stmt.executeQuery("SELECT bar FROM users"); res.next(); {code} *Error Message* {code} [junit] Testcase: simpleSelect(com.datastax.cql.reproBugTest): Caused an ERROR [junit] null [junit] java.lang.NullPointerException [junit] at org.apache.cassandra.cql.jdbc.ColumnDecoder.makeKeyColumn(ColumnDecoder.java:136) [junit] at org.apache.cassandra.cql.jdbc.CResultSet.next(CResultSet.java:388) [junit] at com.datastax.cql.reproBugTest.simpleSelect(reproBugTest.java:57) [junit] [junit] [junit] Test com.datastax.cql.reproBugTest FAILED {code} *Here is a quick repro. Showing that res.next() works with other statements but not select. I noticed in the existing driver tests similar test cases, so not sure the issue.* * you will need to drop this in your test directory * change the package declaration * ant test -Dtest.name=reproBugTest {code} package com.datastax.cql; import java.sql.DriverManager; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.junit.Test; public class reproBugTest { @Test public void simpleSelect() throws Exception { Connection connection = null; ResultSet res; Statement stmt; try { Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver"); // Check create keyspace connection = DriverManager.getConnection("jdbc:cassandra:root/root@127.0.0.1:9160/default"); stmt = connection.createStatement(); try { System.out.println("Running DROP KS Statement"); res = stmt.executeQuery("DROP KEYSPACE ks1"); res.next(); System.out.println("Running CREATE KS Statement"); res = stmt.executeQuery("CREATE KEYSPACE ks1 with strategy_class = 'org.apache.cassandra.locator.SimpleStrategy' and strategy_options:replication_factor=1"); res.next(); } catch (SQLException e) { if (e.getMessage().startsWith("Keyspace does not exist")) { res = stmt.executeQuery("CREATE KEYSPACE ks1 with strategy_class = 'org.apache.cassandra.locator.SimpleStrategy' and strategy_options:replication_factor=1"); } } connection.close(); // Run Test connection = DriverManager.getConnection("jdbc:cassandra:root/root@127.0.0.1:9160/ks1"); stmt = connection.createStatement(); System.out.println("Running CREATE CF Statement"); res = stmt.executeQuery("CREATE COLUMNFAMILY users (KEY varchar PRIMARY KEY, password varchar, gender varchar, session_token varchar, state varchar, birth_year bigint)"); res.next(); System.out.println("Running INSERT Statement"); res = stmt.executeQuery("INSERT INTO users (KEY, password) VALUES ('user1', 'ch@nge')"); res.next(); System.out.println("Running SELECT Statement"); res = stmt.executeQuery("SELECT bar FROM users"); res.next(); connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } {code} -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira