[ 
https://issues.apache.org/jira/browse/ASTERIXDB-2176?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Taewoo Kim updated ASTERIXDB-2176:
----------------------------------
    Summary: Deletion doesn't work on the RTree index.  (was: Upsert doesn't 
work on the RTree index.)

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

Reply via email to