mirror of
https://github.com/postgres/postgres.git
synced 2025-12-21 05:21:08 +03:00
Move inheritance expansion code into its own file
This commit moves expand_inherited_tables and underlings from
optimizer/prep/prepunionc.c to optimizer/utils/inherit.c.
Also, all of the AppendRelInfo-based expression manipulation routines
are moved to optimizer/utils/appendinfo.c.
No functional code changes. One exception is the introduction of
make_append_rel_info, but that's still just moving around code.
Also, stop including <limits.h> in prepunion.c, which no longer needs
it since 3fc6e2d7f5. I (Álvaro) noticed this because Amit was copying
that to inherit.c, which likewise doesn't need it.
Author: Amit Langote
Discussion: https://postgr.es/m/3be67028-a00a-502c-199a-da00eec8fb6e@lab.ntt.co.jp
This commit is contained in:
42
src/include/optimizer/appendinfo.h
Normal file
42
src/include/optimizer/appendinfo.h
Normal file
@@ -0,0 +1,42 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* appendinfo.h
|
||||
* Routines for mapping expressions between append rel parent(s) and
|
||||
* children
|
||||
*
|
||||
* Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/optimizer/appendinfo.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef APPENDINFO_H
|
||||
#define APPENDINFO_H
|
||||
|
||||
#include "nodes/plannodes.h"
|
||||
#include "nodes/relation.h"
|
||||
#include "utils/relcache.h"
|
||||
|
||||
extern AppendRelInfo *make_append_rel_info(Relation parentrel,
|
||||
Relation childrel,
|
||||
Index parentRTindex, Index childRTindex);
|
||||
extern Bitmapset *translate_col_privs(const Bitmapset *parent_privs,
|
||||
List *translated_vars);
|
||||
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);
|
||||
|
||||
extern SpecialJoinInfo *build_child_join_sjinfo(PlannerInfo *root,
|
||||
SpecialJoinInfo *parent_sjinfo,
|
||||
Relids left_relids, Relids right_relids);
|
||||
extern Relids adjust_child_relids_multilevel(PlannerInfo *root, Relids relids,
|
||||
Relids child_relids, Relids top_parent_relids);
|
||||
|
||||
#endif /* APPENDINFO_H */
|
||||
22
src/include/optimizer/inherit.h
Normal file
22
src/include/optimizer/inherit.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* inherit.h
|
||||
* prototypes for inherit.c.
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/optimizer/inherit.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef INHERIT_H
|
||||
#define INHERIT_H
|
||||
|
||||
#include "nodes/relation.h"
|
||||
|
||||
|
||||
extern void expand_inherited_tables(PlannerInfo *root);
|
||||
|
||||
#endif /* INHERIT_H */
|
||||
@@ -47,22 +47,4 @@ extern PlanRowMark *get_plan_rowmark(List *rowmarks, Index rtindex);
|
||||
*/
|
||||
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);
|
||||
|
||||
extern SpecialJoinInfo *build_child_join_sjinfo(PlannerInfo *root,
|
||||
SpecialJoinInfo *parent_sjinfo,
|
||||
Relids left_relids, Relids right_relids);
|
||||
extern Relids adjust_child_relids_multilevel(PlannerInfo *root, Relids relids,
|
||||
Relids child_relids, Relids top_parent_relids);
|
||||
|
||||
#endif /* PREP_H */
|
||||
|
||||
Reference in New Issue
Block a user