From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Avoid collation dependence in indexes of system catalogs. |
Date: | 2015-05-19 15:47:50 |
Message-ID: | E1YujkE-0005Tw-0q@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Avoid collation dependence in indexes of system catalogs.
No index in template0 should have collation-dependent ordering, especially
not indexes on shared catalogs. For most textual columns we avoid this
issue by using type "name" (which sorts per strcmp()). However there are a
few indexed columns that we'd prefer to use "text" for, and for that, the
default opclass text_ops is unsafe. Fortunately, text_pattern_ops is safe
(it sorts per memcmp()), and it has no real functional disadvantage for our
purposes. So change the indexes on pg_seclabel.provider and
pg_shseclabel.provider to use text_pattern_ops.
In passing, also mark pg_replication_origin.roname as using
text_pattern_ops --- for some reason it was labeled varchar_pattern_ops
which is just wrong, even though it accidentally worked.
Add regression test queries to catch future errors of these kinds.
We still can't do anything about the misdeclared pg_seclabel and
pg_shseclabel indexes in back branches :-(
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/0b28ea79c044a0d3779081dc909a6dc0ce93b991
Modified Files
--------------
src/include/catalog/catversion.h | 2 +-
src/include/catalog/indexing.h | 6 +--
src/test/regress/expected/opr_sanity.out | 83 ++++++++++++++++++++++++++++--
src/test/regress/sql/opr_sanity.sql | 73 ++++++++++++++++++++++++--
4 files changed, 154 insertions(+), 10 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Heikki Linnakangas | 2015-05-19 16:29:58 | pgsql: Fix off-by-one error in Assertion. |
Previous Message | Andrew Dunstan | 2015-05-19 12:59:06 | Re: pgsql: hstore_plpython: Fix regression tests under Python 3 |