Hi,

I think you are right about the typo in (1). For (2), I think you’re
missing a comma between } and ‘work’ so the JSON is invalid.

I think reading this JIRA
https://issues.apache.org/jira/browse/CASSANDRA-7423 that the change
requiring  a UDT as part of a collection to be explicitly marked as frozen
is relatively recent (3.6) so the doco may be out date there.

Cheers
Ben

On Wed, 28 Sep 2016 at 13:12 zha...@easemob.com <zha...@easemob.com> wrote:

> hi, everyone, I'm learning Cassandra now , and have some problems about
> the document of "Data Types" .  I don't know where to report or ask for
> help, so I'm very sorry if this mail bother you.
>
> In the chapter The Cassandra Query Language (CQL)/Data Types (
> http://cassandra.apache.org/doc/latest/cql/types.html), I'm confused with
> two examples the document showing below. My enviroment is:
>
> CentOS release 6.8 (Final)
>
> java version "1.8.0_91"
> Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
> Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
>
> Python 2.7.11
>
> Cassandra version: 3.7
> CQL version:
> [cqlsh 5.0.1 | Cassandra 3.7 | CQL spec 3.4.2 | Native protocol v4]
>
>
> 1、 in http://cassandra.apache.org/doc/latest/cql/types.html, when
> describing type set, the giving example is:
>
> CREATE TABLE images (
>     name text PRIMARY KEY,
>     owner text,
>     tags set<text> // A set of text values);INSERT INTO images (name, owner, 
> tags)
>             VALUES ('cat.jpg', 'jsmith', { 'pet', 'cute' });// Replace the 
> existing set entirelyUPDATE images SET tags = { 'kitten', 'cat', 'lol' } 
> WHERE id = 'jsmith';
>
> the update cql statement uses "WHERE id = 'jsmith'" while the table
> images did not define key "id". I think it's just a slip of the pen.
>
> 2、 in http://cassandra.apache.org/doc/latest/cql/types.html, when
> describing “User-Defined Types”,  the giving example is:
>     CREATE TYPE phone (
>
>     country_code int,
>     number text,)CREATE TYPE address (
>     street text,
>     city text,
>     zip int,
>     phones map<text, phone>)CREATE TABLE user (
>     name text PRIMARY KEY,
>     addresses map<text, frozen<address>>)
>
> and when I try to create type address, one error occur:
>
> cqlsh:counterks> CREATE TYPE address (
>              ...     street text,
>              ...     city text,
>              ...     zip int,
>              ...     phones map<text, phone>
>              ... );
>
> InvalidRequest: code=2200 [Invalid query] message="Non-frozen UDTs are not 
> allowed inside collections: map<text, phone>"
>
> I change the create statement, like:
>
> CREATE TYPE address (
>     street text,
>     city text,
>     zip int,
>     phones map<text, frozen<phone>>
> );
>
> it works, and the create table user statement works well. Unfortunately,
> when running the insert statement below, error occur:
>
> INSERT INTO user (name, addresses)
>           VALUES ('z3 Pr3z1den7', {
>               'home' : {
>                   street: '1600 Pennsylvania Ave NW',
>                   city: 'Washington',
>                   zip: '20500',
>                   phones: { 'cell' : { country_code: 1, number: '202 
> 456-1111' },
>                             'landline' : { country_code: 1, number: '...' } }
>               }
>               'work' : {
>                   street: '1600 Pennsylvania Ave NW',
>                   city: 'Washington',
>                   zip: '20500',
>                   phones: { 'fax' : { country_code: 1, number: '...' } }
>               }
>           })
>
> error:
>
> SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] 
> message="line 10:14 mismatched input 'work' expecting '}' (...: '...' } }     
>          }              ['wor]k' :...)">
>
>  Is the any suggestion about the problem 2?
>
> Best wishes for everyone, thank you for your watching !
>
> ------------------------------
> zha...@easemob.com
>
-- 
————————
Ben Slater
Chief Product Officer
Instaclustr: Cassandra + Spark - Managed | Consulting | Support
+61 437 929 798

Reply via email to