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