PostgreSQL, uzivatelske promenne na serveru

David Zabensky zabensky na ica.cz
Úterý Leden 8 11:59:57 CET 2002


Radek Kanovsky wrote:

> On Tue, Jan 08, 2002 at 10:37:12AM +0100, David Zabensky wrote:
> 
> 
>>Dobry den vespolek,
>>
>>chtel bych vas poprosit o malou radu tykajici se PostgreSQL 7.1.3.
>>
>>Mam maly problem: potreboval bych zjistit, zda existuje na serveru
>>promenna, jenz obsahuje jedinecnou hodnotu pro uzivatelskou session.
>>Tj. ma vzdycky stejny nazev ale pokazde jinou hodnotu, jenz se nastavi
>>po connectu a zanikne po disconnect. A lze se na ni odkazovat z SQL
>>prikazu resp. PLSQL funkci. Koukal jsem na napovedu pro SET, SHOW...
>>ale lze nastavovat jen runtime parametry. Nelze pridavat nove.
>>
>>Potreboval bych to pro implementaci uzivatelskych promennych na serveru
>>(pokud to tedy psql neumi sam, coz jsem nikde nevycetl), mel by to byt
>>klic do podobne tabulky:
>>
>>SESS_ID VARCHAR,
>>VAR_NAME VARCHAR,
>>VAR_VAL VARCHAR,
>>PRIMARY KEY(SESS_ID, VAR_NAME)
>>
>>Studoval jsem dokumentaci, zbezne prochazel zdrojaky i systemovy katalog,
>>ale na nic jsem neprisel. Nevite nekdo o nejake promenne/funkci jenz by
>>se dala na toto pouzit? Mam verzi 7.1.3.
>>
>>Moc Vam dekuji, koukam na to uz druhy den. A mam obavu, ze to nejde...
>>
> 
> Jednoduse to asi nepujde, protoze v PLSQL lze zjistit o aktualni session
> pouze jedinou informaci a to uzivatele: "SELECT getpgusername();".
> 
> Mozna by stacilo udelat jednoduchou funkci v C, ktera by vzala
> cas + username + PID serveroveho procesu a vygenerovala z techto informaci
> nejake jednoznacne session ID. V podadresari contrib bude par prikladu,
> jak takovou funkci napsat a v serveru aktivovat.
> 
> Zdravi
> 
> Radek Kaňovský
> 
> 

jo na to jsem taky koukal, ale chtel jsem neco 'systemoveho'. zatim (ted :o)
jsem prisel akorat na to, ze kdyz si vytvorim 'CREATE TEMPORARY TABLE...'
se stejnym jmenem v ruznych session tak tu tabulku ma kazda session svou
(coz mi staci, insertovane hodnoty si tak neprepisi). na druhou stranu to
  bude mit daleko vetsi naroky na vykon nez ta funkce v Ccku. pozdeji si to
mozna prepisi na tu fci v C (pripada mi to jako celkem uzitecna vec).

jak to je vlastne v pgsql - vim ze MySQL umi 'memory' tabulky, kdyz si v pgsql
vytvorim temporaty tabulku, zapisuje se neco na disk nebo to jede vsechno jen
v pameti?

David



Další informace o konferenci Test