Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
Normal
Description
CQLSSTableWriter throws Exception when trying to use Update statement.
Has been working fine in previous versions for me.
Code:
public static void main(String[] args) throws IOException { final String KS = "test"; final String TABLE = "data"; final String schema = "CREATE TABLE " + KS + "." + TABLE + "(k text, c1 text, c2 text, c3 text, v text, primary key(k, c1,c2,c3))"; final String query = "UPDATE " + KS + "." + TABLE + " SET v = ? WHERE k = ? and c1 = ? and c2 = ? and c3 = ?"; File dataDir = new File(...); CQLSSTableWriter writer = CQLSSTableWriter.builder().inDirectory(dataDir).forTable(schema).using(query).build(); //Exception here (see below) HashMap<String, Object> row = new HashMap<>(); row.put("k", "a"); row.put("c1", "a"); row.put("c2", "a"); row.put("c3", "a"); row.put("v", "v"); writer.addRow(row); writer.close(); }
Exception:
14:51:00.461 [main] INFO o.a.cassandra.cql3.QueryProcessor - Initialized prepar ed statement caches with 0 MB (native) and 0 MB (Thrift) Exception in thread "main" java.lang.IllegalArgumentException: Invalid query, mu st be a INSERT statement but was: class org.apache.cassandra.cql3.statements.Upd ateStatement$ParsedUpdate at org.apache.cassandra.io.sstable.CQLSSTableWriter.parseStatement(CQLSS TableWriter.java:589) at org.apache.cassandra.io.sstable.CQLSSTableWriter.access$000(CQLSSTabl eWriter.java:102) at org.apache.cassandra.io.sstable.CQLSSTableWriter$Builder.using(CQLSST ableWriter.java:445) at CassandraJsonImporter.main(Cassand raJsonImporter.java:66)
I'm currently testing it with 3.7 version, my POM looks like this:
<dependency> <groupId>org.apache.cassandra</groupId> <artifactId>cassandra-all</artifactId> <version>3.7</version> </dependency> <dependency> <groupId>org.apache.cassandra</groupId> <artifactId>cassandra-clientutil</artifactId> <version>3.7</version> </dependency> <dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-core</artifactId> <version>3.0.0</version> </dependency>
It has been working with 3.0.8 versions in the POM, but that version is somehow not including the UDT support?
I want to use UPDATE instead of INSERT because I need to append data to lists and do not want to overwrite existing data in the lists.
Attachments
Issue Links
- is blocked by
-
CASSANDRA-12677 Failure in DatabaseDescriptorRefTest.testDatabaseDescriptorRef
- Resolved
- is broken by
-
CASSANDRA-10624 Support UDT in CQLSSTableWriter
- Resolved
- requires
-
CASSANDRA-12667 CQLSSTableWriter can fail because DiskOptimizationStrategy is null
- Resolved