public inbox for [email protected]  
help / color / mirror / Atom feed
From: Pavel Stehule <[email protected]>
To: Durumdara <[email protected]>
Cc: Postgres General <[email protected]>
Subject: Re: Where to store some session based info?
Date: Wed, 25 Mar 2026 18:40:06 +0100
Message-ID: <CAFj8pRCTfHpwesLvF0jVsqEfuLv65WSXaiR-21bmUJEo7jceNQ@mail.gmail.com> (raw)
In-Reply-To: <CAEcMXhmn7UnBC3f_HO2R7DYaKDY7L4v5qgesT6e-tRQGri1Xxw@mail.gmail.com>
References: <CAEcMXhmn7UnBC3f_HO2R7DYaKDY7L4v5qgesT6e-tRQGri1Xxw@mail.gmail.com>

Hi

st 25. 3. 2026 v 18:21 odesílatel Durumdara <[email protected]> napsal:

> Hello!
>
> Sometimes we have to use "Current User ID", and "User Name" in the
> Triggers to make a log into a table. These values are based on our User,
> not in the PSQL role.
>
> Now we use a temporary table to do this.
> When the user logged into the application, we created a temporary table
> with the same name (user_info) and structure. This holds the data (id,
> name, machine info, ip address).
>
> In the trigger we try to find this table (in the LOCAL_TEMPORARY schema).
> Then we read the row into a JSON record, and then into PLPGSQL variables.
> Tables can exist with the same name, so this is the safest solution.
> If the User  ID is invalid (none or empty) that means this is a background
> operation, and then we don't need to log the changes.
>
> But maybe there is a better way to somehow store some session based data
> and use it in the triggers.
> Because if these selects are slow, the trigger is also slow. So when I
> start an UPDATE command in a big table, maybe this slows down the whole
> operation.
>
> Note:
> A table with the PID key is not enough, because the PID is a repeated
> value.
> I logged it and in the Windows system there are many of the same values
> (10001, 10004, etc.).
> Ok, I can combine with session creation time. But for this I also need to
> start a select in the pg_stat_activty table.
>
> So maybe you have an easier way to point to a record in a session.
> Important: the PG servers are different, the lesser version is 11, and we
> have only a Database Owner role. We can't configure the server.
>
> What is your opinion? Is there any way to get session based data?
> As I read before, we can't set the session variables onfly.
>

There are not native session variables, but you can use workaround - custom
setting

(2026-03-25 18:39:04) postgres=# set myvar.xxx to 'hello';
select current_setting('myvar.xxx');
SET
┌─────────────────┐
│ current_setting │
╞═════════════════╡
│ hello           │
└─────────────────┘
(1 row)

Regards

Pavel


>
> Best regards
> dd
>
>
>


reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: Where to store some session based info?
  In-Reply-To: <CAFj8pRCTfHpwesLvF0jVsqEfuLv65WSXaiR-21bmUJEo7jceNQ@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox