@@ -164,6 +164,7 @@ def _configure_pgaudit(self, enable: bool) -> None:
164
164
connection = self ._connect_to_database ()
165
165
connection .autocommit = True
166
166
with connection .cursor () as cursor :
167
+ cursor .execute ("RESET ROLE;" )
167
168
if enable :
168
169
cursor .execute ("ALTER SYSTEM SET pgaudit.log = 'ROLE,DDL,MISC,MISC_SET';" )
169
170
cursor .execute ("ALTER SYSTEM SET pgaudit.log_client TO off;" )
@@ -242,11 +243,11 @@ def create_database(
242
243
if cursor .fetchone () is None :
243
244
cursor .execute (SQL ("SET ROLE charmed_databases_owner;" ))
244
245
cursor .execute (SQL ("CREATE DATABASE {};" ).format (Identifier (database )))
245
- cursor .execute (
246
- SQL ("REVOKE ALL PRIVILEGES ON DATABASE {} FROM PUBLIC;" ).format (
247
- Identifier (database )
246
+ cursor .execute (
247
+ SQL ("REVOKE ALL PRIVILEGES ON DATABASE {} FROM PUBLIC;" ).format (
248
+ Identifier (database )
249
+ )
248
250
)
249
- )
250
251
with self ._connect_to_database (database = database ) as conn , conn .cursor () as curs :
251
252
curs .execute (SQL ("SELECT set_up_predefined_catalog_roles();" ))
252
253
except psycopg2 .Error as e :
@@ -306,11 +307,12 @@ def create_user(
306
307
f"WITH LOGIN{ ' SUPERUSER' if admin else '' } ENCRYPTED PASSWORD '{ password } '"
307
308
)
308
309
if in_role :
309
- user_definition += f" IN ROLE { in_role } "
310
+ user_definition += f" IN ROLE \" { in_role } \" "
310
311
if can_create_database :
311
312
user_definition += " CREATEDB"
312
313
if privileges :
313
314
user_definition += f" { ' ' .join (privileges )} "
315
+ cursor .execute (SQL ("RESET ROLE;" ))
314
316
cursor .execute (SQL ("BEGIN;" ))
315
317
cursor .execute (SQL ("SET LOCAL log_statement = 'none';" ))
316
318
cursor .execute (SQL (f"{ user_definition } ;" ).format (Identifier (user )))
@@ -976,8 +978,9 @@ def set_up_predefined_catalog_roles_function(self) -> None:
976
978
BEGIN
977
979
database := (SELECT current_database());
978
980
current_session_user := (SELECT session_user);
979
- owner_user := database || '_owner';
980
- admin_user := database || '_admin';
981
+ owner_user := quote_ident(database || '_owner');
982
+ admin_user := quote_ident(database || '_admin');
983
+ database := quote_ident(database);
981
984
982
985
IF (SELECT COUNT(rolname) FROM pg_roles WHERE rolname=admin_user) = 0 THEN
983
986
statements := ARRAY[
@@ -1068,6 +1071,7 @@ def update_user_password(
1068
1071
with self ._connect_to_database (
1069
1072
database_host = database_host
1070
1073
) as connection , connection .cursor () as cursor :
1074
+ cursor .execute (SQL ("RESET ROLE;" ))
1071
1075
cursor .execute (SQL ("BEGIN;" ))
1072
1076
cursor .execute (SQL ("SET LOCAL log_statement = 'none';" ))
1073
1077
cursor .execute (
0 commit comments