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

David Capwell commented on CASSANDRA-20154:
-------------------------------------------

[~xvade] do you plan to contribute this work?  Just hit issue with token 
between clause in Accord (min token is special) but don't want to step on any 
toes if you still plan to contribute this work.

> BETWEEN where token(Y) > token(Z) returns wrong answer
> ------------------------------------------------------
>
>                 Key: CASSANDRA-20154
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-20154
>             Project: Apache Cassandra
>          Issue Type: Bug
>          Components: CQL/Semantics
>            Reporter: Ariel Weisberg
>            Assignee: Simon Chess
>            Priority: Normal
>             Fix For: 5.x
>
>
> Noticed it’s not compliant with the SQL specification for BETWEEN and so 
> doesn’t match what other databases do (tested on Postgres and MySQL).
> Here is the [SQL 92 
> spec|https://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt] (later 
> versions probably don't change something so fundamental).
> In particular rule 6 doesn't match the observed behavior which is to swap Y 
> and Z and then return what is in between them which is pretty surprising as a 
> result.
> {noformat}
> 6) "X BETWEEN Y AND Z" is equivalent to "X>=Y AND X<=Z".
> {noformat}
> {noformat}
>          8.3  <between predicate>
>          Function
>          Specify a range comparison.
>          Format
>          <between predicate> ::=
>               <row value constructor> [ NOT ] BETWEEN
>                 <row value constructor> AND <row value constructor>
>          Syntax Rules
>          1) The three <row value constructor>s shall be of the same degree.
>          2) Let respective values be values with the same ordinal position
>             in the two <row value constructor>s.
>          3) The data types of the respective values of the three <row value
>             constructor>s shall be comparable.
>          4) Let X, Y, and Z be the first, second, and third <row value con-
>             structor>s, respectively.
>          5) "X NOT BETWEEN Y AND Z" is equivalent to "NOT ( X BETWEEN Y AND
>             Z )".
>          6) "X BETWEEN Y AND Z" is equivalent to "X>=Y AND X<=Z".
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to