mirror of
https://github.com/postgres/postgres.git
synced 2025-10-28 11:55:03 +03:00
representation of equivalence classes of variables. This is an extensive rewrite, but it brings a number of benefits: * planner no longer fails in the presence of "incomplete" operator families that don't offer operators for every possible combination of datatypes. * avoid generating and then discarding redundant equality clauses. * remove bogus assumption that derived equalities always use operators named "=". * mergejoins can work with a variety of sort orders (e.g., descending) now, instead of tying each mergejoinable operator to exactly one sort order. * better recognition of redundant sort columns. * can make use of equalities appearing underneath an outer join.
28 lines
770 B
C
28 lines
770 B
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* joininfo.h
|
|
* prototypes for joininfo.c.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $PostgreSQL: pgsql/src/include/optimizer/joininfo.h,v 1.34 2007/01/20 20:45:40 tgl Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef JOININFO_H
|
|
#define JOININFO_H
|
|
|
|
#include "nodes/relation.h"
|
|
|
|
|
|
extern bool have_relevant_joinclause(PlannerInfo *root,
|
|
RelOptInfo *rel1, RelOptInfo *rel2);
|
|
|
|
extern void add_join_clause_to_rels(PlannerInfo *root,
|
|
RestrictInfo *restrictinfo,
|
|
Relids join_relids);
|
|
|
|
#endif /* JOININFO_H */
|