Skip to content

set_user/set_user_u only sets log_statement='all' if superuser #84

@cbrianpace

Description

@cbrianpace

When using set_user or set_user_u, it appears that log_statement is only set to 'all' if the user is escalating to a superuser. Reading the documents, it appears that the intent is log_statement is always set to 'all' as long as set_user.block_log_statement is set to true/on.

Shouldn't log_statement always be set to all?

$ psql -h localhost -d hrlab -U sec_user
psql (16.3 (Homebrew))
Type "help" for help.

hrlab=> show log_statement;
log_statement

none
(1 row)

hrlab=> select set_user_u('postgres');
set_user_u

OK
(1 row)

hrlab=# show log_statement;
log_statement

all
(1 row)

hrlab=# select reset_user();
reset_user

OK
(1 row)

hrlab=> show log_statement;
log_statement

none
(1 row)

hrlab=> select set_user_u('hrapp');
set_user_u

OK
(1 row)

hrlab=> show log_statement;
log_statement

none
(1 row)

hrlab=> select reset_user();
reset_user

OK
(1 row)

hrlab=> select set_user('hrapp');
set_user

OK
(1 row)

hrlab=> show log_statement;
log_statement

none
(1 row)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions