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 Test