mirror of
https://github.com/postgres/postgres.git
synced 2025-12-21 05:21:08 +03:00
Currently, child relations are always base relations, so when we translate parent relids to child relids, we only need to translate a singler relid. However, the proposed partition-wise join feature will create child joins, which will mean we need to translate a set of parent relids to the corresponding child relids. This is preliminary refactoring to make that possible. Ashutosh Bapat. Review and testing of the larger patch set of which this is a part by Amit Langote, Rajkumar Raghuwanshi, Rafia Sabih, Thomas Munro, Dilip Kumar, and me. Some adjustments, mostly cosmetic, by me. Discussion: http://postgr.es/m/CA+TgmobQK80vtXjAsPZWWXd7c8u13G86gmuLupN+uUJjA+i4nA@mail.gmail.com
66 lines
1.9 KiB
C
66 lines
1.9 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* prep.h
|
|
* prototypes for files in optimizer/prep/
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/optimizer/prep.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef PREP_H
|
|
#define PREP_H
|
|
|
|
#include "nodes/plannodes.h"
|
|
#include "nodes/relation.h"
|
|
|
|
|
|
/*
|
|
* prototypes for prepjointree.c
|
|
*/
|
|
extern void pull_up_sublinks(PlannerInfo *root);
|
|
extern void inline_set_returning_functions(PlannerInfo *root);
|
|
extern void pull_up_subqueries(PlannerInfo *root);
|
|
extern void flatten_simple_union_all(PlannerInfo *root);
|
|
extern void reduce_outer_joins(PlannerInfo *root);
|
|
extern Relids get_relids_in_jointree(Node *jtnode, bool include_joins);
|
|
extern Relids get_relids_for_join(PlannerInfo *root, int joinrelid);
|
|
|
|
/*
|
|
* prototypes for prepqual.c
|
|
*/
|
|
extern Node *negate_clause(Node *node);
|
|
extern Expr *canonicalize_qual(Expr *qual);
|
|
|
|
/*
|
|
* prototypes for preptlist.c
|
|
*/
|
|
extern List *preprocess_targetlist(PlannerInfo *root, List *tlist);
|
|
|
|
extern List *preprocess_onconflict_targetlist(List *tlist,
|
|
int result_relation, List *range_table);
|
|
|
|
extern PlanRowMark *get_plan_rowmark(List *rowmarks, Index rtindex);
|
|
|
|
/*
|
|
* prototypes for prepunion.c
|
|
*/
|
|
extern RelOptInfo *plan_set_operations(PlannerInfo *root);
|
|
|
|
extern void expand_inherited_tables(PlannerInfo *root);
|
|
|
|
extern Node *adjust_appendrel_attrs(PlannerInfo *root, Node *node,
|
|
int nappinfos, AppendRelInfo **appinfos);
|
|
|
|
extern Node *adjust_appendrel_attrs_multilevel(PlannerInfo *root, Node *node,
|
|
Relids child_relids,
|
|
Relids top_parent_relids);
|
|
|
|
extern AppendRelInfo **find_appinfos_by_relids(PlannerInfo *root,
|
|
Relids relids, int *nappinfos);
|
|
|
|
#endif /* PREP_H */
|