I was wondering if it is possible to create an UDT and return it within a user defined function.
I looked at this documentation http://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateUDF.html but the examples are only for basic types. This is my pseudo code I came up with... the part I think I am missing is how to get an instance of the UserType so that I can invoke newValue to create a UDTValue. Has anyone done this and know how to get the keyspace in order to call getUserType? Or know of an alternate approach? CREATE OR REPLACE FUNCTION test_ks.transform_udt (val my_udt) RETURNS NULL ON NULL INPUT RETURNS my_other_udt LANGUAGE java AS ' String fieldA = val.getString("field_a"); // How do you get a reference the user type? UserType myUdt = ?keyspace?.getUserType("my_other_udt"); UDTValue transformedValue = myUdt.newValue(); transformedValue.setUUID("id", UUID.randomUUID()); transformedValue.setString("field_a", fieldA); transformedValue.setString("field_b", "value b"); return transformedValue; '; Thank you, Henry P.S. This is the setup for my sample table and types. drop keyspace test_ks; create keyspace test_ks WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 }; use test_ks; CREATE TYPE IF NOT EXISTS test_ks.my_udt (field_a text, field_b text); CREATE TYPE IF NOT EXISTS test_ks.my_other_udt (id uuid, field_a text, field_b text); CREATE TABLE IF NOT EXISTS test_ks.sample_table(id uuid primary key, col_a frozen<test_ks.my_udt>); INSERT INTO sample_table(id, col_a) VALUES ( now() , { field_a: 'value 1', field_b: 'value 2'} ); INSERT INTO sample_table(id) VALUES ( now() );