diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/executor/nodeGroup.h | 5 | ||||
-rw-r--r-- | src/include/nodes/parsenodes.h | 13 | ||||
-rw-r--r-- | src/include/parser/analyze.h | 5 | ||||
-rw-r--r-- | src/include/rewrite/rewriteHandler.h | 8 | ||||
-rw-r--r-- | src/include/rewrite/rewriteManip.h | 4 | ||||
-rw-r--r-- | src/include/utils/elog.h | 9 |
6 files changed, 35 insertions, 9 deletions
diff --git a/src/include/executor/nodeGroup.h b/src/include/executor/nodeGroup.h index 0c23aa02d33..e56995fecdf 100644 --- a/src/include/executor/nodeGroup.h +++ b/src/include/executor/nodeGroup.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: nodeGroup.h,v 1.7 1998/09/01 04:35:56 momjian Exp $ + * $Id: nodeGroup.h,v 1.8 1999/01/18 00:10:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -22,5 +22,8 @@ extern bool ExecInitGroup(Group *node, EState *estate, Plan *parent); extern int ExecCountSlotsGroup(Group *node); extern void ExecEndGroup(Group *node); extern void ExecReScanGroup(Group *node, ExprContext *exprCtxt, Plan *parent); +/***S*I***/ +extern void ExecReScanGroup(Group *node, ExprContext *exprCtxt, Plan *parent); + #endif /* NODEGROUP_H */ diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 41730bf3463..d71d8c6b1e5 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: parsenodes.h,v 1.65 1999/01/05 15:45:49 vadim Exp $ + * $Id: parsenodes.h,v 1.66 1999/01/18 00:10:06 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -58,6 +58,9 @@ typedef struct Query * BY */ Node *havingQual; /* qualification of each group */ + /***S*I***/ + List *intersectClause; + List *unionClause; /* unions are linked under the previous * query */ Node *limitOffset; /* # of result tuples to skip */ @@ -605,7 +608,9 @@ typedef struct InsertStmt List *groupClause; /* group by clause */ Node *havingClause; /* having conditional-expression */ List *unionClause; /* union subselect parameters */ - bool unionall; /* union without unique sort */ + bool unionall; /* union without unique sort */ + /***S*I***/ + List *intersectClause; } InsertStmt; /* ---------------------- @@ -646,6 +651,10 @@ typedef struct SelectStmt Node *whereClause; /* qualifications */ List *groupClause; /* group by clause */ Node *havingClause; /* having conditional-expression */ + /***S*I***/ + List *intersectClause; + List *exceptClause; + List *unionClause; /* union subselect parameters */ List *sortClause; /* sort clause (a list of SortGroupBy's) */ char *portalname; /* the portal (cursor) to create */ diff --git a/src/include/parser/analyze.h b/src/include/parser/analyze.h index 0c4f838d135..4be7637d744 100644 --- a/src/include/parser/analyze.h +++ b/src/include/parser/analyze.h @@ -5,7 +5,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: analyze.h,v 1.4 1998/09/01 04:37:25 momjian Exp $ + * $Id: analyze.h,v 1.5 1999/01/18 00:10:11 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -15,5 +15,8 @@ #include <parser/parse_node.h> extern QueryTreeList *parse_analyze(List *pl, ParseState *parentParseState); +/***S*I***/ +extern void create_select_list(Node *ptr, List **select_list, bool *unionall_present); +extern Node *A_Expr_to_Expr(Node *ptr, bool *intersect_present); #endif /* ANALYZE_H */ diff --git a/src/include/rewrite/rewriteHandler.h b/src/include/rewrite/rewriteHandler.h index ecec766aece..0adf71baabc 100644 --- a/src/include/rewrite/rewriteHandler.h +++ b/src/include/rewrite/rewriteHandler.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: rewriteHandler.h,v 1.6 1998/09/01 04:38:01 momjian Exp $ + * $Id: rewriteHandler.h,v 1.7 1999/01/18 00:10:12 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -34,5 +34,9 @@ typedef struct _rewrite_meta_knowledge RewriteInfo; extern List *QueryRewrite(Query *parsetree); - +/***S*I***/ +extern Query *Except_Intersect_Rewrite(Query *parsetree); +extern void create_list(Node *ptr, List **intersect_list); +extern Node *intersect_tree_analyze(Node *tree, Node *first_select, Node *parsetree); +extern void check_targetlists_are_compatible(List *prev_target, List *current_target); #endif /* REWRITEHANDLER_H */ diff --git a/src/include/rewrite/rewriteManip.h b/src/include/rewrite/rewriteManip.h index e1b54829bbc..dc3724515b5 100644 --- a/src/include/rewrite/rewriteManip.h +++ b/src/include/rewrite/rewriteManip.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: rewriteManip.h,v 1.11 1998/10/21 16:21:29 momjian Exp $ + * $Id: rewriteManip.h,v 1.12 1999/01/18 00:10:16 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -25,6 +25,8 @@ void AddQual(Query *parsetree, Node *qual); void AddHavingQual(Query *parsetree, Node *havingQual); void AddNotQual(Query *parsetree, Node *qual); +void AddNotHavingQual(Query *parsetree, Node *havingQual); + void FixNew(RewriteInfo *info, Query *parsetree); void HandleRIRAttributeRule(Query *parsetree, List *rtable, List *targetlist, diff --git a/src/include/utils/elog.h b/src/include/utils/elog.h index 7d74644c620..258ef01aa48 100644 --- a/src/include/utils/elog.h +++ b/src/include/utils/elog.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: elog.h,v 1.8 1998/09/01 04:39:03 momjian Exp $ + * $Id: elog.h,v 1.9 1999/01/18 00:10:17 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -29,7 +29,12 @@ #define ABORTX 0x4000 /* abort process after logging */ #endif -#define ELOG_MAXLEN 4096 +/***S*I***/ +/* Increase this to be able to use postmaster -d 3 with complex + * view definitions (which are transformed to very, very large INSERT statements + * and if -d 3 is used the query string of these statements is printed using + * vsprintf which expects enough memory reserved! */ +#define ELOG_MAXLEN 12288 /* uncomment the following if you want your elog's to be timestamped */ |