mirror of
https://github.com/postgres/postgres.git
synced 2025-10-28 11:55:03 +03:00
of a relation in a flat 'joininfo' list. The former arrangement grouped the join clauses according to the set of unjoined relids used in each; however, profiling on test cases involving lots of joins proves that that data structure is a net loss. It takes more time to group the join clauses together than is saved by avoiding duplicate tests later. It doesn't help any that there are usually not more than one or two clauses per group ...
40 lines
1.3 KiB
C
40 lines
1.3 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* restrictinfo.h
|
|
* prototypes for restrictinfo.c.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $PostgreSQL: pgsql/src/include/optimizer/restrictinfo.h,v 1.31 2005/06/09 04:19:00 tgl Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef RESTRICTINFO_H
|
|
#define RESTRICTINFO_H
|
|
|
|
#include "nodes/relation.h"
|
|
|
|
|
|
extern RestrictInfo *make_restrictinfo(Expr *clause,
|
|
bool is_pushed_down,
|
|
bool valid_everywhere,
|
|
Relids required_relids);
|
|
extern List *make_restrictinfo_from_bitmapqual(Path *bitmapqual,
|
|
bool is_pushed_down,
|
|
bool valid_everywhere);
|
|
extern bool restriction_is_or_clause(RestrictInfo *restrictinfo);
|
|
extern List *get_actual_clauses(List *restrictinfo_list);
|
|
extern void get_actual_join_clauses(List *restrictinfo_list,
|
|
List **joinquals, List **otherquals);
|
|
extern List *remove_redundant_join_clauses(PlannerInfo *root,
|
|
List *restrictinfo_list,
|
|
bool isouterjoin);
|
|
extern List *select_nonredundant_join_clauses(PlannerInfo *root,
|
|
List *restrictinfo_list,
|
|
List *reference_list,
|
|
bool isouterjoin);
|
|
|
|
#endif /* RESTRICTINFO_H */
|