PostgreSQL Source Code git master
Loading...
Searching...
No Matches
clauses.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * clauses.h
4 * prototypes for clauses.c.
5 *
6 *
7 * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * src/include/optimizer/clauses.h
11 *
12 *-------------------------------------------------------------------------
13 */
14#ifndef CLAUSES_H
15#define CLAUSES_H
16
17#include "nodes/pathnodes.h"
18
19typedef struct
20{
21 int numWindowFuncs; /* total number of WindowFuncs found */
22 Index maxWinRef; /* windowFuncs[] is indexed 0 .. maxWinRef */
23 List **windowFuncs; /* lists of WindowFuncs for each winref */
25
26/*
27 * Callback used by expression_has_grouping_conflict below. Given a Var, the
28 * callback returns the equality operator that the relevant grouping mechanism
29 * (GROUP BY, DISTINCT, DISTINCT ON, window PARTITION BY, or set operation)
30 * uses for the column the Var references, or InvalidOid if the Var does not
31 * participate in that grouping. Returning InvalidOid signals "not a grouping
32 * column" to both the opfamily and collation checks.
33 */
34typedef Oid (*grouping_eqop_callback) (Var *var, void *context);
35
36extern bool contain_agg_clause(Node *clause);
37
38extern bool contain_window_function(Node *clause);
39extern WindowFuncLists *find_window_functions(Node *clause, Index maxWinRef);
40
41extern double expression_returns_set_rows(PlannerInfo *root, Node *clause);
42
43extern bool contain_subplans(Node *clause);
44
45extern char max_parallel_hazard(Query *parse);
46extern bool is_parallel_safe(PlannerInfo *root, Node *node);
47extern bool contain_nonstrict_functions(Node *clause);
48extern bool contain_exec_param(Node *clause, List *param_ids);
49extern bool contain_leaked_vars(Node *clause);
50
51extern Relids find_nonnullable_rels(Node *clause);
52extern List *find_nonnullable_vars(Node *clause);
53extern List *find_forced_null_vars(Node *node);
54extern Var *find_forced_null_var(Node *node);
55extern bool query_outputs_are_not_nullable(Query *query);
56
57extern bool is_pseudo_constant_clause(Node *clause);
58extern bool is_pseudo_constant_clause_relids(Node *clause, Relids relids);
59
60extern int NumRelids(PlannerInfo *root, Node *clause);
61
62extern void CommuteOpExpr(OpExpr *clause);
63
66
67extern Bitmapset *pull_paramids(Expr *expr);
68
71 void *context);
72
73#endif /* CLAUSES_H */
unsigned int Index
Definition c.h:757
List * find_forced_null_vars(Node *node)
Definition clauses.c:1952
Query * inline_function_in_from(PlannerInfo *root, RangeTblEntry *rte)
Definition clauses.c:5835
bool expression_has_grouping_conflict(Node *expr, grouping_eqop_callback get_eqop, void *context)
Definition clauses.c:6318
bool contain_agg_clause(Node *clause)
Definition clauses.c:210
int NumRelids(PlannerInfo *root, Node *clause)
Definition clauses.c:2391
bool is_pseudo_constant_clause(Node *clause)
Definition clauses.c:2349
bool contain_window_function(Node *clause)
Definition clauses.c:247
Var * find_forced_null_var(Node *node)
Definition clauses.c:2013
bool is_pseudo_constant_clause_relids(Node *clause, Relids relids)
Definition clauses.c:2369
WindowFuncLists * find_window_functions(Node *clause, Index maxWinRef)
Definition clauses.c:260
bool contain_leaked_vars(Node *clause)
Definition clauses.c:1294
List * find_nonnullable_vars(Node *clause)
Definition clauses.c:1743
bool query_outputs_are_not_nullable(Query *query)
Definition clauses.c:2067
Relids find_nonnullable_rels(Node *clause)
Definition clauses.c:1492
char max_parallel_hazard(Query *parse)
Definition clauses.c:763
bool is_parallel_safe(PlannerInfo *root, Node *node)
Definition clauses.c:782
bool contain_nonstrict_functions(Node *clause)
Definition clauses.c:1022
Oid(* grouping_eqop_callback)(Var *var, void *context)
Definition clauses.h:34
bool contain_subplans(Node *clause)
Definition clauses.c:359
Bitmapset * pull_paramids(Expr *expr)
Definition clauses.c:6259
void CommuteOpExpr(OpExpr *clause)
Definition clauses.c:2408
double expression_returns_set_rows(PlannerInfo *root, Node *clause)
Definition clauses.c:318
bool contain_exec_param(Node *clause, List *param_ids)
Definition clauses.c:1168
unsigned int Oid
static int fb(int x)
tree ctl root
Definition radixtree.h:1857
Definition pg_list.h:54
Definition nodes.h:133
List ** windowFuncs
Definition clauses.h:23
Index maxWinRef
Definition clauses.h:22
int numWindowFuncs
Definition clauses.h:21