Commit 1ab9faae authored by Heikki Linnakangas's avatar Heikki Linnakangas

Reformat code in ATPostAlterTypeParse.

The code in ATPostAlterTypeParse was very deeply indented, mostly because
there were two nested switch-case statements, which add a lot of
indentation. Use if-else blocks instead, to make the code less indented
and more readable.

This is in preparation for next patch that makes some actualy changes to
the function. These cosmetic parts have been separated to make it easier
to see the real changes in the other patch.
parent 716f97f9
...@@ -8645,69 +8645,67 @@ ATPostAlterTypeParse(Oid oldId, Oid oldRelId, Oid refRelId, char *cmd, ...@@ -8645,69 +8645,67 @@ ATPostAlterTypeParse(Oid oldId, Oid oldRelId, Oid refRelId, char *cmd,
Node *stm = (Node *) lfirst(list_item); Node *stm = (Node *) lfirst(list_item);
AlteredTableInfo *tab; AlteredTableInfo *tab;
switch (nodeTag(stm)) tab = ATGetQueueEntry(wqueue, rel);
if (IsA(stm, IndexStmt))
{
IndexStmt *stmt = (IndexStmt *) stm;
AlterTableCmd *newcmd;
if (!rewrite)
TryReuseIndex(oldId, stmt);
newcmd = makeNode(AlterTableCmd);
newcmd->subtype = AT_ReAddIndex;
newcmd->def = (Node *) stmt;
tab->subcmds[AT_PASS_OLD_INDEX] =
lappend(tab->subcmds[AT_PASS_OLD_INDEX], newcmd);
}
else if (IsA(stm, AlterTableStmt))
{ {
case T_IndexStmt: AlterTableStmt *stmt = (AlterTableStmt *) stm;
ListCell *lcmd;
foreach(lcmd, stmt->cmds)
{
AlterTableCmd *cmd = (AlterTableCmd *) lfirst(lcmd);
if (cmd->subtype == AT_AddIndex)
{ {
IndexStmt *stmt = (IndexStmt *) stm; Assert(IsA(cmd->def, IndexStmt));
AlterTableCmd *newcmd;
if (!rewrite) if (!rewrite)
TryReuseIndex(oldId, stmt); TryReuseIndex(get_constraint_index(oldId),
(IndexStmt *) cmd->def);
tab = ATGetQueueEntry(wqueue, rel); cmd->subtype = AT_ReAddIndex;
newcmd = makeNode(AlterTableCmd);
newcmd->subtype = AT_ReAddIndex;
newcmd->def = (Node *) stmt;
tab->subcmds[AT_PASS_OLD_INDEX] = tab->subcmds[AT_PASS_OLD_INDEX] =
lappend(tab->subcmds[AT_PASS_OLD_INDEX], newcmd); lappend(tab->subcmds[AT_PASS_OLD_INDEX], cmd);
break;
} }
case T_AlterTableStmt: else if (cmd->subtype == AT_AddConstraint)
{ {
AlterTableStmt *stmt = (AlterTableStmt *) stm; Constraint *con;
ListCell *lcmd;
Assert(IsA(cmd->def, Constraint));
tab = ATGetQueueEntry(wqueue, rel);
foreach(lcmd, stmt->cmds) con = (Constraint *) cmd->def;
{ con->old_pktable_oid = refRelId;
AlterTableCmd *cmd = (AlterTableCmd *) lfirst(lcmd); /* rewriting neither side of a FK */
Constraint *con; if (con->contype == CONSTR_FOREIGN &&
!rewrite && tab->rewrite == 0)
switch (cmd->subtype) TryReuseForeignKey(oldId, con);
{ cmd->subtype = AT_ReAddConstraint;
case AT_AddIndex: tab->subcmds[AT_PASS_OLD_CONSTR] =
Assert(IsA(cmd->def, IndexStmt)); lappend(tab->subcmds[AT_PASS_OLD_CONSTR], cmd);
if (!rewrite)
TryReuseIndex(get_constraint_index(oldId),
(IndexStmt *) cmd->def);
cmd->subtype = AT_ReAddIndex;
tab->subcmds[AT_PASS_OLD_INDEX] =
lappend(tab->subcmds[AT_PASS_OLD_INDEX], cmd);
break;
case AT_AddConstraint:
Assert(IsA(cmd->def, Constraint));
con = (Constraint *) cmd->def;
con->old_pktable_oid = refRelId;
/* rewriting neither side of a FK */
if (con->contype == CONSTR_FOREIGN &&
!rewrite && tab->rewrite == 0)
TryReuseForeignKey(oldId, con);
cmd->subtype = AT_ReAddConstraint;
tab->subcmds[AT_PASS_OLD_CONSTR] =
lappend(tab->subcmds[AT_PASS_OLD_CONSTR], cmd);
break;
default:
elog(ERROR, "unexpected statement type: %d",
(int) cmd->subtype);
}
}
break;
} }
default: else
elog(ERROR, "unexpected statement type: %d", elog(ERROR, "unexpected statement type: %d",
(int) nodeTag(stm)); (int) cmd->subtype);
}
} }
else
elog(ERROR, "unexpected statement type: %d",
(int) nodeTag(stm));
} }
relation_close(rel, NoLock); relation_close(rel, NoLock);
......
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