Cassandra CQL3 support in Astyanax
Asked Answered
C

2

7

Does Astyanax support "insert into" via prepared statement with CQL3? I use the latest Astyanax library 1.56.24 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)
Corky answered 29/1, 2013 at 9:38 Comment(0)
T
2

This is because a change in cassandra client to notifies high-level client apps that are using 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 they did not document the I'm currently looking myself for a solution at this moment.

Timoshenko answered 1/2, 2013 at 10:1 Comment(1)
You can use instead of Astyanax, DataStax java-driver. github.com/datastax/java-driver. It is not yet released, but for me it is working fine.Timoshenko
A
4

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

.setTargetCassandraVersion("1.2")
.setCqlVersion("3.0.0")
Amber answered 25/3, 2013 at 14:24 Comment(0)
T
2

This is because a change in cassandra client to notifies high-level client apps that are using 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 they did not document the I'm currently looking myself for a solution at this moment.

Timoshenko answered 1/2, 2013 at 10:1 Comment(1)
You can use instead of Astyanax, DataStax java-driver. github.com/datastax/java-driver. It is not yet released, but for me it is working fine.Timoshenko

© 2022 - 2024 — McMap. All rights reserved.