Re: pgsql: Add function to import operating system collations

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Peter Eisentraut <peter_e@gmx.net>
Cc: pgsql-committers@postgresql.org
Date: 2017-01-18T15:43:07Z
Lists: pgsql-hackers
I wrote:
> running bootstrap script ... ok
> performing post-bootstrap initialization ... 2017-01-18 09:49:45.019 EST [25919] FATAL:  collation "aa_ER@saaho" for encoding "UTF8" already exists
> 2017-01-18 09:49:45.019 EST [25919] STATEMENT:  SELECT pg_import_system_collations(if_not_exists => false, schema => 'pg_catalog');

As a stopgap so I could get some work done, I did

-   PG_CMD_PUTS("SELECT pg_import_system_collations(if_not_exists => false, schema => 'pg_catalog');\n\n");
+   PG_CMD_PUTS("SELECT pg_import_system_collations(if_not_exists => true, schema => 'pg_catalog');\n\n");

and what I now see in pg_collation is

regression=# select * from pg_collation where collname like 'aa_ER%';
     collname     | collnamespace | collowner | collencoding |   collcollate    |    collctype     
------------------+---------------+-----------+--------------+------------------+------------------
 aa_ER            |            11 |        10 |            6 | aa_ER            | aa_ER
 aa_ER.utf8       |            11 |        10 |            6 | aa_ER.utf8       | aa_ER.utf8
 aa_ER.utf8@saaho |            11 |        10 |            6 | aa_ER.utf8@saaho | aa_ER.utf8@saaho
 aa_ER@saaho      |            11 |        10 |            6 | aa_ER.utf8@saaho | aa_ER.utf8@saaho
(4 rows)

Maybe an appropriate fix would be to ignore collations whose names aren't
equal to what we get for collcollate/collctype.  Presumably the latter
are getting canonicalized somehow.

			regards, tom lane


Commits

  1. Avoid conflicts with collation aliases generated by stripping.

  2. Add function to import operating system collations

  3. Remove dead code in bootstrap