PostgreSQL a temporary tabulky a trideni
Karel Zak
zakkr na zf.jcu.cz
Pátek Únor 27 14:12:40 CET 2004
On Fri, Feb 27, 2004 at 01:23:12PM +0100, Honza Pazdziora wrote:
> On Fri, Feb 27, 2004 at 11:22:14AM +0100, Karel Zak wrote:
> > On Thu, Feb 26, 2004 at 03:48:08PM +0100, Karel Zak wrote:
> > > Pokud by nekdo udelal rychlostni testy s tim jak moc je v te funkci
> >
> > Jeste jsem tam opravil (snad dobre) to na co narazel Tom Lane. Bohuzel
>
> Neni mi uplne jasne, proc to tam musi byt, pokud pred tim elogem ten
> setlocale neuspel a navic's tam mel, ze se vraci pro jistotu jeste
> zpet. Nejaky odkaz na thread / dokument, ktery by se tim podrobneji
> zabyval?
Jde o to, ze elog(ERROR, ...) se nevraci, ale udela siglongjmp() na
misto kde byl naposledy volan sigsetjmp().
A my v miste kde jsou nastavene jine locales volame funkce (palloc),
ktere mohou obsahovat volani elog(). To by pak zamenalo, ze nikdy
nedojde k nastaveni puvodnich locale, ale PostgreSQL se vrati nemam do
stavu daleko pred volanim nls_string(). Proste je pteba osetrit, aby
vzdy byl zavolan setlocale() s puvodnim nastavenim.
Reseni je ulozit si puvodni pozici pro ten long jump, a nastavit jinou
pozici, ktera zajisti vraceni locales a nasledne udela jump na
puvodni. Snad se to z toho co jsem psal da pochopit :-) Jinak viz treba
zdrojaky PL/TCL.
> http://www.fi.muni.cz/~adelton/l10n/postgresql-nls-string/
>
> jsem dal 0.53, kde je
Nezkousel jsem, ale pri pohledu na zdrojaky to vypada dobre. Dam to
take k sobe na FTP pokud by tam nekdo z PostgreSQL listu neco hledal
(hmm.. asi tam dam README s URL na mini.cz).
Karel
--
Karel Zak <zakkr na zf.jcu.cz>
http://home.zf.jcu.cz/~zakkr/
Další informace o konferenci Test