[
https://issues.apache.org/jira/browse/ASTERIXDB-3521?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Hussain Towaileb updated ASTERIXDB-3521:
----------------------------------------
Description:
Datasource functions are replicated even if used with different argument
For example the following even if called with different parameters, would end
up replicating and returning the same result by randomly picking one of the
functions and replicating it.
{code:java}
SELECT dump_index("Default", "test", "test_someName_idx") as stringIndex
UNION ALL
SELECT dump_index("Default", "test", "test_someField_idx") as intIndex; {code}
Plan:
{code:java}
distribute result [$$11] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
union ($$16, $$17, $$11) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- UNION_ALL |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
project ([$$16]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_PROJECT |UNPARTITIONED|
assign [$$16] <- [cast({"stringIndex": $$13})] [cardinality: 0.0,
op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |UNPARTITIONED|
project ([$$13]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_PROJECT |UNPARTITIONED|
assign [$$13] <- [$$15] [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- ASSIGN |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- REPLICATE |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
aggregate [$$15] <- [listify($$14)] [cardinality: 0.0,
op-cost: 0.0, total-cost: 0.0]
-- AGGREGATE |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost:
0.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
data-scan []<-[$$14] <- asterix.dump-index.
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
empty-tuple-source [cardinality: 0.0, op-cost:
0.0, total-cost: 0.0]
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
project ([$$17]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_PROJECT |UNPARTITIONED|
assign [$$17] <- [cast({"intIndex": $$15})] [cardinality: 0.0,
op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- REPLICATE |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
aggregate [$$15] <- [listify($$14)] [cardinality: 0.0,
op-cost: 0.0, total-cost: 0.0]
-- AGGREGATE |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
data-scan []<-[$$14] <- asterix.dump-index. [cardinality:
0.0, op-cost: 0.0, total-cost: 0.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost:
0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
empty-tuple-source [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- EMPTY_TUPLE_SOURCE |PARTITIONED| {code}
was:
Datasource functions are replicated even if used with different argument
For example the following even if called with different parameters, would end
up replicating and returning the same result by randomly picking one of the
functions and replicating it.
SELECT dump_index("Default", "test", "test_someName_idx") as stringIndex
UNION ALL
SELECT dump_index("Default", "test", "test_someField_idx") as intIndex;
Plan:
{code:java}
distribute result [$$11] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
union ($$16, $$17, $$11) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- UNION_ALL |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
project ([$$16]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_PROJECT |UNPARTITIONED|
assign [$$16] <- [cast({"stringIndex": $$13})] [cardinality: 0.0,
op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |UNPARTITIONED|
project ([$$13]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_PROJECT |UNPARTITIONED|
assign [$$13] <- [$$15] [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- ASSIGN |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- REPLICATE |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
aggregate [$$15] <- [listify($$14)] [cardinality: 0.0,
op-cost: 0.0, total-cost: 0.0]
-- AGGREGATE |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost:
0.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
data-scan []<-[$$14] <- asterix.dump-index.
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
empty-tuple-source [cardinality: 0.0, op-cost:
0.0, total-cost: 0.0]
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
project ([$$17]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_PROJECT |UNPARTITIONED|
assign [$$17] <- [cast({"intIndex": $$15})] [cardinality: 0.0,
op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- REPLICATE |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
aggregate [$$15] <- [listify($$14)] [cardinality: 0.0,
op-cost: 0.0, total-cost: 0.0]
-- AGGREGATE |UNPARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
data-scan []<-[$$14] <- asterix.dump-index. [cardinality:
0.0, op-cost: 0.0, total-cost: 0.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost:
0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
empty-tuple-source [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- EMPTY_TUPLE_SOURCE |PARTITIONED| {code}
> Datasource functions are replicated even if used with different arguments
> -------------------------------------------------------------------------
>
> Key: ASTERIXDB-3521
> URL: https://issues.apache.org/jira/browse/ASTERIXDB-3521
> Project: Apache AsterixDB
> Issue Type: Bug
> Components: FUN - Functions
> Affects Versions: 0.9.9
> Reporter: Hussain Towaileb
> Assignee: Hussain Towaileb
> Priority: Major
> Fix For: 0.9.10
>
>
> Datasource functions are replicated even if used with different argument
> For example the following even if called with different parameters, would end
> up replicating and returning the same result by randomly picking one of the
> functions and replicating it.
> {code:java}
> SELECT dump_index("Default", "test", "test_someName_idx") as stringIndex
> UNION ALL
> SELECT dump_index("Default", "test", "test_someField_idx") as intIndex; {code}
> Plan:
> {code:java}
> distribute result [$$11] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- DISTRIBUTE_RESULT |UNPARTITIONED|
> exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
> union ($$16, $$17, $$11) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- UNION_ALL |UNPARTITIONED|
> exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
> project ([$$16]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- STREAM_PROJECT |UNPARTITIONED|
> assign [$$16] <- [cast({"stringIndex": $$13})] [cardinality: 0.0,
> op-cost: 0.0, total-cost: 0.0]
> -- ASSIGN |UNPARTITIONED|
> project ([$$13]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- STREAM_PROJECT |UNPARTITIONED|
> assign [$$13] <- [$$15] [cardinality: 0.0, op-cost: 0.0,
> total-cost: 0.0]
> -- ASSIGN |UNPARTITIONED|
> exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
> replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- REPLICATE |UNPARTITIONED|
> exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
> aggregate [$$15] <- [listify($$14)] [cardinality: 0.0,
> op-cost: 0.0, total-cost: 0.0]
> -- AGGREGATE |UNPARTITIONED|
> exchange [cardinality: 0.0, op-cost: 0.0, total-cost:
> 0.0]
> -- RANDOM_MERGE_EXCHANGE |PARTITIONED|
> data-scan []<-[$$14] <- asterix.dump-index.
> [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- DATASOURCE_SCAN |PARTITIONED|
> exchange [cardinality: 0.0, op-cost: 0.0,
> total-cost: 0.0]
> -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
> empty-tuple-source [cardinality: 0.0, op-cost:
> 0.0, total-cost: 0.0]
> -- EMPTY_TUPLE_SOURCE |PARTITIONED|
> exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
> project ([$$17]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- STREAM_PROJECT |UNPARTITIONED|
> assign [$$17] <- [cast({"intIndex": $$15})] [cardinality: 0.0,
> op-cost: 0.0, total-cost: 0.0]
> -- ASSIGN |UNPARTITIONED|
> exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
> replicate [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- REPLICATE |UNPARTITIONED|
> exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
> aggregate [$$15] <- [listify($$14)] [cardinality: 0.0,
> op-cost: 0.0, total-cost: 0.0]
> -- AGGREGATE |UNPARTITIONED|
> exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- RANDOM_MERGE_EXCHANGE |PARTITIONED|
> data-scan []<-[$$14] <- asterix.dump-index.
> [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- DATASOURCE_SCAN |PARTITIONED|
> exchange [cardinality: 0.0, op-cost: 0.0, total-cost:
> 0.0]
> -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
> empty-tuple-source [cardinality: 0.0, op-cost: 0.0,
> total-cost: 0.0]
> -- EMPTY_TUPLE_SOURCE |PARTITIONED| {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)