/*------------------------------------------------------------------------- * * extended_op_node_utils.h * General Citus planner code. * * Copyright (c) Citus Data, Inc. *------------------------------------------------------------------------- */ #ifndef EXTENDED_OP_NODE_UTILS_H_ #define EXTENDED_OP_NODE_UTILS_H_ #include "distributed/multi_logical_planner.h" /* * ExtendedOpNodeProperties is a helper structure that is used to * share the common information among the worker and coordinator extended * op nodes. * * It is designed to be a read-only singleton object per extended op node * generation and processing. */ typedef struct ExtendedOpNodeProperties { bool groupedByDisjointPartitionColumn; bool repartitionSubquery; bool hasNonPartitionColumnDistinctAgg; bool pullDistinctColumns; bool hasWindowFuncs; bool onlyPushableWindowFunctions; bool pullUpIntermediateRows; bool pushDownGroupingAndHaving; /* indicates whether the MultiExtendedOp has a GROUP BY */ bool hasGroupBy; /* indicates whether the MultiExtendedOp has an aggregate on the target list */ bool hasAggregate; } ExtendedOpNodeProperties; extern ExtendedOpNodeProperties BuildExtendedOpNodeProperties( MultiExtendedOp *extendedOpNode, bool hasNonDistributableAggregates); #endif /* EXTENDED_OP_NODE_UTILS_H_ */