Thread: pgsql: Fix up text concatenation so that it accepts all the reasonable

pgsql: Fix up text concatenation so that it accepts all the reasonable

From
tgl@postgresql.org (Tom Lane)
Date:
Log Message:
-----------
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.

Modified Files:
--------------
    pgsql/doc/src/sgml:
        datatype.sgml (r1.203 -> r1.204)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/datatype.sgml.diff?r1=1.203&r2=1.204)
        extend.sgml (r1.34 -> r1.35)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/extend.sgml.diff?r1=1.34&r2=1.35)
        func.sgml (r1.381 -> r1.382)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/func.sgml.diff?r1=1.381&r2=1.382)
        plpgsql.sgml (r1.109 -> r1.110)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/plpgsql.sgml.diff?r1=1.109&r2=1.110)
        xfunc.sgml (r1.127 -> r1.128)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/xfunc.sgml.diff?r1=1.127&r2=1.128)
    pgsql/src/backend/catalog:
        pg_proc.c (r1.144 -> r1.145)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/pg_proc.c.diff?r1=1.144&r2=1.145)
    pgsql/src/backend/executor:
        functions.c (r1.116 -> r1.117)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/functions.c.diff?r1=1.116&r2=1.117)
    pgsql/src/backend/parser:
        parse_agg.c (r1.77 -> r1.78)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/parse_agg.c.diff?r1=1.77&r2=1.78)
        parse_coerce.c (r2.154 -> r2.155)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/parse_coerce.c.diff?r1=2.154&r2=2.155)
        parse_func.c (r1.196 -> r1.197)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/parse_func.c.diff?r1=1.196&r2=1.197)
    pgsql/src/backend/utils/adt:
        pseudotypes.c (r1.19 -> r1.20)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/pseudotypes.c.diff?r1=1.19&r2=1.20)
        xml.c (r1.43 -> r1.44)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/xml.c.diff?r1=1.43&r2=1.44)
    pgsql/src/backend/utils/fmgr:
        funcapi.c (r1.34 -> r1.35)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/fmgr/funcapi.c.diff?r1=1.34&r2=1.35)
    pgsql/src/include/catalog:
        catversion.h (r1.410 -> r1.411)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/catversion.h.diff?r1=1.410&r2=1.411)
        pg_operator.h (r1.152 -> r1.153)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_operator.h.diff?r1=1.152&r2=1.153)
        pg_proc.h (r1.458 -> r1.459)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_proc.h.diff?r1=1.458&r2=1.459)
        pg_type.h (r1.184 -> r1.185)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_type.h.diff?r1=1.184&r2=1.185)
    pgsql/src/include/utils:
        builtins.h (r1.295 -> r1.296)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/builtins.h.diff?r1=1.295&r2=1.296)
        lsyscache.h (r1.118 -> r1.119)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/lsyscache.h.diff?r1=1.118&r2=1.119)
    pgsql/src/pl/plpgsql/src:
        pl_comp.c (r1.114 -> r1.115)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/pl/plpgsql/src/pl_comp.c.diff?r1=1.114&r2=1.115)
    pgsql/src/test/regress/expected:
        text.out (r1.3 -> r1.4)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/text.out.diff?r1=1.3&r2=1.4)
    pgsql/src/test/regress/sql:
        text.sql (r1.3 -> r1.4)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/text.sql.diff?r1=1.3&r2=1.4)