[
https://issues.apache.org/jira/browse/CASSANDRA-12606?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15565288#comment-15565288
]
Alex Petrov commented on CASSANDRA-12606:
-----------------------------------------
Submitting a patch that would simply load {{system_schema}} and {{system}},
since that's pretty much all is required to make the native functions work.
I've tried loading functinos to current keyspace, which might have reduced
depending on {{system}} keyspace, although the problem is that system keyspace
is hardcoded in native function name. We could refactor it to allow attaching
them to any keyspace, although loading {{system}} and {{system_schema}} doesn't
create any additional directories and / or start other services, so might be
still a viable option.
|[3.0|https://github.com/ifesdjeen/cassandra/tree/12606-3.0]|[dtest|https://cassci.datastax.com/view/Dev/view/ifesdjeen/job/ifesdjeen-12606-3.0-dtest/]|[utest|https://cassci.datastax.com/view/Dev/view/ifesdjeen/job/ifesdjeen-12606-3.0-testall/]|
|[3.X|https://github.com/ifesdjeen/cassandra/tree/12606-3.X]|[dtest|https://cassci.datastax.com/view/Dev/view/ifesdjeen/job/ifesdjeen-12606-3.X-dtest/]|[utest|https://cassci.datastax.com/view/Dev/view/ifesdjeen/job/ifesdjeen-12606-3.X-testall/]|
|[trunk|https://github.com/ifesdjeen/cassandra/tree/12606-trunk]|[dtest|https://cassci.datastax.com/view/Dev/view/ifesdjeen/job/ifesdjeen-12606-trunk-dtest/]|[utest|https://cassci.datastax.com/view/Dev/view/ifesdjeen/job/ifesdjeen-12606-trunk-testall/]|
({{3.0}} patch is slightly different because we've done some changes in
{{3.x}}, also adds a couple of tests that were missing in this branch)
> 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.3.4#6332)