mirror of https://github.com/citusdata/citus.git
48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* 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_ */
|