blob: 7d4067e140d3f2c37225628c1198130d457d7579 [file] [log] [blame]
/*-------------------------------------------------------------------------
*
* cdbgroupingpaths.h
* prototypes for cdbgroupingpaths.c.
*
*
* Portions Copyright (c) 2019-Present VMware, Inc. or its affiliates.
*
* IDENTIFICATION
* src/include/cdb/cdbgroupingpaths.h
*
*-------------------------------------------------------------------------
*/
#ifndef CDBGROUPINGPATHS_H
#define CDBGROUPINGPATHS_H
#include "nodes/pathnodes.h"
extern void cdb_create_multistage_grouping_paths(PlannerInfo *root,
RelOptInfo *input_rel,
RelOptInfo *output_rel,
PathTarget *target,
PathTarget *partial_grouping_target,
List *havingQual,
double dNumGroupsTotal,
const AggClauseCosts *agg_costs,
const AggClauseCosts *agg_partial_costs,
const AggClauseCosts *agg_final_costs,
List *rollups,
List *new_rollups,
AggStrategy strat,
List *partial_pathlist);
extern void cdb_create_twostage_distinct_paths(PlannerInfo *root,
RelOptInfo *input_rel,
RelOptInfo *output_rel,
PathTarget *target,
double dNumGroupsTotal);
extern Path *cdb_prepare_path_for_sorted_agg(PlannerInfo *root,
bool is_sorted,
int presorted_keys,
RelOptInfo *rel,
Path *subpath,
PathTarget *target,
List *group_pathkeys,
double limit_tuples,
List *groupClause,
List *rollups);
extern Path *cdb_prepare_path_for_hashed_agg(PlannerInfo *root,
Path *subpath,
PathTarget *target,
List *groupClause,
List *rollups);
extern List *get_common_group_tles(PathTarget *target,
List *groupClause,
List *rollups);
extern CdbPathLocus choose_grouping_locus(PlannerInfo *root, Path *path,
List *group_tles,
bool *need_redistribute_p);
#endif /* CDBGROUPINGPATHS_H */