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 via email to