]> granicus.if.org Git - postgresql/commitdiff
Get rid of last few vestiges of parsetree dependency on grammar token
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 10 Feb 2003 04:44:47 +0000 (04:44 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 10 Feb 2003 04:44:47 +0000 (04:44 +0000)
codes, per discussion from last March.  parse.h should now be included
*only* by gram.y, scan.l, keywords.c, parser.c.  This prevents surprising
misbehavior after seemingly-trivial grammar adjustments.

13 files changed:
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/nodes/makefuncs.c
src/backend/nodes/outfuncs.c
src/backend/parser/Makefile
src/backend/parser/gram.y
src/backend/parser/keywords.c
src/backend/parser/parse_clause.c
src/backend/parser/parse_expr.c
src/backend/tcop/postgres.c
src/backend/tcop/utility.c
src/include/nodes/makefuncs.h
src/include/nodes/parsenodes.h

index 4be727d2abad5d9fd465b5f943b47fa09cdfbe65..aa7a7efcc8b8e92d3b1808f2343f954a9e8e633a 100644 (file)
@@ -15,7 +15,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.242 2003/02/09 06:56:27 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.243 2003/02/10 04:44:44 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1198,7 +1198,7 @@ _copyAExpr(A_Expr *from)
 {
        A_Expr     *newnode = makeNode(A_Expr);
 
-       COPY_SCALAR_FIELD(oper);
+       COPY_SCALAR_FIELD(kind);
        COPY_NODE_FIELD(name);
        COPY_NODE_FIELD(lexpr);
        COPY_NODE_FIELD(rexpr);
@@ -1669,7 +1669,7 @@ _copyDefineStmt(DefineStmt *from)
 {
        DefineStmt *newnode = makeNode(DefineStmt);
 
-       COPY_SCALAR_FIELD(defType);
+       COPY_SCALAR_FIELD(kind);
        COPY_NODE_FIELD(defnames);
        COPY_NODE_FIELD(definition);
 
@@ -1869,7 +1869,7 @@ _copyTransactionStmt(TransactionStmt *from)
 {
        TransactionStmt *newnode = makeNode(TransactionStmt);
 
-       COPY_SCALAR_FIELD(command);
+       COPY_SCALAR_FIELD(kind);
        COPY_NODE_FIELD(options);
 
        return newnode;
@@ -2215,7 +2215,7 @@ _copyReindexStmt(ReindexStmt *from)
 {
        ReindexStmt *newnode = makeNode(ReindexStmt);
 
-       COPY_SCALAR_FIELD(reindexType);
+       COPY_SCALAR_FIELD(kind);
        COPY_NODE_FIELD(relation);
        COPY_STRING_FIELD(name);
        COPY_SCALAR_FIELD(force);
index d33c4f52732cbe2110fac011728f31d3c9a78473..c0bd77756a4929717e0c0f8388f2d7ccec625367 100644 (file)
@@ -18,7 +18,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.185 2003/02/09 06:56:27 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.186 2003/02/10 04:44:45 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -730,7 +730,7 @@ _equalCreateStmt(CreateStmt *a, CreateStmt *b)
 static bool
 _equalDefineStmt(DefineStmt *a, DefineStmt *b)
 {
-       COMPARE_SCALAR_FIELD(defType);
+       COMPARE_SCALAR_FIELD(kind);
        COMPARE_NODE_FIELD(defnames);
        COMPARE_NODE_FIELD(definition);
 
@@ -898,7 +898,7 @@ _equalUnlistenStmt(UnlistenStmt *a, UnlistenStmt *b)
 static bool
 _equalTransactionStmt(TransactionStmt *a, TransactionStmt *b)
 {
-       COMPARE_SCALAR_FIELD(command);
+       COMPARE_SCALAR_FIELD(kind);
        COMPARE_NODE_FIELD(options);
 
        return true;
@@ -1187,7 +1187,7 @@ _equalDropGroupStmt(DropGroupStmt *a, DropGroupStmt *b)
 static bool
 _equalReindexStmt(ReindexStmt *a, ReindexStmt *b)
 {
-       COMPARE_SCALAR_FIELD(reindexType);
+       COMPARE_SCALAR_FIELD(kind);
        COMPARE_NODE_FIELD(relation);
        COMPARE_STRING_FIELD(name);
        COMPARE_SCALAR_FIELD(force);
@@ -1276,7 +1276,7 @@ _equalDeallocateStmt(DeallocateStmt *a, DeallocateStmt *b)
 static bool
 _equalAExpr(A_Expr *a, A_Expr *b)
 {
-       COMPARE_SCALAR_FIELD(oper);
+       COMPARE_SCALAR_FIELD(kind);
        COMPARE_NODE_FIELD(name);
        COMPARE_NODE_FIELD(lexpr);
        COMPARE_NODE_FIELD(rexpr);
index de13e943d5e22f2b5023e9d8d506f25111365123..e9f10720cbb2b0bb29bc07ac8e96b7a337751e39 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.37 2002/12/12 15:49:28 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.38 2003/02/10 04:44:45 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
  *             makes an A_Expr node
  */
 A_Expr *
-makeA_Expr(int oper, List *name, Node *lexpr, Node *rexpr)
+makeA_Expr(A_Expr_Kind kind, List *name, Node *lexpr, Node *rexpr)
 {
        A_Expr     *a = makeNode(A_Expr);
 
-       a->oper = oper;
+       a->kind = kind;
        a->name = name;
        a->lexpr = lexpr;
        a->rexpr = rexpr;
@@ -40,12 +40,12 @@ makeA_Expr(int oper, List *name, Node *lexpr, Node *rexpr)
  *             As above, given a simple (unqualified) operator name
  */
 A_Expr *
-makeSimpleA_Expr(int oper, const char *name,
+makeSimpleA_Expr(A_Expr_Kind kind, const char *name,
                                 Node *lexpr, Node *rexpr)
 {
        A_Expr     *a = makeNode(A_Expr);
 
-       a->oper = oper;
+       a->kind = kind;
        a->name = makeList1(makeString((char *) name));
        a->lexpr = lexpr;
        a->rexpr = rexpr;
index c42f2639df1e17e681cf3de692a9659627d81f15..134ee4328e77536ff1391f0dfe79ef4e1071f708 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.198 2003/02/09 06:56:27 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.199 2003/02/10 04:44:45 tgl Exp $
  *
  * NOTES
  *       Every node type that can appear in stored rules' parsetrees *must*
@@ -27,7 +27,6 @@
 #include "nodes/parsenodes.h"
 #include "nodes/plannodes.h"
 #include "nodes/relation.h"
-#include "parser/parse.h"
 #include "utils/datum.h"
 
 
@@ -1259,19 +1258,27 @@ _outAExpr(StringInfo str, A_Expr *node)
 {
        WRITE_NODE_TYPE("AEXPR");
 
-       switch (node->oper)
+       switch (node->kind)
        {
-               case AND:
+               case AEXPR_OP:
+                       appendStringInfo(str, " ");
+                       WRITE_NODE_FIELD(name);
+                       break;
+               case AEXPR_AND:
                        appendStringInfo(str, " AND");
                        break;
-               case OR:
+               case AEXPR_OR:
                        appendStringInfo(str, " OR");
                        break;
-               case NOT:
+               case AEXPR_NOT:
                        appendStringInfo(str, " NOT");
                        break;
-               case OP:
-                       appendStringInfo(str, " ");
+               case AEXPR_DISTINCT:
+                       appendStringInfo(str, " DISTINCT ");
+                       WRITE_NODE_FIELD(name);
+                       break;
+               case AEXPR_OF:
+                       appendStringInfo(str, " OF ");
                        WRITE_NODE_FIELD(name);
                        break;
                default:
index d2401ec75e78556863f8776013b45f907aecbf74..5720452f8186d0c5310460983f4bc72e683b9ef0 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Makefile for parser
 #
-# $Header: /cvsroot/pgsql/src/backend/parser/Makefile,v 1.39 2003/01/31 20:58:00 tgl Exp $
+# $Header: /cvsroot/pgsql/src/backend/parser/Makefile,v 1.40 2003/02/10 04:44:45 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -64,7 +64,7 @@ endif
 
 # Force these dependencies to be known even without dependency info built:
 
-keywords.o parse_clause.o parse_expr.o parser.o gram.o: $(srcdir)/parse.h
+gram.o keywords.o parser.o: $(srcdir)/parse.h
 
 
 # gram.c, parse.h, and scan.c are in the distribution tarball, so they
index 2c5eb2ef5bd511cffb3e3165e28be8f1a737545d..ba153497826f383005aa31091218d9d296d13a57 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.400 2003/02/09 06:56:28 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.401 2003/02/10 04:44:45 tgl Exp $
  *
  * HISTORY
  *       AUTHOR                        DATE                    MAJOR EVENT
@@ -324,11 +324,11 @@ static void doNegateFloat(Value *v);
  */
 
 /* ordinary key words in alphabetical order */
-%token <keyword> ABORT_TRANS ABSOLUTE ACCESS ACTION ADD AFTER
+%token <keyword> ABORT_P ABSOLUTE ACCESS ACTION ADD AFTER
        AGGREGATE ALL ALTER ANALYSE ANALYZE AND ANY AS ASC
        ASSERTION ASSIGNMENT AT AUTHORIZATION
 
-       BACKWARD BEFORE BEGIN_TRANS BETWEEN BIGINT BINARY BIT
+       BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT
        BOOLEAN BOTH BY
 
        CACHE CALLED CASCADE CASE CAST CHAIN CHAR_P
@@ -342,13 +342,13 @@ static void doNegateFloat(Value *v);
        DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS
     DESC DISTINCT DO DOMAIN_P DOUBLE DROP
 
-       EACH ELSE ENCODING ENCRYPTED END_TRANS ESCAPE EXCEPT
+       EACH ELSE ENCODING ENCRYPTED END_P ESCAPE EXCEPT
        EXCLUSIVE EXECUTE EXISTS EXPLAIN EXTERNAL EXTRACT
 
        FALSE_P FETCH FLOAT_P FOR FORCE FOREIGN FORWARD
        FREEZE FROM FULL FUNCTION
 
-       GET GLOBAL GRANT GROUP_P
+       GLOBAL GRANT GROUP_P
 
        HANDLER HAVING HOUR_P
 
@@ -414,9 +414,6 @@ static void doNegateFloat(Value *v);
 %token <str>   IDENT FCONST SCONST NCONST BCONST XCONST Op
 %token <ival>  ICONST PARAM
 
-/* these are not real. they are here so that they get generated as #define's*/
-%token                 OP
-
 /* precedence: lowest to highest */
 %left          UNION EXCEPT
 %left          INTERSECT
@@ -2234,7 +2231,7 @@ DefineStmt:
                        CREATE AGGREGATE func_name definition
                                {
                                        DefineStmt *n = makeNode(DefineStmt);
-                                       n->defType = AGGREGATE;
+                                       n->kind = DEFINE_STMT_AGGREGATE;
                                        n->defnames = $3;
                                        n->definition = $4;
                                        $$ = (Node *)n;
@@ -2242,7 +2239,7 @@ DefineStmt:
                        | CREATE OPERATOR any_operator definition
                                {
                                        DefineStmt *n = makeNode(DefineStmt);
-                                       n->defType = OPERATOR;
+                                       n->kind = DEFINE_STMT_OPERATOR;
                                        n->defnames = $3;
                                        n->definition = $4;
                                        $$ = (Node *)n;
@@ -2250,7 +2247,7 @@ DefineStmt:
                        | CREATE TYPE_P any_name definition
                                {
                                        DefineStmt *n = makeNode(DefineStmt);
-                                       n->defType = TYPE_P;
+                                       n->kind = DEFINE_STMT_TYPE;
                                        n->defnames = $3;
                                        n->definition = $4;
                                        $$ = (Node *)n;
@@ -2288,14 +2285,6 @@ DefineStmt:
                                        n->coldeflist = $6;
                                        $$ = (Node *)n;
                                }
-                       | CREATE CHARACTER SET opt_as any_name GET definition opt_collate
-                               {
-                                       DefineStmt *n = makeNode(DefineStmt);
-                                       n->defType = CHARACTER;
-                                       n->defnames = $5;
-                                       n->definition = $7;
-                                       $$ = (Node *)n;
-                               }
                ;
 
 definition: '(' def_list ')'                                           { $$ = $2; }
@@ -2586,7 +2575,7 @@ FetchStmt:        FETCH direction fetch_how_many from_in name
                                        if ($3 < 0)
                                        {
                                                $3 = -$3;
-                                               $2 = (($2 == FORWARD) ? BACKWARD : FORWARD);
+                                               $2 = (($2 == FETCH_FORWARD) ? FETCH_BACKWARD : FETCH_FORWARD);
                                        }
                                        n->direction = $2;
                                        n->howMany = $3;
@@ -2600,11 +2589,11 @@ FetchStmt:      FETCH direction fetch_how_many from_in name
                                        if ($2 < 0)
                                        {
                                                n->howMany = -$2;
-                                               n->direction = BACKWARD;
+                                               n->direction = FETCH_BACKWARD;
                                        }
                                        else
                                        {
-                                               n->direction = FORWARD;
+                                               n->direction = FETCH_FORWARD;
                                                n->howMany = $2;
                                        }
                                        n->portalname = $4;
@@ -2623,7 +2612,7 @@ FetchStmt:        FETCH direction fetch_how_many from_in name
                        | FETCH from_in name
                                {
                                        FetchStmt *n = makeNode(FetchStmt);
-                                       n->direction = FORWARD;
+                                       n->direction = FETCH_FORWARD;
                                        n->howMany = 1;
                                        n->portalname = $3;
                                        n->ismove = FALSE;
@@ -2632,7 +2621,7 @@ FetchStmt:        FETCH direction fetch_how_many from_in name
                        | FETCH name
                                {
                                        FetchStmt *n = makeNode(FetchStmt);
-                                       n->direction = FORWARD;
+                                       n->direction = FETCH_FORWARD;
                                        n->howMany = 1;
                                        n->portalname = $2;
                                        n->ismove = FALSE;
@@ -2644,7 +2633,7 @@ FetchStmt:        FETCH direction fetch_how_many from_in name
                                        if ($3 < 0)
                                        {
                                                $3 = -$3;
-                                               $2 = (($2 == FORWARD) ? BACKWARD : FORWARD);
+                                               $2 = (($2 == FETCH_FORWARD) ? FETCH_BACKWARD : FETCH_FORWARD);
                                        }
                                        n->direction = $2;
                                        n->howMany = $3;
@@ -2658,11 +2647,11 @@ FetchStmt:      FETCH direction fetch_how_many from_in name
                                        if ($2 < 0)
                                        {
                                                n->howMany = -$2;
-                                               n->direction = BACKWARD;
+                                               n->direction = FETCH_BACKWARD;
                                        }
                                        else
                                        {
-                                               n->direction = FORWARD;
+                                               n->direction = FETCH_FORWARD;
                                                n->howMany = $2;
                                        }
                                        n->portalname = $4;
@@ -2681,7 +2670,7 @@ FetchStmt:        FETCH direction fetch_how_many from_in name
                        | MOVE from_in name
                                {
                                        FetchStmt *n = makeNode(FetchStmt);
-                                       n->direction = FORWARD;
+                                       n->direction = FETCH_FORWARD;
                                        n->howMany = 1;
                                        n->portalname = $3;
                                        n->ismove = TRUE;
@@ -2690,7 +2679,7 @@ FetchStmt:        FETCH direction fetch_how_many from_in name
                        | MOVE name
                                {
                                        FetchStmt *n = makeNode(FetchStmt);
-                                       n->direction = FORWARD;
+                                       n->direction = FETCH_FORWARD;
                                        n->howMany = 1;
                                        n->portalname = $2;
                                        n->ismove = TRUE;
@@ -2698,14 +2687,14 @@ FetchStmt:      FETCH direction fetch_how_many from_in name
                                }
                ;
 
-direction:     FORWARD                                                                 { $$ = FORWARD; }
-                       | BACKWARD                                                              { $$ = BACKWARD; }
-                       | RELATIVE                                                              { $$ = FORWARD; }
+direction:     FORWARD                                                                 { $$ = FETCH_FORWARD; }
+                       | BACKWARD                                                              { $$ = FETCH_BACKWARD; }
+                       | RELATIVE                                                              { $$ = FETCH_FORWARD; }
                        | ABSOLUTE
                                {
                                        elog(NOTICE,
                                        "FETCH / ABSOLUTE not supported, using RELATIVE");
-                                       $$ = FORWARD;
+                                       $$ = FETCH_FORWARD;
                                }
                ;
 
@@ -3281,7 +3270,7 @@ ReindexStmt:
                        REINDEX reindex_type qualified_name opt_force
                                {
                                        ReindexStmt *n = makeNode(ReindexStmt);
-                                       n->reindexType = $2;
+                                       n->kind = $2;
                                        n->relation = $3;
                                        n->name = NULL;
                                        n->force = $4;
@@ -3290,7 +3279,7 @@ ReindexStmt:
                        | REINDEX DATABASE name opt_force
                                {
                                        ReindexStmt *n = makeNode(ReindexStmt);
-                                       n->reindexType = DATABASE;
+                                       n->kind = REINDEX_DATABASE;
                                        n->name = $3;
                                        n->relation = NULL;
                                        n->force = $4;
@@ -3299,8 +3288,8 @@ ReindexStmt:
                ;
 
 reindex_type:
-                       INDEX                                                                   { $$ = INDEX; }
-                       | TABLE                                                                 { $$ = TABLE; }
+                       INDEX                                                                   { $$ = REINDEX_INDEX; }
+                       | TABLE                                                                 { $$ = REINDEX_TABLE; }
                ;
 
 opt_force:     FORCE                                                                   {  $$ = TRUE; }
@@ -3485,45 +3474,45 @@ UnlistenStmt:
  *****************************************************************************/
 
 TransactionStmt:
-                       ABORT_TRANS opt_transaction
+                       ABORT_P opt_transaction
                                {
                                        TransactionStmt *n = makeNode(TransactionStmt);
-                                       n->command = ROLLBACK;
+                                       n->kind = TRANS_STMT_ROLLBACK;
                                        n->options = NIL;
                                        $$ = (Node *)n;
                                }
-                       | BEGIN_TRANS opt_transaction
+                       | BEGIN_P opt_transaction
                                {
                                        TransactionStmt *n = makeNode(TransactionStmt);
-                                       n->command = BEGIN_TRANS;
+                                       n->kind = TRANS_STMT_BEGIN;
                                        n->options = NIL;
                                        $$ = (Node *)n;
                                }
                        | START TRANSACTION transaction_mode_list_or_empty
                                {
                                        TransactionStmt *n = makeNode(TransactionStmt);
-                                       n->command = START;
+                                       n->kind = TRANS_STMT_START;
                                        n->options = $3;
                                        $$ = (Node *)n;
                                }
                        | COMMIT opt_transaction
                                {
                                        TransactionStmt *n = makeNode(TransactionStmt);
-                                       n->command = COMMIT;
+                                       n->kind = TRANS_STMT_COMMIT;
                                        n->options = NIL;
                                        $$ = (Node *)n;
                                }
-                       | END_TRANS opt_transaction
+                       | END_P opt_transaction
                                {
                                        TransactionStmt *n = makeNode(TransactionStmt);
-                                       n->command = COMMIT;
+                                       n->kind = TRANS_STMT_COMMIT;
                                        n->options = NIL;
                                        $$ = (Node *)n;
                                }
                        | ROLLBACK opt_transaction
                                {
                                        TransactionStmt *n = makeNode(TransactionStmt);
-                                       n->command = ROLLBACK;
+                                       n->kind = TRANS_STMT_ROLLBACK;
                                        n->options = NIL;
                                        $$ = (Node *)n;
                                }
@@ -5467,7 +5456,7 @@ r_expr:  row IN_P select_with_parens
                                        n->operName = makeList1(makeString("="));
                                        n->subselect = $4;
                                        /* Stick a NOT on top */
-                                       $$ = (Node *) makeA_Expr(NOT, NIL, NULL, (Node *) n);
+                                       $$ = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL, (Node *) n);
                                }
                        | row qual_all_Op sub_type select_with_parens
                        %prec Op
@@ -5629,52 +5618,52 @@ a_expr:         c_expr                                                                  { $$ = $1; }
                 * also to b_expr and to the MathOp list above.
                 */
                        | '+' a_expr                                    %prec UMINUS
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "+", NULL, $2); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2); }
                        | '-' a_expr                                    %prec UMINUS
                                { $$ = doNegate($2); }
                        | '%' a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "%", NULL, $2); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", NULL, $2); }
                        | '^' a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "^", NULL, $2); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", NULL, $2); }
                        | a_expr '%'
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "%", $1, NULL); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, NULL); }
                        | a_expr '^'
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "^", $1, NULL); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, NULL); }
                        | a_expr '+' a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "+", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3); }
                        | a_expr '-' a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "-", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3); }
                        | a_expr '*' a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "*", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3); }
                        | a_expr '/' a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "/", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3); }
                        | a_expr '%' a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "%", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3); }
                        | a_expr '^' a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "^", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3); }
                        | a_expr '<' a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "<", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3); }
                        | a_expr '>' a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, ">", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3); }
                        | a_expr '=' a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "=", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3); }
 
                        | a_expr qual_Op a_expr                         %prec Op
-                               { $$ = (Node *) makeA_Expr(OP, $2, $1, $3); }
+                               { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3); }
                        | qual_Op a_expr                                        %prec Op
-                               { $$ = (Node *) makeA_Expr(OP, $1, NULL, $2); }
+                               { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2); }
                        | a_expr qual_Op                                        %prec POSTFIXOP
-                               { $$ = (Node *) makeA_Expr(OP, $2, $1, NULL); }
+                               { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL); }
 
                        | a_expr AND a_expr
-                               { $$ = (Node *) makeA_Expr(AND, NIL, $1, $3); }
+                               { $$ = (Node *) makeA_Expr(AEXPR_AND, NIL, $1, $3); }
                        | a_expr OR a_expr
-                               { $$ = (Node *) makeA_Expr(OR, NIL, $1, $3); }
+                               { $$ = (Node *) makeA_Expr(AEXPR_OR, NIL, $1, $3); }
                        | NOT a_expr
-                               { $$ = (Node *) makeA_Expr(NOT, NIL, NULL, $2); }
+                               { $$ = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL, $2); }
 
                        | a_expr LIKE a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "~~", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, $3); }
                        | a_expr LIKE a_expr ESCAPE a_expr
                                {
                                        FuncCall *n = makeNode(FuncCall);
@@ -5682,10 +5671,10 @@ a_expr:         c_expr                                                                  { $$ = $1; }
                                        n->args = makeList2($3, $5);
                                        n->agg_star = FALSE;
                                        n->agg_distinct = FALSE;
-                                       $$ = (Node *) makeSimpleA_Expr(OP, "~~", $1, (Node *) n);
+                                       $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~", $1, (Node *) n);
                                }
                        | a_expr NOT LIKE a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "!~~", $1, $4); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, $4); }
                        | a_expr NOT LIKE a_expr ESCAPE a_expr
                                {
                                        FuncCall *n = makeNode(FuncCall);
@@ -5693,10 +5682,10 @@ a_expr:         c_expr                                                                  { $$ = $1; }
                                        n->args = makeList2($4, $6);
                                        n->agg_star = FALSE;
                                        n->agg_distinct = FALSE;
-                                       $$ = (Node *) makeSimpleA_Expr(OP, "!~~", $1, (Node *) n);
+                                       $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~", $1, (Node *) n);
                                }
                        | a_expr ILIKE a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "~~*", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, $3); }
                        | a_expr ILIKE a_expr ESCAPE a_expr
                                {
                                        FuncCall *n = makeNode(FuncCall);
@@ -5704,10 +5693,10 @@ a_expr:         c_expr                                                                  { $$ = $1; }
                                        n->args = makeList2($3, $5);
                                        n->agg_star = FALSE;
                                        n->agg_distinct = FALSE;
-                                       $$ = (Node *) makeSimpleA_Expr(OP, "~~*", $1, (Node *) n);
+                                       $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~~*", $1, (Node *) n);
                                }
                        | a_expr NOT ILIKE a_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "!~~*", $1, $4); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, $4); }
                        | a_expr NOT ILIKE a_expr ESCAPE a_expr
                                {
                                        FuncCall *n = makeNode(FuncCall);
@@ -5715,7 +5704,7 @@ a_expr:           c_expr                                                                  { $$ = $1; }
                                        n->args = makeList2($4, $6);
                                        n->agg_star = FALSE;
                                        n->agg_distinct = FALSE;
-                                       $$ = (Node *) makeSimpleA_Expr(OP, "!~~*", $1, (Node *) n);
+                                       $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~~*", $1, (Node *) n);
                                }
 
                        | a_expr SIMILAR TO a_expr                              %prec SIMILAR
@@ -5727,7 +5716,7 @@ a_expr:           c_expr                                                                  { $$ = $1; }
                                        n->args = makeList2($4, (Node *) c);
                                        n->agg_star = FALSE;
                                        n->agg_distinct = FALSE;
-                                       $$ = (Node *) makeSimpleA_Expr(OP, "~", $1, (Node *) n);
+                                       $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n);
                                }
                        | a_expr SIMILAR TO a_expr ESCAPE a_expr
                                {
@@ -5736,7 +5725,7 @@ a_expr:           c_expr                                                                  { $$ = $1; }
                                        n->args = makeList2($4, $6);
                                        n->agg_star = FALSE;
                                        n->agg_distinct = FALSE;
-                                       $$ = (Node *) makeSimpleA_Expr(OP, "~", $1, (Node *) n);
+                                       $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "~", $1, (Node *) n);
                                }
                        | a_expr NOT SIMILAR TO a_expr                  %prec SIMILAR
                                {
@@ -5747,7 +5736,7 @@ a_expr:           c_expr                                                                  { $$ = $1; }
                                        n->args = makeList2($5, (Node *) c);
                                        n->agg_star = FALSE;
                                        n->agg_distinct = FALSE;
-                                       $$ = (Node *) makeSimpleA_Expr(OP, "!~", $1, (Node *) n);
+                                       $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n);
                                }
                        | a_expr NOT SIMILAR TO a_expr ESCAPE a_expr
                                {
@@ -5756,7 +5745,7 @@ a_expr:           c_expr                                                                  { $$ = $1; }
                                        n->args = makeList2($5, $7);
                                        n->agg_star = FALSE;
                                        n->agg_distinct = FALSE;
-                                       $$ = (Node *) makeSimpleA_Expr(OP, "!~", $1, (Node *) n);
+                                       $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "!~", $1, (Node *) n);
                                }
 
                        /* NullTest clause
@@ -5839,26 +5828,26 @@ a_expr:         c_expr                                                                  { $$ = $1; }
                                        $$ = (Node *)b;
                                }
                        | a_expr IS DISTINCT FROM a_expr                        %prec IS
-                               { $$ = (Node *) makeSimpleA_Expr(DISTINCT, "=", $1, $5); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5); }
                        | a_expr IS OF '(' type_list ')'                        %prec IS
                                {
-                                       $$ = (Node *) makeSimpleA_Expr(OF, "=", $1, (Node *) $5);
+                                       $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5);
                                }
                        | a_expr IS NOT OF '(' type_list ')'            %prec IS
                                {
-                                       $$ = (Node *) makeSimpleA_Expr(OF, "!=", $1, (Node *) $6);
+                                       $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "!=", $1, (Node *) $6);
                                }
                        | a_expr BETWEEN b_expr AND b_expr                      %prec BETWEEN
                                {
-                                       $$ = (Node *) makeA_Expr(AND, NIL,
-                                               (Node *) makeSimpleA_Expr(OP, ">=", $1, $3),
-                                               (Node *) makeSimpleA_Expr(OP, "<=", $1, $5));
+                                       $$ = (Node *) makeA_Expr(AEXPR_AND, NIL,
+                                               (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $3),
+                                               (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $5));
                                }
                        | a_expr NOT BETWEEN b_expr AND b_expr          %prec BETWEEN
                                {
-                                       $$ = (Node *) makeA_Expr(OR, NIL,
-                                               (Node *) makeSimpleA_Expr(OP, "<", $1, $4),
-                                               (Node *) makeSimpleA_Expr(OP, ">", $1, $6));
+                                       $$ = (Node *) makeA_Expr(AEXPR_OR, NIL,
+                                               (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $4),
+                                               (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $6));
                                }
                        | a_expr IN_P in_expr
                                {
@@ -5878,11 +5867,11 @@ a_expr:         c_expr                                                                  { $$ = $1; }
                                                foreach(l, (List *) $3)
                                                {
                                                        Node *cmp;
-                                                       cmp = (Node *) makeSimpleA_Expr(OP, "=", $1, lfirst(l));
+                                                       cmp = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, lfirst(l));
                                                        if (n == NULL)
                                                                n = cmp;
                                                        else
-                                                               n = (Node *) makeA_Expr(OR, NIL, n, cmp);
+                                                               n = (Node *) makeA_Expr(AEXPR_OR, NIL, n, cmp);
                                                }
                                                $$ = n;
                                        }
@@ -5898,7 +5887,7 @@ a_expr:           c_expr                                                                  { $$ = $1; }
                                                n->lefthand = makeList1($1);
                                                n->operName = makeList1(makeString("="));
                                                /* Stick a NOT on top */
-                                               $$ = (Node *) makeA_Expr(NOT, NIL, NULL, (Node *) n);
+                                               $$ = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL, (Node *) n);
                                        }
                                        else
                                        {
@@ -5907,11 +5896,11 @@ a_expr:         c_expr                                                                  { $$ = $1; }
                                                foreach(l, (List *) $4)
                                                {
                                                        Node *cmp;
-                                                       cmp = (Node *) makeSimpleA_Expr(OP, "<>", $1, lfirst(l));
+                                                       cmp = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", $1, lfirst(l));
                                                        if (n == NULL)
                                                                n = cmp;
                                                        else
-                                                               n = (Node *) makeA_Expr(AND, NIL, n, cmp);
+                                                               n = (Node *) makeA_Expr(AEXPR_AND, NIL, n, cmp);
                                                }
                                                $$ = n;
                                        }
@@ -5956,50 +5945,50 @@ b_expr:         c_expr
                        | b_expr TYPECAST Typename
                                { $$ = makeTypeCast($1, $3); }
                        | '+' b_expr                                    %prec UMINUS
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "+", NULL, $2); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2); }
                        | '-' b_expr                                    %prec UMINUS
                                { $$ = doNegate($2); }
                        | '%' b_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "%", NULL, $2); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", NULL, $2); }
                        | '^' b_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "^", NULL, $2); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", NULL, $2); }
                        | b_expr '%'
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "%", $1, NULL); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, NULL); }
                        | b_expr '^'
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "^", $1, NULL); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, NULL); }
                        | b_expr '+' b_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "+", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3); }
                        | b_expr '-' b_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "-", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3); }
                        | b_expr '*' b_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "*", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3); }
                        | b_expr '/' b_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "/", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3); }
                        | b_expr '%' b_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "%", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3); }
                        | b_expr '^' b_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "^", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3); }
                        | b_expr '<' b_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "<", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3); }
                        | b_expr '>' b_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, ">", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3); }
                        | b_expr '=' b_expr
-                               { $$ = (Node *) makeSimpleA_Expr(OP, "=", $1, $3); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3); }
                        | b_expr qual_Op b_expr                         %prec Op
-                               { $$ = (Node *) makeA_Expr(OP, $2, $1, $3); }
+                               { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3); }
                        | qual_Op b_expr                                        %prec Op
-                               { $$ = (Node *) makeA_Expr(OP, $1, NULL, $2); }
+                               { $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2); }
                        | b_expr qual_Op                                        %prec POSTFIXOP
-                               { $$ = (Node *) makeA_Expr(OP, $2, $1, NULL); }
+                               { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL); }
                        | b_expr IS DISTINCT FROM b_expr        %prec IS
-                               { $$ = (Node *) makeSimpleA_Expr(DISTINCT, "=", $1, $5); }
+                               { $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5); }
                        | b_expr IS OF '(' type_list ')'        %prec IS
                                {
-                                       $$ = (Node *) makeSimpleA_Expr(OF, "=", $1, (Node *) $5);
+                                       $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5);
                                }
                        | b_expr IS NOT OF '(' type_list ')'    %prec IS
                                {
-                                       $$ = (Node *) makeSimpleA_Expr(OF, "!=", $1, (Node *) $6);
+                                       $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "!=", $1, (Node *) $6);
                                }
                ;
 
@@ -6646,7 +6635,7 @@ in_expr:  select_with_parens
  * same as CASE WHEN a IS NOT NULL THEN a WHEN b IS NOT NULL THEN b ... END
  * - thomas 1998-11-09
  */
-case_expr:     CASE case_arg when_clause_list case_default END_TRANS
+case_expr:     CASE case_arg when_clause_list case_default END_P
                                {
                                        CaseExpr *c = makeNode(CaseExpr);
                                        c->arg = (Expr *) $2;
@@ -6659,7 +6648,7 @@ case_expr:        CASE case_arg when_clause_list case_default END_TRANS
                                        CaseExpr *c = makeNode(CaseExpr);
                                        CaseWhen *w = makeNode(CaseWhen);
 
-                                       w->expr = (Expr *) makeSimpleA_Expr(OP, "=", $3, $5);
+                                       w->expr = (Expr *) makeSimpleA_Expr(AEXPR_OP, "=", $3, $5);
                                        /* w->result is left NULL */
                                        c->args = makeList1(w);
                                        c->defresult = (Expr *) $3;
@@ -7055,7 +7044,7 @@ ColLabel: IDENT                                                                   { $$ = $1; }
 /* "Unreserved" keywords --- available for use as any kind of name.
  */
 unreserved_keyword:
-                         ABORT_TRANS
+                         ABORT_P
                        | ABSOLUTE
                        | ACCESS
                        | ACTION
@@ -7068,7 +7057,7 @@ unreserved_keyword:
                        | AT
                        | BACKWARD
                        | BEFORE
-                       | BEGIN_TRANS
+                       | BEGIN_P
                        | BY
                        | CACHE
                        | CALLED
@@ -7113,7 +7102,6 @@ unreserved_keyword:
                        | FORCE
                        | FORWARD
                        | FUNCTION
-                       | GET
                        | GLOBAL
                        | HANDLER
                        | HOUR_P
@@ -7345,7 +7333,7 @@ reserved_keyword:
                        | DISTINCT
                        | DO
                        | ELSE
-                       | END_TRANS
+                       | END_P
                        | EXCEPT
                        | FALSE_P
                        | FOR
@@ -7541,19 +7529,19 @@ makeRowExpr(List *opr, List *largs, List *rargs)
                (strcmp(oprname, ">=") == 0))
        {
                if (expr == NULL)
-                       expr = (Node *) makeA_Expr(OP, opr, larg, rarg);
+                       expr = (Node *) makeA_Expr(AEXPR_OP, opr, larg, rarg);
                else
-                       expr = (Node *) makeA_Expr(AND, NIL, expr,
-                                                                          (Node *) makeA_Expr(OP, opr,
+                       expr = (Node *) makeA_Expr(AEXPR_AND, NIL, expr,
+                                                                          (Node *) makeA_Expr(AEXPR_OP, opr,
                                                                                                                   larg, rarg));
        }
        else if (strcmp(oprname, "<>") == 0)
        {
                if (expr == NULL)
-                       expr = (Node *) makeA_Expr(OP, opr, larg, rarg);
+                       expr = (Node *) makeA_Expr(AEXPR_OP, opr, larg, rarg);
                else
-                       expr = (Node *) makeA_Expr(OR, NIL, expr,
-                                                                          (Node *) makeA_Expr(OP, opr,
+                       expr = (Node *) makeA_Expr(AEXPR_OR, NIL, expr,
+                                                                          (Node *) makeA_Expr(AEXPR_OP, opr,
                                                                                                                   larg, rarg));
        }
        else
@@ -7585,10 +7573,10 @@ makeDistinctExpr(List *largs, List *rargs)
        rarg = lfirst(rargs);
 
        if (expr == NULL)
-               expr = (Node *) makeSimpleA_Expr(DISTINCT, "=", larg, rarg);
+               expr = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", larg, rarg);
        else
-               expr = (Node *) makeA_Expr(OR, NIL, expr,
-                                                                  (Node *) makeSimpleA_Expr(DISTINCT, "=",
+               expr = (Node *) makeA_Expr(AEXPR_OR, NIL, expr,
+                                                                  (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=",
                                                                                                                         larg, rarg));
 
        return expr;
@@ -7613,9 +7601,9 @@ makeRowNullTest(NullTestType test, List *args)
        if (expr == NULL)
                expr = (Node *) n;
        else if (test == IS_NOT_NULL)
-               expr = (Node *) makeA_Expr(OR, NIL, expr, (Node *)n);
+               expr = (Node *) makeA_Expr(AEXPR_OR, NIL, expr, (Node *)n);
        else
-               expr = (Node *) makeA_Expr(AND, NIL, expr, (Node *)n);
+               expr = (Node *) makeA_Expr(AEXPR_AND, NIL, expr, (Node *)n);
 
        return expr;
 }
@@ -7790,7 +7778,7 @@ doNegate(Node *n)
                }
        }
 
-       return (Node *) makeSimpleA_Expr(OP, "-", NULL, n);
+       return (Node *) makeSimpleA_Expr(AEXPR_OP, "-", NULL, n);
 }
 
 static void
index 4166825df86df212bf2b34379f513e09202bfccc..727cff3eaf4bfeb37ca7ffa24823db3105048d70 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.133 2003/02/03 14:04:24 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.134 2003/02/10 04:44:46 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -30,7 +30,7 @@
  */
 static const ScanKeyword ScanKeywords[] = {
        /* name, value */
-       {"abort", ABORT_TRANS},
+       {"abort", ABORT_P},
        {"absolute", ABSOLUTE},
        {"access", ACCESS},
        {"action", ACTION},
@@ -51,7 +51,7 @@ static const ScanKeyword ScanKeywords[] = {
        {"authorization", AUTHORIZATION},
        {"backward", BACKWARD},
        {"before", BEFORE},
-       {"begin", BEGIN_TRANS},
+       {"begin", BEGIN_P},
        {"between", BETWEEN},
        {"bigint", BIGINT},
        {"binary", BINARY},
@@ -117,7 +117,7 @@ static const ScanKeyword ScanKeywords[] = {
        {"else", ELSE},
        {"encoding", ENCODING},
        {"encrypted", ENCRYPTED},
-       {"end", END_TRANS},
+       {"end", END_P},
        {"escape", ESCAPE},
        {"except", EXCEPT},
        {"exclusive", EXCLUSIVE},
@@ -137,7 +137,6 @@ static const ScanKeyword ScanKeywords[] = {
        {"from", FROM},
        {"full", FULL},
        {"function", FUNCTION},
-       {"get", GET},
        {"global", GLOBAL},
        {"grant", GRANT},
        {"group", GROUP_P},
index ea9b95c68ae8cdd451531fa0a7b82ee303b548d6..ec468516ccadba53c232cf7c509d3e22a8809c62 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.105 2003/02/09 06:56:28 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.106 2003/02/10 04:44:46 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -22,7 +22,6 @@
 #include "optimizer/tlist.h"
 #include "optimizer/var.h"
 #include "parser/analyze.h"
-#include "parser/parse.h"
 #include "parser/parsetree.h"
 #include "parser/parse_clause.h"
 #include "parser/parse_coerce.h"
@@ -263,7 +262,7 @@ transformJoinUsingClause(ParseState *pstate, List *leftVars, List *rightVars)
                Node       *rvar = (Node *) lfirst(rvars);
                A_Expr     *e;
 
-               e = makeSimpleA_Expr(OP, "=", copyObject(lvar), copyObject(rvar));
+               e = makeSimpleA_Expr(AEXPR_OP, "=", copyObject(lvar), copyObject(rvar));
 
                if (result == NULL)
                        result = (Node *) e;
@@ -271,7 +270,7 @@ transformJoinUsingClause(ParseState *pstate, List *leftVars, List *rightVars)
                {
                        A_Expr     *a;
 
-                       a = makeA_Expr(AND, NIL, result, (Node *) e);
+                       a = makeA_Expr(AEXPR_AND, NIL, result, (Node *) e);
                        result = (Node *) a;
                }
 
index e807dfe3f462284ac3abbb41c152c7d7ac5bb245..ec95870ec9e5f3a75c777419752393cfdffd5b8d 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.143 2003/02/09 06:56:28 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.144 2003/02/10 04:44:46 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -23,7 +23,6 @@
 #include "nodes/plannodes.h"
 #include "parser/analyze.h"
 #include "parser/gramparse.h"
-#include "parser/parse.h"
 #include "parser/parse_coerce.h"
 #include "parser/parse_expr.h"
 #include "parser/parse_func.h"
@@ -178,9 +177,9 @@ transformExpr(ParseState *pstate, Node *expr)
                        {
                                A_Expr     *a = (A_Expr *) expr;
 
-                               switch (a->oper)
+                               switch (a->kind)
                                {
-                                       case OP:
+                                       case AEXPR_OP:
                                                {
                                                        /*
                                                         * Special-case "foo = NULL" and "NULL = foo"
@@ -219,7 +218,7 @@ transformExpr(ParseState *pstate, Node *expr)
                                                        }
                                                }
                                                break;
-                                       case AND:
+                                       case AEXPR_AND:
                                                {
                                                        Node       *lexpr = transformExpr(pstate,
                                                                                                                          a->lexpr);
@@ -234,7 +233,7 @@ transformExpr(ParseState *pstate, Node *expr)
                                                                                                                                         rexpr));
                                                }
                                                break;
-                                       case OR:
+                                       case AEXPR_OR:
                                                {
                                                        Node       *lexpr = transformExpr(pstate,
                                                                                                                          a->lexpr);
@@ -249,7 +248,7 @@ transformExpr(ParseState *pstate, Node *expr)
                                                                                                                                         rexpr));
                                                }
                                                break;
-                                       case NOT:
+                                       case AEXPR_NOT:
                                                {
                                                        Node       *rexpr = transformExpr(pstate,
                                                                                                                          a->rexpr);
@@ -260,7 +259,7 @@ transformExpr(ParseState *pstate, Node *expr)
                                                                                                                   makeList1(rexpr));
                                                }
                                                break;
-                                       case DISTINCT:
+                                       case AEXPR_DISTINCT:
                                                {
                                                        Node       *lexpr = transformExpr(pstate,
                                                                                                                          a->lexpr);
@@ -278,18 +277,17 @@ transformExpr(ParseState *pstate, Node *expr)
                                                        NodeSetTag(result, T_DistinctExpr);
                                                }
                                                break;
-                                       case OF:
+                                       case AEXPR_OF:
                                                {
+                                                       /*
+                                                        * Checking an expression for match to type.
+                                                        * Will result in a boolean constant node.
+                                                        */
                                                        List       *telem;
                                                        A_Const    *n;
                                                        Oid                     ltype,
                                                                                rtype;
                                                        bool            matched = FALSE;
-
-                                                       /*
-                                                        * Checking an expression for match to type.
-                                                        * Will result in a boolean constant node.
-                                                        */
                                                        Node       *lexpr = transformExpr(pstate,
                                                                                                                          a->lexpr);
 
@@ -530,7 +528,7 @@ transformExpr(ParseState *pstate, Node *expr)
                                        if (c->arg != NULL)
                                        {
                                                /* shorthand form was specified, so expand... */
-                                               warg = (Node *) makeSimpleA_Expr(OP, "=",
+                                               warg = (Node *) makeSimpleA_Expr(AEXPR_OP, "=",
                                                                                                                 (Node *) c->arg,
                                                                                                                 warg);
                                        }
index 44f163215bc7b44bc42262781888bccf7b8de9ee..d6366a1104d46b1ba0fbd20241039382dd893454 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.314 2003/01/01 21:57:05 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.315 2003/02/10 04:44:46 tgl Exp $
  *
  * NOTES
  *       this is the "main" module of the postgres backend and
@@ -44,7 +44,6 @@
 #include "optimizer/cost.h"
 #include "optimizer/planner.h"
 #include "parser/analyze.h"
-#include "parser/parse.h"
 #include "parser/parser.h"
 #include "rewrite/rewriteHandler.h"
 #include "storage/ipc.h"
@@ -666,7 +665,8 @@ pg_exec_query_string(StringInfo query_string,       /* string to execute */
                        {
                                TransactionStmt *stmt = (TransactionStmt *) parsetree;
 
-                               if (stmt->command == COMMIT || stmt->command == ROLLBACK)
+                               if (stmt->kind == TRANS_STMT_COMMIT ||
+                                       stmt->kind == TRANS_STMT_ROLLBACK)
                                        allowit = true;
                        }
 
@@ -1781,7 +1781,7 @@ PostgresMain(int argc, char *argv[], const char *username)
        if (!IsUnderPostmaster)
        {
                puts("\nPOSTGRES backend interactive interface ");
-               puts("$Revision: 1.314 $ $Date: 2003/01/01 21:57:05 $\n");
+               puts("$Revision: 1.315 $ $Date: 2003/02/10 04:44:46 $\n");
        }
 
        /*
@@ -2212,21 +2212,21 @@ CreateCommandTag(Node *parsetree)
                        {
                                TransactionStmt *stmt = (TransactionStmt *) parsetree;
 
-                               switch (stmt->command)
+                               switch (stmt->kind)
                                {
-                                       case BEGIN_TRANS:
+                                       case TRANS_STMT_BEGIN:
                                                tag = "BEGIN";
                                                break;
 
-                                       case START:
+                                       case TRANS_STMT_START:
                                                tag = "START TRANSACTION";
                                                break;
 
-                                       case COMMIT:
+                                       case TRANS_STMT_COMMIT:
                                                tag = "COMMIT";
                                                break;
 
-                                       case ROLLBACK:
+                                       case TRANS_STMT_ROLLBACK:
                                                tag = "ROLLBACK";
                                                break;
 
@@ -2329,15 +2329,15 @@ CreateCommandTag(Node *parsetree)
                        break;
 
                case T_DefineStmt:
-                       switch (((DefineStmt *) parsetree)->defType)
+                       switch (((DefineStmt *) parsetree)->kind)
                        {
-                               case AGGREGATE:
+                               case DEFINE_STMT_AGGREGATE:
                                        tag = "CREATE AGGREGATE";
                                        break;
-                               case OPERATOR:
+                               case DEFINE_STMT_OPERATOR:
                                        tag = "CREATE OPERATOR";
                                        break;
-                               case TYPE_P:
+                               case DEFINE_STMT_TYPE:
                                        tag = "CREATE TYPE";
                                        break;
                                default:
index 16ca619445c707b79e19e11a82adf8cb6ced6958..18a474f34b6863140acf7715c355d876cc176611 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.190 2003/01/27 00:48:28 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.191 2003/02/10 04:44:46 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -42,7 +42,6 @@
 #include "commands/view.h"
 #include "miscadmin.h"
 #include "nodes/makefuncs.h"
-#include "parser/parse.h"
 #include "parser/parse_clause.h"
 #include "parser/parse_expr.h"
 #include "parser/parse_type.h"
@@ -261,9 +260,9 @@ ProcessUtility(Node *parsetree,
                        {
                                TransactionStmt *stmt = (TransactionStmt *) parsetree;
 
-                               switch (stmt->command)
+                               switch (stmt->kind)
                                {
-                                       case BEGIN_TRANS:
+                                       case TRANS_STMT_BEGIN:
                                                BeginTransactionBlock();
                                                break;
 
@@ -272,7 +271,7 @@ ProcessUtility(Node *parsetree,
                                                 * Identical to BEGIN, except that it takes a few
                                                 * additional options.
                                                 */
-                                       case START:
+                                       case TRANS_STMT_START:
                                                {
                                                        BeginTransactionBlock();
 
@@ -295,11 +294,11 @@ ProcessUtility(Node *parsetree,
                                                }
                                                break;
 
-                                       case COMMIT:
+                                       case TRANS_STMT_COMMIT:
                                                EndTransactionBlock();
                                                break;
 
-                                       case ROLLBACK:
+                                       case TRANS_STMT_ROLLBACK:
                                                UserAbortTransactionBlock();
                                                break;
                                }
@@ -320,17 +319,10 @@ ProcessUtility(Node *parsetree,
                case T_FetchStmt:
                        {
                                FetchStmt  *stmt = (FetchStmt *) parsetree;
-                               char       *portalName = stmt->portalname;
-                               bool            forward;
-                               long            count;
 
-                               forward = (bool) (stmt->direction == FORWARD);
-
-                               /*
-                                * parser ensures that count is >= 0
-                                */
-                               count = stmt->howMany;
-                               PerformPortalFetch(portalName, forward, count,
+                               PerformPortalFetch(stmt->portalname,
+                                                                  stmt->direction == FETCH_FORWARD,
+                                                                  stmt->howMany,
                                                                   (stmt->ismove) ? None : dest,
                                                                   completionTag);
                        }
@@ -693,17 +685,17 @@ ProcessUtility(Node *parsetree,
                        {
                                DefineStmt *stmt = (DefineStmt *) parsetree;
 
-                               switch (stmt->defType)
+                               switch (stmt->kind)
                                {
-                                       case OPERATOR:
+                                       case DEFINE_STMT_AGGREGATE:
+                                               DefineAggregate(stmt->defnames, stmt->definition);
+                                               break;
+                                       case DEFINE_STMT_OPERATOR:
                                                DefineOperator(stmt->defnames, stmt->definition);
                                                break;
-                                       case TYPE_P:
+                                       case DEFINE_STMT_TYPE:
                                                DefineType(stmt->defnames, stmt->definition);
                                                break;
-                                       case AGGREGATE:
-                                               DefineAggregate(stmt->defnames, stmt->definition);
-                                               break;
                                }
                        }
                        break;
@@ -981,17 +973,17 @@ ProcessUtility(Node *parsetree,
                        {
                                ReindexStmt *stmt = (ReindexStmt *) parsetree;
 
-                               switch (stmt->reindexType)
+                               switch (stmt->kind)
                                {
-                                       case INDEX:
+                                       case REINDEX_INDEX:
                                                CheckOwnership(stmt->relation, false);
                                                ReindexIndex(stmt->relation, stmt->force);
                                                break;
-                                       case TABLE:
+                                       case REINDEX_TABLE:
                                                CheckOwnership(stmt->relation, false);
                                                ReindexTable(stmt->relation, stmt->force);
                                                break;
-                                       case DATABASE:
+                                       case REINDEX_DATABASE:
                                                ReindexDatabase(stmt->name, stmt->force, false);
                                                break;
                                }
index d1f4ebfc4002c8404e99ffd5ff8b2c285133d50b..a66e9fc09be9948c099ccc1223b3130ba29ac8d5 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: makefuncs.h,v 1.43 2002/12/12 15:49:40 tgl Exp $
+ * $Id: makefuncs.h,v 1.44 2003/02/10 04:44:46 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "nodes/parsenodes.h"
 
 
-extern A_Expr *makeA_Expr(int oper, List *name, Node *lexpr, Node *rexpr);
+extern A_Expr *makeA_Expr(A_Expr_Kind kind, List *name,
+                                                 Node *lexpr, Node *rexpr);
 
-extern A_Expr *makeSimpleA_Expr(int oper, const char *name,
-                                Node *lexpr, Node *rexpr);
+extern A_Expr *makeSimpleA_Expr(A_Expr_Kind kind, const char *name,
+                                                               Node *lexpr, Node *rexpr);
 
 extern Var *makeVar(Index varno,
                AttrNumber varattno,
index 53b0a3db7fcdbbba2a544f61b5d89def963c728f..5f8f4794f936ef3bcf092844bed262dfee91bc4a 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: parsenodes.h,v 1.228 2003/02/09 06:56:28 tgl Exp $
+ * $Id: parsenodes.h,v 1.229 2003/02/10 04:44:47 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -165,15 +165,25 @@ typedef struct ParamRef
 } ParamRef;
 
 /*
- * A_Expr - binary expressions
+ * A_Expr - infix, prefix, and postfix expressions
  */
+typedef enum A_Expr_Kind
+{
+       AEXPR_OP,                                       /* normal operator */
+       AEXPR_AND,                                      /* booleans - name field is unused */
+       AEXPR_OR,
+       AEXPR_NOT,
+       AEXPR_DISTINCT,                         /* IS DISTINCT FROM - name must be "=" */
+       AEXPR_OF                                        /* IS (not) OF - name must be "=" or "!=" */
+} A_Expr_Kind;
+
 typedef struct A_Expr
 {
        NodeTag         type;
-       int                     oper;                   /* type of operation (OP,OR,AND,NOT) */
+       A_Expr_Kind     kind;                   /* see above */
        List       *name;                       /* possibly-qualified name of operator */
-       Node       *lexpr;                      /* left argument */
-       Node       *rexpr;                      /* right argument */
+       Node       *lexpr;                      /* left argument, or NULL if none */
+       Node       *rexpr;                      /* right argument, or NULL if none */
 } A_Expr;
 
 /*
@@ -1058,13 +1068,20 @@ typedef struct CreateSeqStmt
 } CreateSeqStmt;
 
 /* ----------------------
- *             Create {Operator|Type|Aggregate} Statement
+ *             Create {Aggregate|Operator|Type} Statement
  * ----------------------
  */
+typedef enum DefineStmtKind
+{
+       DEFINE_STMT_AGGREGATE,
+       DEFINE_STMT_OPERATOR,
+       DEFINE_STMT_TYPE
+} DefineStmtKind;
+
 typedef struct DefineStmt
 {
        NodeTag         type;
-       int                     defType;                /* OPERATOR|TYPE_P|AGGREGATE */
+       DefineStmtKind kind;            /* see above */
        List       *defnames;           /* qualified name (list of Value strings) */
        List       *definition;         /* a list of DefElem */
 } DefineStmt;
@@ -1196,11 +1213,18 @@ typedef struct CommentStmt
  *             Fetch Statement
  * ----------------------
  */
+typedef enum FetchDirection
+{
+       FETCH_FORWARD,
+       FETCH_BACKWARD
+       /* ABSOLUTE someday? */
+} FetchDirection;
+
 typedef struct FetchStmt
 {
        NodeTag         type;
-       int                     direction;              /* FORWARD or BACKWARD */
-       long            howMany;                /* amount to fetch */
+       FetchDirection direction;       /* see above */
+       long            howMany;                /* number of rows */
        char       *portalname;         /* name of portal (cursor) */
        bool            ismove;                 /* TRUE if MOVE */
 } FetchStmt;
@@ -1357,11 +1381,19 @@ typedef struct UnlistenStmt
  *             {Begin|Commit|Rollback} Transaction Statement
  * ----------------------
  */
+typedef enum TransactionStmtKind
+{
+       TRANS_STMT_BEGIN,
+       TRANS_STMT_START,                       /* semantically identical to BEGIN */
+       TRANS_STMT_COMMIT,
+       TRANS_STMT_ROLLBACK
+} TransactionStmtKind;
+
 typedef struct TransactionStmt
 {
        NodeTag         type;
-       int                     command;                /* BEGIN_TRANS|START|COMMIT|ROLLBACK */
-       List       *options;
+       TransactionStmtKind kind;       /* see above */
+       List       *options;            /* for BEGIN/START only */
 } TransactionStmt;
 
 /* ----------------------
@@ -1544,10 +1576,17 @@ typedef struct ConstraintsSetStmt
  *             REINDEX Statement
  * ----------------------
  */
+typedef enum ReindexStmtKind
+{
+       REINDEX_INDEX,
+       REINDEX_TABLE,
+       REINDEX_DATABASE
+} ReindexStmtKind;
+
 typedef struct ReindexStmt
 {
        NodeTag         type;
-       int                     reindexType;    /* INDEX|TABLE|DATABASE */
+       ReindexStmtKind kind;           /* see above */
        RangeVar   *relation;           /* Table or index to reindex */
        const char *name;                       /* name of database to reindex */
        bool            force;