Umlautesortierung in Postgres

Jan-Benedict Glaw jbglaw at lug-owl.de
Di Nov 3 23:59:37 CET 2009


On Tue, 2009-11-03 22:00:37 +0100, Frank Jagusch <frank at jagusch-online.de> wrote:
> Am Dienstag, den 03.11.2009, 20:25 +0100 schrieb Jan-Benedict Glaw:
> > On Tue, 2009-11-03 20:12:59 +0100, Frank Jagusch <frank at jagusch-online.de> wrote:
> > > Am Dienstag, den 03.11.2009, 19:33 +0100 schrieb Jan-Benedict Glaw:
> > > > On Tue, 2009-11-03 19:18:16 +0100, Frank Jagusch <frank at jagusch-online.de> wrote:
> > > > > Am Montag, den 02.11.2009, 22:47 +0100 schrieb Jan-Benedict Glaw:
> > > > > > On Mon, 2009-11-02 19:06:34 +0100, Frank Jagusch <frank at jagusch-online.de> wrote:
> > > > > > > Hi alle,
> > > > > > > da ist mir was unklar und auch nach einigem Suchen hab' ich keine Lösung
> > > > > > > gefunden:
> > > > > > > Bei einem SELECT FOO FROM BAR ORDER BY FOO bekomme ich von meinem auf
> > > > > > > de_de eingestellten 8.3-er PostgreSQL folgende Sortierung
> > > > > > > (exemplarisch):
> > > > [...]
> > > Irgendwie muss PostgreSQL doch intern die Sortierung der Lokalisierung
> > > anpassen. Das geht ja mit den verschiedensten Sprachen. Ich kann mir
> > > nicht vorstellen, dass da keine Möglichkeit zur Anpassung vorhanden ist.
> > > Nur hab ich die Stelle nicht gefunden...
> > 
> > Alternativ könntest Du (in 8.4 geht das, ob das in Vorgängerversionen
> > auch schon tut, weiß ich nicht) die ganze DB dump'en, wegwerfen und
> > neuanlegen.
> > 
> > Beim `createdb' kannst Du --lc-collate mitangeben. Jetzt müßtest Du
> > "nur" noch eine LOCALE finden, in der so sortiert wird, wie Du das
> > möchtest. (Notfalls selbst eine schreiben...)
> 
> Da hast du nun auch die Richtung erreicht, in die meine Gedanken nach
> einigen Stunden Materialstudium gingen. In den 8.3'ern geht das auch
> schon. Sicher gibt es schon irgendwo so eine LOCALE - zumindest kann ich
> mir nur schwer vorstellen, dass ich der erste PostgreSQL Anwender bin,
> der dieses Problem hat. Nur: Wo finde ich diese LOCALE?

Das ist keine PostgreSQL-spezifische Sache! Das kommt (typischerweise)
als `locales'-Paket als eine Komponente der GNU libc ins System. Die
Aufgabenstellung lautet also, eine Sprache in einem Land zu finden,
die diese Sortierreihenfolge vorgibt.

> Falls ich doch der erste bin: Gibt es irgendwo eine Anleitung wie man so
> eine LOCALE ohne exorbitanten Aufwand schreibt? Der Server läuft unter
> Windows und ich habe da keinen passenden Compiler...

Eh, Windows? Oh...  Da ist zuerst die Frage, ob der PostgreSQL-Server
nativ läuft, oder via Cygwin. Wenn das System nativ läuft, wirst Du
für das entsprechende Land das Sprachpaket installieren müssen.
Ergo ist die Vorbereitung, daß das System mit Dir in der Sprache
sprechen könnte.

Unter einem GNU-System würde man (vorausgesetzt, keine Sprache nutzt
bisher so eine Sortierung) einfach ein paar Tabellen schreiben, die
die Reihenfolge der Zeichen vorgibt. Wie Windows das löst... Keine
Ahnung.  Aber informativerweise: Unter welcher Locale läuft denn
bisher die Datenbank?

MfG, JBG

-- 
      Jan-Benedict Glaw      jbglaw at lug-owl.de              +49-172-7608481
Signature of:         "really soon now":      an unspecified period of time, likly to
the second  :                                 be greater than any reasonable definition
                                              of "soon".
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 197 bytes
Beschreibung: Digital signature
URL         : http://www.tlug.de/pipermail/tlug_allgemein/attachments/20091103/84425510/attachment.pgp