mirror of https://github.com/apache/cassandra
36 lines
1.4 KiB
Plaintext
36 lines
1.4 KiB
Plaintext
Apache Cassandra User-Defined-Functions JSR 223 scripting
|
|
=========================================================
|
|
|
|
Using JSR-223 capable Groovy
|
|
|
|
Tested with version 2.3.6
|
|
|
|
Installation
|
|
------------
|
|
|
|
1. Download Groovy binary release
|
|
2. Unpack the downloaded archive into a temporary directory
|
|
3. Copy the jar groovy-all-2.3.6-indy.jar from the Groovy embeddable directory to $CASSANDRA_HOME/lib/jsr223/groovy
|
|
"indy" means "invokedynamic" and is a JVM instruction for scripting languages new to Java 7.
|
|
4. Restart your Cassandra daemon if it's already running
|
|
|
|
Cassandra log should contain a line like this:
|
|
INFO 10:49:45 Found scripting engine Groovy Scripting Engine 2.0 - Groovy 2.3.6 - language names: [groovy, Groovy]
|
|
Such a line appears when you already have scripted UDFs in your system or add a scripted UDF for the first time (see below).
|
|
|
|
Smoke Test
|
|
----------
|
|
|
|
To test Groovy functionality, open cqlsh and execute the following command:
|
|
CREATE OR REPLACE FUNCTION foobar ( input text ) RETURNS text LANGUAGE groovy AS 'return "foo";' ;
|
|
|
|
If you get the error
|
|
code=2200 [Invalid query] message="Invalid language groovy for 'foobar'"
|
|
Groovy for Apache Cassandra has not been installed correctly.
|
|
|
|
Notes / Java7 invokedynamic
|
|
---------------------------
|
|
|
|
Groovy provides jars that support invokedynamic bytecode instruction. These jars are whose ending with
|
|
"-indy.jar".
|