pgsql: Fix CheckAttributeType's handling of collations for ranges.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix CheckAttributeType's handling of collations for ranges.
Date: 2020-01-31 22:04:30
Message-ID: E1ixeOs-0001YI-Fk@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix CheckAttributeType's handling of collations for ranges.

Commit fc7695891 changed CheckAttributeType to recurse into ranges,
but made it pass down the wrong collation (always InvalidOid, since
ranges as such have no collation). This would result in guaranteed
failure when considering a range type whose subtype is collatable.

Embarrassingly, we lack any regression tests that would expose such
a problem (but fortunately, somebody noticed before we shipped this
bug in any release).

Fix it to pass down the range's subtype collation property instead,
and add some regression test cases to exercise collatable-subtype
ranges a bit more. Back-patch to all supported branches, as the
previous patch was.

Report and patch by Julien Rouhaud, test cases tweaked by me

Discussion: https://postgr.es/m/CAOBaU_aBWqNweiGUFX0guzBKkcfJ8mnnyyGC_KBQmO12Mj5f_A@mail.gmail.com

Branch
------
REL9_5_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/59047b6d0c93db208a40a77a3672cbe10b7b04da

Modified Files
--------------
src/backend/catalog/heap.c | 3 +-
src/backend/utils/cache/lsyscache.c | 26 +++++++++
src/include/utils/lsyscache.h | 1 +
src/test/regress/expected/rangetypes.out | 89 +++++++++++++++++++++++++++++-
src/test/regress/expected/sanity_check.out | 2 +
src/test/regress/sql/rangetypes.sql | 30 +++++++++-
6 files changed, 148 insertions(+), 3 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2020-01-31 22:26:46 pgsql: Fix not-quite-right string comparison in parse_jsonb_index_flags
Previous Message Tom Lane 2020-01-31 19:42:16 pgsql: Fix parallel pg_dump/pg_restore for failure to create worker pro