package com.bigdata.bop; /** * Type safe enumeration indicates where an operator may be evaluated. Operators * fall into several distinct categories based on whether or not their inputs * need to be made available on specific nodes ({@link #HASHED} or * {@link #SHARDED}), whether they can be evaluated anywhere their inputs may * exist ({@link #ANY}), or whether they must be evaluated at the query * controller ({@link #CONTROLLER}). * <p> * Note: All operators are evaluated locally when running against a standalone * database. */ public enum BOpEvaluationContext { /** * The operator may be evaluated anywhere, including piecewise evaluation on * any node of the cluster where its inputs are available. This is used for * operators which do not need to concentrate or coordinate their inputs * such as {@link com.bigdata.bop.bset.ConditionalRoutingOp}. It may also be used in combination * with a remote access path to impose a DISTINCT filter across one or more * shards or nodes. * * @see IPredicate.Annotations#REMOTE_ACCESS_PATH */ ANY, /** * The input to the operator must be mapped across nodes using a hash * partitioning schema and the operator must be evaluated on each hash * partition. This is used for operators such as * {@link DistinctBindingSetOp}. */ HASHED, /** * The input to the operator must be mapped across the shards on which the * operator must read or write and the operator must be evaluated shard wise * on the services having access to each shard. For example, * {@link PipelineJoin}. */ SHARDED, /** * The operator must be evaluated on the query controller. For example, * {@link SliceOp} may not be evaluated piecewise. */ CONTROLLER; }