You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Horia Mocioi (JIRA)" <ji...@apache.org> on 2018/05/09 15:32:00 UTC

[jira] [Comment Edited] (CASSANDRA-14126) don't work udf javascripts

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

Horia Mocioi edited comment on CASSANDRA-14126 at 5/9/18 3:31 PM:
------------------------------------------------------------------

Hello,

I have tested the patch and it works fine. I also reviewed the code and it looks fine to me.

I also tried to change a little bit the javascript function so I can use the "input" parameter. Unfortunately, the js code cannot evaluate the variable since it's not defined.
{code:java}
CREATE OR REPLACE FUNCTION first_int(myInput int) RETURNS NULL ON NULL INPUT RETURNS int LANGUAGE javascript AS '(function(myI){return myI;})(myInput);';{code}
And the error:
{code:java}
Traceback (most recent call last):
 File "/home/ehormoc/.ccm/repository/githubCOLONalourieSLASHCASSANDRA-14126/bin/cqlsh.py", line 1044, in perform_simple_statement
 result = future.result()
 File "/home/ehormoc/.ccm/repository/githubCOLONalourieSLASHCASSANDRA-14126/bin/../lib/cassandra-driver-internal-only-3.11.zip/cassandra-driver-3.11/cassandra/cluster.py", line 3918, in result
 raise self._final_exception
 FunctionFailure: Error from server: code=1400 [User Defined Function failure] message="execution of 'testkeyspace.first_int[int]' failed: java.lang.RuntimeException: javax.script.ScriptException: ReferenceError: "myInput" is not defined in <eval> at line number 1"{code}
Is there any other way to pass in the argument or am I passing it in a wrong way?


was (Author: umcanl):
Hello,

I have tested the patch and it works fine. I also reviewed the code and it looks fine to me.

I also tried to change a little bit the javascript function so I can use the "input" parameter. Unfortunately, the js code cannot evaluate the variable since it's not defined.
{quote}CREATE OR REPLACE FUNCTION first_int(myInput int) RETURNS NULL ON NULL INPUT RETURNS int LANGUAGE javascript AS '(function(myI)\{return myI;})(myInput);';
{quote}
And the error:
{quote}Traceback (most recent call last):
 File "/home/ehormoc/.ccm/repository/githubCOLONalourieSLASHCASSANDRA-14126/bin/cqlsh.py", line 1044, in perform_simple_statement
 result = future.result()
 File "/home/ehormoc/.ccm/repository/githubCOLONalourieSLASHCASSANDRA-14126/bin/../lib/cassandra-driver-internal-only-3.11.zip/cassandra-driver-3.11/cassandra/cluster.py", line 3918, in result
 raise self._final_exception
FunctionFailure: Error from server: code=1400 [User Defined Function failure] message="execution of 'testkeyspace.first_int[int]' failed: java.lang.RuntimeException: javax.script.ScriptException: ReferenceError: "myInput" is not defined in <eval> at line number 1"
{quote}
Is there any other way to pass in the argument or am I passing it in a wrong way?

> don't work udf javascripts
> --------------------------
>
>                 Key: CASSANDRA-14126
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14126
>             Project: Cassandra
>          Issue Type: Bug
>          Components: CQL
>            Reporter: Denis Pershin
>            Assignee: Alex Lourie
>            Priority: Minor
>              Labels: security
>             Fix For: 3.11.x
>
>         Attachments: cassandra-01.yaml, cassandra-02.yaml, cassandra-03.yaml
>
>
> * config:
> {code}
> enable_user_defined_functions: true
> enable_scripted_user_defined_functions: true
> {code}
> * create keyspace:
> {code}
> CREATE KEYSPACE testkeyspace WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
> {code}
> * in testkeyspace create function:
> {code}
> CREATE OR REPLACE FUNCTION first_int(input set<int>) RETURNS NULL ON NULL INPUT RETURNS int LANGUAGE javascript AS '(function(){var result = 2;return result;})();';
> {code}
> * create table and insert:
> {code}
> create table A (id int primary key, val set<int>);
> insert into A  (id, val) values (1, {3,5,7,1});
> {code}
> * select:
> {code}
> select first_int(val) from A where id = 1;
> Traceback (most recent call last):
>   File "/usr/bin/cqlsh.py", line 1044, in perform_simple_statement
>     result = future.result()
>   File "/usr/share/cassandra/lib/cassandra-driver-internal-only-3.10.zip/cassandra-driver-3.10/cassandra/cluster.py", line 3826, in result
>     raise self._final_exception
> FunctionFailure: Error from server: code=1400 [User Defined Function failure] message="execution of 'testkeyspace.first_int[set<int>]' failed: java.security.AccessControlException: access denied: ("java.lang.RuntimePermission" "accessClassInPackage.java.io")"
> {code}
> raw log:
> {code}
> root@001b19bd3cc6:/# cqlsh
> Connected to Test Cluster at 127.0.0.1:9042.
> [cqlsh 5.0.1 | Cassandra 3.11.1 | CQL spec 3.4.4 | Native protocol v4]
> Use HELP for help.
> cqlsh> CREATE KEYSPACE testkeyspace WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
> cqlsh> USE testkeyspace ;
> cqlsh:testkeyspace> CREATE OR REPLACE FUNCTION first_int(input set<int>) RETURNS NULL ON NULL INPUT RETURNS int LANGUAGE javascript AS '(function(){var result = 2;return result;})();';
> cqlsh:testkeyspace> create table A (id int primary key, val set<int>);
> cqlsh:testkeyspace> insert into A  (id, val) values (1, {3,5,7,1});
> cqlsh:testkeyspace> select first_int(val) from A where id = 1;
> Traceback (most recent call last):
>   File "/usr/bin/cqlsh.py", line 1044, in perform_simple_statement
>     result = future.result()
>   File "/usr/share/cassandra/lib/cassandra-driver-internal-only-3.10.zip/cassandra-driver-3.10/cassandra/cluster.py", line 3826, in result
>     raise self._final_exception
> FunctionFailure: Error from server: code=1400 [User Defined Function failure] message="execution of 'testkeyspace.first_int[set<int>]' failed: java.security.AccessControlException: access denied: ("java.lang.RuntimePermission" "accessClassInPackage.java.io")"
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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