cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tim Whittington (JIRA)" <>
Subject [jira] [Created] (CASSANDRA-12795) CASSANDRA-12127 changes ordering of empty buffers in reversed columns
Date Sun, 16 Oct 2016 20:44:20 GMT
Tim Whittington created CASSANDRA-12795:

             Summary: CASSANDRA-12127 changes ordering of empty buffers in reversed columns
                 Key: CASSANDRA-12795
             Project: Cassandra
          Issue Type: Bug
          Components: Core
            Reporter: Tim Whittington

A change to the ordering contract of empty buffers in reversed columns was introduced for
all maintained branches (2.1.16, 2.2.8, 3.0.9, 3.8) during the fix for CASSANDRA-12127 by
This change has wider consequences than those stated in the [comment introducing the change|]
though, and the implications aren't really called out in the release notes clearly, so rather
than litigate it in the comments I'm creating a new issue to get a clear public position on
the change.

The change made was to alter the contract that the ordering of an empty byte buffer is always
< a non empty byte buffer, in both ASC and DESC contexts - specifically the change introduced
in 0.8 as the fix for CASSANDRA-3111 to make empty buffers < valued buffers in  ReversedType
was reverted.

This changes the ordering of empty buffers in clustered columns with DESC ordering, but also
in DynamicCompositeType (and CompositeType) values with DESC components. We have production
code and data that relies on this behaviour, and it's not clear from the release notes whether
the updates to scrub will also correct that data.

So the questions I have are:
* Was the existing behavior actually 'wrong', requiring a change? What was the actual (functional/specification)
bug that was fixed by the change?
* Is the new behavior the desired behavior in general? The new behavior is more inline with
'typical' RDMS behaviour of ordering now, but then again they tend to support per-query NULLS
FIRST/NULLS LAST, so there's no strict 'right' behaviour here.
* Did this change introduce a regression for CASSANDRA-3111?
* Will the scrub approach fix the ordering of empty buffer values in DynamicCompositeType
columns? If not, what do we do with production data created pre-2.2.8 mixed with data created
with 2.2.8?

This message was sent by Atlassian JIRA

View raw message