diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/nodes/makefuncs.h | 4 | ||||
-rw-r--r-- | src/include/nodes/parsenodes.h | 18 | ||||
-rw-r--r-- | src/include/parser/analyze.h | 15 | ||||
-rw-r--r-- | src/include/parser/parse_node.h | 3 | ||||
-rw-r--r-- | src/include/parser/parse_utilcmd.h | 28 |
5 files changed, 50 insertions, 18 deletions
diff --git a/src/include/nodes/makefuncs.h b/src/include/nodes/makefuncs.h index b500024e932..97ee524a0b2 100644 --- a/src/include/nodes/makefuncs.h +++ b/src/include/nodes/makefuncs.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/makefuncs.h,v 1.58 2007/03/17 00:11:05 tgl Exp $ + * $PostgreSQL: pgsql/src/include/nodes/makefuncs.h,v 1.59 2007/06/23 22:12:52 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -36,6 +36,8 @@ extern TargetEntry *makeTargetEntry(Expr *expr, extern TargetEntry *flatCopyTargetEntry(TargetEntry *src_tle); +extern FromExpr *makeFromExpr(List *fromlist, Node *quals); + extern Const *makeConst(Oid consttype, int32 consttypmod, int constlen, diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 179d7a765db..50bb6c2048f 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/parsenodes.h,v 1.348 2007/04/27 22:05:49 tgl Exp $ + * $PostgreSQL: pgsql/src/include/nodes/parsenodes.h,v 1.349 2007/06/23 22:12:52 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -21,7 +21,7 @@ typedef enum QuerySource { QSRC_ORIGINAL, /* original parsetree (explicit query) */ - QSRC_PARSER, /* added by parse analysis */ + QSRC_PARSER, /* added by parse analysis (now unused) */ QSRC_INSTEAD_RULE, /* added by unconditional INSTEAD rule */ QSRC_QUAL_INSTEAD_RULE, /* added by conditional INSTEAD rule */ QSRC_NON_INSTEAD_RULE /* added by non-INSTEAD rule */ @@ -799,10 +799,12 @@ typedef struct SetOperationStmt /***************************************************************************** * Other Statements (no optimizations required) * - * Some of them require a little bit of transformation (which is also - * done by transformStmt). The whole structure is then passed on to - * ProcessUtility (by-passing the optimization step) as the utilityStmt - * field in Query. + * These are not touched by parser/analyze.c except to put them into + * the utilityStmt field of a Query. This is eventually passed to + * ProcessUtility (by-passing rewriting and planning). Some of the + * statements do need attention from parse analysis, and this is + * done by routines in parser/parse_utilcmd.c after ProcessUtility + * receives the command for execution. *****************************************************************************/ /* @@ -886,7 +888,7 @@ typedef enum AlterTableType AT_ReAddIndex, /* internal to commands/tablecmds.c */ AT_AddConstraint, /* add constraint */ AT_ProcessedConstraint, /* pre-processed add constraint (local in - * parser/analyze.c) */ + * parser/parse_utilcmd.c) */ AT_DropConstraint, /* drop constraint */ AT_DropConstraintQuietly, /* drop constraint, no error/warning (local in * commands/tablecmds.c) */ @@ -1083,7 +1085,7 @@ typedef struct CreateStmt * relation). We should never have both in the same node! * * Constraint attributes (DEFERRABLE etc) are initially represented as - * separate Constraint nodes for simplicity of parsing. analyze.c makes + * separate Constraint nodes for simplicity of parsing. parse_utilcmd.c makes * a pass through the constraints list to attach the info to the appropriate * FkConstraint node (and, perhaps, someday to other kinds of constraints). * ---------- diff --git a/src/include/parser/analyze.h b/src/include/parser/analyze.h index 033dce60462..5087d20a60a 100644 --- a/src/include/parser/analyze.h +++ b/src/include/parser/analyze.h @@ -1,12 +1,13 @@ /*------------------------------------------------------------------------- * * analyze.h + * parse analysis for optimizable statements * * * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/parser/analyze.h,v 1.36 2007/03/13 00:33:43 tgl Exp $ + * $PostgreSQL: pgsql/src/include/parser/analyze.h,v 1.37 2007/06/23 22:12:52 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -16,16 +17,14 @@ #include "parser/parse_node.h" -extern List *parse_analyze(Node *parseTree, const char *sourceText, +extern Query *parse_analyze(Node *parseTree, const char *sourceText, Oid *paramTypes, int numParams); -extern List *parse_analyze_varparams(Node *parseTree, const char *sourceText, +extern Query *parse_analyze_varparams(Node *parseTree, const char *sourceText, Oid **paramTypes, int *numParams); -extern List *parse_sub_analyze(Node *parseTree, ParseState *parentParseState); -extern IndexStmt *analyzeIndexStmt(IndexStmt *stmt, const char *queryString); -extern void analyzeRuleStmt(RuleStmt *stmt, const char *queryString, - List **actions, Node **whereClause); -extern List *analyzeCreateSchemaStmt(CreateSchemaStmt *stmt); +extern Query *parse_sub_analyze(Node *parseTree, ParseState *parentParseState); +extern Query *transformStmt(ParseState *pstate, Node *parseTree); + extern void CheckSelectLocking(Query *qry); extern void applyLockingClause(Query *qry, Index rtindex, bool forUpdate, bool noWait); diff --git a/src/include/parser/parse_node.h b/src/include/parser/parse_node.h index 7382a4f531c..a1d84801fc5 100644 --- a/src/include/parser/parse_node.h +++ b/src/include/parser/parse_node.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/parser/parse_node.h,v 1.51 2007/01/05 22:19:57 momjian Exp $ + * $PostgreSQL: pgsql/src/include/parser/parse_node.h,v 1.52 2007/06/23 22:12:52 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -83,6 +83,7 @@ typedef struct ParseState } ParseState; extern ParseState *make_parsestate(ParseState *parentParseState); +extern void free_parsestate(ParseState *pstate); extern int parser_errposition(ParseState *pstate, int location); extern Var *make_var(ParseState *pstate, RangeTblEntry *rte, int attrno); diff --git a/src/include/parser/parse_utilcmd.h b/src/include/parser/parse_utilcmd.h new file mode 100644 index 00000000000..f9ca398e253 --- /dev/null +++ b/src/include/parser/parse_utilcmd.h @@ -0,0 +1,28 @@ +/*------------------------------------------------------------------------- + * + * parse_utilcmd.h + * parse analysis for utility commands + * + * + * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * $PostgreSQL: pgsql/src/include/parser/parse_utilcmd.h,v 1.1 2007/06/23 22:12:52 tgl Exp $ + * + *------------------------------------------------------------------------- + */ +#ifndef PARSE_UTILCMD_H +#define PARSE_UTILCMD_H + +#include "parser/parse_node.h" + + +extern List *transformCreateStmt(CreateStmt *stmt, const char *queryString); +extern List *transformAlterTableStmt(AlterTableStmt *stmt, + const char *queryString); +extern IndexStmt *transformIndexStmt(IndexStmt *stmt, const char *queryString); +extern void transformRuleStmt(RuleStmt *stmt, const char *queryString, + List **actions, Node **whereClause); +extern List *transformCreateSchemaStmt(CreateSchemaStmt *stmt); + +#endif /* PARSE_UTILCMD_H */ |