diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2007-06-06 23:00:50 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2007-06-06 23:00:50 +0000 |
| commit | 2d4db3675fa7a2f4831b755bc98242421901042f (patch) | |
| tree | 5961b42325091b789d0f82073812de57323fa4b1 /src/backend/utils/adt | |
| parent | 7dab4f75ca60f1c04ed9e7ff9d4ca8d71e572b29 (diff) | |
| download | postgresql-2d4db3675fa7a2f4831b755bc98242421901042f.tar.gz | |
Fix up text concatenation so that it accepts all the reasonable cases that
were accepted by prior Postgres releases. This takes care of the loose end
left by the preceding patch to downgrade implicit casts-to-text. To avoid
breaking desirable behavior for array concatenation, introduce a new
polymorphic pseudo-type "anynonarray" --- the added concatenation operators
are actually text || anynonarray and anynonarray || text.
Diffstat (limited to 'src/backend/utils/adt')
| -rw-r--r-- | src/backend/utils/adt/pseudotypes.c | 28 | ||||
| -rw-r--r-- | src/backend/utils/adt/xml.c | 4 |
2 files changed, 29 insertions, 3 deletions
diff --git a/src/backend/utils/adt/pseudotypes.c b/src/backend/utils/adt/pseudotypes.c index fc9f332482..248bcfa305 100644 --- a/src/backend/utils/adt/pseudotypes.c +++ b/src/backend/utils/adt/pseudotypes.c @@ -16,7 +16,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/pseudotypes.c,v 1.19 2007/04/02 03:49:39 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/pseudotypes.c,v 1.20 2007/06/06 23:00:39 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -348,6 +348,32 @@ anyelement_out(PG_FUNCTION_ARGS) } /* + * anynonarray_in - input routine for pseudo-type ANYNONARRAY. + */ +Datum +anynonarray_in(PG_FUNCTION_ARGS) +{ + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot accept a value of type anynonarray"))); + + PG_RETURN_VOID(); /* keep compiler quiet */ +} + +/* + * anynonarray_out - output routine for pseudo-type ANYNONARRAY. + */ +Datum +anynonarray_out(PG_FUNCTION_ARGS) +{ + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot display a value of type anynonarray"))); + + PG_RETURN_VOID(); /* keep compiler quiet */ +} + +/* * shell_in - input routine for "shell" types (those not yet filled in). */ Datum diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index f9fd48db66..2e84fac1d7 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.43 2007/05/21 17:10:29 petere Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.44 2007/06/06 23:00:39 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1481,7 +1481,7 @@ map_sql_value_to_xml_value(Datum value, Oid type) initStringInfo(&buf); - if (is_array_type(type)) + if (type_is_array(type)) { int i; ArrayType *array; |
