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

ASF subversion and git services commented on ASTERIXDB-3521:
------------------------------------------------------------

Commit ce064bdf040149c7811bc8bb83c4b820af24b452 in asterixdb's branch 
refs/heads/master from Hussain Towaileb
[ https://gitbox.apache.org/repos/asf?p=asterixdb.git;h=ce064bdf04 ]

[ASTERIXDB-3521][FUN]: Verify datasource function args before replicating

Ext-ref: MB-63994
Change-Id: I94f86e0f1e949e94a161d72be5531233192dd0c8
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19005
Tested-by: Jenkins <[email protected]>
Reviewed-by: Hussain Towaileb <[email protected]>
Reviewed-by: Ali Alsuliman <[email protected]>


> 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
>              Labels: triaged
>             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)

Reply via email to