cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eric Evans (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CASSANDRA-1705) CQL writes (aka UPDATE)
Date Wed, 17 Nov 2010 15:06:14 GMT

    [ https://issues.apache.org/jira/browse/CASSANDRA-1705?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12932976#action_12932976
] 

Eric Evans commented on CASSANDRA-1705:
---------------------------------------


> I have a question after viewing code:
> 
> 1). Can you please explain to me why you do so if method is already declared to
> throw those exceptions (it breaks exception flow...)?
> 
> {code}
> try
> {
> StorageProxy.mutate(rowMutations, consistency);
> }
> catch (org.apache.cassandra.thrift.UnavailableException e)
> {
> throw new UnavailableException();
> }
> catch (TimeoutException e)
> {
> throw new TimedOutException();
> }
> {code}

StorageProxy.mutate() throws Thrift's version of UnavailableException, and java.util.concurrent.TimeoutException,
but the Avro exception types need to be propagated up.

> 2). Suggestion for grammar:
> 
> {code}
> K_SET c1=term '=' v1=term { columns.put(c1, v1); } (',' cN=term '=' vN=term {
> columns.put(cN, vN); })*
> {code}
> 
> Could be changed to use scope like this:
> 
> {code}
> updateStatement returns [UpdateStatement expr]
> scope {
> Map<Term, Term> columns = new HashMap<Term, Term>();
> }
> : -//-
> K_SET (columnForUpdate)+
> -//-
> {
> -//-
> }
> ;
> 
> columnForUpdate
> :  key=term '=' value='term'
> {
> $updateStatement::columns.put($key, $value)
> }
> ;
> {code}
> 
> What do you think?

Is this for aesthetics, or some other reason?

If it's just aesthetics, then for what it's worth, I've avoided breaking out parts of a statement
unless they were to be reused elsewhere. I've been doing it this way because I thought it
was more readable (particularly for people unfamiliar with antlr) to see the entire statement
composed in one place.  But, I realize that's probably entirely subjective and I'm open to
being convinced otherwise.

> CQL writes (aka UPDATE)
> -----------------------
>
>                 Key: CASSANDRA-1705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1705
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: API
>    Affects Versions: 0.8
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>            Priority: Minor
>             Fix For: 0.8
>
>         Attachments: CQL.html, v2-0001-CASSANDRA-1705.-doc-update-for-proposed-UPDATE.txt,
v2-0002-conforming-single-statement-UPDATE-impl.txt, v2-0003-batched-UPDATEs.txt
>
>   Original Estimate: 0h
>  Remaining Estimate: 0h
>
> CQL specification and implementation for data manipulation.
> This corresponds to the following RPC methods:
> * insert()
> * batch_mutate() (writes, not deletes)
> The initial check-in to trunk/ uses a syntax that looks like:
> {code:SQL}
> UPDATE <CF> [USING CONSISTENCY.<LVL>] WITH ROW(<key>, COLUMN(<name>,
<value>)[, COLUMN(...)])[ AND ROW(...)];
> {code}
> Where:
> * <CF> is the column family name.
> * Rows are a parenthesized expressions with comma separated arguments for a key and one
or more columns.
> * Columns are a parenthesized expressions with comma separated arguments for the name
and value (timestamp is inaccessible).
> What is still undone:
> * Complete test coverage
> And of course, all of this is still very much open to further discussion.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message