[
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)