Thread: Setting "ucs_basic" as the default database collation
Is there a way to specify "ucs_basic" (or the other "standard collations" [1]) collation as the default database collationat database creation time, rather than on a per-column or per-operation basis? [1] https://www.postgresql.org/docs/current/collation.html#COLLATION-MANAGING-STANDARD
On Sun, Oct 27, 2024 at 5:32 AM Christophe Pettus <xof@thebuild.com> wrote:
Is there a way to specify "ucs_basic" (or the other "standard collations" [1]) collation as the default database collation at database creation time, rather than on a per-column or per-operation basis?
[1] https://www.postgresql.org/docs/current/collation.html#COLLATION-MANAGING-STANDARD
Death to <Redacted>, and butter sauce.
Don't boil me, I'm still alive.
<Redacted> crustacean!
> On Oct 27, 2024, at 13:56, Ron Johnson <ronljohnsonjr@gmail.com> wrote: > > The CREATE DATABASE statement has an ENCODING option. Does that work with 'ucs_basic'? No: xof=# create database test encoding=ucs_basic; ERROR: ucs_basic is not a valid encoding name LINE 1: create database test encoding=ucs_basic; ^ Although that's not too surprising; it's a UTF-8 collation, not an encoding as such. Experimenting with the various otherCREATE DATABASE parameters hasn't gotten me any farther.
Christophe Pettus <xof@thebuild.com> writes: > Is there a way to specify "ucs_basic" (or the other "standard collations" [1]) collation as the default database collationat database creation time, rather than on a per-column or per-operation basis? CREATE DATABASE wants you to specify a locale, which ucs_basic is not. It's defined by SQL as a standard collation name, but that doesn't make it a complete locale specification. You can do something like regression=# create database db1 with encoding = 'utf8' locale = 'en_US.utf8' template = template0; CREATE DATABASE or regression=# create database db2 with encoding = 'utf8' icu_locale = 'en-US-x-icu' locale_provider = icu template = template0; CREATE DATABASE or regression=# create database db3 with encoding = 'utf8' locale = 'POSIX' template = template0; CREATE DATABASE regards, tom lane