This is a request I posted in February. The thread was named "Writing
triggers in C++". However I did not supply a patch then, and some people
misunderstood my problem. I will try to explain it again:

My problem is, I wrote some triggers in C using the SPI-API. Those
triggers call some functions defined in an external C++ library. In
order to use name-mangled functions, namespaces and C++-header-files,
provided by this library, I have to use a C++ compiler to compile my
trigger-functions. But the C++-compiler rejects to compile legal C code,
because some of the included Postgres-headers, ie. postgres.h,
executor/spi.h, commands/trigger.h, fmgr.h use a few C++ keywords to
defined a some struct members and function arguments. The incriminating
C++-keywords used in the Postgres-headers are: 'typeid', 'typename' and
'using'.

It would do no harm to the Postgres-sources if these keywords would be
replaced with a similar identifier. I wrote a patch which applies cleanly
onto version 8.2.4 (and 8.2.3) and keeps the Postgres binary compatible to
an unpatched version.

I would appreciate to see this patch applied onto the Postgres-sources.
Other authors using the SPI-API together with a C++-compiler would also
benefit from this patch.

Regards, Jacob
diff -ur postgresql-8.2.4/src/backend/access/common/tupdesc.c postgresql-8.2.4-c++-safe/src/backend/access/common/tupdesc.c
--- postgresql-8.2.4/src/backend/access/common/tupdesc.c	2006-07-14 16:52:16.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/access/common/tupdesc.c	2007-06-27 23:28:21.000000000 +0200
@@ -533,17 +533,17 @@
 		attnum++;
 
 		attname = entry->colname;
-		atttypmod = entry->typename->typmod;
-		attdim = list_length(entry->typename->arrayBounds);
+		atttypmod = entry->type_name->typmod;
+		attdim = list_length(entry->type_name->arrayBounds);
 
-		if (entry->typename->setof)
+		if (entry->type_name->setof)
 			ereport(ERROR,
 					(errcode(ERRCODE_INVALID_TABLE_DEFINITION),
 					 errmsg("column \"%s\" cannot be declared SETOF",
 							attname)));
 
 		TupleDescInitEntry(desc, attnum, attname,
-						   typenameTypeId(NULL, entry->typename),
+						   typenameTypeId(NULL, entry->type_name),
 						   atttypmod, attdim);
 
 		/* Fill in additional stuff not handled by TupleDescInitEntry */
diff -ur postgresql-8.2.4/src/backend/commands/sequence.c postgresql-8.2.4-c++-safe/src/backend/commands/sequence.c
--- postgresql-8.2.4/src/backend/commands/sequence.c	2006-10-06 19:13:58.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/commands/sequence.c	2007-06-27 23:28:21.000000000 +0200
@@ -135,48 +135,48 @@
 		switch (i)
 		{
 			case SEQ_COL_NAME:
-				coldef->typename = makeTypeNameFromOid(NAMEOID, -1);
+				coldef->type_name = makeTypeNameFromOid(NAMEOID, -1);
 				coldef->colname = "sequence_name";
 				namestrcpy(&name, seq->sequence->relname);
 				value[i - 1] = NameGetDatum(&name);
 				break;
 			case SEQ_COL_LASTVAL:
-				coldef->typename = makeTypeNameFromOid(INT8OID, -1);
+				coldef->type_name = makeTypeNameFromOid(INT8OID, -1);
 				coldef->colname = "last_value";
 				value[i - 1] = Int64GetDatumFast(new.last_value);
 				break;
 			case SEQ_COL_INCBY:
-				coldef->typename = makeTypeNameFromOid(INT8OID, -1);
+				coldef->type_name = makeTypeNameFromOid(INT8OID, -1);
 				coldef->colname = "increment_by";
 				value[i - 1] = Int64GetDatumFast(new.increment_by);
 				break;
 			case SEQ_COL_MAXVALUE:
-				coldef->typename = makeTypeNameFromOid(INT8OID, -1);
+				coldef->type_name = makeTypeNameFromOid(INT8OID, -1);
 				coldef->colname = "max_value";
 				value[i - 1] = Int64GetDatumFast(new.max_value);
 				break;
 			case SEQ_COL_MINVALUE:
-				coldef->typename = makeTypeNameFromOid(INT8OID, -1);
+				coldef->type_name = makeTypeNameFromOid(INT8OID, -1);
 				coldef->colname = "min_value";
 				value[i - 1] = Int64GetDatumFast(new.min_value);
 				break;
 			case SEQ_COL_CACHE:
-				coldef->typename = makeTypeNameFromOid(INT8OID, -1);
+				coldef->type_name = makeTypeNameFromOid(INT8OID, -1);
 				coldef->colname = "cache_value";
 				value[i - 1] = Int64GetDatumFast(new.cache_value);
 				break;
 			case SEQ_COL_LOG:
-				coldef->typename = makeTypeNameFromOid(INT8OID, -1);
+				coldef->type_name = makeTypeNameFromOid(INT8OID, -1);
 				coldef->colname = "log_cnt";
 				value[i - 1] = Int64GetDatum((int64) 1);
 				break;
 			case SEQ_COL_CYCLE:
-				coldef->typename = makeTypeNameFromOid(BOOLOID, -1);
+				coldef->type_name = makeTypeNameFromOid(BOOLOID, -1);
 				coldef->colname = "is_cycled";
 				value[i - 1] = BoolGetDatum(new.is_cycled);
 				break;
 			case SEQ_COL_CALLED:
-				coldef->typename = makeTypeNameFromOid(BOOLOID, -1);
+				coldef->type_name = makeTypeNameFromOid(BOOLOID, -1);
 				coldef->colname = "is_called";
 				value[i - 1] = BoolGetDatum(false);
 				break;
diff -ur postgresql-8.2.4/src/backend/commands/tablecmds.c postgresql-8.2.4-c++-safe/src/backend/commands/tablecmds.c
--- postgresql-8.2.4/src/backend/commands/tablecmds.c	2007-02-02 01:07:27.000000000 +0100
+++ postgresql-8.2.4-c++-safe/src/backend/commands/tablecmds.c	2007-06-27 23:28:21.000000000 +0200
@@ -897,14 +897,14 @@
 						(errmsg("merging multiple inherited definitions of column \"%s\"",
 								attributeName)));
 				def = (ColumnDef *) list_nth(inhSchema, exist_attno - 1);
-				if (typenameTypeId(NULL, def->typename) != attribute->atttypid ||
-					def->typename->typmod != attribute->atttypmod)
+				if (typenameTypeId(NULL, def->type_name) != attribute->atttypid ||
+					def->type_name->typmod != attribute->atttypmod)
 					ereport(ERROR,
 							(errcode(ERRCODE_DATATYPE_MISMATCH),
 						errmsg("inherited column \"%s\" has a type conflict",
 							   attributeName),
 							 errdetail("%s versus %s",
-									   TypeNameToString(def->typename),
+									   TypeNameToString(def->type_name),
 									   format_type_be(attribute->atttypid))));
 				def->inhcount++;
 				/* Merge of NOT NULL constraints = OR 'em together */
@@ -919,7 +919,7 @@
 				 */
 				def = makeNode(ColumnDef);
 				def->colname = pstrdup(attributeName);
-				def->typename = makeTypeNameFromOid(attribute->atttypid,
+				def->type_name = makeTypeNameFromOid(attribute->atttypid,
 													attribute->atttypmod);
 				def->inhcount = 1;
 				def->is_local = false;
@@ -1038,15 +1038,15 @@
 				   (errmsg("merging column \"%s\" with inherited definition",
 						   attributeName)));
 				def = (ColumnDef *) list_nth(inhSchema, exist_attno - 1);
-				if (typenameTypeId(NULL, def->typename) != typenameTypeId(NULL, newdef->typename) ||
-					def->typename->typmod != newdef->typename->typmod)
+				if (typenameTypeId(NULL, def->type_name) != typenameTypeId(NULL, newdef->type_name) ||
+					def->type_name->typmod != newdef->type_name->typmod)
 					ereport(ERROR,
 							(errcode(ERRCODE_DATATYPE_MISMATCH),
 							 errmsg("column \"%s\" has a type conflict",
 									attributeName),
 							 errdetail("%s versus %s",
-									   TypeNameToString(def->typename),
-									   TypeNameToString(newdef->typename))));
+									   TypeNameToString(def->type_name),
+									   TypeNameToString(newdef->type_name))));
 				/* Mark the column as locally defined */
 				def->is_local = true;
 				/* Merge of NOT NULL constraints = OR 'em together */
@@ -3148,8 +3148,8 @@
 			Form_pg_attribute childatt = (Form_pg_attribute) GETSTRUCT(tuple);
 
 			/* Okay if child matches by type */
-			if (typenameTypeId(NULL, colDef->typename) != childatt->atttypid ||
-				colDef->typename->typmod != childatt->atttypmod)
+			if (typenameTypeId(NULL, colDef->type_name) != childatt->atttypid ||
+				colDef->type_name->typmod != childatt->atttypmod)
 				ereport(ERROR,
 						(errcode(ERRCODE_DATATYPE_MISMATCH),
 						 errmsg("child table \"%s\" has different type for column \"%s\"",
@@ -3202,7 +3202,7 @@
 						MaxHeapAttributeNumber)));
 	i = minattnum + 1;
 
-	typeTuple = typenameType(NULL, colDef->typename);
+	typeTuple = typenameType(NULL, colDef->type_name);
 	tform = (Form_pg_type) GETSTRUCT(typeTuple);
 	typeOid = HeapTupleGetOid(typeTuple);
 
@@ -3222,10 +3222,10 @@
 	attribute->attstattarget = -1;
 	attribute->attlen = tform->typlen;
 	attribute->attcacheoff = -1;
-	attribute->atttypmod = colDef->typename->typmod;
+	attribute->atttypmod = colDef->type_name->typmod;
 	attribute->attnum = i;
 	attribute->attbyval = tform->typbyval;
-	attribute->attndims = list_length(colDef->typename->arrayBounds);
+	attribute->attndims = list_length(colDef->type_name->arrayBounds);
 	attribute->attstorage = tform->typstorage;
 	attribute->attalign = tform->typalign;
 	attribute->attnotnull = colDef->is_not_null;
@@ -3314,7 +3314,7 @@
 												(Node *) defval,
 												basetype,
 												typeOid,
-												colDef->typename->typmod,
+												colDef->type_name->typmod,
 												COERCION_ASSIGNMENT,
 												COERCE_IMPLICIT_CAST);
 		if (defval == NULL)		/* should not happen */
@@ -4914,7 +4914,7 @@
 					  AlterTableCmd *cmd)
 {
 	char	   *colName = cmd->name;
-	TypeName   *typename = (TypeName *) cmd->def;
+	TypeName   *type_name = (TypeName *) cmd->def;
 	HeapTuple	tuple;
 	Form_pg_attribute attTup;
 	AttrNumber	attnum;
@@ -4948,7 +4948,7 @@
 						colName)));
 
 	/* Look up the target type */
-	targettype = typenameTypeId(NULL, typename);
+	targettype = typenameTypeId(NULL, type_name);
 
 	/* make sure datatype is legal for a column */
 	CheckAttributeType(colName, targettype);
@@ -5000,14 +5000,14 @@
 
 	transform = coerce_to_target_type(pstate,
 									  transform, exprType(transform),
-									  targettype, typename->typmod,
+									  targettype, type_name->typmod,
 									  COERCION_ASSIGNMENT,
 									  COERCE_IMPLICIT_CAST);
 	if (transform == NULL)
 		ereport(ERROR,
 				(errcode(ERRCODE_DATATYPE_MISMATCH),
 				 errmsg("column \"%s\" cannot be cast to type \"%s\"",
-						colName, TypeNameToString(typename))));
+						colName, TypeNameToString(type_name))));
 
 	/*
 	 * Add a work queue item to make ATRewriteTable update the column
@@ -5038,7 +5038,7 @@
 
 static void
 ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
-					  const char *colName, TypeName *typename)
+					  const char *colName, TypeName *type_name)
 {
 	HeapTuple	heapTup;
 	Form_pg_attribute attTup;
@@ -5074,7 +5074,7 @@
 						colName)));
 
 	/* Look up the target type (should not fail, since prep found it) */
-	typeTuple = typenameType(NULL, typename);
+	typeTuple = typenameType(NULL, type_name);
 	tform = (Form_pg_type) GETSTRUCT(typeTuple);
 	targettype = HeapTupleGetOid(typeTuple);
 
@@ -5097,14 +5097,14 @@
 		defaultexpr = strip_implicit_coercions(defaultexpr);
 		defaultexpr = coerce_to_target_type(NULL,		/* no UNKNOWN params */
 										  defaultexpr, exprType(defaultexpr),
-											targettype, typename->typmod,
+											targettype, type_name->typmod,
 											COERCION_ASSIGNMENT,
 											COERCE_IMPLICIT_CAST);
 		if (defaultexpr == NULL)
 			ereport(ERROR,
 					(errcode(ERRCODE_DATATYPE_MISMATCH),
 			errmsg("default for column \"%s\" cannot be cast to type \"%s\"",
-				   colName, TypeNameToString(typename))));
+				   colName, TypeNameToString(type_name))));
 	}
 	else
 		defaultexpr = NULL;
@@ -5314,8 +5314,8 @@
 	 * copy of the syscache entry, so okay to scribble on.)
 	 */
 	attTup->atttypid = targettype;
-	attTup->atttypmod = typename->typmod;
-	attTup->attndims = list_length(typename->arrayBounds);
+	attTup->atttypmod = type_name->typmod;
+	attTup->attndims = list_length(type_name->arrayBounds);
 	attTup->attlen = tform->typlen;
 	attTup->attbyval = tform->typbyval;
 	attTup->attalign = tform->typalign;
diff -ur postgresql-8.2.4/src/backend/commands/typecmds.c postgresql-8.2.4-c++-safe/src/backend/commands/typecmds.c
--- postgresql-8.2.4/src/backend/commands/typecmds.c	2006-10-04 02:29:51.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/commands/typecmds.c	2007-06-27 23:28:21.000000000 +0200
@@ -77,7 +77,7 @@
 static Oid	findTypeSendFunction(List *procname, Oid typeOid);
 static Oid	findTypeAnalyzeFunction(List *procname, Oid typeOid);
 static List *get_rels_with_domain(Oid domainOid, LOCKMODE lockmode);
-static void checkDomainOwner(HeapTuple tup, TypeName *typename);
+static void checkDomainOwner(HeapTuple tup, TypeName *type_name);
 static char *domainAddConstraint(Oid domainOid, Oid domainNamespace,
 					Oid baseTypeOid,
 					int typMod, Constraint *constr,
@@ -436,16 +436,16 @@
 void
 RemoveType(List *names, DropBehavior behavior, bool missing_ok)
 {
-	TypeName   *typename;
+	TypeName   *type_name;
 	Oid			typeoid;
 	HeapTuple	tup;
 	ObjectAddress object;
 
 	/* Make a TypeName so we can use standard type lookup machinery */
-	typename = makeTypeNameFromNameList(names);
+	type_name = makeTypeNameFromNameList(names);
 
 	/* Use LookupTypeName here so that shell types can be removed. */
-	typeoid = LookupTypeName(NULL, typename);
+	typeoid = LookupTypeName(NULL, type_name);
 	if (!OidIsValid(typeoid))
 	{
 		if (!missing_ok)
@@ -453,13 +453,13 @@
 			ereport(ERROR,
 					(errcode(ERRCODE_UNDEFINED_OBJECT),
 					 errmsg("type \"%s\" does not exist",
-							TypeNameToString(typename))));
+							TypeNameToString(type_name))));
 		}
 		else
 		{
 			ereport(NOTICE,
 					(errmsg("type \"%s\" does not exist, skipping",
-							TypeNameToString(typename))));
+							TypeNameToString(type_name))));
 		}
 
 		return;
@@ -476,7 +476,7 @@
 	  !pg_namespace_ownercheck(((Form_pg_type) GETSTRUCT(tup))->typnamespace,
 							   GetUserId()))
 		aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_TYPE,
-					   TypeNameToString(typename));
+					   TypeNameToString(type_name));
 
 	ReleaseSysCache(tup);
 
@@ -545,7 +545,7 @@
 	char	   *defaultValueBin = NULL;
 	bool		typNotNull = false;
 	bool		nullDefined = false;
-	int32		typNDims = list_length(stmt->typename->arrayBounds);
+	int32		typNDims = list_length(stmt->type_name->arrayBounds);
 	HeapTuple	typeTup;
 	List	   *schema = stmt->constraints;
 	ListCell   *listptr;
@@ -580,7 +580,7 @@
 	/*
 	 * Look up the base type.
 	 */
-	typeTup = typenameType(NULL, stmt->typename);
+	typeTup = typenameType(NULL, stmt->type_name);
 
 	baseType = (Form_pg_type) GETSTRUCT(typeTup);
 	basetypeoid = HeapTupleGetOid(typeTup);
@@ -595,7 +595,7 @@
 		ereport(ERROR,
 				(errcode(ERRCODE_DATATYPE_MISMATCH),
 				 errmsg("\"%s\" is not a valid base type for a domain",
-						TypeNameToString(stmt->typename))));
+						TypeNameToString(stmt->type_name))));
 
 	/* passed by value */
 	byValue = baseType->typbyval;
@@ -681,7 +681,7 @@
 				 */
 				defaultExpr = cookDefault(pstate, constr->raw_expr,
 										  basetypeoid,
-										  stmt->typename->typmod,
+										  stmt->type_name->typmod,
 										  domainName);
 
 				/*
@@ -776,7 +776,7 @@
 				   byValue,		/* passed by value */
 				   alignment,	/* required alignment */
 				   storage,		/* TOAST strategy */
-				   stmt->typename->typmod,		/* typeMod value */
+				   stmt->type_name->typmod,		/* typeMod value */
 				   typNDims,	/* Array dimensions for base type */
 				   typNotNull); /* Type NOT NULL */
 
@@ -793,7 +793,7 @@
 		{
 			case CONSTR_CHECK:
 				domainAddConstraint(domainoid, domainNamespace,
-									basetypeoid, stmt->typename->typmod,
+									basetypeoid, stmt->type_name->typmod,
 									constr, domainName);
 				break;
 
@@ -823,17 +823,17 @@
 void
 RemoveDomain(List *names, DropBehavior behavior, bool missing_ok)
 {
-	TypeName   *typename;
+	TypeName   *type_name;
 	Oid			typeoid;
 	HeapTuple	tup;
 	char		typtype;
 	ObjectAddress object;
 
 	/* Make a TypeName so we can use standard type lookup machinery */
-	typename = makeTypeNameFromNameList(names);
+	type_name = makeTypeNameFromNameList(names);
 
 	/* Use LookupTypeName here so that shell types can be removed. */
-	typeoid = LookupTypeName(NULL, typename);
+	typeoid = LookupTypeName(NULL, type_name);
 	if (!OidIsValid(typeoid))
 	{
 		if (!missing_ok)
@@ -841,13 +841,13 @@
 			ereport(ERROR,
 					(errcode(ERRCODE_UNDEFINED_OBJECT),
 					 errmsg("type \"%s\" does not exist",
-							TypeNameToString(typename))));
+							TypeNameToString(type_name))));
 		}
 		else
 		{
 			ereport(NOTICE,
 					(errmsg("type \"%s\" does not exist, skipping",
-							TypeNameToString(typename))));
+							TypeNameToString(type_name))));
 		}
 
 		return;
@@ -864,7 +864,7 @@
 	  !pg_namespace_ownercheck(((Form_pg_type) GETSTRUCT(tup))->typnamespace,
 							   GetUserId()))
 		aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_TYPE,
-					   TypeNameToString(typename));
+					   TypeNameToString(type_name));
 
 	/* Check that this is actually a domain */
 	typtype = ((Form_pg_type) GETSTRUCT(tup))->typtype;
@@ -873,7 +873,7 @@
 		ereport(ERROR,
 				(errcode(ERRCODE_WRONG_OBJECT_TYPE),
 				 errmsg("\"%s\" is not a domain",
-						TypeNameToString(typename))));
+						TypeNameToString(type_name))));
 
 	ReleaseSysCache(tup);
 
@@ -1145,7 +1145,7 @@
 void
 AlterDomainDefault(List *names, Node *defaultRaw)
 {
-	TypeName   *typename;
+	TypeName   *type_name;
 	Oid			domainoid;
 	HeapTuple	tup;
 	ParseState *pstate;
@@ -1159,8 +1159,8 @@
 	Form_pg_type typTup;
 
 	/* Make a TypeName so we can use standard type lookup machinery */
-	typename = makeTypeNameFromNameList(names);
-	domainoid = typenameTypeId(NULL, typename);
+	type_name = makeTypeNameFromNameList(names);
+	domainoid = typenameTypeId(NULL, type_name);
 
 	/* Look up the domain in the type table */
 	rel = heap_open(TypeRelationId, RowExclusiveLock);
@@ -1173,7 +1173,7 @@
 	typTup = (Form_pg_type) GETSTRUCT(tup);
 
 	/* Check it's a domain and check user has permission for ALTER DOMAIN */
-	checkDomainOwner(tup, typename);
+	checkDomainOwner(tup, type_name);
 
 	/* Setup new tuple */
 	MemSet(new_record, (Datum) 0, sizeof(new_record));
@@ -1263,15 +1263,15 @@
 void
 AlterDomainNotNull(List *names, bool notNull)
 {
-	TypeName   *typename;
+	TypeName   *type_name;
 	Oid			domainoid;
 	Relation	typrel;
 	HeapTuple	tup;
 	Form_pg_type typTup;
 
 	/* Make a TypeName so we can use standard type lookup machinery */
-	typename = makeTypeNameFromNameList(names);
-	domainoid = typenameTypeId(NULL, typename);
+	type_name = makeTypeNameFromNameList(names);
+	domainoid = typenameTypeId(NULL, type_name);
 
 	/* Look up the domain in the type table */
 	typrel = heap_open(TypeRelationId, RowExclusiveLock);
@@ -1284,7 +1284,7 @@
 	typTup = (Form_pg_type) GETSTRUCT(tup);
 
 	/* Check it's a domain and check user has permission for ALTER DOMAIN */
-	checkDomainOwner(tup, typename);
+	checkDomainOwner(tup, type_name);
 
 	/* Is the domain already set to the desired constraint? */
 	if (typTup->typnotnull == notNull)
@@ -1362,7 +1362,7 @@
 AlterDomainDropConstraint(List *names, const char *constrName,
 						  DropBehavior behavior)
 {
-	TypeName   *typename;
+	TypeName   *type_name;
 	Oid			domainoid;
 	HeapTuple	tup;
 	Relation	rel;
@@ -1372,8 +1372,8 @@
 	HeapTuple	contup;
 
 	/* Make a TypeName so we can use standard type lookup machinery */
-	typename = makeTypeNameFromNameList(names);
-	domainoid = typenameTypeId(NULL, typename);
+	type_name = makeTypeNameFromNameList(names);
+	domainoid = typenameTypeId(NULL, type_name);
 
 	/* Look up the domain in the type table */
 	rel = heap_open(TypeRelationId, RowExclusiveLock);
@@ -1385,7 +1385,7 @@
 		elog(ERROR, "cache lookup failed for type %u", domainoid);
 
 	/* Check it's a domain and check user has permission for ALTER DOMAIN */
-	checkDomainOwner(tup, typename);
+	checkDomainOwner(tup, type_name);
 
 	/* Grab an appropriate lock on the pg_constraint relation */
 	conrel = heap_open(ConstraintRelationId, RowExclusiveLock);
@@ -1432,7 +1432,7 @@
 void
 AlterDomainAddConstraint(List *names, Node *newConstraint)
 {
-	TypeName   *typename;
+	TypeName   *type_name;
 	Oid			domainoid;
 	Relation	typrel;
 	HeapTuple	tup;
@@ -1447,8 +1447,8 @@
 	Constraint *constr;
 
 	/* Make a TypeName so we can use standard type lookup machinery */
-	typename = makeTypeNameFromNameList(names);
-	domainoid = typenameTypeId(NULL, typename);
+	type_name = makeTypeNameFromNameList(names);
+	domainoid = typenameTypeId(NULL, type_name);
 
 	/* Look up the domain in the type table */
 	typrel = heap_open(TypeRelationId, RowExclusiveLock);
@@ -1461,7 +1461,7 @@
 	typTup = (Form_pg_type) GETSTRUCT(tup);
 
 	/* Check it's a domain and check user has permission for ALTER DOMAIN */
-	checkDomainOwner(tup, typename);
+	checkDomainOwner(tup, type_name);
 
 	/* Check for unsupported constraint types */
 	if (IsA(newConstraint, FkConstraint))
@@ -1736,7 +1736,7 @@
  * has permission to do ALTER DOMAIN on it.  Throw an error if not.
  */
 static void
-checkDomainOwner(HeapTuple tup, TypeName *typename)
+checkDomainOwner(HeapTuple tup, TypeName *type_name)
 {
 	Form_pg_type typTup = (Form_pg_type) GETSTRUCT(tup);
 
@@ -1745,12 +1745,12 @@
 		ereport(ERROR,
 				(errcode(ERRCODE_WRONG_OBJECT_TYPE),
 				 errmsg("\"%s\" is not a domain",
-						TypeNameToString(typename))));
+						TypeNameToString(type_name))));
 
 	/* Permission check: must own type */
 	if (!pg_type_ownercheck(HeapTupleGetOid(tup), GetUserId()))
 		aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_TYPE,
-					   TypeNameToString(typename));
+					   TypeNameToString(type_name));
 }
 
 /*
@@ -2018,7 +2018,7 @@
 void
 AlterTypeOwner(List *names, Oid newOwnerId)
 {
-	TypeName   *typename;
+	TypeName   *type_name;
 	Oid			typeOid;
 	Relation	rel;
 	HeapTuple	tup;
@@ -2026,15 +2026,15 @@
 	AclResult	aclresult;
 
 	/* Make a TypeName so we can use standard type lookup machinery */
-	typename = makeTypeNameFromNameList(names);
+	type_name = makeTypeNameFromNameList(names);
 
 	/* Use LookupTypeName here so that shell types can be processed */
-	typeOid = LookupTypeName(NULL, typename);
+	typeOid = LookupTypeName(NULL, type_name);
 	if (!OidIsValid(typeOid))
 		ereport(ERROR,
 				(errcode(ERRCODE_UNDEFINED_OBJECT),
 				 errmsg("type \"%s\" does not exist",
-						TypeNameToString(typename))));
+						TypeNameToString(type_name))));
 
 	/* Look up the type in the type table */
 	rel = heap_open(TypeRelationId, RowExclusiveLock);
@@ -2056,7 +2056,7 @@
 		ereport(ERROR,
 				(errcode(ERRCODE_WRONG_OBJECT_TYPE),
 				 errmsg("\"%s\" is a table's row type",
-						TypeNameToString(typename))));
+						TypeNameToString(type_name))));
 
 	/*
 	 * If the new owner is the same as the existing owner, consider the
@@ -2070,7 +2070,7 @@
 			/* Otherwise, must be owner of the existing object */
 			if (!pg_type_ownercheck(HeapTupleGetOid(tup), GetUserId()))
 				aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_TYPE,
-							   TypeNameToString(typename));
+							   TypeNameToString(type_name));
 
 			/* Must be able to become new owner */
 			check_is_member_of_role(GetUserId(), newOwnerId);
@@ -2146,13 +2146,13 @@
 void
 AlterTypeNamespace(List *names, const char *newschema)
 {
-	TypeName   *typename;
+	TypeName   *type_name;
 	Oid			typeOid;
 	Oid			nspOid;
 
 	/* Make a TypeName so we can use standard type lookup machinery */
-	typename = makeTypeNameFromNameList(names);
-	typeOid = typenameTypeId(NULL, typename);
+	type_name = makeTypeNameFromNameList(names);
+	typeOid = typenameTypeId(NULL, type_name);
 
 	/* check permissions on type */
 	if (!pg_type_ownercheck(typeOid, GetUserId()))
diff -ur postgresql-8.2.4/src/backend/commands/view.c postgresql-8.2.4-c++-safe/src/backend/commands/view.c
--- postgresql-8.2.4/src/backend/commands/view.c	2006-10-04 02:29:52.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/commands/view.c	2007-06-27 23:28:21.000000000 +0200
@@ -118,7 +118,7 @@
 			ColumnDef  *def = makeNode(ColumnDef);
 
 			def->colname = pstrdup(tle->resname);
-			def->typename = makeTypeNameFromOid(exprType((Node *) tle->expr),
+			def->type_name = makeTypeNameFromOid(exprType((Node *) tle->expr),
 											 exprTypmod((Node *) tle->expr));
 			def->inhcount = 0;
 			def->is_local = true;
diff -ur postgresql-8.2.4/src/backend/nodes/copyfuncs.c postgresql-8.2.4-c++-safe/src/backend/nodes/copyfuncs.c
--- postgresql-8.2.4/src/backend/nodes/copyfuncs.c	2006-11-05 23:42:08.000000000 +0100
+++ postgresql-8.2.4-c++-safe/src/backend/nodes/copyfuncs.c	2007-06-27 23:28:21.000000000 +0200
@@ -1223,7 +1223,7 @@
 	COPY_SCALAR_FIELD(isNatural);
 	COPY_NODE_FIELD(larg);
 	COPY_NODE_FIELD(rarg);
-	COPY_NODE_FIELD(using);
+	COPY_NODE_FIELD(using_);
 	COPY_NODE_FIELD(quals);
 	COPY_NODE_FIELD(alias);
 	COPY_SCALAR_FIELD(rtindex);
@@ -1499,7 +1499,7 @@
 			break;
 	}
 
-	COPY_NODE_FIELD(typename);
+	COPY_NODE_FIELD(type_name);
 
 	return newnode;
 }
@@ -1559,7 +1559,7 @@
 	TypeName   *newnode = makeNode(TypeName);
 
 	COPY_NODE_FIELD(names);
-	COPY_SCALAR_FIELD(typeid);
+	COPY_SCALAR_FIELD(type_id);
 	COPY_SCALAR_FIELD(timezone);
 	COPY_SCALAR_FIELD(setof);
 	COPY_SCALAR_FIELD(pct_type);
@@ -1611,7 +1611,7 @@
 	TypeCast   *newnode = makeNode(TypeCast);
 
 	COPY_NODE_FIELD(arg);
-	COPY_NODE_FIELD(typename);
+	COPY_NODE_FIELD(type_name);
 
 	return newnode;
 }
@@ -1634,7 +1634,7 @@
 	ColumnDef  *newnode = makeNode(ColumnDef);
 
 	COPY_STRING_FIELD(colname);
-	COPY_NODE_FIELD(typename);
+	COPY_NODE_FIELD(type_name);
 	COPY_SCALAR_FIELD(inhcount);
 	COPY_SCALAR_FIELD(is_local);
 	COPY_SCALAR_FIELD(is_not_null);
@@ -1834,7 +1834,7 @@
 	AlterDomainStmt *newnode = makeNode(AlterDomainStmt);
 
 	COPY_SCALAR_FIELD(subtype);
-	COPY_NODE_FIELD(typename);
+	COPY_NODE_FIELD(type_name);
 	COPY_STRING_FIELD(name);
 	COPY_NODE_FIELD(def);
 	COPY_SCALAR_FIELD(behavior);
@@ -2262,7 +2262,7 @@
 	CreateDomainStmt *newnode = makeNode(CreateDomainStmt);
 
 	COPY_NODE_FIELD(domainname);
-	COPY_NODE_FIELD(typename);
+	COPY_NODE_FIELD(type_name);
 	COPY_NODE_FIELD(constraints);
 
 	return newnode;
diff -ur postgresql-8.2.4/src/backend/nodes/equalfuncs.c postgresql-8.2.4-c++-safe/src/backend/nodes/equalfuncs.c
--- postgresql-8.2.4/src/backend/nodes/equalfuncs.c	2006-11-05 23:42:08.000000000 +0100
+++ postgresql-8.2.4-c++-safe/src/backend/nodes/equalfuncs.c	2007-06-27 23:28:21.000000000 +0200
@@ -560,7 +560,7 @@
 	COMPARE_SCALAR_FIELD(isNatural);
 	COMPARE_NODE_FIELD(larg);
 	COMPARE_NODE_FIELD(rarg);
-	COMPARE_NODE_FIELD(using);
+	COMPARE_NODE_FIELD(using_);
 	COMPARE_NODE_FIELD(quals);
 	COMPARE_NODE_FIELD(alias);
 	COMPARE_SCALAR_FIELD(rtindex);
@@ -779,7 +779,7 @@
 _equalAlterDomainStmt(AlterDomainStmt *a, AlterDomainStmt *b)
 {
 	COMPARE_SCALAR_FIELD(subtype);
-	COMPARE_NODE_FIELD(typename);
+	COMPARE_NODE_FIELD(type_name);
 	COMPARE_STRING_FIELD(name);
 	COMPARE_NODE_FIELD(def);
 	COMPARE_SCALAR_FIELD(behavior);
@@ -1141,7 +1141,7 @@
 _equalCreateDomainStmt(CreateDomainStmt *a, CreateDomainStmt *b)
 {
 	COMPARE_NODE_FIELD(domainname);
-	COMPARE_NODE_FIELD(typename);
+	COMPARE_NODE_FIELD(type_name);
 	COMPARE_NODE_FIELD(constraints);
 
 	return true;
@@ -1546,7 +1546,7 @@
 {
 	if (!equal(&a->val, &b->val))		/* hack for in-line Value field */
 		return false;
-	COMPARE_NODE_FIELD(typename);
+	COMPARE_NODE_FIELD(type_name);
 
 	return true;
 }
@@ -1596,7 +1596,7 @@
 _equalTypeName(TypeName *a, TypeName *b)
 {
 	COMPARE_NODE_FIELD(names);
-	COMPARE_SCALAR_FIELD(typeid);
+	COMPARE_SCALAR_FIELD(type_id);
 	COMPARE_SCALAR_FIELD(timezone);
 	COMPARE_SCALAR_FIELD(setof);
 	COMPARE_SCALAR_FIELD(pct_type);
@@ -1611,7 +1611,7 @@
 _equalTypeCast(TypeCast *a, TypeCast *b)
 {
 	COMPARE_NODE_FIELD(arg);
-	COMPARE_NODE_FIELD(typename);
+	COMPARE_NODE_FIELD(type_name);
 
 	return true;
 }
@@ -1659,7 +1659,7 @@
 _equalColumnDef(ColumnDef *a, ColumnDef *b)
 {
 	COMPARE_STRING_FIELD(colname);
-	COMPARE_NODE_FIELD(typename);
+	COMPARE_NODE_FIELD(type_name);
 	COMPARE_SCALAR_FIELD(inhcount);
 	COMPARE_SCALAR_FIELD(is_local);
 	COMPARE_SCALAR_FIELD(is_not_null);
diff -ur postgresql-8.2.4/src/backend/nodes/makefuncs.c postgresql-8.2.4-c++-safe/src/backend/nodes/makefuncs.c
--- postgresql-8.2.4/src/backend/nodes/makefuncs.c	2006-10-04 02:29:53.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/nodes/makefuncs.c	2007-06-27 23:28:21.000000000 +0200
@@ -292,11 +292,11 @@
  *	build a TypeName node to represent a type already known by OID.
  */
 TypeName *
-makeTypeNameFromOid(Oid typeid, int32 typmod)
+makeTypeNameFromOid(Oid type_id, int32 typmod)
 {
 	TypeName   *n = makeNode(TypeName);
 
-	n->typeid = typeid;
+	n->type_id = type_id;
 	n->typmod = typmod;
 	n->location = -1;
 	return n;
diff -ur postgresql-8.2.4/src/backend/nodes/outfuncs.c postgresql-8.2.4-c++-safe/src/backend/nodes/outfuncs.c
--- postgresql-8.2.4/src/backend/nodes/outfuncs.c	2006-09-20 00:49:52.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/nodes/outfuncs.c	2007-06-27 23:28:21.000000000 +0200
@@ -979,7 +979,7 @@
 	WRITE_BOOL_FIELD(isNatural);
 	WRITE_NODE_FIELD(larg);
 	WRITE_NODE_FIELD(rarg);
-	WRITE_NODE_FIELD(using);
+	WRITE_NODE_FIELD(using_);
 	WRITE_NODE_FIELD(quals);
 	WRITE_NODE_FIELD(alias);
 	WRITE_INT_FIELD(rtindex);
@@ -1439,7 +1439,7 @@
 	WRITE_NODE_TYPE("COLUMNDEF");
 
 	WRITE_STRING_FIELD(colname);
-	WRITE_NODE_FIELD(typename);
+	WRITE_NODE_FIELD(type_name);
 	WRITE_INT_FIELD(inhcount);
 	WRITE_BOOL_FIELD(is_local);
 	WRITE_BOOL_FIELD(is_not_null);
@@ -1454,7 +1454,7 @@
 	WRITE_NODE_TYPE("TYPENAME");
 
 	WRITE_NODE_FIELD(names);
-	WRITE_OID_FIELD(typeid);
+	WRITE_OID_FIELD(type_id);
 	WRITE_BOOL_FIELD(timezone);
 	WRITE_BOOL_FIELD(setof);
 	WRITE_BOOL_FIELD(pct_type);
@@ -1469,7 +1469,7 @@
 	WRITE_NODE_TYPE("TYPECAST");
 
 	WRITE_NODE_FIELD(arg);
-	WRITE_NODE_FIELD(typename);
+	WRITE_NODE_FIELD(type_name);
 }
 
 static void
@@ -1733,7 +1733,7 @@
 
 	appendStringInfo(str, " :val ");
 	_outValue(str, &(node->val));
-	WRITE_NODE_FIELD(typename);
+	WRITE_NODE_FIELD(type_name);
 }
 
 static void
diff -ur postgresql-8.2.4/src/backend/nodes/readfuncs.c postgresql-8.2.4-c++-safe/src/backend/nodes/readfuncs.c
--- postgresql-8.2.4/src/backend/nodes/readfuncs.c	2006-08-12 04:52:04.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/nodes/readfuncs.c	2007-06-27 23:28:21.000000000 +0200
@@ -851,7 +851,7 @@
 	READ_BOOL_FIELD(isNatural);
 	READ_NODE_FIELD(larg);
 	READ_NODE_FIELD(rarg);
-	READ_NODE_FIELD(using);
+	READ_NODE_FIELD(using_);
 	READ_NODE_FIELD(quals);
 	READ_NODE_FIELD(alias);
 	READ_INT_FIELD(rtindex);
diff -ur postgresql-8.2.4/src/backend/parser/analyze.c postgresql-8.2.4-c++-safe/src/backend/parser/analyze.c
--- postgresql-8.2.4/src/backend/parser/analyze.c	2006-10-11 18:42:59.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/parser/analyze.c	2007-06-27 23:28:21.000000000 +0200
@@ -1040,23 +1040,23 @@
 
 	/* Check for SERIAL pseudo-types */
 	is_serial = false;
-	if (list_length(column->typename->names) == 1)
+	if (list_length(column->type_name->names) == 1)
 	{
-		char	   *typname = strVal(linitial(column->typename->names));
+		char	   *typname = strVal(linitial(column->type_name->names));
 
 		if (strcmp(typname, "serial") == 0 ||
 			strcmp(typname, "serial4") == 0)
 		{
 			is_serial = true;
-			column->typename->names = NIL;
-			column->typename->typeid = INT4OID;
+			column->type_name->names = NIL;
+			column->type_name->type_id = INT4OID;
 		}
 		else if (strcmp(typname, "bigserial") == 0 ||
 				 strcmp(typname, "serial8") == 0)
 		{
 			is_serial = true;
-			column->typename->names = NIL;
-			column->typename->typeid = INT8OID;
+			column->type_name->names = NIL;
+			column->type_name->type_id = INT8OID;
 		}
 	}
 
@@ -1139,7 +1139,7 @@
 		snamenode = makeNode(A_Const);
 		snamenode->val.type = T_String;
 		snamenode->val.val.str = qstring;
-		snamenode->typename = SystemTypeName("regclass");
+		snamenode->type_name = SystemTypeName("regclass");
 		funccallnode = makeNode(FuncCall);
 		funccallnode->funcname = SystemFuncName("nextval");
 		funccallnode->args = list_make1(snamenode);
@@ -1375,7 +1375,7 @@
 		 */
 		def = makeNode(ColumnDef);
 		def->colname = pstrdup(attributeName);
-		def->typename = makeTypeNameFromOid(attribute->atttypid,
+		def->type_name = makeTypeNameFromOid(attribute->atttypid,
 											attribute->atttypmod);
 		def->inhcount = 0;
 		def->is_local = true;
@@ -3663,7 +3663,7 @@
 	/*
 	 * All we really need to do here is verify that the type is valid.
 	 */
-	Type		ctype = typenameType(pstate, column->typename);
+	Type		ctype = typenameType(pstate, column->type_name);
 
 	ReleaseSysCache(ctype);
 }
diff -ur postgresql-8.2.4/src/backend/parser/gram.y postgresql-8.2.4-c++-safe/src/backend/parser/gram.y
--- postgresql-8.2.4/src/backend/parser/gram.y	2006-11-05 23:42:09.000000000 +0100
+++ postgresql-8.2.4-c++-safe/src/backend/parser/gram.y	2007-06-27 23:28:21.000000000 +0200
@@ -1169,7 +1169,7 @@
 							ereport(ERROR,
 									(errcode(ERRCODE_SYNTAX_ERROR),
 									 errmsg("time zone interval must be HOUR or HOUR TO MINUTE")));
-						n->typename->typmod = INTERVAL_TYPMOD(INTERVAL_FULL_PRECISION, $3);
+						n->type_name->typmod = INTERVAL_TYPMOD(INTERVAL_FULL_PRECISION, $3);
 					}
 					$$ = (Node *)n;
 				}
@@ -1196,7 +1196,7 @@
 								(errcode(ERRCODE_SYNTAX_ERROR),
 								 errmsg("time zone interval must be HOUR or HOUR TO MINUTE")));
 
-					n->typename->typmod = INTERVAL_TYPMOD($3, $6);
+					n->type_name->typmod = INTERVAL_TYPMOD($3, $6);
 
 					$$ = (Node *)n;
 				}
@@ -1843,7 +1843,7 @@
 				{
 					ColumnDef *n = makeNode(ColumnDef);
 					n->colname = $1;
-					n->typename = $2;
+					n->type_name = $2;
 					n->constraints = $3;
 					n->is_local = true;
 					$$ = (Node *)n;
@@ -2285,7 +2285,7 @@
 				{
 					ColumnDef *n = makeNode(ColumnDef);
 					n->colname = $1;
-					n->typename = NULL;
+					n->type_name = NULL;
 					n->inhcount = 0;
 					n->is_local = true;
 					n->is_not_null = false;
@@ -5030,7 +5030,7 @@
 				{
 					CreateDomainStmt *n = makeNode(CreateDomainStmt);
 					n->domainname = $3;
-					n->typename = $5;
+					n->type_name = $5;
 					n->constraints = $6;
 					$$ = (Node *)n;
 				}
@@ -5042,7 +5042,7 @@
 				{
 					AlterDomainStmt *n = makeNode(AlterDomainStmt);
 					n->subtype = 'T';
-					n->typename = $3;
+					n->type_name = $3;
 					n->def = $4;
 					$$ = (Node *)n;
 				}
@@ -5051,7 +5051,7 @@
 				{
 					AlterDomainStmt *n = makeNode(AlterDomainStmt);
 					n->subtype = 'N';
-					n->typename = $3;
+					n->type_name = $3;
 					$$ = (Node *)n;
 				}
 			/* ALTER DOMAIN <domain> SET NOT NULL */
@@ -5059,7 +5059,7 @@
 				{
 					AlterDomainStmt *n = makeNode(AlterDomainStmt);
 					n->subtype = 'O';
-					n->typename = $3;
+					n->type_name = $3;
 					$$ = (Node *)n;
 				}
 			/* ALTER DOMAIN <domain> ADD CONSTRAINT ... */
@@ -5067,7 +5067,7 @@
 				{
 					AlterDomainStmt *n = makeNode(AlterDomainStmt);
 					n->subtype = 'C';
-					n->typename = $3;
+					n->type_name = $3;
 					n->def = $5;
 					$$ = (Node *)n;
 				}
@@ -5076,7 +5076,7 @@
 				{
 					AlterDomainStmt *n = makeNode(AlterDomainStmt);
 					n->subtype = 'X';
-					n->typename = $3;
+					n->type_name = $3;
 					n->name = $6;
 					n->behavior = $7;
 					$$ = (Node *)n;
@@ -6107,7 +6107,7 @@
 					n->isNatural = FALSE;
 					n->larg = $1;
 					n->rarg = $4;
-					n->using = NIL;
+					n->using_ = NIL;
 					n->quals = NULL;
 					$$ = n;
 				}
@@ -6119,7 +6119,7 @@
 					n->larg = $1;
 					n->rarg = $4;
 					if ($5 != NULL && IsA($5, List))
-						n->using = (List *) $5; /* USING clause */
+						n->using_ = (List *) $5; /* USING clause */
 					else
 						n->quals = $5; /* ON clause */
 					$$ = n;
@@ -6133,7 +6133,7 @@
 					n->larg = $1;
 					n->rarg = $3;
 					if ($4 != NULL && IsA($4, List))
-						n->using = (List *) $4; /* USING clause */
+						n->using_ = (List *) $4; /* USING clause */
 					else
 						n->quals = $4; /* ON clause */
 					$$ = n;
@@ -6145,7 +6145,7 @@
 					n->isNatural = TRUE;
 					n->larg = $1;
 					n->rarg = $5;
-					n->using = NIL; /* figure out which columns later... */
+					n->using_ = NIL; /* figure out which columns later... */
 					n->quals = NULL; /* fill later */
 					$$ = n;
 				}
@@ -6157,7 +6157,7 @@
 					n->isNatural = TRUE;
 					n->larg = $1;
 					n->rarg = $4;
-					n->using = NIL; /* figure out which columns later... */
+					n->using_ = NIL; /* figure out which columns later... */
 					n->quals = NULL; /* fill later */
 					$$ = n;
 				}
@@ -6300,7 +6300,7 @@
 				{
 					ColumnDef *n = makeNode(ColumnDef);
 					n->colname = $1;
-					n->typename = $2;
+					n->type_name = $2;
 					n->constraints = NIL;
 					n->is_local = true;
 					$$ = (Node *)n;
@@ -7473,7 +7473,7 @@
 
 					s->val.type = T_String;
 					s->val.val.str = "now";
-					s->typename = SystemTypeName("text");
+					s->type_name = SystemTypeName("text");
 
 					d = SystemTypeName("date");
 
@@ -7490,7 +7490,7 @@
 
 					s->val.type = T_String;
 					s->val.val.str = "now";
-					s->typename = SystemTypeName("text");
+					s->type_name = SystemTypeName("text");
 
 					d = SystemTypeName("timetz");
 
@@ -7507,7 +7507,7 @@
 
 					s->val.type = T_String;
 					s->val.val.str = "now";
-					s->typename = SystemTypeName("text");
+					s->type_name = SystemTypeName("text");
 					d = SystemTypeName("timetz");
 					if ($3 < 0)
 						ereport(ERROR,
@@ -7551,7 +7551,7 @@
 
 					s->val.type = T_String;
 					s->val.val.str = "now";
-					s->typename = SystemTypeName("text");
+					s->type_name = SystemTypeName("text");
 
 					d = SystemTypeName("timestamptz");
 					if ($3 < 0)
@@ -7582,7 +7582,7 @@
 
 					s->val.type = T_String;
 					s->val.val.str = "now";
-					s->typename = SystemTypeName("text");
+					s->type_name = SystemTypeName("text");
 
 					d = SystemTypeName("time");
 
@@ -7599,7 +7599,7 @@
 
 					s->val.type = T_String;
 					s->val.val.str = "now";
-					s->typename = SystemTypeName("text");
+					s->type_name = SystemTypeName("text");
 					d = SystemTypeName("time");
 					if ($3 < 0)
 						ereport(ERROR,
@@ -7629,7 +7629,7 @@
 
 					s->val.type = T_String;
 					s->val.val.str = "now";
-					s->typename = SystemTypeName("text");
+					s->type_name = SystemTypeName("text");
 
 					d = SystemTypeName("timestamp");
 
@@ -7646,7 +7646,7 @@
 
 					s->val.type = T_String;
 					s->val.val.str = "now";
-					s->typename = SystemTypeName("text");
+					s->type_name = SystemTypeName("text");
 
 					d = SystemTypeName("timestamp");
 					if ($3 < 0)
@@ -8411,7 +8411,7 @@
 			| ConstTypename Sconst
 				{
 					A_Const *n = makeNode(A_Const);
-					n->typename = $1;
+					n->type_name = $1;
 					n->val.type = T_String;
 					n->val.val.str = $2;
 					$$ = (Node *)n;
@@ -8419,18 +8419,18 @@
 			| ConstInterval Sconst opt_interval
 				{
 					A_Const *n = makeNode(A_Const);
-					n->typename = $1;
+					n->type_name = $1;
 					n->val.type = T_String;
 					n->val.val.str = $2;
 					/* precision is not specified, but fields may be... */
 					if ($3 != INTERVAL_FULL_RANGE)
-						n->typename->typmod = INTERVAL_TYPMOD(INTERVAL_FULL_PRECISION, $3);
+						n->type_name->typmod = INTERVAL_TYPMOD(INTERVAL_FULL_PRECISION, $3);
 					$$ = (Node *)n;
 				}
 			| ConstInterval '(' Iconst ')' Sconst opt_interval
 				{
 					A_Const *n = makeNode(A_Const);
-					n->typename = $1;
+					n->type_name = $1;
 					n->val.type = T_String;
 					n->val.val.str = $5;
 					/* precision specified, and fields may be... */
@@ -8447,7 +8447,7 @@
 										$3, MAX_INTERVAL_PRECISION)));
 						$3 = MAX_INTERVAL_PRECISION;
 					}
-					n->typename->typmod = INTERVAL_TYPMOD($3, $6);
+					n->type_name->typmod = INTERVAL_TYPMOD($3, $6);
 					$$ = (Node *)n;
 				}
 			| TRUE_P
@@ -8974,7 +8974,7 @@
 }
 
 static Node *
-makeTypeCast(Node *arg, TypeName *typename)
+makeTypeCast(Node *arg, TypeName *type_name)
 {
 	/*
 	 * Simply generate a TypeCast node.
@@ -8985,18 +8985,18 @@
 	 */
 	TypeCast *n = makeNode(TypeCast);
 	n->arg = arg;
-	n->typename = typename;
+	n->type_name = type_name;
 	return (Node *) n;
 }
 
 static Node *
-makeStringConst(char *str, TypeName *typename)
+makeStringConst(char *str, TypeName *type_name)
 {
 	A_Const *n = makeNode(A_Const);
 
 	n->val.type = T_String;
 	n->val.val.str = str;
-	n->typename = typename;
+	n->type_name = type_name;
 
 	return (Node *)n;
 }
@@ -9007,7 +9007,7 @@
 	A_Const *n = makeNode(A_Const);
 	n->val.type = T_Integer;
 	n->val.val.ival = val;
-	n->typename = SystemTypeName("int4");
+	n->type_name = SystemTypeName("int4");
 
 	return (Node *)n;
 }
@@ -9019,7 +9019,7 @@
 
 	n->val.type = T_Float;
 	n->val.val.str = str;
-	n->typename = SystemTypeName("float8");
+	n->type_name = SystemTypeName("float8");
 
 	return (Node *)n;
 }
@@ -9057,7 +9057,7 @@
 	A_Const *n = makeNode(A_Const);
 	n->val.type = T_String;
 	n->val.val.str = (state? "t": "f");
-	n->typename = SystemTypeName("bool");
+	n->type_name = SystemTypeName("bool");
 	return n;
 }
 
@@ -9261,7 +9261,7 @@
 		A_Const *con = (A_Const *) arg;
 
 		if (con->val.type == T_Null &&
-			con->typename == NULL)
+			con->type_name == NULL)
 			return TRUE;
 	}
 	return FALSE;
diff -ur postgresql-8.2.4/src/backend/parser/parse_clause.c postgresql-8.2.4-c++-safe/src/backend/parser/parse_clause.c
--- postgresql-8.2.4/src/backend/parser/parse_clause.c	2006-11-28 13:54:41.000000000 +0100
+++ postgresql-8.2.4-c++-safe/src/backend/parser/parse_clause.c	2007-06-27 23:28:21.000000000 +0200
@@ -727,7 +727,7 @@
 			ListCell   *lx,
 					   *rx;
 
-			Assert(j->using == NIL);	/* shouldn't have USING() too */
+			Assert(j->using_ == NIL);	/* shouldn't have USING() too */
 
 			foreach(lx, l_colnames)
 			{
@@ -750,7 +750,7 @@
 					rlist = lappend(rlist, m_name);
 			}
 
-			j->using = rlist;
+			j->using_ = rlist;
 		}
 
 		/*
@@ -759,14 +759,14 @@
 		res_colnames = NIL;
 		res_colvars = NIL;
 
-		if (j->using)
+		if (j->using_)
 		{
 			/*
 			 * JOIN/USING (or NATURAL JOIN, as transformed above). Transform
 			 * the list into an explicit ON-condition, and generate a list of
 			 * merged result columns.
 			 */
-			List	   *ucols = j->using;
+			List	   *ucols = j->using_;
 			List	   *l_usingvars = NIL;
 			List	   *r_usingvars = NIL;
 			ListCell   *ucol;
diff -ur postgresql-8.2.4/src/backend/parser/parse_expr.c postgresql-8.2.4-c++-safe/src/backend/parser/parse_expr.c
--- postgresql-8.2.4/src/backend/parser/parse_expr.c	2006-10-04 02:29:55.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/parser/parse_expr.c	2007-06-27 23:28:21.000000000 +0200
@@ -123,9 +123,9 @@
 				Value	   *val = &con->val;
 
 				result = (Node *) make_const(val);
-				if (con->typename != NULL)
+				if (con->type_name != NULL)
 					result = typecast_expression(pstate, result,
-												 con->typename);
+												 con->type_name);
 				break;
 			}
 
@@ -144,7 +144,7 @@
 				TypeCast   *tc = (TypeCast *) expr;
 				Node	   *arg = transformExpr(pstate, tc->arg);
 
-				result = typecast_expression(pstate, arg, tc->typename);
+				result = typecast_expression(pstate, arg, tc->type_name);
 				break;
 			}
 
diff -ur postgresql-8.2.4/src/backend/parser/parse_relation.c postgresql-8.2.4-c++-safe/src/backend/parser/parse_relation.c
--- postgresql-8.2.4/src/backend/parser/parse_relation.c	2006-10-04 02:29:56.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/parser/parse_relation.c	2007-06-27 23:28:21.000000000 +0200
@@ -896,14 +896,14 @@
 			int32		attrtypmod;
 
 			attrname = pstrdup(n->colname);
-			if (n->typename->setof)
+			if (n->type_name->setof)
 				ereport(ERROR,
 						(errcode(ERRCODE_INVALID_TABLE_DEFINITION),
 						 errmsg("column \"%s\" cannot be declared SETOF",
 								attrname)));
 			eref->colnames = lappend(eref->colnames, makeString(attrname));
-			attrtype = typenameTypeId(pstate, n->typename);
-			attrtypmod = n->typename->typmod;
+			attrtype = typenameTypeId(pstate, n->type_name);
+			attrtypmod = n->type_name->typmod;
 			rte->funccoltypes = lappend_oid(rte->funccoltypes, attrtype);
 			rte->funccoltypmods = lappend_int(rte->funccoltypmods, attrtypmod);
 		}
diff -ur postgresql-8.2.4/src/backend/parser/parse_target.c postgresql-8.2.4-c++-safe/src/backend/parser/parse_target.c
--- postgresql-8.2.4/src/backend/parser/parse_target.c	2006-10-04 02:29:56.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/parser/parse_target.c	2007-06-27 23:28:21.000000000 +0200
@@ -1264,9 +1264,9 @@
 			}
 			break;
 		case T_A_Const:
-			if (((A_Const *) node)->typename != NULL)
+			if (((A_Const *) node)->type_name != NULL)
 			{
-				*name = strVal(llast(((A_Const *) node)->typename->names));
+				*name = strVal(llast(((A_Const *) node)->type_name->names));
 				return 1;
 			}
 			break;
@@ -1275,9 +1275,9 @@
 											 name);
 			if (strength <= 1)
 			{
-				if (((TypeCast *) node)->typename != NULL)
+				if (((TypeCast *) node)->type_name != NULL)
 				{
-					*name = strVal(llast(((TypeCast *) node)->typename->names));
+					*name = strVal(llast(((TypeCast *) node)->type_name->names));
 					return 1;
 				}
 			}
diff -ur postgresql-8.2.4/src/backend/parser/parse_type.c postgresql-8.2.4-c++-safe/src/backend/parser/parse_type.c
--- postgresql-8.2.4/src/backend/parser/parse_type.c	2006-10-04 02:29:56.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/parser/parse_type.c	2007-06-27 23:28:21.000000000 +0200
@@ -42,7 +42,7 @@
 
 	/* Easy if it's an internally generated TypeName */
 	if (typename->names == NIL)
-		return typename->typeid;
+		return typename->type_id;
 
 	if (typename->pct_type)
 	{
@@ -166,7 +166,7 @@
 	else
 	{
 		/* Look up internally-specified type */
-		appendStringInfoString(string, format_type_be(typename->typeid));
+		appendStringInfoString(string, format_type_be(typename->type_id));
 	}
 
 	/*
@@ -482,7 +482,7 @@
 		typecast->arg == NULL ||
 		!IsA(typecast->arg, A_Const))
 		goto fail;
-	typename = typecast->typename;
+	typename = typecast->type_name;
 	if (typename == NULL ||
 		!IsA(typename, TypeName))
 		goto fail;
diff -ur postgresql-8.2.4/src/backend/tcop/utility.c postgresql-8.2.4-c++-safe/src/backend/tcop/utility.c
--- postgresql-8.2.4/src/backend/tcop/utility.c	2006-10-04 02:29:58.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/backend/tcop/utility.c	2007-06-27 23:28:21.000000000 +0200
@@ -688,23 +688,23 @@
 						 * Recursively alter column default for table and, if
 						 * requested, for descendants
 						 */
-						AlterDomainDefault(stmt->typename,
+						AlterDomainDefault(stmt->type_name,
 										   stmt->def);
 						break;
 					case 'N':	/* ALTER DOMAIN DROP NOT NULL */
-						AlterDomainNotNull(stmt->typename,
+						AlterDomainNotNull(stmt->type_name,
 										   false);
 						break;
 					case 'O':	/* ALTER DOMAIN SET NOT NULL */
-						AlterDomainNotNull(stmt->typename,
+						AlterDomainNotNull(stmt->type_name,
 										   true);
 						break;
 					case 'C':	/* ADD CONSTRAINT */
-						AlterDomainAddConstraint(stmt->typename,
+						AlterDomainAddConstraint(stmt->type_name,
 												 stmt->def);
 						break;
 					case 'X':	/* DROP CONSTRAINT */
-						AlterDomainDropConstraint(stmt->typename,
+						AlterDomainDropConstraint(stmt->type_name,
 												  stmt->name,
 												  stmt->behavior);
 						break;
diff -ur postgresql-8.2.4/src/backend/utils/adt/ruleutils.c postgresql-8.2.4-c++-safe/src/backend/utils/adt/ruleutils.c
--- postgresql-8.2.4/src/backend/utils/adt/ruleutils.c	2007-01-30 03:32:05.000000000 +0100
+++ postgresql-8.2.4-c++-safe/src/backend/utils/adt/ruleutils.c	2007-06-27 23:28:21.000000000 +0200
@@ -4555,14 +4555,14 @@
 
 		if (!j->isNatural)
 		{
-			if (j->using)
+			if (j->using_)
 			{
 				ListCell   *col;
 
 				appendStringInfo(buf, " USING (");
-				foreach(col, j->using)
+				foreach(col, j->using_)
 				{
-					if (col != list_head(j->using))
+					if (col != list_head(j->using_))
 						appendStringInfo(buf, ", ");
 					appendStringInfoString(buf,
 									  quote_identifier(strVal(lfirst(col))));
diff -ur postgresql-8.2.4/src/backend/utils/misc/guc.c postgresql-8.2.4-c++-safe/src/backend/utils/misc/guc.c
--- postgresql-8.2.4/src/backend/utils/misc/guc.c	2006-11-29 15:50:07.000000000 +0100
+++ postgresql-8.2.4-c++-safe/src/backend/utils/misc/guc.c	2007-06-27 23:28:21.000000000 +0200
@@ -4514,7 +4514,7 @@
 				break;
 			case T_String:
 				val = strVal(&arg->val);
-				if (arg->typename != NULL)
+				if (arg->type_name != NULL)
 				{
 					/*
 					 * Must be a ConstInterval argument for TIME ZONE. Coerce
@@ -4528,7 +4528,7 @@
 						DirectFunctionCall3(interval_in,
 											CStringGetDatum(val),
 											ObjectIdGetDatum(InvalidOid),
-									   Int32GetDatum(arg->typename->typmod));
+									   Int32GetDatum(arg->type_name->typmod));
 
 					intervalout =
 						DatumGetCString(DirectFunctionCall1(interval_out,
diff -ur postgresql-8.2.4/src/include/commands/trigger.h postgresql-8.2.4-c++-safe/src/include/commands/trigger.h
--- postgresql-8.2.4/src/include/commands/trigger.h	2006-09-04 23:15:56.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/include/commands/trigger.h	2007-06-28 00:01:09.000000000 +0200
@@ -13,6 +13,10 @@
 #ifndef TRIGGER_H
 #define TRIGGER_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #include "nodes/execnodes.h"
 #include "nodes/parsenodes.h"
 
@@ -185,4 +189,8 @@
 
 extern int	RI_FKey_trigger_type(Oid tgfoid);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif   /* TRIGGER_H */
diff -ur postgresql-8.2.4/src/include/executor/spi.h postgresql-8.2.4-c++-safe/src/include/executor/spi.h
--- postgresql-8.2.4/src/include/executor/spi.h	2006-10-04 02:30:08.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/include/executor/spi.h	2007-06-27 23:59:51.000000000 +0200
@@ -9,6 +9,10 @@
 #ifndef SPI_H
 #define SPI_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /*
  * This file may be used by client modules that haven't already
  * included postgres.h
@@ -133,4 +137,8 @@
 extern void AtEOXact_SPI(bool isCommit);
 extern void AtEOSubXact_SPI(bool isCommit, SubTransactionId mySubid);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif   /* SPI_H */
diff -ur postgresql-8.2.4/src/include/fmgr.h postgresql-8.2.4-c++-safe/src/include/fmgr.h
--- postgresql-8.2.4/src/include/fmgr.h	2006-10-04 02:30:06.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/include/fmgr.h	2007-06-28 00:03:20.000000000 +0200
@@ -18,6 +18,10 @@
 #ifndef FMGR_H
 #define FMGR_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* We don't want to include primnodes.h here, so make a stub reference */
 typedef struct Node *fmNodePtr;
 
@@ -508,4 +512,8 @@
  */
 extern char *fmgr(Oid procedureId,...);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif   /* FMGR_H */
diff -ur postgresql-8.2.4/src/include/nodes/parsenodes.h postgresql-8.2.4-c++-safe/src/include/nodes/parsenodes.h
--- postgresql-8.2.4/src/include/nodes/parsenodes.h	2006-11-05 23:42:10.000000000 +0100
+++ postgresql-8.2.4-c++-safe/src/include/nodes/parsenodes.h	2007-06-27 23:28:21.000000000 +0200
@@ -176,7 +176,7 @@
 {
 	NodeTag		type;
 	List	   *names;			/* qualified name (list of Value strings) */
-	Oid			typeid;			/* type identified by OID */
+	Oid			type_id;			/* type identified by OID */
 	bool		timezone;		/* timezone specified? */
 	bool		setof;			/* is a set? */
 	bool		pct_type;		/* %TYPE specified? */
@@ -246,7 +246,7 @@
 {
 	NodeTag		type;
 	Value		val;			/* the value (with the tag) */
-	TypeName   *typename;		/* typecast, or NULL if none */
+	TypeName   *type_name;		/* typecast, or NULL if none */
 } A_Const;
 
 /*
@@ -262,7 +262,7 @@
 {
 	NodeTag		type;
 	Node	   *arg;			/* the expression being casted */
-	TypeName   *typename;		/* the target type */
+	TypeName   *type_name;		/* the target type */
 } TypeCast;
 
 /*
@@ -398,7 +398,7 @@
 {
 	NodeTag		type;
 	char	   *colname;		/* name of column */
-	TypeName   *typename;		/* type of column */
+	TypeName   *type_name;		/* type of column */
 	int			inhcount;		/* number of times column is inherited */
 	bool		is_local;		/* column has local (non-inherited) def'n */
 	bool		is_not_null;	/* NOT NULL constraint specified? */
@@ -940,7 +940,7 @@
 								 *	X = drop constraint
 								 *------------
 								 */
-	List	   *typename;		/* domain to work on */
+	List	   *type_name;		/* domain to work on */
 	char	   *name;			/* column or constraint name to act on */
 	Node	   *def;			/* definition of default or constraint */
 	DropBehavior behavior;		/* RESTRICT or CASCADE for DROP cases */
@@ -1306,7 +1306,7 @@
 {
 	NodeTag		type;
 	List	   *domainname;		/* qualified name (list of Value strings) */
-	TypeName   *typename;		/* the base type */
+	TypeName   *type_name;		/* the base type */
 	List	   *constraints;	/* constraints (list of Constraint nodes) */
 } CreateDomainStmt;
 
diff -ur postgresql-8.2.4/src/include/nodes/primnodes.h postgresql-8.2.4-c++-safe/src/include/nodes/primnodes.h
--- postgresql-8.2.4/src/include/nodes/primnodes.h	2006-10-04 02:30:09.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/include/nodes/primnodes.h	2007-06-27 23:28:21.000000000 +0200
@@ -947,7 +947,7 @@
 	bool		isNatural;		/* Natural join? Will need to shape table */
 	Node	   *larg;			/* left subtree */
 	Node	   *rarg;			/* right subtree */
-	List	   *using;			/* USING clause, if any (list of String) */
+	List	   *using_;			/* USING clause, if any (list of String) */
 	Node	   *quals;			/* qualifiers on join, if any */
 	Alias	   *alias;			/* user-written alias clause, if any */
 	int			rtindex;		/* RT index assigned for join */
diff -ur postgresql-8.2.4/src/include/postgres.h postgresql-8.2.4-c++-safe/src/include/postgres.h
--- postgresql-8.2.4/src/include/postgres.h	2006-07-13 18:49:18.000000000 +0200
+++ postgresql-8.2.4-c++-safe/src/include/postgres.h	2007-06-28 00:02:37.000000000 +0200
@@ -45,6 +45,10 @@
 #ifndef POSTGRES_H
 #define POSTGRES_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #include "c.h"
 #include "utils/elog.h"
 #include "utils/palloc.h"
@@ -543,4 +547,8 @@
 
 typedef int4 aclitem;			/* PHONY definition for catalog use only */
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif   /* POSTGRES_H */
diff -ur postgresql-8.2.4/src/include/utils/builtins.h postgresql-8.2.4-c++-safe/src/include/utils/builtins.h
--- postgresql-8.2.4/src/include/utils/builtins.h	2007-01-03 23:39:35.000000000 +0100
+++ postgresql-8.2.4-c++-safe/src/include/utils/builtins.h	2007-06-27 23:28:21.000000000 +0200
@@ -541,7 +541,7 @@
 						 List *rtable);
 extern Node *deparse_context_for_subplan(const char *name, Node *subplan);
 extern const char *quote_identifier(const char *ident);
-extern char *quote_qualified_identifier(const char *namespace,
+extern char *quote_qualified_identifier(const char *name_space,
 						   const char *ident);
 
 /* tid.c */
---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Reply via email to