diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index 71ae1ebf8139b8ffc108b9977f70802440df8916..32eb247077703413077e9d1607f65a3128f53ca7 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.80 1999/05/13 07:28:26 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.81 1999/05/19 16:46:10 momjian Exp $ * * * INTERFACE ROUTINES @@ -1514,7 +1514,7 @@ StoreAttrDefault(Relation rel, AttrDefault *attrdef) char nulls[4] = {' ', ' ', ' ', ' '}; extern GlobalMemory CacheCxt; -start:; +start: /* Surround table name with double quotes to allow mixed-case and * whitespaces in names. - BGA 1998-11-14 */ @@ -1537,7 +1537,21 @@ start:; if (type != atp->atttypid) { - if (IS_BINARY_COMPATIBLE(type, atp->atttypid)) + /* + * Though these types are binary compatible, bpchar has a fixed + * length on the disk, requiring non-bpchar types to be padded + * before storage in the default table. bjm 1999/05/18 + */ + if (atp->atttypid == BPCHAROID && + (type == TEXTOID || type == BPCHAROID || type == UNKNOWNOID)) + { + if (can_coerce_type(1, &(type), &(atp->atttypid))) + expr = coerce_type(NULL, (Node *)expr, type, atp->atttypid); + else + elog(ERROR, "DEFAULT clause const type '%s' can not be converted to char().", + typeidTypeName(type)); + } + else if (IS_BINARY_COMPATIBLE(type, atp->atttypid)) ; /* use without change */ else if (can_coerce_type(1, &(type), &(atp->atttypid))) expr = coerce_type(NULL, (Node *)expr, type, atp->atttypid); @@ -1556,8 +1570,7 @@ start:; adbin = nodeToString(expr); oldcxt = MemoryContextSwitchTo((MemoryContext) CacheCxt); - attrdef->adbin = (char *) palloc(strlen(adbin) + 1); - strcpy(attrdef->adbin, adbin); + attrdef->adbin = pstrdup(adbin); (void) MemoryContextSwitchTo(oldcxt); pfree(adbin); diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index f4fdb63637dc32fcf6b2120923efa63a63287eb3..f3dec72128b72b672a3a24cf319f3b859ad87654 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -5,7 +5,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: outfuncs.c,v 1.83 1999/05/18 21:34:28 tgl Exp $ + * $Id: outfuncs.c,v 1.84 1999/05/19 16:46:11 momjian Exp $ * * NOTES * Every (plan) node in POSTGRES has an associated "out" routine which @@ -1203,18 +1203,14 @@ _outDatum(StringInfo str, Datum value, Oid type) s = (char *) (&value); appendStringInfo(str, " %d [ ", length); for (i = 0; i < sizeof(Datum); i++) - { appendStringInfo(str, " %d ", (int) (s[i])); - } appendStringInfo(str, "] "); } else { /* !byValue */ s = (char *) DatumGetPointer(value); if (!PointerIsValid(s)) - { appendStringInfo(str, " 0 [ ] "); - } else { /* diff --git a/src/backend/nodes/read.c b/src/backend/nodes/read.c index e4aa2be9b60c5a6740d979d6eacdc4aa7b9f425d..3c2f1a3bd9aa14407b1713b256fbad44781e4614 100644 --- a/src/backend/nodes/read.c +++ b/src/backend/nodes/read.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/nodes/read.c,v 1.14 1999/02/13 23:16:01 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/read.c,v 1.15 1999/05/19 16:46:11 momjian Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -26,7 +26,7 @@ /* * stringToNode - - * returns a Node with a given legal ascii representation + * returns a Node with a given legal ASCII representation */ void * stringToNode(char *str) diff --git a/src/backend/parser/parse_coerce.c b/src/backend/parser/parse_coerce.c index 6f672222ad1551b178b5639ebacc5c3b8a9d583b..70cb970a50ec3b87ef75881d2fb5b67e6e7ab295 100644 --- a/src/backend/parser/parse_coerce.c +++ b/src/backend/parser/parse_coerce.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.12 1999/05/10 00:45:26 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.13 1999/05/19 16:46:12 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -75,7 +75,6 @@ coerce_type(ParseState *pstate, Node *node, Oid inputTypeId, Oid targetTypeId) */ else if (inputTypeId != UNKNOWNOID) { - /* * We already know there is a function which will do this, so * let's use it