Обсуждение: LC_COLLATE and pg_upgrade

Поиск
Список
Период
Сортировка

LC_COLLATE and pg_upgrade

От
Bernhard Schrader
Дата:
Hi all,

I just tried to pg_upgrade a PostgreSQL-8.4 to 9.0.

pg_upgrade stopped with this message:

"old and new cluster lc_collate values do not match"

So i checked the LC_COLLATE on 8.4 and 9.0:

8.4:
postgres=# show lc_collate;
lc_collate
------------
en_US.utf8
(1 row)

9.0:
postgres=# show lc_collate;
lc_collate
------------
en_US.UTF-8
(1 row)


Well... I think you see my problem, i don't even know if it is really a
problem...

Is it possible just to change the lc_collate on the 8.4 machine?
Obviously its the same encoding, or am i wrong?

My second Question, but not that urgent is about two databases which
have LC_COLLATE=C, is there a safe way to get it to UTF-8?

regards
Bernhard



Re: LC_COLLATE and pg_upgrade

От
Bernhard Schrader
Дата:
Am Donnerstag, den 10.02.2011, 17:56 +0100 schrieb Bernhard Schrader:
> Hi all,
>
> I just tried to pg_upgrade a PostgreSQL-8.4 to 9.0.
>
> pg_upgrade stopped with this message:
>
> "old and new cluster lc_collate values do not match"
>
> So i checked the LC_COLLATE on 8.4 and 9.0:
>
> 8.4:
> postgres=# show lc_collate;
> lc_collate
> ------------
> en_US.utf8
> (1 row)
>
> 9.0:
> postgres=# show lc_collate;
> lc_collate
> ------------
> en_US.UTF-8
> (1 row)
>
>
> Well... I think you see my problem, i don't even know if it is really a
> problem...
>
> Is it possible just to change the lc_collate on the 8.4 machine?
> Obviously its the same encoding, or am i wrong?
>
> My second Question, but not that urgent is about two databases which
> have LC_COLLATE=C, is there a safe way to get it to UTF-8?
>
> regards
> Bernhard
>
>
>

Doesn't anyone know if I could override this settings?
LC_COLLATE should be interesting for sort order, and while both is utf8,
it should work or am I totally wrong?

As far as I read right now, LC_COLLATE is a read_only variable which is
used while initdb. But why does the pg_upgrade script doesn't see that
utf8 and UTF-8 are the same? Is it just a string compare?

greetz
Bernhard






Re: LC_COLLATE and pg_upgrade

От
Peter Eisentraut
Дата:
On mån, 2011-02-14 at 14:18 +0100, Bernhard Schrader wrote:
> As far as I read right now, LC_COLLATE is a read_only variable which
> is used while initdb. But why does the pg_upgrade script doesn't see
> that utf8 and UTF-8 are the same? Is it just a string compare?

Why don't you just reinitialize your new database cluster with the same
locale spelling as the old one?

Your points are valid, but unfortunately difficult to handle in the
general case.



Re: LC_COLLATE and pg_upgrade

От
Bernhard Schrader
Дата:
If i reinitialize the database cluster, won't i have to pg_dump restore
my data? In this case the downtime would be to big. Therefore I'm
searching for a faster way.

utf8 and UTF-8, should be the same in my opinion, so i think there must
be a way to just change this value, so that pg_upgrade can do his work,
or is this impossible?

regards

Am Mittwoch, den 16.02.2011, 13:54 +0200 schrieb Peter Eisentraut:
> On mån, 2011-02-14 at 14:18 +0100, Bernhard Schrader wrote:
> > As far as I read right now, LC_COLLATE is a read_only variable which
> > is used while initdb. But why does the pg_upgrade script doesn't see
> > that utf8 and UTF-8 are the same? Is it just a string compare?
>
> Why don't you just reinitialize your new database cluster with the same
> locale spelling as the old one?
>
> Your points are valid, but unfortunately difficult to handle in the
> general case.
>
>
>




Re: LC_COLLATE and pg_upgrade

От
Peter Eisentraut
Дата:
On ons, 2011-02-16 at 13:14 +0100, Bernhard Schrader wrote:
> If i reinitialize the database cluster, won't i have to pg_dump restore
> my data? In this case the downtime would be to big. Therefore I'm
> searching for a faster way.

I said reinitialize your new database cluster.  Since you're running
pg_upgrade, I assume your new cluster has no data in it worth keeping.

> utf8 and UTF-8, should be the same in my opinion, so i think there must
> be a way to just change this value, so that pg_upgrade can do his work,
> or is this impossible?

No, you can't change it with any reasonable effort.  (You can manually
edit pg_control and recalculate the checksum, if you must.  Don't do
that, though.)



Re: LC_COLLATE and pg_upgrade

От
Bruce Momjian
Дата:
Bernhard Schrader wrote:
> Doesn't anyone know if I could override this settings?
> LC_COLLATE should be interesting for sort order, and while both is utf8,
> it should work or am I totally wrong?
>
> As far as I read right now, LC_COLLATE is a read_only variable which is
> used while initdb. But why does the pg_upgrade script doesn't see that
> utf8 and UTF-8 are the same? Is it just a string compare?

Yes, just a string compare.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +