[ https://issues.apache.org/jira/browse/ASTERIXDB-2176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16273559#comment-16273559 ]
ASF subversion and git services commented on ASTERIXDB-2176: ------------------------------------------------------------ Commit 50de6669f24d376398d6977a363ac4223897c579 in asterixdb's branch refs/heads/master from [~luochen01] [ https://git-wip-us.apache.org/repos/asf?p=asterixdb.git;h=50de666 ] [ASTERIXDB-2176] Fix deletion on LSMRTree - user model changes: no - storage format changes: no - interface changes: no Details: - The deletion on LSMRTree is not working on master, because initially we insert anti-matter tuples into the memory BTree, and during flush these tuples are copied to the RTree again. However, we forgot to set these tuples from the in-memory BTree as anti-matter tuples. This patch fixes this. - Also modifies the test case to cover this case. Change-Id: I3d9417e56f06044f585e019089004efd2b2af3b7 Reviewed-on: https://asterix-gerrit.ics.uci.edu/2188 Sonar-Qube: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Reviewed-by: Taewoo Kim <wangs...@gmail.com> Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu> > Deletion doesn't work on the RTree index. > ----------------------------------------- > > Key: ASTERIXDB-2176 > URL: https://issues.apache.org/jira/browse/ASTERIXDB-2176 > Project: Apache AsterixDB > Issue Type: Bug > Reporter: Taewoo Kim > Assignee: Chen Luo > > This is a simplified version of "upsert/primary-secondary-tree" AQL test case. > spatialData.json file > { "id": 12, "point": point("6.0,3.0") } > moreSpatialData.json file > {"id": 12, "point": point("4.1,7.0")} > DDL: > {code} > drop dataverse test if exists; > create dataverse test; > use dataverse test; > create type MyRecord as closed { > id: int64, > point: point > } > create dataset UpsertTo(MyRecord) > primary key id; > create dataset UpsertFrom(MyRecord) > primary key id; > create index rtree_index_point on UpsertTo(point) type rtree; > {code} > DML > {code} > load dataset UpsertTo > using localfs > (("path"="asterix_nc1://data/spatial/spatialData.json"),("format"="adm")); > load dataset UpsertFrom > using localfs > (("path"="asterix_nc1://data/spatial/moreSpatialData.json"),("format"="adm")); > upsert into dataset UpsertTo( > for $x in dataset UpsertFrom > return $x > ); > for $o in dataset('UpsertTo') > where spatial-intersect($o.point, > create-polygon([4.0,1.0,4.0,4.0,12.0,4.0,12.0,1.0])) > order by $o.id > return $o; > {code} > This DML returns the new record correctly. But, the issue is that the indexed > value in RTree has not been updated. > When searching the rtree_index_point index, the searcher sees the previous > value - point("6.0,3.0"), not the new value - point("4.1,7.0"). So, this > record will be fetched from the primary index. However, the primary index > search returns the updated value and the select() verifies the value. It > returns true by coincidence because the new value satisfies the > spatial-intersect() condition. > The secondary index search should see the updated value, not the previous > value. And this is an issue for the index-only plan case since it only uses > the value from a secondary index. > -- This message was sent by Atlassian JIRA (v6.4.14#64029)