Commit c5ba16a8 authored by Tom Lane's avatar Tom Lane

Get rid of last few vestiges of parsetree dependency on grammar token

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.
parent b5956a2f
......@@ -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);
......
......@@ -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);
......
......@@ -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 $
*
*-------------------------------------------------------------------------
*/
......@@ -24,11 +24,11 @@
* 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;
......
......@@ -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:
......
......@@ -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
......
This diff is collapsed.
......@@ -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},
......
......@@ -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;
}
......
......@@ -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);
}
......
......@@ -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:
......
......@@ -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;
}
......
......@@ -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 $
*
*-------------------------------------------------------------------------
*/
......@@ -17,10 +17,11 @@
#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,
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment