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.

Reply via email to