Re: Typo in PL/pgSQL trigger Example 43.4?

2023-10-09 Thread Tom Lane
Daniel Gustafsson  writes:
>> On 7 Oct 2023, at 22:22, Tom Lane  wrote:
>> Yeah, either way has the same result.  However, I wonder if we should
>> change this example to use current_user for clarity.  It does look
>> more like it's intended to be a variable or column reference than
>> a built-in function.

> Agreed, and "user" is a hard search term to use for discovering what it is.  
> +1
> for changing to current_user.

OK, I'll take care of this later today.

regards, tom lane




Re: Typo in PL/pgSQL trigger Example 43.4?

2023-10-09 Thread Daniel Gustafsson
> On 7 Oct 2023, at 22:22, Tom Lane  wrote:
> 
> "David G. Johnston"  writes:
>> On Sat, Oct 7, 2023 at 11:11 AM Kirk Parker  wrote:
>>> INSERT INTO emp_audit SELECT 'D', now(), user, OLD.*; -- <= ARGUMENT IN 
>>> QUESTION
>>> The emp_audit table has a column named 'userid', which in actual usage
>>> (next-to-last line quoted) is populated by 'user' which seems undefined in
>>> the context.  Was that intended to be 'current_user', or am I missing
>>> something?
> 
>> user is a valid pseudo-function:
>> https://www.postgresql.org/docs/current/functions-info.html#FUNCTIONS-INFO-SESSION
> 
> Yeah, either way has the same result.  However, I wonder if we should
> change this example to use current_user for clarity.  It does look
> more like it's intended to be a variable or column reference than
> a built-in function.

Agreed, and "user" is a hard search term to use for discovering what it is.  +1
for changing to current_user.

--
Daniel Gustafsson





Re: Typo in PL/pgSQL trigger Example 43.4?

2023-10-08 Thread Kirk Parker
On Sat, Oct 7, 2023 at 1:22 PM Tom Lane  wrote:

> "David G. Johnston"  writes:
> > On Sat, Oct 7, 2023 at 11:11 AM Kirk Parker  wrote:
> >> INSERT INTO emp_audit SELECT 'D', now(), user, OLD.*; -- <= ARGUMENT IN
> QUESTION
> >> The emp_audit table has a column named 'userid', which in actual usage
> >> (next-to-last line quoted) is populated by 'user' which seems undefined
> in
> >> the context.  Was that intended to be 'current_user', or am I missing
> >> something?
>
> > user is a valid pseudo-function:
> >
> https://www.postgresql.org/docs/current/functions-info.html#FUNCTIONS-INFO-SESSION
>
> Yeah, either way has the same result.  However, I wonder if we should
> change this example to use current_user for clarity.  It does look
> more like it's intended to be a variable or column reference than
> a built-in function.
>
>
Since the previous example  on the page uses 'current_user' (which I
suppose is why I didn't look further to see if 'user' was also a function),
perhaps that would be a good idea.

>
>


Re: Typo in PL/pgSQL trigger Example 43.4?

2023-10-07 Thread Tom Lane
"David G. Johnston"  writes:
> On Sat, Oct 7, 2023 at 11:11 AM Kirk Parker  wrote:
>> INSERT INTO emp_audit SELECT 'D', now(), user, OLD.*; -- <= ARGUMENT IN 
>> QUESTION
>> The emp_audit table has a column named 'userid', which in actual usage
>> (next-to-last line quoted) is populated by 'user' which seems undefined in
>> the context.  Was that intended to be 'current_user', or am I missing
>> something?

> user is a valid pseudo-function:
> https://www.postgresql.org/docs/current/functions-info.html#FUNCTIONS-INFO-SESSION

Yeah, either way has the same result.  However, I wonder if we should
change this example to use current_user for clarity.  It does look
more like it's intended to be a variable or column reference than
a built-in function.

regards, tom lane




Re: Typo in PL/pgSQL trigger Example 43.4?

2023-10-07 Thread David G. Johnston
On Sat, Oct 7, 2023 at 11:11 AM Kirk Parker  wrote:

>
> INSERT INTO emp_audit SELECT 'D', now(), user, OLD.*; -- <=
> ARGUMENT IN QUESTION
>  The emp_audit table has a column named 'userid', which in actual usage
> (next-to-last line quoted) is populated by 'user' which seems undefined in
> the context.  Was that intended to be 'current_user', or am I missing
> something?
>

user is a valid pseudo-function:

https://www.postgresql.org/docs/current/functions-info.html#FUNCTIONS-INFO-SESSION

David J.


Typo in PL/pgSQL trigger Example 43.4?

2023-10-07 Thread Kirk Parker
 The PL/pgSQL page on triggers (
https://www.postgresql.org/docs/16/plpgsql-trigger.html ) contains the
following example (I'm excerpting only the essential parts here):

Example 43.4. A PL/pgSQL Trigger Function for Auditing
...
CREATE TABLE emp_audit(
operation  char(1)   NOT NULL,
stamp  timestamp NOT NULL,
userid text  NOT NULL,  -- <= COLUMN IN QUESTION
empnametext  NOT NULL,
salary integer
  );

  CREATE OR REPLACE FUNCTION process_emp_audit() RETURNS TRIGGER AS
$emp_audit$
BEGIN
  --
  -- Create a row in emp_audit to reflect the operation performed
on emp,
  -- making use of the special variable TG_OP to work out the
operation.
  --
  IF (TG_OP = 'DELETE') THEN
INSERT INTO emp_audit SELECT 'D', now(), user, OLD.*; -- <=
ARGUMENT IN QUESTION
  -- similar code with same issue follows for the other TG_OPs...

The emp_audit table has a column named 'userid', which in actual usage
(next-to-last line quoted) is populated by 'user' which seems undefined in
the context.  Was that intended to be 'current_user', or am I missing
something?