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

Doug Rohrer commented on CASSANDRA-17623:
-----------------------------------------

[Java 11 tests in 
CirclCI|https://app.circleci.com/pipelines/github/JeetKunDoug/cassandra/13/workflows/99c3468f-574e-4781-8632-ec70168ec23f]:
  are green...

More complete [Java 8 workflow| 
https://app.circleci.com/pipelines/github/JeetKunDoug/cassandra/13/workflows/5cc795e2-8966-4203-8b99-7fc73a74d026]
 has a few failures, but none look related, and the few unit tests I checked 
pass locally

> Frozen maps may be serialized unsorted, causing inability to query later
> ------------------------------------------------------------------------
>
>                 Key: CASSANDRA-17623
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-17623
>             Project: Cassandra
>          Issue Type: Bug
>          Components: CQL/Semantics
>            Reporter: Doug Rohrer
>            Assignee: Doug Rohrer
>            Priority: Normal
>
> CASSANDRA-7859 introduced the ability to use frozen collections as parts of 
> primary keys. This +requires+ all frozen maps to be persisted with their 
> entries sorted by the map keys. If the map is +not+ sorted correctly, it 
> becomes impossible to project all of the map values out of the map using the 
> map projection/selection syntax. For example, the select below would fail if 
> the map was not sorted correctly and the higher-valued key was persisted 
> first:
> {code:sql}
> CREATE TABLE test.test (k text, c frozen<map<text, text>>, PRIMARY KEY (k, 
> c));
> INSERT INTO test.test (k, c) VALUES ('key', {'z':'second_value', 
> 'a':'first_value'});
> SELECT k, c['a'] from test.test where k='key' -- c['a'] would return NULL here
> {code}
> Additionally, if you attempted to select just that row by using the complete 
> map value in a WHERE clause, which is also supported, it would return no rows 
> unless the map provided by the query processor just happened to be sorted the 
> same way as the persisted value.
> However, there is a bug in Maps.java where we don't actually use a SortedMap 
> in {{Maps.Value#fromSerialized}}, which manifests if a client sends an 
> unsorted map as a bound parameter to a query on insert or select. In either 
> case, the map may not be sorted correctly, leading to either invalid data 
> being persisted to disk (in the INSERT case) or the query not being able to 
> be executed/returning 0 rows even though a row _should_ exist (SELECT).
> This bug affects any usage of parameterized queries (tested with the DataStax 
> driver, and was originally discovered when using the CQLSSTableWriter code to 
> write data locally).



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

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

Reply via email to