public inbox for [email protected]
help / color / mirror / Atom feedWhere to store some session based info?
2+ messages / 2 participants
[nested] [flat]
* Where to store some session based info?
@ 2026-03-25 17:20 Durumdara <[email protected]>
2026-03-25 17:40 ` Re: Where to store some session based info? Pavel Stehule <[email protected]>
0 siblings, 1 reply; 2+ messages in thread
From: Durumdara @ 2026-03-25 17:20 UTC (permalink / raw)
To: pgsql-general
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.
Best regards
dd
^ permalink raw reply [nested|flat] 2+ messages in thread
* Re: Where to store some session based info?
2026-03-25 17:20 Where to store some session based info? Durumdara <[email protected]>
@ 2026-03-25 17:40 ` Pavel Stehule <[email protected]>
0 siblings, 0 replies; 2+ messages in thread
From: Pavel Stehule @ 2026-03-25 17:40 UTC (permalink / raw)
To: Durumdara <[email protected]>; +Cc: pgsql-general
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
>
>
>
^ permalink raw reply [nested|flat] 2+ messages in thread
end of thread, other threads:[~2026-03-25 17:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2026-03-25 17:20 Where to store some session based info? Durumdara <[email protected]>
2026-03-25 17:40 ` Pavel Stehule <[email protected]>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox