mirror of
https://github.com/postgres/postgres.git
synced 2025-10-27 00:12:01 +03:00
Stefan Kaltenbrunner. The most reasonable behavior (at least for the near term) seems to be to ignore the PlaceHolderVar and examine its argument instead. In support of this, change the API of pull_var_clause() to allow callers to request recursion into PlaceHolderVars. Currently estimate_num_groups() is the only customer for that behavior, but where there's one there may be others.
37 lines
1.3 KiB
C
37 lines
1.3 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* var.h
|
|
* prototypes for optimizer/util/var.c.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $PostgreSQL: pgsql/src/include/optimizer/var.h,v 1.41 2009/04/19 19:46:33 tgl Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef VAR_H
|
|
#define VAR_H
|
|
|
|
#include "nodes/relation.h"
|
|
|
|
typedef enum
|
|
{
|
|
PVC_REJECT_PLACEHOLDERS, /* throw error if PlaceHolderVar found */
|
|
PVC_INCLUDE_PLACEHOLDERS, /* include PlaceHolderVars in output list */
|
|
PVC_RECURSE_PLACEHOLDERS /* recurse into PlaceHolderVar argument */
|
|
} PVCPlaceHolderBehavior;
|
|
|
|
extern Relids pull_varnos(Node *node);
|
|
extern void pull_varattnos(Node *node, Bitmapset **varattnos);
|
|
extern bool contain_var_clause(Node *node);
|
|
extern bool contain_vars_of_level(Node *node, int levelsup);
|
|
extern int locate_var_of_level(Node *node, int levelsup);
|
|
extern int locate_var_of_relation(Node *node, int relid, int levelsup);
|
|
extern int find_minimum_var_level(Node *node);
|
|
extern List *pull_var_clause(Node *node, PVCPlaceHolderBehavior behavior);
|
|
extern Node *flatten_join_alias_vars(PlannerInfo *root, Node *node);
|
|
|
|
#endif /* VAR_H */
|