From 7d4c99b4146f81f638b702ac80846db0b23dfd82 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Thu, 15 Nov 2007 23:23:44 +0000
Subject: [PATCH] Fix pgindent to properly handle 'else' and single-line
 comments on the same line;  previous fix was only partial.  Re-run pgindent
 on files that need it.

---
 src/backend/access/transam/slru.c    |  27 +++----
 src/backend/commands/trigger.c       | 109 ++++++++++++++-------------
 src/backend/rewrite/rewriteHandler.c |  27 ++++---
 src/backend/utils/adt/tsvector_op.c  |  60 +++++++--------
 src/backend/utils/mb/conv.c          |  52 +++++++------
 src/bin/psql/mbprint.c               |  12 +--
 src/tools/pgindent/pgindent          |  91 +++++++++++++++-------
 7 files changed, 209 insertions(+), 169 deletions(-)

diff --git a/src/backend/access/transam/slru.c b/src/backend/access/transam/slru.c
index bf3990bc299..64ae834e3e6 100644
--- a/src/backend/access/transam/slru.c
+++ b/src/backend/access/transam/slru.c
@@ -41,7 +41,7 @@
  * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/backend/access/transam/slru.c,v 1.41 2007/08/01 22:45:07 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/access/transam/slru.c,v 1.42 2007/11/15 23:23:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -168,7 +168,7 @@ SimpleLruShmemSize(int nslots, int nlsns)
 	sz += MAXALIGN(nslots * sizeof(LWLockId));	/* buffer_locks[] */
 
 	if (nlsns > 0)
-		sz += MAXALIGN(nslots * nlsns * sizeof(XLogRecPtr)); /* group_lsn[] */
+		sz += MAXALIGN(nslots * nlsns * sizeof(XLogRecPtr));	/* group_lsn[] */
 
 	return BUFFERALIGN(sz) + BLCKSZ * nslots;
 }
@@ -339,7 +339,7 @@ SimpleLruWaitIO(SlruCtl ctl, int slotno)
 			/* indeed, the I/O must have failed */
 			if (shared->page_status[slotno] == SLRU_PAGE_READ_IN_PROGRESS)
 				shared->page_status[slotno] = SLRU_PAGE_EMPTY;
-			else				/* write_in_progress */
+			else	/*  write_in_progress */
 			{
 				shared->page_status[slotno] = SLRU_PAGE_VALID;
 				shared->page_dirty[slotno] = true;
@@ -669,21 +669,22 @@ SlruPhysicalWritePage(SlruCtl ctl, int pageno, int slotno, SlruFlush fdata)
 	int			fd = -1;
 
 	/*
-	 * Honor the write-WAL-before-data rule, if appropriate, so that we do
-	 * not write out data before associated WAL records.  This is the same
-	 * action performed during FlushBuffer() in the main buffer manager.
+	 * Honor the write-WAL-before-data rule, if appropriate, so that we do not
+	 * write out data before associated WAL records.  This is the same action
+	 * performed during FlushBuffer() in the main buffer manager.
 	 */
 	if (shared->group_lsn != NULL)
 	{
 		/*
-		 * We must determine the largest async-commit LSN for the page.
-		 * This is a bit tedious, but since this entire function is a slow
-		 * path anyway, it seems better to do this here than to maintain
-		 * a per-page LSN variable (which'd need an extra comparison in the
+		 * We must determine the largest async-commit LSN for the page. This
+		 * is a bit tedious, but since this entire function is a slow path
+		 * anyway, it seems better to do this here than to maintain a per-page
+		 * LSN variable (which'd need an extra comparison in the
 		 * transaction-commit path).
 		 */
 		XLogRecPtr	max_lsn;
-		int			lsnindex, lsnoff;
+		int			lsnindex,
+					lsnoff;
 
 		lsnindex = slotno * shared->lsn_groups_per_page;
 		max_lsn = shared->group_lsn[lsnindex++];
@@ -699,8 +700,8 @@ SlruPhysicalWritePage(SlruCtl ctl, int pageno, int slotno, SlruFlush fdata)
 		{
 			/*
 			 * As noted above, elog(ERROR) is not acceptable here, so if
-			 * XLogFlush were to fail, we must PANIC.  This isn't much of
-			 * a restriction because XLogFlush is just about all critical
+			 * XLogFlush were to fail, we must PANIC.  This isn't much of a
+			 * restriction because XLogFlush is just about all critical
 			 * section anyway, but let's make sure.
 			 */
 			START_CRIT_SECTION();
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index c5a823857ee..30f68d9094c 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.222 2007/11/05 19:00:25 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.223 2007/11/15 23:23:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -42,7 +42,7 @@
 
 
 /* GUC variables */
-int		SessionReplicationRole = SESSION_REPLICATION_ROLE_ORIGIN;
+int			SessionReplicationRole = SESSION_REPLICATION_ROLE_ORIGIN;
 
 
 /* Local function prototypes */
@@ -67,7 +67,7 @@ static void AfterTriggerSaveEvent(ResultRelInfo *relinfo, int event,
  *
  * constraintOid, if nonzero, says that this trigger is being created
  * internally to implement that constraint.  A suitable pg_depend entry will
- * be made to link the trigger to that constraint.  constraintOid is zero when
+ * be made to link the trigger to that constraint.	constraintOid is zero when
  * executing a user-entered CREATE TRIGGER command.
  *
  * Note: can return InvalidOid if we decided to not create a trigger at all,
@@ -211,11 +211,11 @@ CreateTrigger(CreateTrigStmt *stmt, Oid constraintOid)
 	}
 
 	/*
-	 * If the command is a user-entered CREATE CONSTRAINT TRIGGER command
-	 * that references one of the built-in RI_FKey trigger functions, assume
-	 * it is from a dump of a pre-7.3 foreign key constraint, and take steps
-	 * to convert this legacy representation into a regular foreign key
-	 * constraint.  Ugly, but necessary for loading old dump files.
+	 * If the command is a user-entered CREATE CONSTRAINT TRIGGER command that
+	 * references one of the built-in RI_FKey trigger functions, assume it is
+	 * from a dump of a pre-7.3 foreign key constraint, and take steps to
+	 * convert this legacy representation into a regular foreign key
+	 * constraint.	Ugly, but necessary for loading old dump files.
 	 */
 	if (stmt->isconstraint && !OidIsValid(constraintOid) &&
 		list_length(stmt->args) >= 6 &&
@@ -421,8 +421,8 @@ CreateTrigger(CreateTrigStmt *stmt, Oid constraintOid)
 	{
 		/*
 		 * It's for a constraint, so make it an internal dependency of the
-		 * constraint.  We can skip depending on the relations, as there'll
-		 * be an indirect dependency via the constraint.
+		 * constraint.	We can skip depending on the relations, as there'll be
+		 * an indirect dependency via the constraint.
 		 */
 		referenced.classId = ConstraintRelationId;
 		referenced.objectId = constraintOid;
@@ -461,7 +461,7 @@ CreateTrigger(CreateTrigStmt *stmt, Oid constraintOid)
  * full-fledged foreign key constraints.
  *
  * The conversion is complex because a pre-7.3 foreign key involved three
- * separate triggers, which were reported separately in dumps.  While the
+ * separate triggers, which were reported separately in dumps.	While the
  * single trigger on the referencing table adds no new information, we need
  * to know the trigger functions of both of the triggers on the referenced
  * table to build the constraint declaration.  Also, due to lack of proper
@@ -469,13 +469,14 @@ CreateTrigger(CreateTrigStmt *stmt, Oid constraintOid)
  * an incomplete set of triggers resulting in an only partially enforced
  * FK constraint.  (This would happen if one of the tables had been dropped
  * and re-created, but only if the DB had been affected by a 7.0 pg_dump bug
- * that caused loss of tgconstrrelid information.)  We choose to translate to
+ * that caused loss of tgconstrrelid information.)	We choose to translate to
  * an FK constraint only when we've seen all three triggers of a set.  This is
  * implemented by storing unmatched items in a list in TopMemoryContext.
  * We match triggers together by comparing the trigger arguments (which
  * include constraint name, table and column names, so should be good enough).
  */
-typedef struct {
+typedef struct
+{
 	List	   *args;			/* list of (T_String) Values or NIL */
 	Oid			funcoids[3];	/* OIDs of trigger functions */
 	/* The three function OIDs are stored in the order update, delete, child */
@@ -486,7 +487,7 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid)
 {
 	static List *info_list = NIL;
 
-	static const char * const funcdescr[3] = {
+	static const char *const funcdescr[3] = {
 		gettext_noop("Found referenced table's UPDATE trigger."),
 		gettext_noop("Found referenced table's DELETE trigger."),
 		gettext_noop("Found referencing table's trigger.")
@@ -511,7 +512,7 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid)
 	i = 0;
 	foreach(l, stmt->args)
 	{
-		Value *arg = (Value *) lfirst(l);
+		Value	   *arg = (Value *) lfirst(l);
 
 		i++;
 		if (i < 4)				/* skip constraint and table names */
@@ -537,7 +538,7 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid)
 	i = 0;
 	foreach(l, fk_attrs)
 	{
-		Value *arg = (Value *) lfirst(l);
+		Value	   *arg = (Value *) lfirst(l);
 
 		if (i++ > 0)
 			appendStringInfoChar(&buf, ',');
@@ -548,7 +549,7 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid)
 	i = 0;
 	foreach(l, pk_attrs)
 	{
-		Value *arg = (Value *) lfirst(l);
+		Value	   *arg = (Value *) lfirst(l);
 
 		if (i++ > 0)
 			appendStringInfoChar(&buf, ',');
@@ -598,9 +599,9 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid)
 		MemoryContext oldContext;
 
 		ereport(NOTICE,
-				(errmsg("ignoring incomplete trigger group for constraint \"%s\" %s",
-						constr_name, buf.data),
-				 errdetail(funcdescr[funcnum])));
+		(errmsg("ignoring incomplete trigger group for constraint \"%s\" %s",
+				constr_name, buf.data),
+		 errdetail(funcdescr[funcnum])));
 		oldContext = MemoryContextSwitchTo(TopMemoryContext);
 		info = (OldTriggerInfo *) palloc0(sizeof(OldTriggerInfo));
 		info->args = copyObject(stmt->args);
@@ -614,9 +615,9 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid)
 	{
 		/* Second trigger of set */
 		ereport(NOTICE,
-				(errmsg("ignoring incomplete trigger group for constraint \"%s\" %s",
-						constr_name, buf.data),
-				 errdetail(funcdescr[funcnum])));
+		(errmsg("ignoring incomplete trigger group for constraint \"%s\" %s",
+				constr_name, buf.data),
+		 errdetail(funcdescr[funcnum])));
 	}
 	else
 	{
@@ -1184,8 +1185,8 @@ RelationBuildTriggers(Relation relation)
 			int			i;
 
 			val = DatumGetByteaP(fastgetattr(htup,
-											Anum_pg_trigger_tgargs,
-											tgrel->rd_att, &isnull));
+											 Anum_pg_trigger_tgargs,
+											 tgrel->rd_att, &isnull));
 			if (isnull)
 				elog(ERROR, "tgargs is null in trigger for relation \"%s\"",
 					 RelationGetRelationName(relation));
@@ -1637,7 +1638,7 @@ ExecBSInsertTriggers(EState *estate, ResultRelInfo *relinfo)
 				trigger->tgenabled == TRIGGER_DISABLED)
 				continue;
 		}
-		else /* ORIGIN or LOCAL role */
+		else	/*  ORIGIN or LOCAL role */
 		{
 			if (trigger->tgenabled == TRIGGER_FIRES_ON_REPLICA ||
 				trigger->tgenabled == TRIGGER_DISABLED)
@@ -1696,7 +1697,7 @@ ExecBRInsertTriggers(EState *estate, ResultRelInfo *relinfo,
 				trigger->tgenabled == TRIGGER_DISABLED)
 				continue;
 		}
-		else /* ORIGIN or LOCAL role */
+		else	/*  ORIGIN or LOCAL role */
 		{
 			if (trigger->tgenabled == TRIGGER_FIRES_ON_REPLICA ||
 				trigger->tgenabled == TRIGGER_DISABLED)
@@ -1768,7 +1769,7 @@ ExecBSDeleteTriggers(EState *estate, ResultRelInfo *relinfo)
 				trigger->tgenabled == TRIGGER_DISABLED)
 				continue;
 		}
-		else /* ORIGIN or LOCAL role */
+		else	/*  ORIGIN or LOCAL role */
 		{
 			if (trigger->tgenabled == TRIGGER_FIRES_ON_REPLICA ||
 				trigger->tgenabled == TRIGGER_DISABLED)
@@ -1834,7 +1835,7 @@ ExecBRDeleteTriggers(EState *estate, ResultRelInfo *relinfo,
 				trigger->tgenabled == TRIGGER_DISABLED)
 				continue;
 		}
-		else /* ORIGIN or LOCAL role */
+		else	/*  ORIGIN or LOCAL role */
 		{
 			if (trigger->tgenabled == TRIGGER_FIRES_ON_REPLICA ||
 				trigger->tgenabled == TRIGGER_DISABLED)
@@ -1919,7 +1920,7 @@ ExecBSUpdateTriggers(EState *estate, ResultRelInfo *relinfo)
 				trigger->tgenabled == TRIGGER_DISABLED)
 				continue;
 		}
-		else /* ORIGIN or LOCAL role */
+		else	/*  ORIGIN or LOCAL role */
 		{
 			if (trigger->tgenabled == TRIGGER_FIRES_ON_REPLICA ||
 				trigger->tgenabled == TRIGGER_DISABLED)
@@ -1990,7 +1991,7 @@ ExecBRUpdateTriggers(EState *estate, ResultRelInfo *relinfo,
 				trigger->tgenabled == TRIGGER_DISABLED)
 				continue;
 		}
-		else /* ORIGIN or LOCAL role */
+		else	/*  ORIGIN or LOCAL role */
 		{
 			if (trigger->tgenabled == TRIGGER_FIRES_ON_REPLICA ||
 				trigger->tgenabled == TRIGGER_DISABLED)
@@ -2669,7 +2670,7 @@ afterTriggerInvokeEvents(AfterTriggerEventList *events,
 				trigdesc = rInfo->ri_TrigDesc;
 				finfo = rInfo->ri_TrigFunctions;
 				instr = rInfo->ri_TrigInstrument;
-				if (trigdesc == NULL)		/* should not happen */
+				if (trigdesc == NULL)	/* should not happen */
 					elog(ERROR, "relation %u has no triggers",
 						 event->ate_relid);
 			}
@@ -2725,7 +2726,7 @@ afterTriggerInvokeEvents(AfterTriggerEventList *events,
 
 	if (local_estate)
 	{
-		ListCell *l;
+		ListCell   *l;
 
 		foreach(l, estate->es_trig_target_relations)
 		{
@@ -2905,8 +2906,8 @@ AfterTriggerFireDeferred(void)
 		ActiveSnapshot = CopySnapshot(GetTransactionSnapshot());
 
 	/*
-	 * Run all the remaining triggers.	Loop until they are all gone, in
-	 * case some trigger queues more for us to do.
+	 * Run all the remaining triggers.	Loop until they are all gone, in case
+	 * some trigger queues more for us to do.
 	 */
 	while (afterTriggerMarkEvents(events, NULL, false))
 	{
@@ -2940,13 +2941,13 @@ AfterTriggerEndXact(bool isCommit)
 	 *
 	 * Since all the info is in TopTransactionContext or children thereof, we
 	 * don't really need to do anything to reclaim memory.  However, the
-	 * pending-events list could be large, and so it's useful to discard
-	 * it as soon as possible --- especially if we are aborting because we
-	 * ran out of memory for the list!
+	 * pending-events list could be large, and so it's useful to discard it as
+	 * soon as possible --- especially if we are aborting because we ran out
+	 * of memory for the list!
 	 *
-	 * (Note: any event_cxts of child subtransactions could also be
-	 * deleted here, but we have no convenient way to find them, so we
-	 * leave it to TopTransactionContext reset to clean them up.)
+	 * (Note: any event_cxts of child subtransactions could also be deleted
+	 * here, but we have no convenient way to find them, so we leave it to
+	 * TopTransactionContext reset to clean them up.)
 	 */
 	if (afterTriggers && afterTriggers->event_cxt)
 		MemoryContextDelete(afterTriggers->event_cxt);
@@ -2973,9 +2974,8 @@ AfterTriggerBeginSubXact(void)
 
 	/*
 	 * Allocate more space in the stacks if needed.  (Note: because the
-	 * minimum nest level of a subtransaction is 2, we waste the first
-	 * couple entries of each array; not worth the notational effort to
-	 * avoid it.)
+	 * minimum nest level of a subtransaction is 2, we waste the first couple
+	 * entries of each array; not worth the notational effort to avoid it.)
 	 */
 	while (my_level >= afterTriggers->maxtransdepth)
 	{
@@ -3071,16 +3071,17 @@ AfterTriggerEndSubXact(bool isCommit)
 		afterTriggers->state_stack[my_level] = NULL;
 		Assert(afterTriggers->query_depth ==
 			   afterTriggers->depth_stack[my_level]);
+
 		/*
 		 * It's entirely possible that the subxact created an event_cxt but
 		 * there is not anything left in it (because all the triggers were
-		 * fired at end-of-statement).  If so, we should release the context
-		 * to prevent memory leakage in a long sequence of subtransactions.
-		 * We can detect whether there's anything of use in the context by
-		 * seeing if anything was added to the global events list since
-		 * subxact start.  (This test doesn't catch every case where the
-		 * context is deletable; for instance maybe the only additions were
-		 * from a sub-sub-xact.  But it handles the common case.)
+		 * fired at end-of-statement).	If so, we should release the context
+		 * to prevent memory leakage in a long sequence of subtransactions. We
+		 * can detect whether there's anything of use in the context by seeing
+		 * if anything was added to the global events list since subxact
+		 * start.  (This test doesn't catch every case where the context is
+		 * deletable; for instance maybe the only additions were from a
+		 * sub-sub-xact.  But it handles the common case.)
 		 */
 		if (afterTriggers->cxt_stack[my_level] &&
 			afterTriggers->events.tail == afterTriggers->events_stack[my_level].tail)
@@ -3615,7 +3616,7 @@ AfterTriggerSaveEvent(ResultRelInfo *relinfo, int event, bool row_trigger,
 				trigger->tgenabled == TRIGGER_DISABLED)
 				continue;
 		}
-		else /* ORIGIN or LOCAL role */
+		else	/*  ORIGIN or LOCAL role */
 		{
 			if (trigger->tgenabled == TRIGGER_FIRES_ON_REPLICA ||
 				trigger->tgenabled == TRIGGER_DISABLED)
@@ -3668,10 +3669,10 @@ AfterTriggerSaveEvent(ResultRelInfo *relinfo, int event, bool row_trigger,
 
 		/*
 		 * If we don't yet have an event context for the current (sub)xact,
-		 * create one.  Make it a child of CurTransactionContext to ensure it
+		 * create one.	Make it a child of CurTransactionContext to ensure it
 		 * will go away if the subtransaction aborts.
 		 */
-		if (my_level > 1)			/* subtransaction? */
+		if (my_level > 1)		/* subtransaction? */
 		{
 			Assert(my_level < afterTriggers->maxtransdepth);
 			cxtptr = &afterTriggers->cxt_stack[my_level];
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 67f46ae4f38..bbd1a7f92fe 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/rewrite/rewriteHandler.c,v 1.174 2007/09/06 17:31:58 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/rewrite/rewriteHandler.c,v 1.175 2007/11/15 23:23:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -53,7 +53,7 @@ static Node *get_assignment_input(Node *node);
 static void rewriteValuesRTE(RangeTblEntry *rte, Relation target_relation,
 				 List *attrnos);
 static void markQueryForLocking(Query *qry, Node *jtnode,
-								bool forUpdate, bool noWait);
+					bool forUpdate, bool noWait);
 static List *matchLocks(CmdType event, RuleLock *rulelocks,
 		   int varno, Query *parsetree);
 static Query *fireRIRrules(Query *parsetree, List *activeRIRs);
@@ -1038,11 +1038,10 @@ matchLocks(CmdType event,
 		RewriteRule *oneLock = rulelocks->rules[i];
 
 		/*
-		 * Suppress ON INSERT/UPDATE/DELETE rules that are disabled
-		 * or configured to not fire during the current sessions
-		 * replication role. ON SELECT rules will always be applied
-		 * in order to keep views working even in LOCAL or REPLICA
-		 * role.
+		 * Suppress ON INSERT/UPDATE/DELETE rules that are disabled or
+		 * configured to not fire during the current sessions replication
+		 * role. ON SELECT rules will always be applied in order to keep views
+		 * working even in LOCAL or REPLICA role.
 		 */
 		if (oneLock->event != CMD_SELECT)
 		{
@@ -1052,7 +1051,7 @@ matchLocks(CmdType event,
 					oneLock->enabled == RULE_DISABLED)
 					continue;
 			}
-			else /* ORIGIN or LOCAL ROLE */
+			else	/*  ORIGIN or LOCAL ROLE */
 			{
 				if (oneLock->enabled == RULE_FIRES_ON_REPLICA ||
 					oneLock->enabled == RULE_DISABLED)
@@ -1695,22 +1694,22 @@ RewriteQuery(Query *parsetree, List *rewrite_events)
 				case CMD_INSERT:
 					ereport(ERROR,
 							(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("cannot perform INSERT RETURNING on relation \"%s\"",
-								RelationGetRelationName(rt_entry_relation)),
+							 errmsg("cannot perform INSERT RETURNING on relation \"%s\"",
+								 RelationGetRelationName(rt_entry_relation)),
 							 errhint("You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause.")));
 					break;
 				case CMD_UPDATE:
 					ereport(ERROR,
 							(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("cannot perform UPDATE RETURNING on relation \"%s\"",
-								RelationGetRelationName(rt_entry_relation)),
+							 errmsg("cannot perform UPDATE RETURNING on relation \"%s\"",
+								 RelationGetRelationName(rt_entry_relation)),
 							 errhint("You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause.")));
 					break;
 				case CMD_DELETE:
 					ereport(ERROR,
 							(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("cannot perform DELETE RETURNING on relation \"%s\"",
-								RelationGetRelationName(rt_entry_relation)),
+							 errmsg("cannot perform DELETE RETURNING on relation \"%s\"",
+								 RelationGetRelationName(rt_entry_relation)),
 							 errhint("You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause.")));
 					break;
 				default:
diff --git a/src/backend/utils/adt/tsvector_op.c b/src/backend/utils/adt/tsvector_op.c
index f67b53407a6..03e396beaa8 100644
--- a/src/backend/utils/adt/tsvector_op.c
+++ b/src/backend/utils/adt/tsvector_op.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/adt/tsvector_op.c,v 1.7 2007/10/24 03:30:03 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/adt/tsvector_op.c,v 1.8 2007/11/15 23:23:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -254,7 +254,7 @@ tsvector_setweight(PG_FUNCTION_ARGS)
 }
 
 static int
-compareEntry(char *ptra, WordEntry * a, char *ptrb, WordEntry * b)
+compareEntry(char *ptra, WordEntry *a, char *ptrb, WordEntry *b)
 {
 	if (a->len == b->len)
 	{
@@ -271,8 +271,8 @@ compareEntry(char *ptra, WordEntry * a, char *ptrb, WordEntry * b)
  * Return the number added (might be less than expected due to overflow)
  */
 static int4
-add_pos(TSVector src, WordEntry * srcptr,
-		TSVector dest, WordEntry * destptr,
+add_pos(TSVector src, WordEntry *srcptr,
+		TSVector dest, WordEntry *destptr,
 		int4 maxpos)
 {
 	uint16	   *clen = &_POSVECPTR(dest, destptr)->npos;
@@ -288,7 +288,7 @@ add_pos(TSVector src, WordEntry * srcptr,
 	startlen = *clen;
 	for (i = 0;
 		 i < slen && *clen < MAXNUMPOS &&
-			 (*clen == 0 || WEP_GETPOS(dpos[*clen - 1]) != MAXENTRYPOS - 1);
+		 (*clen == 0 || WEP_GETPOS(dpos[*clen - 1]) != MAXENTRYPOS - 1);
 		 i++)
 	{
 		WEP_SETWEIGHT(dpos[*clen], WEP_GETWEIGHT(spos[i]));
@@ -369,7 +369,7 @@ tsvector_concat(PG_FUNCTION_ARGS)
 				memcpy(data + dataoff, _POSVECPTR(in1, ptr1), POSDATALEN(in1, ptr1) * sizeof(WordEntryPos) + sizeof(uint16));
 				dataoff += POSDATALEN(in1, ptr1) * sizeof(WordEntryPos) + sizeof(uint16);
 			}
-				
+
 			ptr++;
 			ptr1++;
 			i1--;
@@ -415,7 +415,7 @@ tsvector_concat(PG_FUNCTION_ARGS)
 					if (ptr2->haspos)
 						dataoff += add_pos(in2, ptr2, out, ptr, maxpos) * sizeof(WordEntryPos);
 				}
-				else			/* must have ptr2->haspos */
+				else	/*  must have ptr2->haspos */
 				{
 					int			addlen = add_pos(in2, ptr2, out, ptr, maxpos);
 
@@ -482,8 +482,8 @@ tsvector_concat(PG_FUNCTION_ARGS)
 	}
 
 	/*
-	 * Instead of checking each offset individually, we check for overflow
-	 * of pos fields once at the end.
+	 * Instead of checking each offset individually, we check for overflow of
+	 * pos fields once at the end.
 	 */
 	if (dataoff > MAXSTRPOS)
 		ereport(ERROR,
@@ -504,7 +504,7 @@ tsvector_concat(PG_FUNCTION_ARGS)
  * compare 2 string values
  */
 static int4
-ValCompare(CHKVAL * chkval, WordEntry * ptr, QueryOperand * item)
+ValCompare(CHKVAL *chkval, WordEntry *ptr, QueryOperand *item)
 {
 	if (ptr->len == item->length)
 		return strncmp(
@@ -525,7 +525,7 @@ checkclass_str(CHKVAL *chkval, WordEntry *val, QueryOperand *item)
 	WordEntryPos *ptr;
 	uint16		len;
 
-	posvec = (WordEntryPosVector *) 
+	posvec = (WordEntryPosVector *)
 		(chkval->values + SHORTALIGN(val->pos + val->len));
 
 	len = posvec->npos;
@@ -544,9 +544,9 @@ checkclass_str(CHKVAL *chkval, WordEntry *val, QueryOperand *item)
  * is there value 'val' in array or not ?
  */
 static bool
-checkcondition_str(void *checkval, QueryOperand * val)
+checkcondition_str(void *checkval, QueryOperand *val)
 {
-	CHKVAL *chkval = (CHKVAL *) checkval;
+	CHKVAL	   *chkval = (CHKVAL *) checkval;
 	WordEntry  *StopLow = chkval->arrb;
 	WordEntry  *StopHigh = chkval->arre;
 	WordEntry  *StopMiddle;
@@ -580,8 +580,8 @@ checkcondition_str(void *checkval, QueryOperand * val)
  *
  */
 bool
-TS_execute(QueryItem * curitem, void *checkval, bool calcnot,
-		   bool (*chkcond) (void *checkval, QueryOperand * val))
+TS_execute(QueryItem *curitem, void *checkval, bool calcnot,
+		   bool (*chkcond) (void *checkval, QueryOperand *val))
 {
 	/* since this function recurses, it could be driven to stack overflow */
 	check_stack_depth();
@@ -589,7 +589,7 @@ TS_execute(QueryItem * curitem, void *checkval, bool calcnot,
 	if (curitem->type == QI_VAL)
 		return chkcond(checkval, (QueryOperand *) curitem);
 
-	switch(curitem->operator.oper)
+	switch (curitem->operator.oper)
 	{
 		case OP_NOT:
 			if (calcnot)
@@ -710,7 +710,7 @@ ts_match_tq(PG_FUNCTION_ARGS)
  * that have a weight equal to one of the weights in 'weight' bitmask.
  */
 static int
-check_weight(TSVector txt, WordEntry * wptr, int8 weight)
+check_weight(TSVector txt, WordEntry *wptr, int8 weight)
 {
 	int			len = POSDATALEN(txt, wptr);
 	int			num = 0;
@@ -726,7 +726,7 @@ check_weight(TSVector txt, WordEntry * wptr, int8 weight)
 }
 
 static WordEntry **
-SEI_realloc(WordEntry ** in, uint32 *len)
+SEI_realloc(WordEntry **in, uint32 *len)
 {
 	if (*len == 0 || in == NULL)
 	{
@@ -742,7 +742,7 @@ SEI_realloc(WordEntry ** in, uint32 *len)
 }
 
 static int
-compareStatWord(StatEntry * a, WordEntry * b, tsstat * stat, TSVector txt)
+compareStatWord(StatEntry *a, WordEntry *b, tsstat *stat, TSVector txt)
 {
 	if (a->len == b->len)
 		return strncmp(
@@ -754,7 +754,7 @@ compareStatWord(StatEntry * a, WordEntry * b, tsstat * stat, TSVector txt)
 }
 
 static tsstat *
-formstat(tsstat * stat, TSVector txt, WordEntry ** entry, uint32 len)
+formstat(tsstat *stat, TSVector txt, WordEntry **entry, uint32 len)
 {
 	tsstat	   *newstat;
 	uint32		totallen,
@@ -861,16 +861,16 @@ formstat(tsstat * stat, TSVector txt, WordEntry ** entry, uint32 len)
  * This is written like a custom aggregate function, because the
  * original plan was to do just that. Unfortunately, an aggregate function
  * can't return a set, so that plan was abandoned. If that limitation is
- * lifted in the future, ts_stat could be a real aggregate function so that 
+ * lifted in the future, ts_stat could be a real aggregate function so that
  * you could use it like this:
  *
- *   SELECT ts_stat(vector_column) FROM vector_table;
+ *	 SELECT ts_stat(vector_column) FROM vector_table;
  *
- *  where vector_column is a tsvector-type column in vector_table.
+ *	where vector_column is a tsvector-type column in vector_table.
  */
 
 static tsstat *
-ts_accum(tsstat * stat, Datum data)
+ts_accum(tsstat *stat, Datum data)
 {
 	tsstat	   *newstat;
 	TSVector	txt = DatumGetTSVector(data);
@@ -1012,7 +1012,7 @@ ts_accum(tsstat * stat, Datum data)
 
 static void
 ts_setup_firstcall(FunctionCallInfo fcinfo, FuncCallContext *funcctx,
-				   tsstat * stat)
+				   tsstat *stat)
 {
 	TupleDesc	tupdesc;
 	MemoryContext oldcontext;
@@ -1232,11 +1232,11 @@ static bool
 istexttype(Oid typid)
 {
 	/* varchar(n) and char(n) are binary-compatible with text */
-	if (typid==TEXTOID || typid==VARCHAROID || typid==BPCHAROID)
+	if (typid == TEXTOID || typid == VARCHAROID || typid == BPCHAROID)
 		return true;
 	/* Allow domains over these types, too */
 	typid = getBaseType(typid);
-	if (typid==TEXTOID || typid==VARCHAROID || typid==BPCHAROID)
+	if (typid == TEXTOID || typid == VARCHAROID || typid == BPCHAROID)
 		return true;
 	return false;
 }
@@ -1280,7 +1280,7 @@ tsvector_update_trigger(PG_FUNCTION_ARGS, bool config_column)
 	Oid			cfgId;
 
 	/* Check call context */
-	if (!CALLED_AS_TRIGGER(fcinfo))	/* internal error */
+	if (!CALLED_AS_TRIGGER(fcinfo))		/* internal error */
 		elog(ERROR, "tsvector_update_trigger: not fired by trigger manager");
 
 	trigdata = (TriggerData *) fcinfo->context;
@@ -1318,7 +1318,7 @@ tsvector_update_trigger(PG_FUNCTION_ARGS, bool config_column)
 	/* Find the configuration to use */
 	if (config_column)
 	{
-		int		config_attr_num;
+		int			config_attr_num;
 
 		config_attr_num = SPI_fnumber(rel->rd_att, trigger->tgargs[1]);
 		if (config_attr_num == SPI_ERROR_NOATTRIBUTE)
@@ -1342,7 +1342,7 @@ tsvector_update_trigger(PG_FUNCTION_ARGS, bool config_column)
 	}
 	else
 	{
-		List	*names;
+		List	   *names;
 
 		names = stringToQualifiedNameList(trigger->tgargs[1]);
 		/* require a schema so that results are not search path dependent */
diff --git a/src/backend/utils/mb/conv.c b/src/backend/utils/mb/conv.c
index 008ce868735..a675c8bb3a0 100644
--- a/src/backend/utils/mb/conv.c
+++ b/src/backend/utils/mb/conv.c
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/mb/conv.c,v 1.63 2007/03/25 11:56:02 ishii Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/mb/conv.c,v 1.64 2007/11/15 23:23:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -244,7 +244,7 @@ mic2latin_with_table(const unsigned char *mic,
 static int
 compare1(const void *p1, const void *p2)
 {
-	uint32 v1,
+	uint32		v1,
 				v2;
 
 	v1 = *(uint32 *) p1;
@@ -259,7 +259,7 @@ compare1(const void *p1, const void *p2)
 static int
 compare2(const void *p1, const void *p2)
 {
-	uint32 v1,
+	uint32		v1,
 				v2;
 
 	v1 = *(uint32 *) p1;
@@ -274,10 +274,13 @@ compare2(const void *p1, const void *p2)
 static int
 compare3(const void *p1, const void *p2)
 {
-	uint32 s1, s2, d1, d2;
+	uint32		s1,
+				s2,
+				d1,
+				d2;
 
-	s1 = *(uint32 *)p1;
-	s2 = *((uint32 *)p1 + 1);
+	s1 = *(uint32 *) p1;
+	s2 = *((uint32 *) p1 + 1);
 	d1 = ((pg_utf_to_local_combined *) p2)->utf1;
 	d2 = ((pg_utf_to_local_combined *) p2)->utf2;
 	return (s1 > d1 || (s1 == d1 && s2 > d2)) ? 1 : ((s1 == d1 && s2 == d2) ? 0 : -1);
@@ -290,7 +293,7 @@ compare3(const void *p1, const void *p2)
 static int
 compare4(const void *p1, const void *p2)
 {
-	uint32 v1,
+	uint32		v1,
 				v2;
 
 	v1 = *(uint32 *) p1;
@@ -301,7 +304,8 @@ compare4(const void *p1, const void *p2)
 /*
  * convert 32bit wide character to mutibye stream pointed to by iso
  */
-static unsigned char *set_iso_code(unsigned char *iso,  uint32 code)
+static unsigned char *
+set_iso_code(unsigned char *iso, uint32 code)
 {
 	if (code & 0xff000000)
 		*iso++ = code >> 24;
@@ -330,12 +334,12 @@ static unsigned char *set_iso_code(unsigned char *iso,  uint32 code)
  */
 void
 UtfToLocal(const unsigned char *utf, unsigned char *iso,
-		   const pg_utf_to_local *map, const pg_utf_to_local_combined *cmap, 
+		   const pg_utf_to_local *map, const pg_utf_to_local_combined *cmap,
 		   int size1, int size2, int encoding, int len)
 {
-	uint32 iutf;
-	uint32 cutf[2];
-	uint32 code;
+	uint32		iutf;
+	uint32		cutf[2];
+	uint32		code;
 	pg_utf_to_local *p;
 	pg_utf_to_local_combined *cp;
 	int			l;
@@ -384,10 +388,10 @@ UtfToLocal(const unsigned char *utf, unsigned char *iso,
 		 */
 		if (cmap && len > l)
 		{
-			const unsigned char *utf_save  = utf;
-			int len_save = len;
-			int l_save = l;
-			
+			const unsigned char *utf_save = utf;
+			int			len_save = len;
+			int			l_save = l;
+
 			len -= l;
 
 			l = pg_utf_mblen(utf);
@@ -407,7 +411,7 @@ UtfToLocal(const unsigned char *utf, unsigned char *iso,
 								sizeof(pg_utf_to_local), compare1);
 					if (p == NULL)
 						report_untranslatable_char(PG_UTF8, encoding,
-											   (const char *) (utf_save - l_save), len_save);
+							   (const char *) (utf_save - l_save), len_save);
 					iso = set_iso_code(iso, p->code);
 				}
 
@@ -446,7 +450,7 @@ UtfToLocal(const unsigned char *utf, unsigned char *iso,
 							sizeof(pg_utf_to_local), compare1);
 				if (p == NULL)
 					report_untranslatable_char(PG_UTF8, encoding,
-											   (const char *) (utf_save - l_save), len_save);
+							   (const char *) (utf_save - l_save), len_save);
 				iso = set_iso_code(iso, p->code);
 
 				p = bsearch(&cutf[1], map, size1,
@@ -457,13 +461,13 @@ UtfToLocal(const unsigned char *utf, unsigned char *iso,
 				code = p->code;
 			}
 		}
-		else	/* no cmap or no remaining data */
+		else	/*  no cmap or no remaining data */
 		{
 			p = bsearch(&iutf, map, size1,
 						sizeof(pg_utf_to_local), compare1);
 			if (p == NULL)
 				report_untranslatable_char(PG_UTF8, encoding,
-											   (const char *) (utf - l), len);
+										   (const char *) (utf - l), len);
 			code = p->code;
 		}
 		iso = set_iso_code(iso, code);
@@ -491,7 +495,7 @@ UtfToLocal(const unsigned char *utf, unsigned char *iso,
  */
 void
 LocalToUtf(const unsigned char *iso, unsigned char *utf,
-		   const pg_local_to_utf *map, const pg_local_to_utf_combined *cmap, 
+		   const pg_local_to_utf *map, const pg_local_to_utf_combined *cmap,
 		   int size1, int size2, int encoding, int len)
 {
 	unsigned int iiso;
@@ -549,13 +553,13 @@ LocalToUtf(const unsigned char *iso, unsigned char *utf,
 		if (p == NULL)
 		{
 			/*
-			 * not found in the ordinary map. if there's a combined
-			 * character map, try with it
+			 * not found in the ordinary map. if there's a combined character
+			 * map, try with it
 			 */
 			if (cmap)
 			{
 				cp = bsearch(&iiso, cmap, size2,
-							sizeof(pg_local_to_utf_combined), compare4);
+							 sizeof(pg_local_to_utf_combined), compare4);
 
 				if (cp)
 				{
diff --git a/src/bin/psql/mbprint.c b/src/bin/psql/mbprint.c
index e57e2673f51..aebb8f893bd 100644
--- a/src/bin/psql/mbprint.c
+++ b/src/bin/psql/mbprint.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2007, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/mbprint.c,v 1.26 2007/10/13 20:18:41 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/mbprint.c,v 1.27 2007/11/15 23:23:44 momjian Exp $
  *
  * XXX this file does not really belong in psql/.  Perhaps move to libpq?
  * It also seems that the mbvalidate function is redundant with existing
@@ -21,7 +21,7 @@
  * To avoid version-skew problems, this file must not use declarations
  * from pg_wchar.h: the encoding IDs we are dealing with are determined
  * by the libpq.so we are linked with, and that might not match the
- * numbers we see at compile time.  (If this file were inside libpq,
+ * numbers we see at compile time.	(If this file were inside libpq,
  * the problem would go away...)
  *
  * Hence, we have our own definition of pg_wchar, and we get the values
@@ -246,7 +246,7 @@ pg_wcssize(unsigned char *pwcs, size_t len, int encoding, int *result_width,
 				linewidth += 4;
 				format_size += 4;
 			}
-			else				/* Output it as-is */
+			else	/*  Output it as-is */
 			{
 				linewidth += w;
 				format_size += 1;
@@ -257,7 +257,7 @@ pg_wcssize(unsigned char *pwcs, size_t len, int encoding, int *result_width,
 			linewidth += 6;		/* \u0000 */
 			format_size += 6;
 		}
-		else					/* All other chars */
+		else	/*  All other chars */
 		{
 			linewidth += w;
 			format_size += chlen;
@@ -321,7 +321,7 @@ pg_wcsformat(unsigned char *pwcs, size_t len, int encoding,
 				linewidth += 4;
 				ptr += 4;
 			}
-			else				/* Output it as-is */
+			else	/*  Output it as-is */
 			{
 				linewidth += w;
 				*ptr++ = *pwcs;
@@ -343,7 +343,7 @@ pg_wcsformat(unsigned char *pwcs, size_t len, int encoding,
 			ptr += 6;
 			linewidth += 6;
 		}
-		else					/* All other chars */
+		else	/*  All other chars */
 		{
 			int			i;
 
diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index 015597642c2..8f6473f9493 100755
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# $PostgreSQL: pgsql/src/tools/pgindent/pgindent,v 1.93 2007/11/15 22:12:09 momjian Exp $
+# $PostgreSQL: pgsql/src/tools/pgindent/pgindent,v 1.94 2007/11/15 23:23:44 momjian Exp $
 
 # Known bugs:
 #
@@ -33,22 +33,31 @@ fi
 for FILE
 do
 	cat "$FILE" |
-# convert // comments to /* */
+
+# Convert // comments to /* */
 	sed 's;^\([ 	]*\)//\(.*\)$;\1/* \2 */;g' |
+
 # Avoid bug that converts 'x =- 1' to 'x = -1'
 	sed 's;=- ;-= ;g' |
-# mark some comments for special treatment later
+
+# Mark some comments for special treatment later
 	sed 's;/\*  *---;/*---X_X;g' |
-# workaround for indent bug with 'else' handling
-# trim trailing space after single-line after-'else' comment
-# so next test can be done easily
-	sed 's;\([} 	]\)else[ 	]*\(/\*.*\*/\)[ 	]*$;\1else	\2;g' |
-# indent multi-line after-'else' comment so BSD indent will move it properly
-	sed 's;\([} 	]\)else[ 	]*\(/\*.*[^\*][^/]\)$;\1else\
+
+# 'else' followed by a single-line comment, followed by
+# a brace on the next line confuses BSD indent, so we push
+# the comment down to the next line, then later pull it
+# back up again.
+	sed 's;\([} 	]\)else[ 	]*\(/\*\)\(.*\*/\)[ 	]*$;\1else\
+    \2PGINDENT_MOVED\3;g' |
+
+# Indent multi-line after-'else' comment so BSD indent will move it properly.
+# We already moved down single-line comments above.  Check for '*' to make
+# sure we are not in a single-line comment that has other text on the line.
+	sed 's;\([} 	]\)else[ 	]*\(/\*[^\*]*\)[ 	]*$;\1else\
     \2;g' |
 	detab -t4 -qc |
 
-# work around bug where function that defines no local variables misindents
+# Work around bug where function that defines no local variables misindents
 # switch() case lines and line after #else.  Do not do for struct/enum.
 	awk '	BEGIN	{line1 = ""; line2 = ""}
 		{
@@ -71,7 +80,7 @@ do
 				print line1;
 		}' |
 
-# prevent indenting of code in 'extern "C"' blocks
+# Prevent indenting of code in 'extern "C"' blocks.
 	awk '	BEGIN	{line1 = ""; line2 = ""; skips = 0}
 		{
 			line2 = $0;
@@ -106,10 +115,10 @@ do
 				print line1;
 		}' |
 
-# protect backslashes in DATA()
+# Protect backslashes in DATA().
 	sed 's;^DATA(.*$;/*&*/;' |
 
-# protect wrapping in CATALOG()
+# Protect wrapping in CATALOG().
 	sed 's;^CATALOG(.*$;/*&*/;' >/tmp/$$a
 
 # We get the list of typedef's from /src/tools/find_typedef
@@ -2130,30 +2139,30 @@ do
 	fi
 	cat /tmp/$$a |
 
-# restore DATA/CATALOG lines
+# Restore DATA/CATALOG lines.
 	sed 's;^/\*\(DATA(.*\)\*/$;\1;' |
 	sed 's;^/\*\(CATALOG(.*\)\*/$;\1;' |
 
-# remove tabs and retab with four spaces
+# Remove tabs and retab with four spaces.
 	detab -t8 -qc |
 	entab -t4 -qc |
 	sed 's;^/\* Open extern \"C\" \*/$;{;' |
 	sed 's;^/\* Close extern \"C\" \*/$;};' |
 	sed 's;/\*---X_X;/* ---;g' |
 
-# workaround indent bug for 'static'
+# Workaround indent bug for 'static'.
 	sed 's;^static[ 	][ 	]*;static ;g' |
 
-# remove too much indenting after closing brace
+# Remove too much indenting after closing brace.
 	sed 's;^}	[ 	]*;}	;' |
 
-# indent single-line after-'else' comment by only one tab
+# Indent single-line after-'else' comment by only one tab.
 	sed 's;\([} 	]\)else[ 	]*\(/\*.*\*/\)[ 	]*$;\1else	\2;g' |
 
-# pull in #endif comments
+# Pull in #endif comments.
 	sed 's;^#endif[ 	][ 	]*/\*;#endif   /*;' |
 
-# work around misindenting of function with no variables defined
+# Work around misindenting of function with no variables defined.
 	awk '
 	{
 		if ($0 ~ /^[ 	]*int[ 	]*pgindent_func_no_var_fix;/)
@@ -2164,13 +2173,13 @@ do
 		else 	print $0;
 	}' |
 
-# add space after comments that start on tab stops
+# Add space after comments that start on tab stops.
 	sed 's;\([^ 	]\)\(/\*.*\*/\)$;\1	\2;' |
 
-# move trailing * in function return type
+# Move trailing * in function return type.
 	sed 's;^\([A-Za-z_][^ 	]*\)[ 	][ 	]*\*$;\1 *;' |
 
-# remove un-needed braces around single statements
+# Remove un-needed braces around single statements.
 # Do not use because it uglifies PG_TRY/PG_CATCH blocks and probably
 # isn't needed for general use.
 #	awk '
@@ -2200,7 +2209,7 @@ do
 #				print line2;
 #		}' |
 
-# remove blank line between opening brace and block comment
+# Remove blank line between opening brace and block comment.
 	awk '
 	{
 			line3 = $0;  
@@ -2229,7 +2238,33 @@ do
 				print line2;
 		}' |
 
-# remove trailing blank lines, helps with adding blank before trailing #endif
+# Pull up single-line comment after 'else' that was pulled down above
+	awk '
+		{
+			if (NR != 1)
+			{
+				if ($0 ~ "/\*PGINDENT_MOVED")
+				{
+					# remove tag
+					sub("PGINDENT_MOVED", "", $0);
+					# remove leading whitespace
+					sub("^[ 	]*", "", $0);
+					# add comment with single tab prefix
+					print prev_line"	"$0;
+					# throw away current line
+					getline;
+				}
+				else
+					print prev_line;
+			}
+			prev_line = $0;
+		}
+		END {
+			if (NR >= 1)
+				print prev_line;
+		}' |
+
+# Remove trailing blank lines, helps with adding blank before trailing #endif.
 	awk '	BEGIN	{blank_lines = 0;}
 		{
 			line1 = $0;
@@ -2243,7 +2278,7 @@ do
 			}
 		}' |
 
-# remove blank line before #else, #elif, and #endif
+# Remove blank line before #else, #elif, and #endif.
 	awk '	BEGIN	{line1 = ""; line2 = ""; skips = 0}
 		{
 			line2 = $0;
@@ -2268,7 +2303,7 @@ do
 				print line1;
 		}' |
 
-# add blank line before #endif if it is the last line in the file
+# Add blank line before #endif if it is the last line in the file.
 	awk '	BEGIN	{line1 = ""; line2 = ""}
 		{
 			line2 = $0;
@@ -2326,7 +2361,7 @@ do
 		else	print $0;
 	}' |
 
-# fix indenting of typedef caused by __cplusplus in libpq-fe.h
+# Fix indenting of typedef caused by __cplusplus in libpq-fe.h.
 	(
 		if echo "$FILE" | grep -q 'libpq-fe.h$'
 		then	sed 's/^[	]*typedef enum/typedef enum/'
-- 
GitLab