View Single Post

   
  #2 (permalink)  
Old 04-12-2008, 03:16 AM
Andrew Dunstan
 
Posts: n/a
Default Re: session id and global storage

Rodrigo De Leon wrote:

>>>> Hi, I cant find any function, which tells me something like session
>>>> id. Is there something like that? I need it in my AM, because I need
>>>> to know, if something which I wrote in file was written in this
>>>> current session or previously.
>>>
>>>
>>> How about
>>> select procpid||' '||backend_start from pg_stat_activity;
>>> Yours,
>>> Laurenz Albe

>>
>>
>> Something like this would be maybe possible, but this select can
>> return more rows, when the user is connected with more instances...
>>

>
> You could do this:
>
> SELECT procpid||' '||backend_start
> FROM pg_stat_activity
> WHERE datname = current_database()
> AND usename = session_user
> AND client_addr = inet_client_addr()
> AND client_port = inet_client_port();
>


That's pretty roundabout. We already expose (hex coded) pid.starttime as
a session identifier in log_line_prefix (it's the %c escape) so I don't
see any reason not to provide either the same thing directly in a
function, or at least to expose the backend pid.

If you need it in backend C code, the data can be fetched from MyProcPid
and MyProcPort->session_start.tv_sec

cheers

andrew


---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match

Reply With Quote