SGTM.

Also I think you do actually need to resolve the full partition for the second 
one. You have to merge tombstones+columns from all replicas to decide if the 
partition exists. It’s the same reason we have to read all row data for a given 
row during regular reads to decide if the row exists.  Even if only one column 
is selected.

> On Jan 3, 2025, at 3:23 PM, David Capwell <dcapw...@apple.com> wrote:
> 
> As part of the Accord work we have been extending the harry models to 
> support even more of the CQL domain and added more test coverage for 
> different features; in doing so it found the following query is currently 
> blocked
> 
> — delete partition if static column is in a given state
> — confirmed that this does not lead to a full partition read in CAS, but only 
> a static row read
> — We already support delete static column if static condition, which has the 
> same read cost as delete partition if static condition
> DELETE
> FROM tbl
> WHERE pk = ? — pk is the only partition key, but there are clustering keys
> IF s0 = ? — s0 is static
> 
> 
> I took a stab at fixing this in 
> https://issues.apache.org/jira/browse/CASSANDRA-20163 and speaking with 
> Benedict it was deemed that we should bring this up to the ML for visibility.
> 
> In 2.0.11/2.1.1 https://issues.apache.org/jira/browse/CASSANDRA-6430 was 
> added which blocked this type of query.  The main argument seems to be that 
> some deletes are confusing so should block instead ((assuming static columns) 
> delete regular column if the partition exists, delete if regular column 
> matches condition, etc.), but I argue that the case above isn’t ambiguous as 
> we are working with static columns, so implicitly we are working at the 
> partition level; aka partition delete.
> 
> Are people ok with this change?
> 
> Another case that was found in testing was
> 
> — delete partition if exists
> DELETE
> FROM tbl
> WHERE pk = ? — pk is the only partition key, but there are clustering keys
> IF EXISTS
> 
> I confirmed that this case does a full partition read (even though it doesn’t 
> need to, just needs liveness info), my patch keeps this blocked not because 
> its ambiguous, but because it has an unbounded cost (if you do this to a 1tb 
> partition, you read 1tb… or try to at least…).  We could fix this but felt 
> was out of scope of the work above.
> 
> Thanks!

Reply via email to