patch.diff
application/octet-stream
Filename: patch.diff
Type: application/octet-stream
Part: 0
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index ef564e9e3bf..c77ab07bc72 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -1957,14 +1957,14 @@ ComputeIndexAttrs(ParseState *pstate,
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_COLUMN),
errmsg("column \"%s\" named in key does not exist",
- attribute->name)),
- parser_errposition(pstate, exprLocation((Node *) attribute)));
+ attribute->name),
+ parser_errposition(pstate, exprLocation((Node *) attribute))));
else
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_COLUMN),
errmsg("column \"%s\" does not exist",
- attribute->name)),
- parser_errposition(pstate, exprLocation((Node *) attribute)));
+ attribute->name),
+ parser_errposition(pstate, exprLocation((Node *) attribute))));
}
attform = (Form_pg_attribute) GETSTRUCT(atttuple);
indexInfo->ii_IndexAttrNumbers[attn] = attform->attnum;
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 32be3d3ca75..5f58f594582 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -456,15 +456,15 @@ static void validateForeignKeyConstraint(char *conname,
Relation rel, Relation pkrel,
Oid pkindOid, Oid constraintOid, bool hasperiod);
static void CheckAlterTableIsSafe(Relation rel);
-static void ATController(AlterTableStmt *parsetree,
+static void ATController(ParseState *pstate, AlterTableStmt *parsetree,
Relation rel, List *cmds, bool recurse, LOCKMODE lockmode,
AlterTableUtilityContext *context);
static void ATPrepCmd(List **wqueue, Relation rel, AlterTableCmd *cmd,
bool recurse, bool recursing, LOCKMODE lockmode,
AlterTableUtilityContext *context);
-static void ATRewriteCatalogs(List **wqueue, LOCKMODE lockmode,
+static void ATRewriteCatalogs(ParseState *pstate, List **wqueue, LOCKMODE lockmode,
AlterTableUtilityContext *context);
-static void ATExecCmd(List **wqueue, AlteredTableInfo *tab,
+static void ATExecCmd(ParseState *pstate, List **wqueue, AlteredTableInfo *tab,
AlterTableCmd *cmd, LOCKMODE lockmode, AlterTablePass cur_pass,
AlterTableUtilityContext *context);
static AlterTableCmd *ATParseTransformCmd(List **wqueue, AlteredTableInfo *tab,
@@ -542,7 +542,7 @@ static void ATPrepAddPrimaryKey(List **wqueue, Relation rel, AlterTableCmd *cmd,
bool recurse, LOCKMODE lockmode,
AlterTableUtilityContext *context);
static void verifyNotNullPKCompatible(HeapTuple tuple, const char *colname);
-static ObjectAddress ATExecAddIndex(AlteredTableInfo *tab, Relation rel,
+static ObjectAddress ATExecAddIndex(ParseState *pstate, AlteredTableInfo *tab, Relation rel,
IndexStmt *stmt, bool is_rebuild, LOCKMODE lockmode);
static ObjectAddress ATExecAddStatistics(AlteredTableInfo *tab, Relation rel,
CreateStatsStmt *stmt, bool is_rebuild, LOCKMODE lockmode);
@@ -4529,7 +4529,7 @@ AlterTableLookupRelation(AlterTableStmt *stmt, LOCKMODE lockmode)
* Some of the fields therein, such as the relid, are used here as well.
*/
void
-AlterTable(AlterTableStmt *stmt, LOCKMODE lockmode,
+AlterTable(ParseState *pstate, AlterTableStmt *stmt, LOCKMODE lockmode,
AlterTableUtilityContext *context)
{
Relation rel;
@@ -4539,7 +4539,7 @@ AlterTable(AlterTableStmt *stmt, LOCKMODE lockmode,
CheckAlterTableIsSafe(rel);
- ATController(stmt, rel, stmt->cmds, stmt->relation->inh, lockmode, context);
+ ATController(pstate, stmt, rel, stmt->cmds, stmt->relation->inh, lockmode, context);
}
/*
@@ -4567,7 +4567,7 @@ AlterTableInternal(Oid relid, List *cmds, bool recurse)
EventTriggerAlterTableRelid(relid);
- ATController(NULL, rel, cmds, recurse, lockmode, NULL);
+ ATController(NULL, NULL, rel, cmds, recurse, lockmode, NULL);
}
/*
@@ -4870,7 +4870,7 @@ AlterTableGetLockLevel(List *cmds)
* when requested.
*/
static void
-ATController(AlterTableStmt *parsetree,
+ATController(ParseState *pstate, AlterTableStmt *parsetree,
Relation rel, List *cmds, bool recurse, LOCKMODE lockmode,
AlterTableUtilityContext *context)
{
@@ -4889,7 +4889,7 @@ ATController(AlterTableStmt *parsetree,
relation_close(rel, NoLock);
/* Phase 2: update system catalogs */
- ATRewriteCatalogs(&wqueue, lockmode, context);
+ ATRewriteCatalogs(pstate, &wqueue, lockmode, context);
/* Phase 3: scan/rewrite tables as needed, and run afterStmts */
ATRewriteTables(parsetree, &wqueue, lockmode, context);
@@ -5308,7 +5308,7 @@ ATPrepCmd(List **wqueue, Relation rel, AlterTableCmd *cmd,
* conflicts).
*/
static void
-ATRewriteCatalogs(List **wqueue, LOCKMODE lockmode,
+ATRewriteCatalogs(ParseState *pstate, List **wqueue, LOCKMODE lockmode,
AlterTableUtilityContext *context)
{
ListCell *ltab;
@@ -5340,7 +5340,7 @@ ATRewriteCatalogs(List **wqueue, LOCKMODE lockmode,
tab->rel = relation_open(tab->relid, NoLock);
foreach(lcmd, subcmds)
- ATExecCmd(wqueue, tab,
+ ATExecCmd(pstate, wqueue, tab,
lfirst_node(AlterTableCmd, lcmd),
lockmode, pass, context);
@@ -5382,7 +5382,7 @@ ATRewriteCatalogs(List **wqueue, LOCKMODE lockmode,
* ATExecCmd: dispatch a subcommand to appropriate execution routine
*/
static void
-ATExecCmd(List **wqueue, AlteredTableInfo *tab,
+ATExecCmd(ParseState *pstate, List **wqueue, AlteredTableInfo *tab,
AlterTableCmd *cmd, LOCKMODE lockmode, AlterTablePass cur_pass,
AlterTableUtilityContext *context)
{
@@ -5454,11 +5454,11 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab,
NULL);
break;
case AT_AddIndex: /* ADD INDEX */
- address = ATExecAddIndex(tab, rel, (IndexStmt *) cmd->def, false,
+ address = ATExecAddIndex(pstate, tab, rel, (IndexStmt *) cmd->def, false,
lockmode);
break;
case AT_ReAddIndex: /* ADD INDEX */
- address = ATExecAddIndex(tab, rel, (IndexStmt *) cmd->def, true,
+ address = ATExecAddIndex(pstate, tab, rel, (IndexStmt *) cmd->def, true,
lockmode);
break;
case AT_ReAddStatistics: /* ADD STATISTICS */
@@ -9646,7 +9646,7 @@ verifyNotNullPKCompatible(HeapTuple tuple, const char *colname)
* Return value is the address of the new index.
*/
static ObjectAddress
-ATExecAddIndex(AlteredTableInfo *tab, Relation rel,
+ATExecAddIndex(ParseState *pstate, AlteredTableInfo *tab, Relation rel,
IndexStmt *stmt, bool is_rebuild, LOCKMODE lockmode)
{
bool check_rights;
@@ -9667,7 +9667,7 @@ ATExecAddIndex(AlteredTableInfo *tab, Relation rel,
/* suppress notices when rebuilding existing index */
quiet = is_rebuild;
- address = DefineIndex(NULL,
+ address = DefineIndex(pstate,
RelationGetRelid(rel),
stmt,
InvalidOid, /* no predefined OID */
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index b611eab0550..1d07b1b0ce3 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -1317,7 +1317,7 @@ ProcessUtilitySlow(ParseState *pstate,
EventTriggerAlterTableRelid(relid);
/* ... and do it */
- AlterTable(atstmt, lockmode, &atcontext);
+ AlterTable(pstate, atstmt, lockmode, &atcontext);
/* done */
EventTriggerAlterTableEnd();
diff --git a/src/include/commands/tablecmds.h b/src/include/commands/tablecmds.h
index e9b0fab0767..d0ff75e938f 100644
--- a/src/include/commands/tablecmds.h
+++ b/src/include/commands/tablecmds.h
@@ -17,6 +17,7 @@
#include "access/htup.h"
#include "catalog/dependency.h"
#include "catalog/objectaddress.h"
+#include "parser/parse_node.h"
#include "nodes/parsenodes.h"
#include "storage/lock.h"
#include "utils/relcache.h"
@@ -34,7 +35,7 @@ extern void RemoveRelations(DropStmt *drop);
extern Oid AlterTableLookupRelation(AlterTableStmt *stmt, LOCKMODE lockmode);
-extern void AlterTable(AlterTableStmt *stmt, LOCKMODE lockmode,
+extern void AlterTable(ParseState *pstate, AlterTableStmt *stmt, LOCKMODE lockmode,
AlterTableUtilityContext *context);
extern LOCKMODE AlterTableGetLockLevel(List *cmds);