[ 
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)

Reply via email to