No, you can't. Keep in mind parts of the primary key are immutable, so there would be no usability difference between a frozen UDT in your PK and a non-frozen one other than the frozen keyword.
On Mon, Oct 10, 2016 at 10:07 PM Andrew Tolbert <andrew.tolb...@datastax.com> wrote: > Is it possible to use fields on the UDT as primary / cluster keys? > > > That is not supported as far as I know. In that case it's probably best > to either use a frozen UDT or make the field a separate column. > > Thanks, > Andy > > On Mon, Oct 10, 2016 at 11:50 PM, Jonathan Haddad <j...@jonhaddad.com> > wrote: > > Works for me. You can see the version, CREATE TYPE, CREATE TABLE, > insertion, and describing the table > > jhaddad@rustyrazorblade ~/dev/cassandra$ bin/cqlsh > > c1fa214 > Connected to Test Cluster at 127.0.0.1:9042. > [cqlsh 5.0.1 | Cassandra 3.9-SNAPSHOT | CQL spec 3.4.2 | Native protocol > v4] > Use HELP for help. > cqlsh> create KEYSPACE test > <identifier> <quotedName> > cqlsh> create KEYSPACE test WITH replication = {'class': 'SimpleStrategy', > 'replication_factor': 1}; > cqlsh> use test; > cqlsh:test> CREATE TYPE test ( > ... foo text, > ... bar text > ... ); > cqlsh:test> > cqlsh:test> CREATE TABLE test_table ( > ... id text, > ... this_doesnt_work test, > ... PRIMARY KEY (id) > ... ); > cqlsh:test> insert into test_table ( id, this_doesnt_work) values ('jon', > {foo:'a', bar:'b'}); > cqlsh:test> > cqlsh:test> insert into test_table ( id, this_doesnt_work) values > ('haddad', {foo:'a'}); > cqlsh:test> desc test_table; > > CREATE TABLE test.test_table ( > id text PRIMARY KEY, > this_doesnt_work test > ) WITH bloom_filter_fp_chance = 0.01 > > > On Mon, Oct 10, 2016 at 9:25 PM Ali Akhtar <ali.rac...@gmail.com> wrote: > > CREATE TYPE test ( > foo text, > bar text > ); > > CREATE TABLE test_table ( > id text, > this_doesnt_work test, > PRIMARY KEY (id) > ); > > On Tue, Oct 11, 2016 at 9:23 AM, Andrew Tolbert < > andrew.tolb...@datastax.com> wrote: > > Can you please share an example where it doesn't work? > > Thanks, > Andy > > On Mon, Oct 10, 2016 at 11:21 PM Ali Akhtar <ali.rac...@gmail.com> wrote: > > Not sure I understand the question, sorry. > > The column isn't part of the primary key. > > I defined a UDT and then I tried to define a column (not primary or > cluster key) as being of that type, but it doesn't let me do that unless i > set it as frozen. Docs indicate otherwise though > > On Tue, Oct 11, 2016 at 9:09 AM, Andrew Tolbert < > andrew.tolb...@datastax.com> wrote: > > Is the column you are using that has the UDT type is the or is part of the > primary key? If that is the case it still needs to be frozen (the same > goes for list, set, tuple as part of primary key). This is the error I get > when I try that: > > InvalidRequest: Error from server: code=2200 [Invalid query] > message="Invalid non-frozen user-defined type for PRIMARY KEY component > basics" > > Andy > > On Mon, Oct 10, 2016 at 8:27 PM Ali Akhtar <ali.rac...@gmail.com> wrote: > > According to > http://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateUDT.html > > > In Cassandra 3.6 and later, the frozen keyword is not required for UDTs > that contain only non-collection fields. > > However if I create a type with 4-5 all text fields, and try to use that > type in another table, I get told to use frozen , even though I'm on > cassandra 3.9 > > > show VERSION > > [cqlsh 5.0.1 | Cassandra 3.9 | CQL spec 3.4.2 | Native protocol v4] > > Any ideas? > > > > >