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|

Reply via email to