Re: ILogicalOperator.isMap

2018-03-07 Thread Ali Alsuliman
Just want to revive this old topic since I need to know about this
mysterious method for my current work. I would appreciate if you guys could
share your expertise/knowledge about it.

On Mon, Sep 4, 2017 at 8:43 AM, abdullah alamoudi 
wrote:

> It seems that it is set to true when the operator has the two properties:
> 1. A mapping from no more than one input tuple to one or more output
> tuples can be established.
> 2. Is not blocking operator.
>
>
> As per this, we can clearly see that:
> - IndexInsertDeleteUpsertOperator should have isMap() set as true
> - TokenizeOperator should have isMap() set as true
>
> Did I get anything wrong here?
>
> > On Sep 3, 2017, at 11:35 AM, Taewoo Kim  wrote:
> >
> > My understanding is that isMap() is set to true when the cardinality of
> the
> > input may not be equal to the the cardinality of the output. To settle
> this
> > issue, I come up with one explicit property in my Limit Push down branch.
> > The attribute is called canDecreaseCardinality.
> >
> > On Sun, Sep 3, 2017 at 19:46 abdullah alamoudi 
> wrote:
> >
> >> Dear devs,
> >> I was going over implementations of ILogicalOperator.isMap in our code
> >> base and here is the breakdown:
> >>
> >> isMap()
> >>
> >> true:
> >> -Assign
> >> -AbstractReplicateOperator
> >> -AbstractUnnestOperator
> >> -ExchangeOperator
> >> -InsertDeleteUpsertOperator
> >> -LimitOperator
> >> -ProjectOperator
> >> -SelectOperator
> >>
> >>
> >>
> >> false:
> >> -Order
> >> -Aggregate
> >> -RunningAggregate
> >> -AbstractBinaryJoin
> >> -AbstractOperatorWithNestedPlans
> >> -DataSourceScanOperator
> >> -DistinctOperator
> >> -DistributeResultOperator
> >> -EmptyTupleSourceOperator
> >> -IndexInsertDeleteUpsertOperator
> >> -IntersectOperator
> >> -MaterializeOperator
> >> -NestedTupleSourceOperator
> >> -ScriptOperator
> >> -SinkOperator
> >> -TokenizeOperator
> >> -UnionAllOperator
> >> -WriteOperator
> >> -WriteResultOperator
> >>
> >> As I understood at some point is that isMap means (does this operator
> map
> >> input tuples to output tuples without blocking?). I am not sure how
> >> accurate this description is but it clearly introduces a problem as:
> >>
> >> * InsertDeleteUpsertOperator.isMap() -> true
> >> * IndexInsertDeleteUpsertOperator.isMap() -> false
> >>
> >> Moreover,
> >> TokenizeOperator.isMap() -> false
> >> AbstractUnnestOperator.isMap() -> true
> >>
> >> while clearly, as per the definition above, these two operators should
> >> have the same output: true
> >>
> >> Can someone solve the mystery?
> >> Once this is solved, I will add a wiki entry to explain this flag.
> >>
> >> Cheers,
> >> Abdullah.
>
>


-- 
Regards,


Re: ILogicalOperator.isMap

2017-09-03 Thread Taewoo Kim
My understanding is that isMap() is set to true when the cardinality of the
input may not be equal to the the cardinality of the output. To settle this
issue, I come up with one explicit property in my Limit Push down branch.
The attribute is called canDecreaseCardinality.

On Sun, Sep 3, 2017 at 19:46 abdullah alamoudi  wrote:

> Dear devs,
> I was going over implementations of ILogicalOperator.isMap in our code
> base and here is the breakdown:
>
> isMap()
>
> true:
> -Assign
> -AbstractReplicateOperator
> -AbstractUnnestOperator
> -ExchangeOperator
> -InsertDeleteUpsertOperator
> -LimitOperator
> -ProjectOperator
> -SelectOperator
>
>
>
> false:
> -Order
> -Aggregate
> -RunningAggregate
> -AbstractBinaryJoin
> -AbstractOperatorWithNestedPlans
> -DataSourceScanOperator
> -DistinctOperator
> -DistributeResultOperator
> -EmptyTupleSourceOperator
> -IndexInsertDeleteUpsertOperator
> -IntersectOperator
> -MaterializeOperator
> -NestedTupleSourceOperator
> -ScriptOperator
> -SinkOperator
> -TokenizeOperator
> -UnionAllOperator
> -WriteOperator
> -WriteResultOperator
>
> As I understood at some point is that isMap means (does this operator map
> input tuples to output tuples without blocking?). I am not sure how
> accurate this description is but it clearly introduces a problem as:
>
> * InsertDeleteUpsertOperator.isMap() -> true
> * IndexInsertDeleteUpsertOperator.isMap() -> false
>
> Moreover,
> TokenizeOperator.isMap() -> false
> AbstractUnnestOperator.isMap() -> true
>
> while clearly, as per the definition above, these two operators should
> have the same output: true
>
> Can someone solve the mystery?
> Once this is solved, I will add a wiki entry to explain this flag.
>
> Cheers,
> Abdullah.