[ 
https://issues.apache.org/jira/browse/CASSANDRA-12606?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16047952#comment-16047952
 ] 

Joel Knighton edited comment on CASSANDRA-12606 at 6/13/17 3:43 PM:
--------------------------------------------------------------------

Sorry - as you well know, it's 100% (200%?) my fault this sat for so long. This 
looks good to me, but I'd like to rebase and rerun tests since the base 
branches have changed in the meantime. I'll do so, and if the tests come back 
good, I'll +1.

Some minor nits:
* on all versions, {{testUpdateSatement}} -> {{testUpdateStatement}} in 
{{CQLSSTableWriterTest}}. It looks like this typo already existed in later 
branches, so might as well fix there too.
* on 3.11/trunk, there seem to be some unused imports in {{CQLSSTableWriter}} 
(Collection, Function, FunctionName).
* on 3.11/trunk, there's a bit of duplicate code in creating the types/tables 
down either branch of KeyspaceMetadata existence in 
{{CQLSSTableWriter.Builder.build()}}. You could move this out of the 
conditional and then do a direct null check on {{ksm.tables.getNullable(...)}}. 
That said, it only removes a few lines of duplicate code in a piece of code 
that isn't touched often, so I'm fine either way on this.


was (Author: jkni):
Sorry - as you well know, it's 100% (200%?) my fault this sat for so long. This 
looks good to me, but I'd like to rebase and rerun tests since the base 
branches have changed in the meantime. I'll do so, and if the tests come back 
good, I'll +1.

Some minor nits:
* on all versions, {{testUpdateSatement}} -> {{testUpdateStatement}} in 
{{CQLSSTableWriterTest}}. It looks like this typo already existed in later 
branches, so might as well fix there too.
* on 3.11/trunk, there seem to be some unused imports in {{CQLSSTableWriter}} 
(Collection, Function, FunctionName).
* on 3.11/trunk, in the createTable docstring, the word types is duplicated.
* on 3.11/trunk, there's a bit of duplicate code in creating the types/tables 
down either branch of KeyspaceMetadata existence in 
{{CQLSSTableWriter.Builder.build()}}. You could move this out of the 
conditional and then do a direct null check on {{ksm.tables.getNullable(...)}}. 
That said, it only removes a few lines of duplicate code in a piece of code 
that isn't touched often, so I'm fine either way on this.

> CQLSSTableWriter unable to use blob conversion functions
> --------------------------------------------------------
>
>                 Key: CASSANDRA-12606
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-12606
>             Project: Cassandra
>          Issue Type: Bug
>          Components: CQL, Tools
>            Reporter: Mark Reddy
>            Assignee: Alex Petrov
>            Priority: Minor
>
> Attempting to use blob conversion functions e.g. textAsBlob, from 3.0 - 3.7 
> results in:
> {noformat}
> Exception in thread "main" 
> org.apache.cassandra.exceptions.InvalidRequestException: Unknown function 
> textasblob called
>       at 
> org.apache.cassandra.cql3.functions.FunctionCall$Raw.prepare(FunctionCall.java:136)
>       at 
> org.apache.cassandra.cql3.Operation$SetValue.prepare(Operation.java:163)
>       at 
> org.apache.cassandra.cql3.statements.UpdateStatement$ParsedInsert.prepareInternal(UpdateStatement.java:173)
>       at 
> org.apache.cassandra.cql3.statements.ModificationStatement$Parsed.prepare(ModificationStatement.java:785)
>       at 
> org.apache.cassandra.cql3.statements.ModificationStatement$Parsed.prepare(ModificationStatement.java:771)
>       at 
> org.apache.cassandra.io.sstable.CQLSSTableWriter$Builder.prepareInsert(CQLSSTableWriter.java:567)
>       at 
> org.apache.cassandra.io.sstable.CQLSSTableWriter$Builder.build(CQLSSTableWriter.java:510)
> {noformat}
> The following snippet will reproduce the issue
> {code}
> String table = String.format("%s.%s", "test_ks", "test_table");
> String schema = String.format("CREATE TABLE %s (test_text text, test_blob 
> blob, PRIMARY KEY(test_text));", table);
> String insertStatement = String.format("INSERT INTO %s (test_text, test_blob) 
> VALUES (?, textAsBlob(?))", table);
> File tempDir = Files.createTempDirectory("tempDir").toFile();
> CQLSSTableWriter sstableWriter = CQLSSTableWriter.builder()
>         .forTable(schema)
>         .using(insertStatement)
>         .inDirectory(tempDir)
>         .build();
> {code}
> This is caused in FunctionResolver.get(...) when 
> candidates.addAll(Schema.instance.getFunctions(name.asNativeFunction())); is 
> called, as there is no system keyspace initialised.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to