OSDN Git Service

Upgrade to PyGreSQL (2.4)
authorBruce Momjian <bruce@momjian.us>
Wed, 19 May 1999 16:46:12 +0000 (16:46 +0000)
committerBruce Momjian <bruce@momjian.us>
Wed, 19 May 1999 16:46:12 +0000 (16:46 +0000)
src/backend/catalog/heap.c
src/backend/nodes/outfuncs.c
src/backend/nodes/read.c
src/backend/parser/parse_coerce.c

index 71ae1eb..32eb247 100644 (file)
@@ -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);
 
index f4fdb63..f3dec72 100644 (file)
@@ -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
                {
                        /*
index e4aa2be..3c2f1a3 100644 (file)
@@ -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)
index 6f67222..70cb970 100644 (file)
@@ -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