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?
>
>
>
>
>

Reply via email to