mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2026-10-27 23:20:05 -05:00
fix: quote username in types/compound_triggers test helpers for dotted local roles
Two more test setUp helpers had the same dot-username bug as user_mappings (504775de8): server['username'] was substituted into the OWNER TO clause unquoted, so a local PG role with a dot (e.g. 'ashesh.vashi') was rejected with 'syntax error at or near "."'. - types/tests/utils.py - 'ALTER TYPE ... OWNER TO %s' now uses Driver.qtIdent() for the username. - compound_triggers/tests/utils.py - sql_query template substitution now passes the qtIdent-quoted username. Same Driver.qtIdent(None, server['username']) approach as in504775de8.
This commit is contained in:
1 parent
504775de80
commit
9b29bc2033
2 files changed
+12
-2
No files matched your search
+6
-1
@@ -13,6 +13,7 @@ import traceback
|
||||
import os
|
||||
import json
|
||||
|
||||
from pgadmin.utils.driver.psycopg3 import Driver
|
||||
from regression.python_test_utils import test_utils as utils
|
||||
|
||||
CURRENT_PATH = os.path.dirname(os.path.realpath(__file__))
|
||||
@@ -100,8 +101,12 @@ def create_view(server, db_name, schema_name, sql_query, view_name):
|
||||
old_isolation_level = connection.isolation_level
|
||||
utils.set_isolation_level(connection, 0)
|
||||
pg_cursor = connection.cursor()
|
||||
# Quote the username as an SQL identifier so usernames containing
|
||||
# special characters (e.g. dots like 'ashesh.vashi') do not parse
|
||||
# as schema-qualified names.
|
||||
quoted_username = Driver.qtIdent(None, server['username'])
|
||||
query = sql_query % (schema_name, view_name, schema_name, view_name,
|
||||
server['username'])
|
||||
quoted_username)
|
||||
pg_cursor.execute(query)
|
||||
utils.set_isolation_level(connection, old_isolation_level)
|
||||
connection.commit()
|
||||
|
||||
@@ -13,6 +13,7 @@ import traceback
|
||||
import os
|
||||
import json
|
||||
|
||||
from pgadmin.utils.driver.psycopg3 import Driver
|
||||
from regression.python_test_utils import test_utils as utils
|
||||
|
||||
CURRENT_PATH = os.path.dirname(os.path.realpath(__file__))
|
||||
@@ -57,10 +58,14 @@ def create_type(server, db_name, schema_name, type_name):
|
||||
old_isolation_level = connection.isolation_level
|
||||
utils.set_isolation_level(connection, 0)
|
||||
pg_cursor = connection.cursor()
|
||||
# Quote the username as an SQL identifier so usernames containing
|
||||
# special characters (e.g. dots like 'ashesh.vashi') do not parse
|
||||
# as schema-qualified names.
|
||||
quoted_username = Driver.qtIdent(None, server['username'])
|
||||
query = 'CREATE TYPE %s.%s AS (one "char", two "char"[]); ' \
|
||||
'ALTER TYPE %s.%s OWNER TO %s' % (schema_name, type_name,
|
||||
schema_name, type_name,
|
||||
server['username'])
|
||||
quoted_username)
|
||||
pg_cursor.execute(query)
|
||||
utils.set_isolation_level(connection, old_isolation_level)
|
||||
connection.commit()
|
||||
|
||||
Reference in new issue
Block a user