cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pardeep Singh (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-6509) CQL collection list throws error on delete (hiding the error will help)
Date Thu, 19 Dec 2013 03:18:09 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-6509?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Pardeep Singh updated CASSANDRA-6509:
-------------------------------------

    Description: 
Currently as of CQL 3.1, collection list query throws error.

DELETE scores[1] FROM plays WHERE id = '123-afde';                   // deletes the 2nd element
of scores (raises an error is scores has less than 2 elements)
The above query is not an issue for single queries since I can ignore the error. But if I
do a batch, the above query will fail and the batch will fail also.

I was trying to accomplish this:
BEGIN UNLOGGED BATCH
DELETE scores[499] FROM plays WHERE id = '123-afde';
DELETE scores[499] FROM plays WHERE id = '144-afde';
APPLY BATCH;

My main goal is to keep a list of 500 recent posts, delete the rest. So I'm inserting to list
by prepending an ID, then deleting from the end of the list. I can deal with it if the list
is not exact 500 posts, the point is to keep it close to that number.
I'm doing this in bulk so using BATCH helps improve performance and I'm also using UNLOGGED
BATCH since deleting is not critical part of the process.

By not throwing error on the above query, other use cases can be implemented:
BEGIN UNLOGGED BATCH
DELETE scores[499] FROM plays WHERE id = 'aaa';
UPDATE scores=[2]+scores WHERE id='aaa';
APPLY BATCH;
By using atomic BATCH, I can cap the list at 500 elements.

It would help, even if you can provide a way to bypass the delete error using some special
directive so the BATCH can still be processed.

  was:
Currently as of CQL 3.1, collection list query throws error.

DELETE scores[1] FROM plays WHERE id = '123-afde';                   // deletes the 2nd element
of scores (raises an error is scores has less than 2 elements)
The above query is not an issue for single queries since I can ignore the error. But if I
do a batch, the above query will fail and the batch will fail also.

I was trying to accomplish this:
BEGIN UNLOGGED BATCH
DELETE scores[499] FROM plays WHERE id = '123-afde';
DELETE scores[499] FROM plays WHERE id = '144-afde';
APPLY BATCH;

My main goal is to keep a list of 500 recent posts, delete the rest. So I'm insert to list
by prepending an ID, then deleting from the end of the list. I can deal with it if the list
is not exact 500 posts, the point is to keep it close to that number.
I'm doing this in bulk so using BATCH helps improve performance and I'm also using UNLOGGED
since deleting is not critical part of the process.

By not throwing error on the above query, other use cases can be implemented:
BEGIN UNLOGGED BATCH
DELETE scores[499] FROM plays WHERE id = 'aaa';
UPDATE scores=[2]+scores WHERE id='aaa';
APPLY BATCH;
By using atomic BATCH, I can cap the list at 500 elements.

It would help, even if you can provide a way to bypass the delete error using some special
directive so the BATCH can still be processed.


> CQL collection list throws error on delete (hiding the error will help)
> -----------------------------------------------------------------------
>
>                 Key: CASSANDRA-6509
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6509
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Pardeep Singh
>            Priority: Minor
>              Labels: cql3
>
> Currently as of CQL 3.1, collection list query throws error.
> DELETE scores[1] FROM plays WHERE id = '123-afde';                   // deletes the 2nd
element of scores (raises an error is scores has less than 2 elements)
> The above query is not an issue for single queries since I can ignore the error. But
if I do a batch, the above query will fail and the batch will fail also.
> I was trying to accomplish this:
> BEGIN UNLOGGED BATCH
> DELETE scores[499] FROM plays WHERE id = '123-afde';
> DELETE scores[499] FROM plays WHERE id = '144-afde';
> APPLY BATCH;
> My main goal is to keep a list of 500 recent posts, delete the rest. So I'm inserting
to list by prepending an ID, then deleting from the end of the list. I can deal with it if
the list is not exact 500 posts, the point is to keep it close to that number.
> I'm doing this in bulk so using BATCH helps improve performance and I'm also using UNLOGGED
BATCH since deleting is not critical part of the process.
> By not throwing error on the above query, other use cases can be implemented:
> BEGIN UNLOGGED BATCH
> DELETE scores[499] FROM plays WHERE id = 'aaa';
> UPDATE scores=[2]+scores WHERE id='aaa';
> APPLY BATCH;
> By using atomic BATCH, I can cap the list at 500 elements.
> It would help, even if you can provide a way to bypass the delete error using some special
directive so the BATCH can still be processed.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Mime
View raw message