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

ASF subversion and git services commented on ASTERIXDB-3539:
------------------------------------------------------------

Commit bd2809b1afe0f48f59b112d63c80a8cb4c33d5b9 in asterixdb's branch 
refs/heads/master from Ritik Raj
[ https://gitbox.apache.org/repos/asf?p=asterixdb.git;h=bd2809b1af ]

[ASTERIXDB-3539][STO] Failure to evaluate filter in case of antimatter

- user model changes: no
- storage format changes: no
- interface changes: yes

Details:

When a tuple deleted in a subsequent delete operation
is located in the middle of non-deleted entries,
the rangeCursor increments the tupleIndex by one.
This results in a mismatch between the ColumnFilter tuple pointer
and the rangeCursor tuple pointer, leading to missing tuples during processing.

Ext-ref: MB-64715
Change-Id: If1afb009ba5c9ca076bdb2dee1cdf332c2f2df59
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19224
Tested-by: Jenkins <[email protected]>
Reviewed-by: Murtadha Hubail <[email protected]>


> Failure to Evaluate Filter because of Skipping just 1 tuple in case of 
> Antimatter
> ---------------------------------------------------------------------------------
>
>                 Key: ASTERIXDB-3539
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-3539
>             Project: Apache AsterixDB
>          Issue Type: Bug
>          Components: STO - Storage
>    Affects Versions: 0.9.10
>            Reporter: Ritik Raj
>            Priority: Critical
>             Fix For: 0.9.10
>
>
> In cases where a tuple which is deleted in a later delete operation, is in 
> middle of the non-deleted entries.
> The rangeCursor just skips the tupleIndex by one, causing inconsistency 
> between ColumnFilter tuple pointer vs rangeCursor tuple pointer, resulting in 
> missing tuples.
> Test Case:
> {code:java}
> DROP DATAVERSE test IF EXISTS;
> CREATE DATAVERSE test;
> USE test;
> CREATE DATASET ColumnDataset
> PRIMARY KEY (uid:int) WITH {
>     "storage-format": {"format": "column"}
> }; {code}
>  
>  
>  
> {code:java}
> USE test;
> UPSERT INTO ColumnDataset(
>     {"uid": 1, "a": [{"x": "aaaaaaaaaazzzz"}, {"x": "aaaaaaaaaaabzzzz"}, 
> {"x": "aaaaaaaaaaaaabzzzzzzzz"}]},
>     {"uid": 2, "a": [{"x": "aaaaaaaaaazzzzextra"}, {"x": 
> "aaaaaaaaaaabzzzzextra"}, {"x": "aaaaaaaaaaaaabzzzzzzzzextra"}]},
>  {"uid": 3, "a": [{"x": "aaaaaaaaaazzzzextra"}, {"x": 
> "aaaaaaaaaaabzzzzextra"}, {"x": "aaaaaaaaaaaaabzzzzzzzzextra"}]},
>  {"uid": 4, "a": [{"x": "aaaaaaaaaazzzzextra"}, {"x": 
> "aaaaaaaaaaabzzzzextra"}, {"x": "aaaaaaaaaaaaabzzzzzzzzextra"}]},
>  {"uid": 5, "a": [{"x": "aaaaaaaaaazzzzextra"}, {"x": 
> "aaaaaaaaaaabzzzzextra"}, {"x": "aaaaaaaaaaaaabzzzzzzzzextra"}]},
>  {"uid": 6, "a": [{"x": "aaaaaaaaaazzzzextra"}, {"x": 
> "aaaaaaaaaaabzzzzextra"}, {"x": "aaaaaaaaaaaaabzzzzzzzzextra"}]},
>     {"uid": 7, "a": [{"x": "aaaaaaaaaazzzzextra"}, {"x": 
> "aaaaaaaaaaabzzzzextra"}, {"x": "aaaaaaaaaaaaabzzzzzzzz"}]}
> ); {code}
>  
>  
>  
> {code:java}
> USE test;
> DELETE FROM ColumnDataset
> WHERE uid >= 2 and uid <= 6; {code}
>  
> {code:java}
>  USE test;
>  SELECT VALUE a.x
>  FROM ColumnDataset c, c.a a
>  WHERE a.x = "aaaaaaaaaazzzzextra"; {code}
> Should give 
> {code:java}
> aaaaaaaaaazzzzextra{code}
> as output but giving empty result.
>  
>  



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

Reply via email to