Reputation: 21
I am exploring a bit on cassandra cql queries . I have cassandra 1.0 installed and using hector java api . I get an exception like this :-
me.prettyprint.hector.api.exceptions.HInvalidRequestException: InvalidRequestException(why:line 1:99 extraneous input ')' expecting EOF)
at me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(ExceptionsTranslatorImpl.java:50)
at me.prettyprint.cassandra.model.CqlQuery$1.execute(CqlQuery.java:127)
at me.prettyprint.cassandra.model.CqlQuery$1.execute(CqlQuery.java:94)
at me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:101)
at me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:232)
at me.prettyprint.cassandra.model.ExecutingKeyspace.doExecuteOperation(ExecutingKeyspace.java:97)
at me.prettyprint.cassandra.model.CqlQuery.execute(CqlQuery.java:93)
at CassandraBulkUpload.inComplexQuery(CassandraBulkUpload.java:80)
at CassandraBulkUpload.<init>(CassandraBulkUpload.java:60)
at BulkDataLoadExample.main(BulkDataLoadExample.java:22)
Caused by: InvalidRequestException(why:line 1:99 extraneous input ')' expecting EOF)
at org.apache.cassandra.thrift.Cassandra$execute_cql_query_result.read(Cassandra.java:30983)
at org.apache.cassandra.thrift.Cassandra$Client.recv_execute_cql_query(Cassandra.java:1708)
at org.apache.cassandra.thrift.Cassandra$Client.execute_cql_query(Cassandra.java:1682)
at me.prettyprint.cassandra.model.CqlQuery$1.execute(CqlQuery.java:100)
I am trying to run this query:-
CqlQuery<String, String, String> cqlQuery = new CqlQuery<String, String, String>(HFactory.createKeyspace("largedata",cluster),stringSerializer,stringSerializer,stringSerializer);
String cql= "SELECT BookTitle FROM book WHERE isbn in((SELECT id FROM book b where year_of_publication='\"1999\"'))";
cqlQuery.setQuery(cql);
QueryResult<CqlRows<String, String, String>> result = cqlQuery.execute();
I have also created a secondary index on year_of_publication . Can anyone please tell if cql cassandra queries does not support the above mentioned one ?
Upvotes: 2
Views: 1508
Reputation: 31
You're trying to perform a join which is not supported by Cassandra CQL.
Upvotes: 3
Reputation: 6443
Depending on what your schema is, assuming the book column family contains all the necessary columns, your query could just be:
SELECT BookTitle FROM book WHERE year_of_publication='1999'
I don't believe Cassandra CQL supports the sub select syntax (yet). According to cql-reference, filtering is limted to:
Upvotes: 3