init
This commit is contained in:
47
pg_include/rewrite/prs2lock.h
Executable file
47
pg_include/rewrite/prs2lock.h
Executable file
@@ -0,0 +1,47 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* prs2lock.h
|
||||
* data structures for POSTGRES Rule System II (rewrite rules only)
|
||||
*
|
||||
* Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/rewrite/prs2lock.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef PRS2LOCK_H
|
||||
#define PRS2LOCK_H
|
||||
|
||||
#include "access/attnum.h"
|
||||
#include "nodes/pg_list.h"
|
||||
|
||||
/*
|
||||
* RewriteRule -
|
||||
* holds a info for a rewrite rule
|
||||
*
|
||||
*/
|
||||
typedef struct RewriteRule
|
||||
{
|
||||
Oid ruleId;
|
||||
CmdType event;
|
||||
AttrNumber attrno;
|
||||
Node *qual;
|
||||
List *actions;
|
||||
char enabled;
|
||||
bool isInstead;
|
||||
} RewriteRule;
|
||||
|
||||
/*
|
||||
* RuleLock -
|
||||
* all rules that apply to a particular relation. Even though we only
|
||||
* have the rewrite rule system left and these are not really "locks",
|
||||
* the name is kept for historical reasons.
|
||||
*/
|
||||
typedef struct RuleLock
|
||||
{
|
||||
int numLocks;
|
||||
RewriteRule **rules;
|
||||
} RuleLock;
|
||||
|
||||
#endif /* REWRITE_H */
|
||||
43
pg_include/rewrite/rewriteDefine.h
Executable file
43
pg_include/rewrite/rewriteDefine.h
Executable file
@@ -0,0 +1,43 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* rewriteDefine.h
|
||||
*
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/rewrite/rewriteDefine.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef REWRITEDEFINE_H
|
||||
#define REWRITEDEFINE_H
|
||||
|
||||
#include "nodes/parsenodes.h"
|
||||
#include "utils/relcache.h"
|
||||
|
||||
#define RULE_FIRES_ON_ORIGIN 'O'
|
||||
#define RULE_FIRES_ALWAYS 'A'
|
||||
#define RULE_FIRES_ON_REPLICA 'R'
|
||||
#define RULE_DISABLED 'D'
|
||||
|
||||
extern void DefineRule(RuleStmt *stmt, const char *queryString);
|
||||
|
||||
extern void DefineQueryRewrite(char *rulename,
|
||||
Oid event_relid,
|
||||
Node *event_qual,
|
||||
CmdType event_type,
|
||||
bool is_instead,
|
||||
bool replace,
|
||||
List *action);
|
||||
|
||||
extern void RenameRewriteRule(Oid owningRel, const char *oldName,
|
||||
const char *newName);
|
||||
|
||||
extern void setRuleCheckAsUser(Node *node, Oid userid);
|
||||
|
||||
extern void EnableDisableRule(Relation rel, const char *rulename,
|
||||
char fires_when);
|
||||
|
||||
#endif /* REWRITEDEFINE_H */
|
||||
24
pg_include/rewrite/rewriteHandler.h
Executable file
24
pg_include/rewrite/rewriteHandler.h
Executable file
@@ -0,0 +1,24 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* rewriteHandler.h
|
||||
* External interface to query rewriter.
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/rewrite/rewriteHandler.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef REWRITEHANDLER_H
|
||||
#define REWRITEHANDLER_H
|
||||
|
||||
#include "utils/relcache.h"
|
||||
#include "nodes/parsenodes.h"
|
||||
|
||||
extern List *QueryRewrite(Query *parsetree);
|
||||
extern void AcquireRewriteLocks(Query *parsetree, bool forUpdatePushedDown);
|
||||
extern Node *build_column_default(Relation rel, int attrno);
|
||||
|
||||
#endif /* REWRITEHANDLER_H */
|
||||
78
pg_include/rewrite/rewriteManip.h
Executable file
78
pg_include/rewrite/rewriteManip.h
Executable file
@@ -0,0 +1,78 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* rewriteManip.h
|
||||
* Querytree manipulation subroutines for query rewriter.
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/rewrite/rewriteManip.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef REWRITEMANIP_H
|
||||
#define REWRITEMANIP_H
|
||||
|
||||
#include "nodes/parsenodes.h"
|
||||
|
||||
|
||||
typedef struct replace_rte_variables_context replace_rte_variables_context;
|
||||
|
||||
typedef Node *(*replace_rte_variables_callback) (Var *var,
|
||||
replace_rte_variables_context *context);
|
||||
|
||||
struct replace_rte_variables_context
|
||||
{
|
||||
replace_rte_variables_callback callback; /* callback function */
|
||||
void *callback_arg; /* context data for callback function */
|
||||
int target_varno; /* RTE index to search for */
|
||||
int sublevels_up; /* (current) nesting depth */
|
||||
bool inserted_sublink; /* have we inserted a SubLink? */
|
||||
};
|
||||
|
||||
|
||||
extern void OffsetVarNodes(Node *node, int offset, int sublevels_up);
|
||||
extern void ChangeVarNodes(Node *node, int old_varno, int new_varno,
|
||||
int sublevels_up);
|
||||
extern void IncrementVarSublevelsUp(Node *node, int delta_sublevels_up,
|
||||
int min_sublevels_up);
|
||||
extern void IncrementVarSublevelsUp_rtable(List *rtable,
|
||||
int delta_sublevels_up, int min_sublevels_up);
|
||||
|
||||
extern bool rangeTableEntry_used(Node *node, int rt_index,
|
||||
int sublevels_up);
|
||||
extern bool attribute_used(Node *node, int rt_index, int attno,
|
||||
int sublevels_up);
|
||||
|
||||
extern Query *getInsertSelectQuery(Query *parsetree, Query ***subquery_ptr);
|
||||
|
||||
extern void AddQual(Query *parsetree, Node *qual);
|
||||
extern void AddInvertedQual(Query *parsetree, Node *qual);
|
||||
|
||||
extern bool contain_aggs_of_level(Node *node, int levelsup);
|
||||
extern int locate_agg_of_level(Node *node, int levelsup);
|
||||
extern int locate_windowfunc(Node *node);
|
||||
extern bool checkExprHasAggs(Node *node);
|
||||
extern bool checkExprHasWindowFuncs(Node *node);
|
||||
extern bool checkExprHasSubLink(Node *node);
|
||||
|
||||
extern Node *replace_rte_variables(Node *node,
|
||||
int target_varno, int sublevels_up,
|
||||
replace_rte_variables_callback callback,
|
||||
void *callback_arg,
|
||||
bool *outer_hasSubLinks);
|
||||
extern Node *replace_rte_variables_mutator(Node *node,
|
||||
replace_rte_variables_context *context);
|
||||
|
||||
extern Node *map_variable_attnos(Node *node,
|
||||
int target_varno, int sublevels_up,
|
||||
const AttrNumber *attno_map, int map_length,
|
||||
bool *found_whole_row);
|
||||
|
||||
extern Node *ResolveNew(Node *node, int target_varno, int sublevels_up,
|
||||
RangeTblEntry *target_rte,
|
||||
List *targetlist, int event, int update_varno,
|
||||
bool *outer_hasSubLinks);
|
||||
|
||||
#endif /* REWRITEMANIP_H */
|
||||
21
pg_include/rewrite/rewriteRemove.h
Executable file
21
pg_include/rewrite/rewriteRemove.h
Executable file
@@ -0,0 +1,21 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* rewriteRemove.h
|
||||
*
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/rewrite/rewriteRemove.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef REWRITEREMOVE_H
|
||||
#define REWRITEREMOVE_H
|
||||
|
||||
#include "nodes/parsenodes.h"
|
||||
|
||||
extern void RemoveRewriteRuleById(Oid ruleOid);
|
||||
|
||||
#endif /* REWRITEREMOVE_H */
|
||||
29
pg_include/rewrite/rewriteSupport.h
Executable file
29
pg_include/rewrite/rewriteSupport.h
Executable file
@@ -0,0 +1,29 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* rewriteSupport.h
|
||||
*
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/rewrite/rewriteSupport.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef REWRITESUPPORT_H
|
||||
#define REWRITESUPPORT_H
|
||||
|
||||
/* The ON SELECT rule of a view is always named this: */
|
||||
#define ViewSelectRuleName "_RETURN"
|
||||
|
||||
extern bool IsDefinedRewriteRule(Oid owningRel, const char *ruleName);
|
||||
|
||||
extern void SetRelationRuleStatus(Oid relationId, bool relHasRules,
|
||||
bool relIsBecomingView);
|
||||
|
||||
extern Oid get_rewrite_oid(Oid relid, const char *rulename, bool missing_ok);
|
||||
extern Oid get_rewrite_oid_without_relid(const char *rulename,
|
||||
Oid *relid, bool missing_ok);
|
||||
|
||||
#endif /* REWRITESUPPORT_H */
|
||||
Reference in New Issue
Block a user