Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-7857

Ability to freeze UDT

Agile BoardAttach filesAttach ScreenshotBulk Copy AttachmentsBulk Move AttachmentsVotersWatch issueWatchersCreate sub-taskConvert to sub-taskMoveLinkCloneLabelsUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Normal
    • Resolution: Fixed
    • 2.1.0
    • Legacy/CQL
    • None

    Description

      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:

      CREATE TYPE foo (a int, b int);
      CREATE TABLE bar (
          k frozen<foo> PRIMARY KEY,
          m map<frozen<set<int>>, text>
      )
      

      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.

      Attachments

        1. 7857-v2.txt
          10 kB
          Sylvain Lebresne
        2. 7857.txt
          10 kB
          Sylvain Lebresne

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            slebresne Sylvain Lebresne Assign to me
            slebresne Sylvain Lebresne
            Sylvain Lebresne
            Aleksey Yeschenko
            Votes:
            0 Vote for this issue
            Watchers:
            12 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment