Support for Cassandra CQL3 in Astyanax

Does Astyanax support insert through prepared statement with CQL3? I am using the latest Astyanax 1.56.24 library and Cassandra 1.2.1. When I try to execute a prepared statement with CQL3:

keyspace.prepareQuery(conn.CF_CONTACTS) .withCql("INSERT INTO contacts (a, b) VALUES (?, ?);") .asPreparedStatement() .withStringValue("123") .withStringValue("456") .execute();; 

I get the following exception:

 Caused by: InvalidRequestException(why:Cannot execute/prepare CQL2 statement since the CQL has been set to CQL3(This might mean your client hasn't been upgraded correctly to use the new CQL3 methods introduced in Cassandra 1.2+).) at org.apache.cassandra.thrift.Cassandra$prepare_cql_query_result.read(Cassandra.java:38738) at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78) at org.apache.cassandra.thrift.Cassandra$Client.recv_prepare_cql_query(Cassandra.java:1598) at org.apache.cassandra.thrift.Cassandra$Client.prepare_cql_query(Cassandra.java:1584) at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$6$3$1.internalExecute(ThriftColumnFamilyQueryImpl.java:747) at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$6$3$1.internalExecute(ThriftColumnFamilyQueryImpl.java:742) at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:56) 
+7
source share
2 answers

This is because the cassandra client change notifies high-level client applications that use the CQL3 implementation improperly. See https://issues.apache.org/jira/browse/CASSANDRA-5172

It seems that Astyanax either did not upgrade to this version of the cassandra client or did not document. I'm currently looking for a solution.

+2
source

I got this working using Astyanax 1.56.31 . You need to set the following in an instance of AstyanaxConfigurationImpl :

 .setTargetCassandraVersion("1.2") .setCqlVersion("3.0.0") 
+4
source

All Articles