Hi all,
In my index-only plan branch, one test case fails on these two tests. It
prints out weird values like the following. The first row is correct one,
and the second one is wrong one. As you can see, polygon and point data are
not correct. I confirmed that the final result byte array is not correct.
But, I am not sure why it happens. The test case works fine on the normal
sqlpp execution test. Also, my query is a simple Rtree index utilization
query. We have an Rtree index on the point column. Any thoughts that you
could share?
// Result
< { "aid": 1, "bid": 10, "apoly1": polygon("1.0,1.0 1.0,4.0 3.0,4.0
3.0,1.0"), "bpoint": point("2.0,3.0") }
> { "aid": 0, "bid": 17, "apoly1": polygon(""), "bpoint":
> point("2.0860067423505013E-308,3.4817706938158E-310") }
// Query
select element {'aid':a.id,'bid':b.id,'apoly1':a.poly1,'bpoint':b.point}
from MyData1 as a,
MyData2 as b
where test.`spatial-intersect`(a.poly1,b.point)
order by a.id,b.id
;
// File
https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app-sql-execution/org.apache.asterix$asterix-app/1779/testReport/junit/org.apache.asterix.test.runtime/SqlppExecutionLessParallelismIT/test_SqlppExecutionLessParallelismIT_486__index_join__rtree_spatial_intersect_point_04_/
// Plan
Dec 03, 2017 4:13:32 PM
org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer
logPlanAt
INFO: Optimized Plan:
distribute result [$$13]
-- DISTRIBUTE_RESULT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
project ([$$13])
-- STREAM_PROJECT |PARTITIONED|
assign [$$13] <- [{"aid": $$52, "bid": $$19, "apoly1": $$51,
"bpoint": $$17}]
-- ASSIGN |PARTITIONED|
exchange
-- SORT_MERGE_EXCHANGE [$$52(ASC), $$19(ASC) ] |PARTITIONED|
order (ASC, $$52) (ASC, $$19)
-- STABLE_SORT [$$52(ASC), $$19(ASC)] |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
union ($$48, $$32, $$19) ($$50, $$34, $$17) ($$16, $$16,
$$51) ($$18, $$18, $$52)
-- UNION_ALL |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
project ([$$48, $$50, $$16, $$18])
-- STREAM_PROJECT |PARTITIONED|
select (spatial-intersect($$16, $$50))
-- STREAM_SELECT |PARTITIONED|
project ([$$18, $$16, $$32, $$48, $$50])
-- STREAM_PROJECT |PARTITIONED|
assign [$$50] <- [$$49.getField(1)]
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
unnest-map [$$48, $$49] <-
index-search("MyData2", 0, "test", "MyData2", TRUE, FALSE, 1, $$32, 1,
$$32, TRUE, TRUE, TRUE)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
project ([$$18, $$16, $$32])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
split ($$33)
-- SPLIT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
project ([$$18, $$16, $$28, $$29,
$$32, $$33])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
unnest-map [$$28, $$29, $$30,
$$31, $$32, $$33] <- index-search("rtree_index2", 1, "test", "MyData2",
TRUE, TRUE, 4, $$24, $$25, $$26, $$27)
-- RTREE_SEARCH |PARTITIONED|
exchange
-- BROADCAST_EXCHANGE
|PARTITIONED|
assign [$$24, $$25, $$26,
$$27] <- [create-mbr($$16, 2, 0), create-mbr($$16, 2, 1), create-mbr($$16,
2, 2), create-mbr($$16, 2, 3)]
-- ASSIGN |PARTITIONED|
project ([$$18, $$16])
-- STREAM_PROJECT
|PARTITIONED|
assign [$$16] <-
[$$a.getField(5)]
-- ASSIGN |PARTITIONED|
exchange
--
ONE_TO_ONE_EXCHANGE |PARTITIONED|
data-scan
[]<-[$$18, $$a] <- test.MyData1
-- DATASOURCE_SCAN
|PARTITIONED|
exchange
--
ONE_TO_ONE_EXCHANGE |PARTITIONED|
empty-tuple-source
--
EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
project ([$$32, $$34, $$16, $$18])
-- STREAM_PROJECT |PARTITIONED|
select (spatial-intersect($$16, $$34))
-- STREAM_SELECT |PARTITIONED|
project ([$$18, $$16, $$32, $$34])
-- STREAM_PROJECT |PARTITIONED|
assign [$$34] <- [create-point($$28, $$29)]
-- ASSIGN |PARTITIONED|
project ([$$18, $$16, $$28, $$29, $$32])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
split ($$33)
-- SPLIT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
project ([$$18, $$16, $$28, $$29, $$32,
$$33])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
unnest-map [$$28, $$29, $$30, $$31,
$$32, $$33] <- index-search("rtree_index2", 1, "test", "MyData2", TRUE,
TRUE, 4, $$24, $$25, $$26, $$27)
-- RTREE_SEARCH |PARTITIONED|
exchange
-- BROADCAST_EXCHANGE |PARTITIONED|
assign [$$24, $$25, $$26, $$27]
<- [create-mbr($$16, 2, 0), create-mbr($$16, 2, 1), create-mbr($$16, 2, 2),
create-mbr($$16, 2, 3)]
-- ASSIGN |PARTITIONED|
project ([$$18, $$16])
-- STREAM_PROJECT |PARTITIONED|
assign [$$16] <-
[$$a.getField(5)]
-- ASSIGN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
data-scan []<-[$$18, $$a]
<- test.MyData1
-- DATASOURCE_SCAN
|PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE
|PARTITIONED|