[
https://issues.apache.org/jira/browse/CASSANDRA-12450?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15479825#comment-15479825
]
Kuku1 commented on CASSANDRA-12450:
-----------------------------------
I have downloaded your branch, built it with ant and installed the jars to my
local repository with maven.
Then I have taken the code of the update test into a new project. It does not
work for me.
Note that I have changed the input folder because it was throwing a exception
on the temp file folder for me.
I am using Windows.
{code:java}
import java.io.File;
import java.io.IOException;
import org.apache.cassandra.io.sstable.CQLSSTableWriter;
public class BulkCassandraImporter {
public static void main(String[] args) throws IOException
{
final String KS = "cql_keyspace6";
final String TABLE = "table6";
final String schema = "CREATE TABLE " + KS + "." + TABLE + " ("
+ " k int,"
+ " c1 int,"
+ " c2 int,"
+ " v text,"
+ " PRIMARY KEY (k, c1, c2)"
+ ")";
File tempdir = new File("H:\\cassandra code\\run");
CQLSSTableWriter writer = CQLSSTableWriter.builder()
.inDirectory(tempdir)
.forTable(schema)
.using("UPDATE " + KS + "." +
TABLE + " SET v = ? " +
"WHERE k = ? AND c1 =
? AND c2 = ?")
.build();
writer.addRow("a", 1, 2, 3);
writer.addRow("b", 4, 5, 6);
writer.addRow(null, 7, 8, 9);
writer.addRow(CQLSSTableWriter.UNSET_VALUE, 10, 11, 12);
writer.close();
}
}
{code}
{code}
H:\cassandra code\workspace\BulkCassandraImporter>java -jar "H:\cassandra
code\workspace\BulkCassandraImporter\target\BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar"
15:43:22.259 [main] INFO o.a.cassandra.cql3.QueryProcessor - Initialized
prepared statement caches with 0 MB (native) and 0 MB (Thrift)
15:43:22.457 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the
default logging framework
15:43:22.458 [main] DEBUG io.netty.util.Recycler -
-Dio.netty.recycler.maxCapacity.default: 262144
15:43:22.459 [main] DEBUG io.netty.util.Recycler -
-Dio.netty.recycler.maxSharedCapacityFactor: 2
15:43:22.459 [main] DEBUG io.netty.util.Recycler -
-Dio.netty.recycler.linkCapacity: 16
15:43:22.639 [main] INFO o.a.cassandra.utils.SigarLibrary - Initializing SIGAR
library
15:43:22.650 [main] DEBUG Sigar - no sigar-amd64-winnt.dll in java.library.path
org.hyperic.sigar.SigarException: no sigar-amd64-winnt.dll in java.library.path
at org.hyperic.sigar.Sigar.loadLibrary(Sigar.java:172)
~[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at org.hyperic.sigar.Sigar.<clinit>(Sigar.java:100)
~[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at org.apache.cassandra.utils.SigarLibrary.<init>(SigarLibrary.java:47)
[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at
org.apache.cassandra.utils.SigarLibrary.<clinit>(SigarLibrary.java:28)
[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at org.apache.cassandra.utils.UUIDGen.hash(UUIDGen.java:388)
[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at org.apache.cassandra.utils.UUIDGen.makeNode(UUIDGen.java:367)
[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at
org.apache.cassandra.utils.UUIDGen.makeClockSeqAndNode(UUIDGen.java:300)
[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at org.apache.cassandra.utils.UUIDGen.<clinit>(UUIDGen.java:41)
[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at
org.apache.cassandra.utils.ByteBufferUtil.bytes(ByteBufferUtil.java:576)
[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at org.apache.cassandra.db.Directories.<init>(Directories.java:202)
[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at org.apache.cassandra.db.Directories.<init>(Directories.java:188)
[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at
org.apache.cassandra.io.sstable.CQLSSTableWriter$Builder.createOfflineTable(CQLSSTableWriter.java:619)
[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at
org.apache.cassandra.io.sstable.CQLSSTableWriter$Builder.build(CQLSSTableWriter.java:556)
[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
at
de.whatever.BulkCassandraImporter.main(BulkCassandraImporter.java:36)
[BulkCassandraImporter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:na]
15:43:22.650 [main] INFO o.a.cassandra.utils.SigarLibrary - Could not
initialize SIGAR library
org.hyperic.sigar.Sigar.getFileSystemListNative()[Lorg/hyperic/sigar/FileSystem;
15:43:22.734 [main] INFO o.a.cassandra.db.view.ViewManager - Not submitting
build tasks for views in keyspace cql_keyspace6 as storage service is not
initialized
Exception in thread "main" java.lang.ExceptionInInitializerError
at
org.apache.cassandra.io.sstable.CQLSSTableWriter$Builder.createOfflineTable(CQLSSTableWriter.java:622)
at
org.apache.cassandra.io.sstable.CQLSSTableWriter$Builder.build(CQLSSTableWriter.java:556)
at de.whatever.BulkCassandraImporter.main(BulkCassandraImporter.java:36)
Caused by: java.lang.NullPointerException
at
org.apache.cassandra.config.DatabaseDescriptor.getFlushWriters(DatabaseDescriptor.java:1462)
at
org.apache.cassandra.db.ColumnFamilyStore.<clinit>(ColumnFamilyStore.java:137)
... 3 more
{code}
> CQLSSTableWriter does not allow Update statement
> ------------------------------------------------
>
> Key: CASSANDRA-12450
> URL: https://issues.apache.org/jira/browse/CASSANDRA-12450
> Project: Cassandra
> Issue Type: Bug
> Components: Streaming and Messaging
> Reporter: Kuku1
> Assignee: Alex Petrov
>
> CQLSSTableWriter throws Exception when trying to use Update statement.
> Has been working fine in previous versions for me.
> Code:
> {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();
> }
> {code}
> Exception:
> {code}
> 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)
> {code}
> I'm currently testing it with 3.7 version, my POM looks like this:
> {code}
> <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>
> {code}
> 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.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)