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