asterixdb-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Taewoo Kim (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (ASTERIXDB-2176) Deletion doesn't work on the RTree index.
Date Fri, 24 Nov 2017 20:36:01 GMT

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

Taewoo Kim edited comment on ASTERIXDB-2176 at 11/24/17 8:35 PM:
-----------------------------------------------------------------

Adding one more point:

An sqlpp execution test case: "scan-delete-rtree-secondary-index" conducts the following:

(1) creates a dataset 
(2) loads 21 records. (id = 1 ~ 21)
(3) creates a RTree index
(4) deletes 10 records (id > 10) 
(5) spatial-intersect query

On the master branch, an RTree search reveals id: 12 and 20. These records are filtered by
the primary-index search since it cannot find the record 12 and 20. So it's not seen. Overall,
I think deletion on RTree doesn't work now. And it is hidden because of the primary-index
search.


was (Author: wangsaeu):
Adding one more point:

A sqlpp execution test case: "scan-delete-rtree-secondary-index" conducts the following:

(1) creates a dataset 
(2) loads 21 records. (id = 1 ~ 21)
(3) creates a RTree index
(4) deletes 10 records (id > 10) 
(5) query

On the master branch, an RTree search reveals id: 12 and 20. These records are filtered by
the primary-index search since it cannot find the record 12 and 20. So it's not seen. Overall,
I think deletion on RTree doesn't work now. And it is hidden because of the primary-index
search.

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

Mime
View raw message