[
https://issues.apache.org/jira/browse/CASSANDRA-5715?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13700533#comment-13700533
]
Sylvain Lebresne commented on CASSANDRA-5715:
---------------------------------------------
I agree, that's the other possible choice. However, since CQL does not do any
difference between INSERT and UPDATE without condition and they are both
UPSERT, I think I have a net preference for assuming that we differ from SQL
here and supporting all the variations since they do make sense for CQL. That
is, I'd rather not focus on the fact that a SQL reading sounds slightly off. A
more practical reason for supporting all variations is tooling: I can imagine
it being slightly simpler for a high level API to be able only generate UPDATE
under the hood (the same way some thrift client probably only ever use
batch_mutate(), never insert()) rather than having special casing just because
of the "IF".
> CAS on 'primary key only' table
> -------------------------------
>
> Key: CASSANDRA-5715
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5715
> Project: Cassandra
> Issue Type: Improvement
> Reporter: Sylvain Lebresne
> Assignee: Sylvain Lebresne
> Priority: Minor
> Fix For: 2.0
>
> Attachments: 0001-Conditions-on-INSERT.txt,
> 0002-Support-updating-the-PK-only.txt
>
>
> Given a table with only a primary key, like
> {noformat}
> CREATE TABLE test (k int PRIMARY KEY)
> {noformat}
> there is currently no way to CAS a row in that table into existing because:
> # INSERT doesn't currently support IF
> # UPDATE has no way to update such table
> So we should probably allow IF conditions on INSERT statements.
> In addition (or alternatively), we could work on allowing UPDATE to update
> such table. One motivation for that could be to make UPDATE always be more
> general to INSERT. That is currently, there is a bunch of operation that
> INSERT cannot do (counter increments, collection appends), but that "primary
> key table" case is, afaik, the only case where you *need* to use INSERT.
> However, because CQL forces segregation of PK value to the WHERE clause and
> not to the SET one, the only syntax that I can see work would be:
> {noformat}
> UPDATE WHERE k=0;
> {noformat}
> which maybe is too ugly to allow?
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira