PostgreSQL a temporary tabulky a trideni
Honza Pazdziora
adelton na informatics.muni.cz
Středa Únor 25 18:07:07 CET 2004
On Wed, Feb 25, 2004 at 04:51:24PM +0100, Karel Zak wrote:
>
> Hmm, pokud je mi znamo tak zadny standard nic takoveho nedefinuje a
> proste v PostgreSQL plati, ze docasnost je dana prave session. IMHO
> todle je to co jsem nedavno kritizovali u debaty s xbase -- ocekavani,
> ze "spravne" je to na co jsem doposud navyknuty. Treba me soucasne
> chovani vyhovuje.
Chapu vytku. Nicmene mi prijde logicke, ze nekdo vytvari databazove
objekty (DDL) a nekdo jiny je pouziva (DML). A ze pokud soucasti
datoveho schematu ma byt nejaka pomocna tabulka, tak ze bude vytvorena
jednou.
Navic, standard tu semantiku popisuje a i dokumentace PostgreSQL
jasne rika, ze se v tomto od standardu odlisuje:
Although the syntax of CREATE TEMPORARY TABLE resembles that
of the SQL standard, the effect is not the same. In the
standard, temporary tables are defined just once and
automatically exist (starting with empty contents) in every
session that needs them.
[...]
> Takze nakonec to reseni ma a jedina vada na krase je nutnost zjistit
> jsem-li prvni v dane session nebo ne -- coz muze celkem snadno udelat
> klient co zaklada tu session a po navazani spojeni mimo jinych veci
> nainicializuje i tu potrebnou temp tabulku. Ty rutiny co tu tabulku
> pouzivaji nic zjistovat nemuseji. IMHO je to problem logiky aplikace.
Ano, i tak se na to da nahlizet. Ovsem ten databazovy handle mohu sebrat
odkudkoli, takze se na to v mem konkretnim pripade neda spolehat.
> Pouzivani ruznych locales neni nesmysl a urcite se o tom uvazuje. Jen
> proste udelat nejake systemove reseni neni uplne trivialni a pri vyvoji
> PostgreSQL se vetsinou jine reseni nedelaji, a nez nejaky necisty hack
> tak radeji nekolik release nic...
Takze jo. Sedl jsem a napsal to, vysledek je, ze
test=# select name from tst order by nls_string(name, 'en_US.UTF-8');
name
----------
chrt
hrnec
japonec
Japonec
Japonsko
japonsky
japonský
(7 rows)
test=# select name from tst order by nls_string(name, 'cs_CZ.UTF-8');
name
----------
hrnec
chrt
Japonec
japonec
Japonsko
japonsky
japonský
(7 rows)
Jeste to ale pada, predpokladam, ze budu muset zapracovat na tom,
aby to vsechno bylo thread safe, nebo tak. Ma cenu to nekam posilat?
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
Only self-confident people can be simple.
Další informace o konferenci Databases