[
https://issues.apache.org/jira/browse/CASSANDRA-7857?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Brandon Williams updated CASSANDRA-7857:
----------------------------------------
Summary: Ability to freeze UDT (was: Ability to froze UDT)
> Ability to freeze UDT
> ---------------------
>
> Key: CASSANDRA-7857
> URL: https://issues.apache.org/jira/browse/CASSANDRA-7857
> Project: Cassandra
> Issue Type: Improvement
> Reporter: Sylvain Lebresne
> Assignee: Sylvain Lebresne
> Fix For: 2.1.0
>
> Attachments: 7857-v2.txt, 7857.txt
>
>
> Currently, UDT are serialized into a single value. For 3.0, we want to change
> that somewhat and allow updating individual subfields: CASSANDRA-7423 (and
> ultimately, we'll probably allow querying subpart of UDT to some extend).
> Also for 3.0, we want to allow some nesting of collections (CASSANDRA-7826).
> However, migrating the currently serialized UDT would be challenging. Besides
> that, even with nested collections, we probably won't be able to support
> nesting within map keys and sets without serializing (at the very least, not
> initially). Also, it can be useful in some specific case to have UDT or
> collections for PK columns, even if those are serialized.
> So we need a better way to distinguish when a composite types (collections &
> UDT) are serialized (which imply you can't update subpart of the value, you
> have to rewrite it fully) and when they are not. The suggestion is then to
> introduce a new keyword, {{frozen}}, to indicate that a type is serialized:
> {noformat}
> CREATE TYPE foo (a int, b int);
> CREATE TABLE bar (
> k frozen<foo> PRIMARY KEY,
> m map<frozen<set<int>>, text>
> )
> {noformat}
> A big advantage is that it makes the downside (you can't update the value
> without rewriting it all) clear and upfront.
> Now, as of 2.1, we only support frozen UDT, and so we should make this clear
> by 1) adding the frozen keyword and 2) don't allow use of UDT unless they are
> "frozen" (since that's all we really support). This is what this ticket
> proposes to do. And this should be done in 2.1.0 or this will be a breaking
> change.
> We will have a follow-up ticket that will extend {{frozen}} to collection,
> but this is less urgent since this will be strictly an improvement.
> I'll note that in term of syntax, {{serialized}} was suggested as an
> alternative to {{frozen}}. I personally have a minor preference for
> {{serialized}} but it was argued that it had a "sequential" connotation which
> {{frozen}} don't have. Changing that is still up for discussion, but we need
> to reach a decision quickly.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)