Files
openGauss-server/src/include/rewrite/rewriteHandler.h

42 lines
1.7 KiB
C

/* -------------------------------------------------------------------------
*
* 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, bool isInsertCmd = false, bool needOnUpdate = false);
extern List* pull_qual_vars(Node* node, int varno = 0, int flags = 0, bool nonRepeat = false);
extern void rewriteTargetListMerge(Query* parsetree, Index result_relation, List* range_table);
extern List *query_rewrite_multiset_stmt(Query* parse_tree);
extern List *query_rewrite_set_stmt(Query* parse_tree);
extern Query* get_view_query(Relation view);
extern const char* view_query_is_auto_updatable(Query* viewquery, bool check_cols);
extern int relation_is_updatable(Oid reloid, bool include_triggers, Bitmapset* include_cols);
extern bool view_has_instead_trigger(Relation view, CmdType event);
#ifdef PGXC
extern List* QueryRewriteCTAS(Query* parsetree);
extern List* QueryRewriteRefresh(Query *parsetree);
#endif
extern List* QueryRewritePrepareStmt(Query *parsetree);
extern Node* QueryRewriteNonConstant(Node *node);
extern List* QueryRewriteSelectIntoVarList(Node *node, int res_len);
extern Const* processResToConst(char* value, Oid atttypid);
#endif /* REWRITEHANDLER_H */