diff --git a/pkg/win32/installer.iss.in b/pkg/win32/installer.iss.in index a06ef21ee..a0decbf88 100644 --- a/pkg/win32/installer.iss.in +++ b/pkg/win32/installer.iss.in @@ -199,7 +199,7 @@ begin else begin // Suppose system is running a 32-bit version of Windows then no need to check HKLM64 in RegQueryStringValue - // So IsWin64 - will make sure its should only execute on 64-bit veersion of windows. + // So IsWin64 - will make sure its should only execute on 64-bit version of windows. if IsWin64 then begin // Check if pgAdmin 64 bit is already installed diff --git a/requirements.txt b/requirements.txt index c42270821..aff02fa57 100644 --- a/requirements.txt +++ b/requirements.txt @@ -29,7 +29,7 @@ six==1.* speaklater3==1.* sqlparse==0.* psutil==5.* -psycopg2==2.9.* +psycopg==3.1.0 python-dateutil==2.* SQLAlchemy==1.4.* bcrypt==3.* diff --git a/web/config.py b/web/config.py index ce64f6c73..67083c382 100644 --- a/web/config.py +++ b/web/config.py @@ -300,7 +300,7 @@ LOG_ROTATION_MAX_LOG_FILES = 90 # Maximum number of backups to retain ########################################################################## # The default driver used for making connection with PostgreSQL -PG_DEFAULT_DRIVER = 'psycopg2' +PG_DEFAULT_DRIVER = 'psycopg3' # Maximum allowed idle time in minutes before which releasing the connection # for the particular session. (in minutes) diff --git a/web/pgadmin/browser/server_groups/servers/__init__.py b/web/pgadmin/browser/server_groups/servers/__init__.py index 62afc31c5..f054dcef5 100644 --- a/web/pgadmin/browser/server_groups/servers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/__init__.py @@ -28,7 +28,7 @@ from pgadmin.utils.driver import get_driver from pgadmin.utils.master_password import get_crypt_key from pgadmin.utils.exception import CryptKeyMissing from pgadmin.tools.schema_diff.node_registry import SchemaDiffRegistry -from psycopg2 import Error as psycopg2_Error, OperationalError +from psycopg import Error as psycopg_Error, OperationalError from pgadmin.browser.server_groups.servers.utils import is_valid_ipaddress from pgadmin.utils.constants import UNAUTH_REQ, MIMETYPE_APP_JS, \ SERVER_CONNECTION_CLOSED @@ -231,7 +231,7 @@ class ServerModule(sg.ServerGroupPluginModule): except CryptKeyMissing: # show the nodes at least even if not able to connect. pass - except psycopg2_Error as e: + except psycopg_Error as e: current_app.logger.exception(e) errmsg = str(e) diff --git a/web/pgadmin/browser/server_groups/servers/databases/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/__init__.py index 3eb369f49..675927036 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/__init__.py @@ -473,7 +473,7 @@ class DatabaseView(PGChildNodeView): SQL = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), did=did, conn=self.conn, last_system_oid=0, - show_system_objects=self.blueprint.show_system_objects, + show_system_objects=self.blueprint.show_system_objects ) status, res = self.conn.execute_dict(SQL) diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py index 8d9fa3686..7e7a46f8a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py @@ -348,7 +348,8 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare): "/".join([self.template_path, self._PROPERTIES_SQL]), cid=cid, datlastsysoid=last_system_oid, - showsysobj=self.blueprint.show_system_objects + showsysobj=self.blueprint.show_system_objects, + conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -408,7 +409,8 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare): srctyp=data['srctyp'], trgtyp=data['trgtyp'], datlastsysoid=last_system_oid, - showsysobj=self.blueprint.show_system_objects + showsysobj=self.blueprint.show_system_objects, + conn=self.conn ) status, cid = self.conn.execute_scalar(sql) if not status: @@ -584,7 +586,8 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare): "/".join([self.template_path, self._PROPERTIES_SQL]), cid=cid, datlastsysoid=last_system_oid, - showsysobj=self.blueprint.show_system_objects + showsysobj=self.blueprint.show_system_objects, + conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -599,7 +602,7 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare): old_data = res['rows'][0] sql = render_template( "/".join([self.template_path, self._UPDATE_SQL]), - data=data, o_data=old_data + data=data, o_data=old_data, conn=self.conn ) return sql, data['name'] if 'name' in data else old_data['name'] else: @@ -630,7 +633,8 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template("/".join([self.template_path, self._FUNCTIONS_SQL]), srctyp=data['srctyp'], - trgtyp=data['trgtyp']) + trgtyp=data['trgtyp'], + conn=self.conn) status, rset = self.conn.execute_dict(sql) if not status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/create.sql index 25f12945e..38fb177f8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/create.sql @@ -11,5 +11,5 @@ CREATE CAST ({{ conn|qtTypeIdent(data.srctyp) }} AS {{ conn|qtTypeIdent(data.trg {# Description for CAST #} {% if data.description %} COMMENT ON CAST ({{ conn|qtTypeIdent(data.srctyp) }} AS {{ conn|qtTypeIdent(data.trgtyp) }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %}{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/functions.sql b/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/functions.sql index 60e6e3568..8ab6f00ea 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/functions.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/functions.sql @@ -6,8 +6,8 @@ SELECT FROM pg_catalog.pg_proc p JOIN pg_catalog.pg_namespace n ON n.oid=p.pronamespace WHERE - proargtypes[0] = (SELECT t.oid FROM pg_catalog.pg_type t WHERE pg_catalog.format_type(t.oid, NULL) = {{srctyp|qtLiteral}}) - AND prorettype = (SELECT t.oid FROM pg_catalog.pg_type t WHERE pg_catalog.format_type(t.oid, NULL) = {{trgtyp|qtLiteral}}) + proargtypes[0] = (SELECT t.oid FROM pg_catalog.pg_type t WHERE pg_catalog.format_type(t.oid, NULL) = {{srctyp|qtLiteral(conn)}}) + AND prorettype = (SELECT t.oid FROM pg_catalog.pg_type t WHERE pg_catalog.format_type(t.oid, NULL) = {{trgtyp|qtLiteral(conn)}}) AND CASE WHEN pg_catalog.array_length(proargtypes,1) = 2 THEN proargtypes[1] = 23 diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/properties.sql index db1b8d5be..1d949e1be 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/properties.sql @@ -3,8 +3,8 @@ SELECT ca.oid FROM pg_catalog.pg_cast ca - WHERE ca.castsource = (SELECT t.oid FROM pg_catalog.pg_type t WHERE pg_catalog.format_type(t.oid, NULL) = {{srctyp|qtLiteral}}) - AND ca.casttarget = (SELECT t.oid FROM pg_catalog.pg_type t WHERE pg_catalog.format_type(t.oid, NULL) = {{trgtyp|qtLiteral}}) + WHERE ca.castsource = (SELECT t.oid FROM pg_catalog.pg_type t WHERE pg_catalog.format_type(t.oid, NULL) = {{srctyp|qtLiteral(conn)}}) + AND ca.casttarget = (SELECT t.oid FROM pg_catalog.pg_type t WHERE pg_catalog.format_type(t.oid, NULL) = {{trgtyp|qtLiteral(conn)}}) {% if datlastsysoid %} AND ca.oid > {{datlastsysoid}}::OID {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/update.sql index e0bd4e82d..ae3418f53 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/update.sql @@ -2,5 +2,5 @@ {% if data and 'description' in data and data.description != o_data.description %} COMMENT ON CAST ({{ conn|qtTypeIdent(o_data.srctyp) }} AS {{ conn|qtTypeIdent(o_data.trgtyp) }}) - IS {{ data.description|qtLiteral }}; -{% endif %} \ No newline at end of file + IS {{ data.description|qtLiteral(conn) }}; +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/cast_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/cast_test_data.json index 8bba162c0..4fcf78c8e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/cast_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/cast_test_data.json @@ -88,7 +88,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -110,7 +110,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "Exception('Mocked Exception Message')" }, "expected_data": { @@ -153,7 +153,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -186,7 +186,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -249,7 +249,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -292,7 +292,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -315,7 +315,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "Exception('Mocked Exception Message')" }, "expected_data": { @@ -402,7 +402,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -425,7 +425,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -552,7 +552,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -575,7 +575,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -639,7 +639,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -661,7 +661,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "Exception('Mocked Exception Message')" }, "expected_data": { @@ -727,7 +727,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -749,7 +749,7 @@ "test_data": {}, "mocking_required": false, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/utils.py index 8fbd0ac8d..2ef30dd2a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/utils.py @@ -158,11 +158,11 @@ def create_cast(server, source_type, target_type): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute("CREATE CAST (%s AS %s) WITHOUT" " FUNCTION AS IMPLICIT" % (source_type, target_type)) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created cast diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/default/get_oid.sql index fac696092..8f5c225cb 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/default/get_oid.sql @@ -1,5 +1,5 @@ {# The Sql below will provide oid for newly created event_trigger #} {% if data %} SELECT e.oid from pg_catalog.pg_event_trigger e -WHERE e.evtname = {{ data.name|qtLiteral }} +WHERE e.evtname = {{ data.name|qtLiteral(conn) }} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/default/grant.sql b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/default/grant.sql index b8f47b882..7dedb64fc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/default/grant.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/default/grant.sql @@ -13,7 +13,7 @@ ALTER EVENT TRIGGER {{ conn|qtIdent(data.name) }} {% if data.comment %} COMMENT ON EVENT TRIGGER {{ conn|qtIdent(data.name) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {% if data.seclabels and data.seclabels|length > 0 %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/event_triggers_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/event_triggers_test_data.json index c067a572f..2fedc979b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/event_triggers_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/event_triggers_test_data.json @@ -86,7 +86,7 @@ ], "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while creating a event trigger')" }, "expected_data": { @@ -114,7 +114,7 @@ ], "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True), (False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -138,7 +138,7 @@ ], "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True), (True, True), (False, 'Mocked Internal Server Error while getting oid of created event trigger')" }, "expected_data": { @@ -188,7 +188,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a event trigger')" }, "expected_data": { @@ -226,7 +226,7 @@ "event_trigger_list": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a event trigger')" }, "expected_data": { @@ -252,7 +252,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while deleting a event trigger')" }, "expected_data": { @@ -278,7 +278,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True),(False, 'Mocked Internal Server Error while deleting a event trigger')" }, "expected_data": { @@ -312,7 +312,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while fetching a event trigger')" }, "expected_data": { @@ -394,7 +394,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching a event trigger nodes')" }, "expected_data": { @@ -420,7 +420,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching a event trigger nodes')" }, "expected_data": { @@ -446,7 +446,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a event trigger sql')" }, "expected_data": { @@ -460,7 +460,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while fetching a DB created Event Trigger sql')" }, "expected_data": { @@ -509,7 +509,7 @@ "event_trigger_functions": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching a event trigger functions')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/utils.py index ce225106b..5f1302932 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/utils.py @@ -13,7 +13,8 @@ import traceback import os import json -from regression.python_test_utils.test_utils import get_db_connection +from regression.python_test_utils.test_utils import get_db_connection,\ + set_isolation_level from regression.python_test_utils import test_utils as utils CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) @@ -46,12 +47,12 @@ def create_event_trigger(server, db_name, schema_name, func_name, server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute('''CREATE EVENT TRIGGER "%s" ON DDL_COMMAND_END EXECUTE PROCEDURE "%s"."%s"()''' % (trigger_name, schema_name, func_name)) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created event trigger pg_cursor.execute( diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py index f198b6b86..79ea56fc2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py @@ -158,7 +158,8 @@ class ExtensionView(PGChildNodeView, SchemaDiffObjectCompare): Fetches all extensions properties and render into properties tab """ SQL = render_template("/".join([self.template_path, - self._PROPERTIES_SQL])) + self._PROPERTIES_SQL]), + conn=self.conn) status, res = self.conn.execute_dict(SQL) if not status: @@ -175,7 +176,8 @@ class ExtensionView(PGChildNodeView, SchemaDiffObjectCompare): """ res = [] SQL = render_template("/".join([self.template_path, - self._PROPERTIES_SQL])) + self._PROPERTIES_SQL]), + conn=self.conn) status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=rset) @@ -201,7 +203,7 @@ class ExtensionView(PGChildNodeView, SchemaDiffObjectCompare): """ SQL = render_template("/".join([self.template_path, self._PROPERTIES_SQL]), - eid=eid) + eid=eid, conn=self.conn) status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=rset) @@ -241,7 +243,8 @@ class ExtensionView(PGChildNodeView, SchemaDiffObjectCompare): :return: """ SQL = render_template("/".join( - [self.template_path, self._PROPERTIES_SQL]), eid=eid) + [self.template_path, self._PROPERTIES_SQL]), eid=eid, + conn=self.conn) status, res = self.conn.execute_dict(SQL) if not status: return False, internal_server_error(errormsg=res) @@ -424,7 +427,7 @@ class ExtensionView(PGChildNodeView, SchemaDiffObjectCompare): if eid is not None: SQL = render_template("/".join( [self.template_path, self._PROPERTIES_SQL] - ), eid=eid) + ), eid=eid, conn=self.conn) status, res = self.conn.execute_dict(SQL) if not status: return internal_server_error(errormsg=res) @@ -483,7 +486,7 @@ class ExtensionView(PGChildNodeView, SchemaDiffObjectCompare): """ SQL = render_template("/".join( [self.template_path, self._PROPERTIES_SQL] - ), eid=eid) + ), eid=eid, conn=self.conn) status, res = self.conn.execute_dict(SQL) if not status: return internal_server_error(errormsg=res) @@ -557,7 +560,8 @@ class ExtensionView(PGChildNodeView, SchemaDiffObjectCompare): res = dict() sql = render_template("/".join([self.template_path, - self._PROPERTIES_SQL])) + self._PROPERTIES_SQL]), + conn=self.conn) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=rset) diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/templates/extensions/sql/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/extensions/templates/extensions/sql/properties.sql index 62f0ea838..02466b8e7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/extensions/templates/extensions/sql/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/templates/extensions/sql/properties.sql @@ -11,7 +11,7 @@ FROM {%- if eid %} WHERE x.oid = {{eid}}::oid {% elif ename %} - WHERE x.extname = {{ename|qtLiteral}}::text + WHERE x.extname = {{ename|qtLiteral(conn)}}::text {% else %} ORDER BY x.extname {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/utils.py index f8ae91ede..f62df5bef 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/utils.py @@ -11,7 +11,8 @@ import sys import traceback -from regression.python_test_utils.test_utils import get_db_connection +from regression.python_test_utils.test_utils import get_db_connection,\ + set_isolation_level def get_extension_data(schema_name): @@ -45,12 +46,12 @@ def create_extension(server, db_name, extension_name, schema_name): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute( '''CREATE EXTENSION "%s" SCHEMA "%s"''' % (extension_name, schema_name)) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created extension pg_cursor.execute("SELECT oid FROM pg_catalog.pg_extension " diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/utils.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/utils.py index 4a1758bef..e8c3118f8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/extensions/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/utils.py @@ -28,7 +28,7 @@ def get_extension_details(conn, ename, properties_sql=None): [ExtensionView.EXT_TEMPLATE_PATH, 'properties.sql']) status, rset = conn.execute_dict( - render_template(properties_sql, ename=ename) + render_template(properties_sql, ename=ename, conn=conn) ) if status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py index 8db8f2ecb..a09c89639 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py @@ -394,7 +394,7 @@ class ForeignDataWrapperView(PGChildNodeView, SchemaDiffObjectCompare): ) sql = render_template("/".join([self.template_path, self._ACL_SQL]), - fid=fid + fid=fid, conn=self.conn ) status, fdw_acl_res = self.conn.execute_dict(sql) @@ -815,7 +815,7 @@ class ForeignDataWrapperView(PGChildNodeView, SchemaDiffObjectCompare): is_valid_options = True sql = render_template("/".join([self.template_path, self._ACL_SQL]), - fid=fid) + fid=fid, conn=self.conn) status, fdw_acl_res = self.conn.execute_dict(sql) if not status: return internal_server_error(errormsg=fdw_acl_res) @@ -969,7 +969,7 @@ class ForeignDataWrapperView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template("/".join([self.template_path, self._PROPERTIES_SQL]), - schema_diff=True) + schema_diff=True, conn=self.conn) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=rset) diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py index 2c776fb85..285bc9974 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py @@ -382,7 +382,7 @@ class ForeignServerView(PGChildNodeView, SchemaDiffObjectCompare): ) sql = render_template("/".join([self.template_path, self._ACL_SQL]), - fsid=fsid + fsid=fsid, conn=self.conn ) status, fs_rv_acl_res = self.conn.execute_dict(sql) if not status: @@ -930,7 +930,7 @@ class ForeignServerView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template("/".join([self.template_path, self._PROPERTIES_SQL]), - schema_diff=True) + schema_diff=True, conn=self.conn) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=rset) diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/acl.sql index 71735320c..e3660a6d4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/acl.sql @@ -11,7 +11,7 @@ FROM LEFT OUTER JOIN pg_catalog.pg_shdescription descr ON ( fsrv.oid=descr.objoid AND descr.classoid='pg_foreign_server'::regclass) {% if fsid %} - WHERE fsrv.oid = {{ fsid|qtLiteral }}::OID + WHERE fsrv.oid = {{ fsid|qtLiteral(conn) }}::OID {% endif %} ) acl, pg_catalog.aclexplode(srvacl) d diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/create.sql index d2e63d83d..a8ae9020a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/create.sql @@ -3,15 +3,15 @@ {% if data.name %} CREATE SERVER {{ conn|qtIdent(data.name) }}{% if data.fsrvtype %} - TYPE {{ data.fsrvtype|qtLiteral }}{% endif %}{% if data.fsrvversion %} + TYPE {{ data.fsrvtype|qtLiteral(conn) }}{% endif %}{% if data.fsrvversion %} - VERSION {{ data.fsrvversion|qtLiteral }}{%-endif %}{% if fdwdata %} + VERSION {{ data.fsrvversion|qtLiteral(conn) }}{%-endif %}{% if fdwdata %} FOREIGN DATA WRAPPER {{ conn|qtIdent(fdwdata.name) }}{% endif %}{% if data.fsrvoptions %} {% if is_valid_options %} OPTIONS ({% for variable in data.fsrvoptions %}{% if loop.index != 1 %}, {% endif %} -{{ conn|qtIdent(variable.fsrvoption) }} {{ variable.fsrvvalue|qtLiteral }}{% endfor %}){% endif %}{% endif %}; +{{ conn|qtIdent(variable.fsrvoption) }} {{ variable.fsrvvalue|qtLiteral(conn) }}{% endfor %}){% endif %}{% endif %}; {# ============= Set the owner for foreign server ============= #} {% if data.fsrvowner %} @@ -22,7 +22,7 @@ ALTER SERVER {{ conn|qtIdent(data.name) }} {% if data.description %} COMMENT ON SERVER {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ============= Set the ACL for foreign server ============= #} diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/properties.sql index 3fd87ac1e..8208bebac 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/properties.sql @@ -12,9 +12,9 @@ FROM pg_catalog.pg_foreign_server srv LEFT OUTER JOIN pg_catalog.pg_foreign_data_wrapper fdw on fdw.oid=srvfdw LEFT OUTER JOIN pg_catalog.pg_description des ON (des.objoid=srv.oid AND des.objsubid=0 AND des.classoid='pg_foreign_server'::regclass) {% if data and fdwdata %} -WHERE fdw.fdwname = {{ fdwdata.name|qtLiteral }}::text and srvname = {{ data.name|qtLiteral }}::text +WHERE fdw.fdwname = {{ fdwdata.name|qtLiteral(conn) }}::text and srvname = {{ data.name|qtLiteral(conn) }}::text {% elif fdwdata %} -WHERE fdw.fdwname = {{fdwdata.name|qtLiteral}}::text +WHERE fdw.fdwname = {{fdwdata.name|qtLiteral(conn)}}::text {% endif %} {% if fid %} WHERE srvfdw={{fid}}::oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/update.sql index 1ac494aaa..d3cb005fa 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/update.sql @@ -20,14 +20,14 @@ DROP SERVER {{ conn|qtIdent(o_data.name) }}; CREATE SERVER {{ conn|qtIdent(o_data.name) }}{% if fsrvtype %} - TYPE {{ fsrvtype|qtLiteral }}{% endif %}{% if fsrvversion %} + TYPE {{ fsrvtype|qtLiteral(conn) }}{% endif %}{% if fsrvversion %} - VERSION {{ fsrvversion|qtLiteral }}{%-endif %}{% if fdwname %} + VERSION {{ fsrvversion|qtLiteral(conn) }}{%-endif %}{% if fdwname %} FOREIGN DATA WRAPPER {{ conn|qtIdent(fdwname) }}{% endif %}{% if o_data.fsrvoptions %} OPTIONS ({% for variable in o_data.fsrvoptions %}{% if loop.index != 1 %}, {% endif %} -{{ conn|qtIdent(variable.fsrvoption) }} {{ variable.fsrvvalue|qtLiteral }}{% endfor %}){% endif %}; +{{ conn|qtIdent(variable.fsrvoption) }} {{ variable.fsrvvalue|qtLiteral(conn) }}{% endfor %}){% endif %}; ALTER SERVER {{ conn|qtIdent(o_data.name) }} OWNER TO {{ conn|qtIdent(o_data.fsrvowner) }}; @@ -49,13 +49,13 @@ ALTER SERVER {{ conn|qtIdent(data.name) }} {# ============= Update foreign server version ============= #} {% if data.fsrvversion is defined and data.fsrvversion is not none and data.fsrvversion != o_data.fsrvversion %} ALTER SERVER {{ conn|qtIdent(data.name) }} - VERSION {{ data.fsrvversion|qtLiteral }}; + VERSION {{ data.fsrvversion|qtLiteral(conn) }}; {% endif %} {# ============= Update foreign server comments ============= #} {% if data.description is defined and data.description != o_data.description %} COMMENT ON SERVER {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ============= Update foreign server options and values ============= #} @@ -70,7 +70,7 @@ DROP {{ conn|qtIdent(variable.fsrvoption) }}{% endfor %} {% if is_valid_added_options %} ALTER SERVER {{ conn|qtIdent(data.name) }} OPTIONS ({% for variable in data.fsrvoptions.added %}{% if loop.index != 1 %}, {% endif %} -ADD {{ conn|qtIdent(variable.fsrvoption) }} {{ variable.fsrvvalue|qtLiteral }}{% endfor %} +ADD {{ conn|qtIdent(variable.fsrvoption) }} {{ variable.fsrvvalue|qtLiteral(conn) }}{% endfor %} ); {% endif %} @@ -79,7 +79,7 @@ ADD {{ conn|qtIdent(variable.fsrvoption) }} {{ variable.fsrvvalue|qtLiteral }}{% {% if is_valid_changed_options %} ALTER SERVER {{ conn|qtIdent(data.name) }} OPTIONS ({% for variable in data.fsrvoptions.changed %}{% if loop.index != 1 %}, {% endif %} -SET {{ conn|qtIdent(variable.fsrvoption) }} {{ variable.fsrvvalue|qtLiteral }}{% endfor %} +SET {{ conn|qtIdent(variable.fsrvoption) }} {{ variable.fsrvvalue|qtLiteral(conn) }}{% endfor %} ); {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/foreign_servers_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/foreign_servers_test_data.json index fd2eea9a3..a6dfb7f4a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/foreign_servers_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/foreign_servers_test_data.json @@ -43,7 +43,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -58,7 +58,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while creating a foreign server')" }, "expected_data": { @@ -84,7 +84,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -156,7 +156,7 @@ "internal_server_error": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching foreign server nodes')" }, "expected_data": { @@ -182,7 +182,7 @@ "internal_server_error": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching foreign server nodes')" }, "expected_data": { @@ -216,7 +216,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error while fetching a foreign server')]" }, "expected_data": { @@ -242,7 +242,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a foreign server')" }, "expected_data": { @@ -279,7 +279,7 @@ "foreign_server_list": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a foreign server')" }, "expected_data": { @@ -305,7 +305,7 @@ "internal_server_error": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a foreign server')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/utils.py index 68351a4c1..5a7321174 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/utils.py @@ -13,7 +13,8 @@ import sys import uuid import json -from regression.python_test_utils.test_utils import get_db_connection +from regression.python_test_utils.test_utils import get_db_connection,\ + set_isolation_level file_name = os.path.basename(__file__) CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) @@ -74,14 +75,14 @@ def create_fsrv(server, db_name, fsrv_name, fdw_name): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute("CREATE SERVER {0} FOREIGN DATA WRAPPER {1} OPTIONS " "(host '{2}', dbname '{3}', port '{4}')".format (fsrv_name, fdw_name, server['host'], db_name, server['port'])) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created foreign server diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/templates/user_mappings/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/templates/user_mappings/sql/default/create.sql index 3df2d146a..6a72133e1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/templates/user_mappings/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/templates/user_mappings/sql/default/create.sql @@ -3,4 +3,4 @@ CREATE USER MAPPING FOR {% if data.name == "CURRENT_USER" or data.name == "PUBLIC" %}{{ data.name }}{% else %}{{ conn|qtIdent(data.name) }}{% endif %} SERVER {{ conn|qtIdent(fdwdata.name) }}{%endif%}{% if data.umoptions %}{% if is_valid_options %} OPTIONS ({% for variable in data.umoptions %}{% if loop.index != 1 %}, {% endif %} -{{ conn|qtIdent(variable.umoption) }} {{ variable.umvalue|qtLiteral }}{% endfor %}){% endif %}{% endif %}; +{{ conn|qtIdent(variable.umoption) }} {{ variable.umvalue|qtLiteral(conn) }}{% endfor %}){% endif %}{% endif %}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/templates/user_mappings/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/templates/user_mappings/sql/default/update.sql index 416c29d96..fe6eaadf2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/templates/user_mappings/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/templates/user_mappings/sql/default/update.sql @@ -10,7 +10,7 @@ DROP {{ conn|qtIdent(variable.umoption) }}{% endfor %} {% if is_valid_added_options %} ALTER USER MAPPING FOR {{ conn|qtIdent(o_data.name) }} SERVER {{ conn|qtIdent(fdwdata.name) }} OPTIONS ({% for variable in data.umoptions.added %}{% if loop.index != 1 %}, {% endif %} -ADD {{ conn|qtIdent(variable.umoption) }} {{ variable.umvalue|qtLiteral }}{% endfor %} +ADD {{ conn|qtIdent(variable.umoption) }} {{ variable.umvalue|qtLiteral(conn) }}{% endfor %} ); {% endif %} @@ -19,8 +19,8 @@ ADD {{ conn|qtIdent(variable.umoption) }} {{ variable.umvalue|qtLiteral }}{% end {% if is_valid_changed_options %} ALTER USER MAPPING FOR {{ conn|qtIdent(o_data.name) }} SERVER {{ conn|qtIdent(fdwdata.name) }} OPTIONS ({% for variable in data.umoptions.changed %}{% if loop.index != 1 %}, {% endif %} -SET {{ conn|qtIdent(variable.umoption) }} {{ variable.umvalue|qtLiteral }}{% endfor %} +SET {{ conn|qtIdent(variable.umoption) }} {{ variable.umvalue|qtLiteral(conn) }}{% endfor %} ); {% endif %} -{% endif %} \ No newline at end of file +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/tests/user_mapping_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/tests/user_mapping_test_data.json index b90ac63c3..87e2076a4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/tests/user_mapping_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/tests/user_mapping_test_data.json @@ -19,7 +19,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while creating a user mapping')" }, "expected_data": { @@ -59,7 +59,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -85,7 +85,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -124,7 +124,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while deleting a user mapping')" }, "expected_data": { @@ -184,7 +184,7 @@ "internal_server_error": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching user mapping nodes')" }, "expected_data": { @@ -210,7 +210,7 @@ "internal_server_error": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching user mapping nodes')" }, "expected_data": { @@ -260,7 +260,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error while fetching a user mapping')]" }, "expected_data": { @@ -286,7 +286,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a user mapping')" }, "expected_data": { @@ -323,7 +323,7 @@ "um_list": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a user mapping')" }, "expected_data": { @@ -349,7 +349,7 @@ "internal_server_error": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a user mapping')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/tests/utils.py index 2942a68e4..fd516de35 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/tests/utils.py @@ -13,7 +13,8 @@ import sys import traceback import json -from regression.python_test_utils.test_utils import get_db_connection +from regression.python_test_utils.test_utils import get_db_connection,\ + set_isolation_level CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) with open(CURRENT_PATH + "/user_mapping_test_data.json") as data_file: @@ -58,7 +59,7 @@ def create_user_mapping(server, db_name, fsrv_name): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "CREATE USER MAPPING FOR %s SERVER %s OPTIONS" \ " (user '%s', password '%s')" % (server['username'], @@ -67,7 +68,7 @@ def create_user_mapping(server, db_name, fsrv_name): server['db_password'] ) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created user mapping pg_cursor.execute( diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/acl.sql index c4fc13910..3bd1d0129 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/acl.sql @@ -11,7 +11,7 @@ FROM LEFT OUTER JOIN pg_catalog.pg_shdescription descr ON ( fdw.oid=descr.objoid AND descr.classoid='pg_foreign_data_wrapper'::regclass) {% if fid %} - WHERE fdw.oid = {{ fid|qtLiteral }}::OID + WHERE fdw.oid = {{ fid|qtLiteral(conn) }}::OID {% endif %} ) acl, pg_catalog.aclexplode(fdwacl) d diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/create.sql index a29fd75b1..8285ecab2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/create.sql @@ -9,7 +9,7 @@ CREATE FOREIGN DATA WRAPPER {{ conn|qtIdent(data.name) }}{% if data.fdwvalue %} {% if is_valid_options %} OPTIONS ({% for variable in data.fdwoptions %}{% if loop.index != 1 %}, {% endif %} -{{ conn|qtIdent(variable.fdwoption) }} {{ variable.fdwvalue|qtLiteral }}{% endfor %}){% endif %}{% endif %}; +{{ conn|qtIdent(variable.fdwoption) }} {{ variable.fdwvalue|qtLiteral(conn) }}{% endfor %}){% endif %}{% endif %}; {# ============= Set the owner for foreign data wrapper ============= #} {% if data.fdwowner %} @@ -20,7 +20,7 @@ ALTER FOREIGN DATA WRAPPER {{ conn|qtIdent(data.name) }} {# ============= Comment on of foreign data wrapper object ============= #} {% if data.description %} COMMENT ON FOREIGN DATA WRAPPER {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ============= Create ACL for foreign data wrapper ============= #} diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/properties.sql index 1c21a5583..0a7881f65 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/properties.sql @@ -21,7 +21,7 @@ FROM pg_catalog.pg_foreign_data_wrapper fdw WHERE fdw.oid={{fid}}::oid {% endif %} {% if fname %} -WHERE fdw.fdwname={{ fname|qtLiteral }}::text +WHERE fdw.fdwname={{ fname|qtLiteral(conn) }}::text {% endif %} {% if schema_diff %} WHERE CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/update.sql index aeae3f79d..297fdc558 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/default/update.sql @@ -37,7 +37,7 @@ ALTER FOREIGN DATA WRAPPER {{ conn|qtIdent(data.name) }} {# ============= Update foreign data wrapper comments ============= #} {% if data.description is defined and data.description != o_data.description %} COMMENT ON FOREIGN DATA WRAPPER {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ============= Update foreign data wrapper options and values ============= #} @@ -52,7 +52,7 @@ DROP {{ conn|qtIdent(variable.fdwoption) }}{% endfor %} {% if is_valid_added_options %} ALTER FOREIGN DATA WRAPPER {{ conn|qtIdent(data.name) }} OPTIONS ({% for variable in data.fdwoptions.added %}{% if loop.index != 1 %}, {% endif %} -ADD {{ conn|qtIdent(variable.fdwoption) }} {{ variable.fdwvalue|qtLiteral }}{% endfor %} +ADD {{ conn|qtIdent(variable.fdwoption) }} {{ variable.fdwvalue|qtLiteral(conn) }}{% endfor %} ); {% endif %} @@ -61,7 +61,7 @@ ADD {{ conn|qtIdent(variable.fdwoption) }} {{ variable.fdwvalue|qtLiteral }}{% e {% if is_valid_changed_options %} ALTER FOREIGN DATA WRAPPER {{ conn|qtIdent(data.name) }} OPTIONS ({% for variable in data.fdwoptions.changed %}{% if loop.index != 1 %}, {% endif %} -SET {{ conn|qtIdent(variable.fdwoption) }} {{ variable.fdwvalue|qtLiteral }}{% endfor %} +SET {{ conn|qtIdent(variable.fdwoption) }} {{ variable.fdwvalue|qtLiteral(conn) }}{% endfor %} ); {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/fdw_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/fdw_test_data.json index 6137b5762..8151d4129 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/fdw_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/fdw_test_data.json @@ -19,7 +19,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while creating a foreign data wrapper')" }, "expected_data": { @@ -34,7 +34,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(True, True), (False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -94,7 +94,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while deleting a fdw')" }, "expected_data": { @@ -108,7 +108,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True), (False, 'Mocked Internal Server Error while deleting a fdw')" }, "expected_data": { @@ -158,7 +158,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching fdw nodes')" }, "expected_data": { @@ -184,7 +184,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching fdw nodes')" }, "expected_data": { @@ -222,7 +222,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching handlers')" }, "expected_data": { @@ -248,7 +248,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching handlers')" }, "expected_data": { @@ -282,7 +282,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while updating fdw')" }, "expected_data": { @@ -308,7 +308,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a fdw')" }, "expected_data": { @@ -346,7 +346,7 @@ "fdw_list": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a fdw')" }, "expected_data": { @@ -372,7 +372,7 @@ "internal_server_error": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/utils.py index b58ce65d0..24e69af0d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/utils.py @@ -14,7 +14,8 @@ import uuid import json import os -from regression.python_test_utils.test_utils import get_db_connection +from regression.python_test_utils.test_utils import get_db_connection,\ + set_isolation_level CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) with open(CURRENT_PATH + "/fdw_test_data.json") as data_file: @@ -66,11 +67,11 @@ def create_fdw(server, db_name, fdw_name): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute('''CREATE FOREIGN DATA WRAPPER "%s" OPTIONS (op1 '5')''' % fdw_name) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created foreign data wrapper pg_cursor.execute( diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py index 71746a57c..67bdf36eb 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py @@ -260,7 +260,8 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare): did: Database ID """ sql = render_template("/".join([self.template_path, - self._PROPERTIES_SQL])) + self._PROPERTIES_SQL]), + conn=self.conn) status, res = self.conn.execute_dict(sql) if not status: @@ -283,7 +284,8 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare): """ res = [] sql = render_template("/".join([self.template_path, - self._PROPERTIES_SQL])) + self._PROPERTIES_SQL]), + conn=self.conn) status, result = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=result) @@ -315,7 +317,8 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare): """ sql = render_template("/".join([self.template_path, self._PROPERTIES_SQL]), - lid=lid) + lid=lid, + conn=self.conn) status, result = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=result) @@ -362,7 +365,7 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare): """ sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), - lid=lid + lid=lid, conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -378,7 +381,7 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._ACL_SQL]), - lid=lid + lid=lid, conn=self.conn ) status, result = self.conn.execute_dict(sql) if not status: @@ -631,7 +634,8 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare): if lid is not None: sql = render_template( - "/".join([self.template_path, self._PROPERTIES_SQL]), lid=lid + "/".join([self.template_path, self._PROPERTIES_SQL]), lid=lid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: @@ -722,7 +726,7 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare): """ sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), - lid=lid + lid=lid, conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: @@ -736,7 +740,7 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._ACL_SQL]), - lid=lid + lid=lid, conn=self.conn ) status, result = self.conn.execute_dict(sql) if not status: @@ -826,7 +830,8 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare): res = dict() sql = render_template("/".join([self.template_path, self._PROPERTIES_SQL]), - schema_diff=True) + schema_diff=True, + conn=self.conn) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=rset) diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/acl.sql index 219165e06..a4d2acb1d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/acl.sql @@ -10,7 +10,7 @@ FROM FROM (SELECT lanacl FROM pg_catalog.pg_language lan LEFT OUTER JOIN pg_catalog.pg_shdescription descr ON (lan.oid=descr.objoid AND descr.classoid='pg_language'::regclass) - WHERE lan.oid = {{ lid|qtLiteral }}::OID + WHERE lan.oid = {{ lid|qtLiteral(conn) }}::OID ) acl, pg_catalog.aclexplode(lanacl) d ) d diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/create.sql index c353fdea0..ab2e7abf7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/create.sql @@ -23,7 +23,7 @@ ALTER LANGUAGE {{ conn|qtIdent(data.name) }} {# ============= Comment on of language object ============= #} {% if data.description %} COMMENT ON LANGUAGE {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ============= Create ACL for language ============= #} {% if data.lanacl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/properties.sql index 664e2734a..423b5ebe4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/properties.sql @@ -18,7 +18,7 @@ WHERE lanispl IS TRUE lan.oid={{lid}}::oid {% endif %} {% if lanname %} AND - lanname={{ lanname|qtLiteral }}::text + lanname={{ lanname|qtLiteral(conn) }}::text {% endif %} {% if schema_diff %} AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/sqlpane.sql b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/sqlpane.sql index 363578974..f85b858b2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/sqlpane.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/sqlpane.sql @@ -24,7 +24,7 @@ ALTER LANGUAGE {{ conn|qtIdent(data.name) }} {% if data.description %} COMMENT ON LANGUAGE {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ============= PRIVILEGES on LANGUAGE ============= #} {% if data.lanacl and data.lanacl|length > 0 %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/language_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/language_test_data.json index 3e928dec1..28f3c96c9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/language_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/language_test_data.json @@ -65,7 +65,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" } }, @@ -88,7 +88,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(True, True), (False, 'Mocked Internal Server Error')" } } @@ -127,7 +127,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" } }, @@ -142,7 +142,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "PLACE_HOLDER" } }, @@ -156,7 +156,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" } }, @@ -171,7 +171,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" } } @@ -197,7 +197,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" } }, @@ -223,7 +223,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" } } @@ -270,7 +270,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "PLACE_HOLDER" }, "expected_data": { @@ -312,7 +312,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" } } @@ -346,7 +346,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" } }, @@ -362,7 +362,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" } } @@ -409,7 +409,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" } }, @@ -424,7 +424,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True), (False, 'Mocked Internal Server Error')" } } diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_delete.py b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_delete.py index f785df836..ff819a013 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_delete.py +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_delete.py @@ -53,7 +53,7 @@ class LanguagesDeleteTestCase(BaseTestGenerator): expected_status_code = self.expected_data['status_code'] elif self.error_in_deleting_language: - # with patch('pgadmin.utils.driver.psycopg2.connection.Connection' + # with patch('pgadmin.utils.driver.psycopg3.connection.Connection' # '.execute_scalar', # side_effect=[(True, True), ( # False, self.expected_data["message"])]): diff --git a/web/pgadmin/browser/server_groups/servers/databases/publications/tests/publication_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/publications/tests/publication_test_data.json index ba3473eb4..1b91e7c44 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/publications/tests/publication_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/publications/tests/publication_test_data.json @@ -81,7 +81,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -104,7 +104,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(True, True)(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -129,7 +129,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -154,7 +154,7 @@ "database_nodes": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -197,7 +197,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -234,7 +234,7 @@ "database_nodes": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -259,7 +259,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -323,7 +323,7 @@ "id": "PLACE_HOLDER" }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -375,7 +375,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -388,7 +388,7 @@ "is_positive_test": true, "mocking_required": false, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/publications/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/publications/tests/utils.py index 6812f9782..0a3160403 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/publications/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/publications/tests/utils.py @@ -59,12 +59,12 @@ def create_publication(server, db_name, publication_name): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "CREATE publication %s FOR ALL TABLES" % \ (publication_name) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get role oid of newly added publication pg_cursor.execute("select oid from pg_catalog.pg_publication pub " @@ -139,11 +139,11 @@ def delete_publication(server, db_name, publication_name): publication_count = pg_cursor.fetchone() if publication_count: old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "DROP publication %s" % publication_name pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() except Exception: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/__init__.py index 09a82b398..df9982b53 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/__init__.py @@ -412,7 +412,8 @@ class SchemaView(PGChildNodeView): SQL = render_template( "/".join([self.template_path, 'sql/acl.sql']), _=gettext, - scid=scid + scid=scid, + conn=self.conn ) status, acl = self.conn.execute_dict(SQL) if not status: @@ -518,7 +519,8 @@ class SchemaView(PGChildNodeView): show_sysobj=show_system_objects, _=gettext, scid=scid, - schema_restrictions=param + schema_restrictions=param, + conn=self.conn ) status, rset = self.conn.execute_2darray(SQL) @@ -578,7 +580,8 @@ class SchemaView(PGChildNodeView): "/".join([self.template_path, self._SQL_PREFIX + self._NODES_SQL]), show_sysobj=self.blueprint.show_system_objects, _=gettext, - scid=scid + scid=scid, + conn=self.conn ) status, rset = self.conn.execute_2darray(SQL) @@ -663,6 +666,17 @@ It may have been removed by another user. request.data, encoding='utf-8' ) + for k, v in data.items(): + try: + # comments should be taken as is because if user enters a + # json comment it is parsed by loads which should not happen + if k in ('comment',): + data[k] = v + else: + data[k] = json.loads(v, encoding='utf-8') + except (ValueError, TypeError, KeyError): + data[k] = v + required_args = { 'name': 'Name' } @@ -695,7 +709,7 @@ It may have been removed by another user. # below sql will gives the same SQL = render_template( "/".join([self.template_path, 'sql/oid.sql']), - schema=data['name'], _=gettext + schema=data['name'], _=gettext, conn=self.conn ) status, scid = self.conn.execute_scalar(SQL) @@ -991,7 +1005,7 @@ It may have been removed by another user. SQL = render_template( "/".join([self.template_path, 'sql/is_catalog.sql']), - scid=kwargs['scid'], _=gettext + scid=kwargs['scid'], _=gettext, conn=self.conn ) status, res = self.conn.execute_dict(SQL) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py index 0a4cbcb0d..6c5a80981 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py @@ -487,7 +487,8 @@ class CollationView(PGChildNodeView, SchemaDiffObjectCompare): # We need oid to add object in tree at browser SQL = render_template( - "/".join([self.template_path, self._OID_SQL]), data=data + "/".join([self.template_path, self._OID_SQL]), data=data, + conn=self.conn ) status, coid = self.conn.execute_scalar(SQL) if not status: @@ -495,7 +496,8 @@ class CollationView(PGChildNodeView, SchemaDiffObjectCompare): # Get updated schema oid SQL = render_template( - "/".join([self.template_path, self._OID_SQL]), coid=coid + "/".join([self.template_path, self._OID_SQL]), coid=coid, + conn=self.conn ) status, new_scid = self.conn.execute_scalar(SQL) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/create.sql index 8d29fcb67..7e23cc1c5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/create.sql @@ -2,11 +2,11 @@ CREATE COLLATION{% if add_not_exists_clause %} IF NOT EXISTS{% endif %} {{ conn|qtIdent(data.schema, data.name) }} {# if user has provided lc_collate & lc_type #} {% if data.lc_collate and data.lc_type %} - (LC_COLLATE = {{ data.lc_collate|qtLiteral }}, LC_CTYPE = {{ data.lc_type|qtLiteral }}); + (LC_COLLATE = {{ data.lc_collate|qtLiteral(conn) }}, LC_CTYPE = {{ data.lc_type|qtLiteral(conn) }}); {% endif %} {# if user has provided locale only #} {% if data.locale %} - (LOCALE = {{ data.locale|qtLiteral }}); + (LOCALE = {{ data.locale|qtLiteral(conn) }}); {% endif %} {# if user has choosed to copy from existing collation #} {% if data.copy_collation %} @@ -20,6 +20,6 @@ ALTER COLLATION {{ conn|qtIdent(data.schema, data.name) }} {% if data.description %} COMMENT ON COLLATION {{ conn|qtIdent(data.schema, data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/get_oid.sql index 9ea30952d..6a1f140bb 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/get_oid.sql @@ -3,8 +3,8 @@ SELECT c.oid FROM pg_catalog.pg_collation c, pg_catalog.pg_namespace n WHERE c.collnamespace=n.oid AND - n.nspname = {{ data.schema|qtLiteral }} AND - c.collname = {{ data.name|qtLiteral }} + n.nspname = {{ data.schema|qtLiteral(conn) }} AND + c.collname = {{ data.name|qtLiteral(conn) }} {% elif coid %} SELECT c.collnamespace as scid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/update.sql index e84f28f27..174d3327d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/update.sql @@ -8,10 +8,10 @@ DROP COLLATION {{ conn|qtIdent(o_data.schema, o_data.name) }}; CREATE COLLATION {{ conn|qtIdent(o_data.schema, o_data.name) }} {% if data.lc_collate and data.lc_type %} - (LC_COLLATE = {{ data.lc_collate|qtLiteral }}, LC_CTYPE = {{ data.lc_type|qtLiteral }}); + (LC_COLLATE = {{ data.lc_collate|qtLiteral(conn) }}, LC_CTYPE = {{ data.lc_type|qtLiteral(conn) }}); {% endif %} {% if data.locale %} - (LOCALE = {{ data.locale|qtLiteral }}); + (LOCALE = {{ data.locale|qtLiteral(conn) }}); {% endif %} {% if data.copy_collation %} FROM {{ data.copy_collation }}; @@ -28,7 +28,7 @@ ALTER COLLATION {{ conn|qtIdent(o_data.schema, o_data.name) }} {# Change object's comment #} {% if data.description is defined and data.description != o_data.description %} COMMENT ON COLLATION {{ conn|qtIdent(o_data.schema, o_data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# Change object name #} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/collations_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/collations_test_data.json index 187d72e7e..0d66fae14 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/collations_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/collations_test_data.json @@ -65,7 +65,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True), (False, 'Mocked Internal Server Error while getting oid of created collation')" }, "expected_data": { @@ -85,7 +85,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -111,7 +111,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a collation')" }, "expected_data": { @@ -149,7 +149,7 @@ "collation_list": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a collation')" }, "expected_data": { @@ -175,7 +175,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while deleting a collation')" }, "expected_data": { @@ -201,7 +201,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while deleting a collation')" }, "expected_data": { @@ -235,7 +235,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while fetching a collation')" }, "expected_data": { @@ -253,7 +253,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching a collation')" }, "expected_data": { @@ -301,7 +301,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching collation nodes')" }, "expected_data": { @@ -327,7 +327,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching collation nodes')" }, "expected_data": { @@ -352,7 +352,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching collations')" }, "expected_data": { @@ -390,7 +390,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a collation sql')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py index 8011eda39..4019a99c9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py @@ -598,7 +598,8 @@ AND relkind != 'c'))""" SQL = render_template("/".join([self.template_path, self._OID_SQL]), basensp=data['basensp'], - name=data['name']) + name=data['name'], + conn=self.conn) status, doid = self.conn.execute_scalar(SQL) if not status: return internal_server_error(errormsg=doid) @@ -606,7 +607,8 @@ AND relkind != 'c'))""" # Get updated schema oid SQL = render_template("/".join([self.template_path, self._OID_SQL]), - doid=doid) + doid=doid, + conn=self.conn) status, scid = self.conn.execute_scalar(SQL) if not status: return internal_server_error(errormsg=scid) @@ -706,7 +708,8 @@ AND relkind != 'c'))""" # Get Schema Id SQL = render_template("/".join([self.template_path, self._OID_SQL]), - doid=doid) + doid=doid, + conn=self.conn) status, scid = self.conn.execute_scalar(SQL) if not status: return internal_server_error(errormsg=scid) @@ -836,7 +839,7 @@ AND relkind != 'c'))""" SQL = render_template( "/".join([self.template_path, self._UPDATE_SQL]), - data=data, o_data=old_data) + data=data, o_data=old_data, conn=self.conn) return SQL, data def get_sql(self, gid, sid, data, scid, doid=None, is_schema_diff=False): diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/__init__.py index de705b9f8..14689d93d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/__init__.py @@ -445,7 +445,8 @@ class DomainConstraintView(PGChildNodeView): # Get the recently added constraints oid SQL = render_template("/".join([self.template_path, self._OID_SQL]), - doid=doid, name=data['name']) + doid=doid, name=data['name'], + conn=self.conn) status, coid = self.conn.execute_scalar(SQL) if not status: return internal_server_error(errormsg=coid) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/templates/domain_constraints/sql/9.2_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/templates/domain_constraints/sql/9.2_plus/update.sql index 5ea6a0c62..bb8bf47c2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/templates/domain_constraints/sql/9.2_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/templates/domain_constraints/sql/9.2_plus/update.sql @@ -10,4 +10,4 @@ ALTER DOMAIN {{ conn|qtIdent(o_data.nspname, o_data.relname) }} COMMENT ON CONSTRAINT {{ conn|qtIdent(name) }} ON DOMAIN {{ conn|qtIdent(o_data.nspname, o_data.relname) }} - IS {{ data.description|qtLiteral }};{% endif %} + IS {{ data.description|qtLiteral(conn) }};{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/templates/domain_constraints/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/templates/domain_constraints/sql/default/get_oid.sql index 2f1446987..2739ae8ac 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/templates/domain_constraints/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/templates/domain_constraints/sql/default/get_oid.sql @@ -4,4 +4,4 @@ FROM pg_catalog.pg_constraint WHERE contypid = {{doid}}::oid - AND conname={{ name|qtLiteral }}; + AND conname={{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/tests/domain_constraints_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/tests/domain_constraints_test_data.json index 43313dc11..d0b0f6d62 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/tests/domain_constraints_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/domain_constraints/tests/domain_constraints_test_data.json @@ -46,7 +46,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -86,7 +86,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, 'Mocking the scalar output'), (False, 'Mocked Internal Server Error while creating domain')" }, "expected_data": { @@ -131,7 +131,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while deleting a domain')" }, "expected_data": { @@ -145,7 +145,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while deleting a domain')" }, "expected_data": { @@ -230,7 +230,7 @@ "invalid": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching a domain constraints nodes')" }, "expected_data": { @@ -270,7 +270,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching a domain nodes')" }, "expected_data": { @@ -347,7 +347,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error while fetching a domain')]" }, "expected_data": { @@ -409,7 +409,7 @@ "internal_server_error": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a domain')" }, "expected_data": { @@ -499,7 +499,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a domain')" }, "expected_data": { @@ -536,7 +536,7 @@ "domain_constraint_list": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a domain constraint')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/default/get_oid.sql index 2c342e8c6..d43d04c96 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/default/get_oid.sql @@ -13,6 +13,6 @@ FROM JOIN pg_catalog.pg_namespace bn ON bn.oid=d.typnamespace WHERE - bn.nspname = {{ basensp|qtLiteral }} - AND d.typname={{ name|qtLiteral }}; + bn.nspname = {{ basensp|qtLiteral(conn) }} + AND d.typname={{ name|qtLiteral(conn) }}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/default/update.sql index acd093da7..67130a1ef 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/default/update.sql @@ -92,7 +92,7 @@ COMMENT ON CONSTRAINT {{ conn|qtIdent(c.conname) }} ON DOMAIN {{ conn|qtIdent(o_ {% endif -%}{% if data.description is defined and data.description != o_data.description %} COMMENT ON DOMAIN {{ conn|qtIdent(o_data.basensp, name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%}{% if data.basensp %} ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, name) }} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/domain_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/domain_test_data.json index 1451ab66e..5952a11e1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/domain_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/domain_test_data.json @@ -52,7 +52,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -86,7 +86,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, 'Mocking the scalar output'), (False, 'Mocked Internal Server Error while creating domain')" }, "expected_data": { @@ -120,7 +120,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True),(True, True), (False, 'Mocked Internal Server Error while creating domain')" }, "expected_data": { @@ -148,7 +148,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while deleting a domain')" }, "expected_data": { @@ -162,7 +162,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while deleting a domain')" }, "expected_data": { @@ -208,7 +208,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while fetching a domain')" }, "expected_data": { @@ -226,7 +226,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(True, True),(False, 'Mocked Internal Server Error while fetching a domain')]" }, "expected_data": { @@ -288,7 +288,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -319,7 +319,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching a domain nodes')" }, "expected_data": { @@ -345,7 +345,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching a domain nodes')" }, "expected_data": { @@ -383,7 +383,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a domain')" }, "expected_data": { @@ -409,7 +409,7 @@ "domain_list": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a domain')" }, "expected_data": { @@ -518,7 +518,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py index 5f9eb81a0..cd00ea739 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py @@ -727,7 +727,8 @@ class ForeignTableView(PGChildNodeView, DataTypeReader, SQL = render_template("/".join([self.template_path, self._OID_SQL]), basensp=basensp, - name=self.request['name']) + name=self.request['name'], + conn=self.conn) status, res = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=res) @@ -839,7 +840,8 @@ class ForeignTableView(PGChildNodeView, DataTypeReader, SQL = render_template("/".join([self.template_path, self._OID_SQL]), - foid=foid) + foid=foid, + conn=self.conn) status, res = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=res) @@ -897,7 +899,8 @@ class ForeignTableView(PGChildNodeView, DataTypeReader, SQL = render_template("/".join([self.template_path, self._CREATE_SQL]), data=data, is_sql=True, - add_not_exists_clause=True + add_not_exists_clause=True, + conn=self.conn ) if not json_resp: @@ -1084,11 +1087,11 @@ class ForeignTableView(PGChildNodeView, DataTypeReader, sql = render_template( "/".join([self.template_path, 'foreign_table_schema_diff.sql']), - data=data, o_data=old_data) + data=data, o_data=old_data, conn=self.conn) else: sql = render_template( "/".join([self.template_path, self._UPDATE_SQL]), - data=data, o_data=old_data + data=data, o_data=old_data, conn=self.conn ) return sql, data['name'] if 'name' in data else old_data['name'] else: @@ -1100,7 +1103,8 @@ class ForeignTableView(PGChildNodeView, DataTypeReader, ["a", "r", "w", "x"]) sql = render_template("/".join([self.template_path, - self._CREATE_SQL]), data=data) + self._CREATE_SQL]), data=data, + conn=self.conn) return sql, data['name'] @check_precondition diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/create.sql index 6cbaafb5b..ce235454f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/create.sql @@ -28,8 +28,8 @@ CREATE FOREIGN TABLE{% if add_not_exists_clause %} IF NOT EXISTS{% endif %} {{ c {% for o in data.ftoptions %} {% if o.option is defined and o.value is defined %} -{% if loop.first %} OPTIONS ({% endif %}{% if not loop.first %}, {% endif %}{{o.option}} {{o.value|qtLiteral}}{% if loop.last %}){% endif %}{% endif %} -{% endfor %}{% endif %}; +{% if loop.first %} OPTIONS ({% endif %}{% if not loop.first %}, {% endif %}{{o.option}} {{o.value|qtLiteral(conn)}}{% if loop.last %}){% endif %}{% endif %} +{% endfor %}{% endif -%}; {% if data.owner %} ALTER FOREIGN TABLE {{ conn|qtIdent(data.basensp, data.name) }} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/foreign_table_schema_diff.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/foreign_table_schema_diff.sql index 29596970d..4ba5fcf46 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/foreign_table_schema_diff.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/foreign_table_schema_diff.sql @@ -18,7 +18,7 @@ CREATE FOREIGN TABLE {{ conn|qtIdent(o_data.basensp, o_data.name) }}( {% if is_columns.append('1') %}{% endif %} {{conn|qtIdent(c.attname)}} {% if is_sql %}{{ c.fulltype }}{% else %}{{c.datatype }}{% if c.typlen %}({{c.typlen}}{% if c.precision %}, {{c.precision}}{% endif %}){% endif %}{% if c.isArrayType %}[]{% endif %}{% endif %}{% if c.coloptions %} {% for o in c.coloptions %}{% if o.option is defined and o.value is defined %} -{% if loop.first %} OPTIONS ({% endif %}{% if not loop.first %}, {% endif %}{{o.option}} {{o.value|qtLiteral}}{% if loop.last %}){% endif %}{% endif %} +{% if loop.first %} OPTIONS ({% endif %}{% if not loop.first %}, {% endif %}{{o.option}} {{o.value|qtLiteral(conn)}}{% if loop.last %}){% endif %}{% endif %} {% endfor %}{% endif %} {% if c.attnotnull %} NOT NULL{% else %} NULL{% endif %} {% if c.typdefault is defined and c.typdefault is not none %} DEFAULT {{c.typdefault}}{% endif %} @@ -37,7 +37,7 @@ CREATE FOREIGN TABLE {{ conn|qtIdent(o_data.basensp, o_data.name) }}( {% for o in ftoptions %} {% if o.option is defined and o.value is defined %} -{% if loop.first %} OPTIONS ({% endif %}{% if not loop.first %}, {% endif %}{{o.option}} {{o.value|qtLiteral}}{% if loop.last %}){% endif %}{% endif %} +{% if loop.first %} OPTIONS ({% endif %}{% if not loop.first %}, {% endif %}{{o.option}} {{o.value|qtLiteral(conn)}}{% if loop.last %}){% endif %}{% endif %} {% endfor %}{% endif %}; {% if data.owner or o_data.owner%} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/get_oid.sql index 38c01d2ce..187537975 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/get_oid.sql @@ -6,8 +6,8 @@ FROM JOIN pg_catalog.pg_namespace bn ON bn.oid=c.relnamespace WHERE - bn.nspname = {{ basensp|qtLiteral }} - AND c.relname={{ name|qtLiteral }}; + bn.nspname = {{ basensp|qtLiteral(conn) }} + AND c.relname={{ name|qtLiteral(conn) }}; {% elif foid %} SELECT diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/update.sql index e78766d20..b637c7ace 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/update.sql @@ -151,15 +151,13 @@ ALTER FOREIGN TABLE IF EXISTS {{ conn|qtIdent(o_data.basensp, name) }} {% for o in data.ftoptions.added %} {% if o.option is defined and o.value is defined %} ALTER FOREIGN TABLE IF EXISTS {{ conn|qtIdent(o_data.basensp, name) }} - OPTIONS (ADD {{o.option}} {{o.value|qtLiteral}}); - + OPTIONS (ADD {{o.option}} {{o.value|qtLiteral(conn)}}); {% endif %} {% endfor %} {% for o in data.ftoptions.changed %} {% if o.option is defined and o.value is defined %} ALTER FOREIGN TABLE IF EXISTS {{ conn|qtIdent(o_data.basensp, name) }} - OPTIONS (SET {{o.option}} {{o.value|qtLiteral}}); - + OPTIONS (SET {{o.option}} {{o.value|qtLiteral(conn)}}); {% endif %} {% endfor %} {% endif -%} @@ -184,7 +182,7 @@ ALTER FOREIGN TABLE IF EXISTS {{ conn|qtIdent(o_data.basensp, name) }} {% endif -%} {% if data.description is defined and data.description != o_data.description%} COMMENT ON FOREIGN TABLE {{ conn|qtIdent(o_data.basensp, name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.acl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/foreign_tables_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/foreign_tables_test_data.json index e9160e372..e4833564a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/foreign_tables_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/foreign_tables_test_data.json @@ -89,7 +89,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -153,7 +153,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -170,7 +170,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -217,7 +217,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -305,7 +305,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -359,7 +359,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/utils.py index cbb5d649e..a53a65930 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/utils.py @@ -12,7 +12,8 @@ import sys import traceback from urllib.parse import urlencode -from regression.python_test_utils.test_utils import get_db_connection +from regression.python_test_utils.test_utils import get_db_connection,\ + set_isolation_level from regression.python_test_utils import test_utils as utils # Load test data from json file. @@ -88,10 +89,10 @@ def create_foreign_table(server, db_name, schema_name, fsrv_name, server['host'], server['port']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created foreign table diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py index e14ca9857..4236ec03d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py @@ -257,7 +257,7 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), - scid=scid + scid=scid, conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -373,7 +373,8 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), scid=scid, - cfgid=cfgid + cfgid=cfgid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -475,7 +476,8 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), name=data['name'], - scid=data['schema'] + scid=data['schema'], + conn=self.conn ) status, res = self.conn.execute_2darray(sql) if not status: @@ -505,6 +507,12 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare): data = request.form if request.form else json.loads( request.data, encoding='utf-8' ) + + if cfgid == 0 or cfgid is None: + return gone( + _("Could not find the FTS Configuration node to update.") + ) + # Fetch sql query to update fts Configuration sql, name = self.get_sql(gid, sid, did, scid, data, cfgid) # Most probably this is due to error @@ -571,8 +579,9 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare): status, res = self.conn.execute_dict(sql) if not status: return internal_server_error(errormsg=res) - elif not res['rows']: + elif not res['rows'] or len(res['rows']) == 0: return make_json_response( + status=410, success=0, errormsg=_( 'Error: Object not found.' @@ -694,7 +703,8 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), cfgid=cfgid, - scid=scid + scid=scid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -737,7 +747,7 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._UPDATE_SQL]), - data=new_data, o_data=old_data + data=new_data, o_data=old_data, conn=self.conn ) # Fetch sql query for modified data if 'name' in data: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/create.sql index 8964d1e8b..547b8fda1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/create.sql @@ -15,5 +15,5 @@ ALTER TEXT SEARCH CONFIGURATION {{ conn|qtIdent(data.schema, data.name) }} OWNER {# Description for FTS_CONFIGURATION #} {% if data.description %} COMMENT ON TEXT SEARCH CONFIGURATION {{ conn|qtIdent(data.schema, data.name) }} - IS {{ data.description|qtLiteral }}; -{% endif %}{% endif %} \ No newline at end of file + IS {{ data.description|qtLiteral(conn) }}; +{% endif %}{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/properties.sql index 54ed1117e..a7a55846f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/properties.sql @@ -22,7 +22,7 @@ WHERE cfg.cfgnamespace = {{scid}}::OID {% endif %} {% if name %} - {% if scid %}AND {% endif %}cfg.cfgname = {{name|qtLiteral}} + {% if scid %}AND {% endif %}cfg.cfgname = {{name|qtLiteral(conn)}} {% endif %} {% if cfgid %} {% if scid %}AND {% else %}{% if name %}AND {% endif %}{% endif %}cfg.oid = {{cfgid}}::OID diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/update.sql index 2bc068ee7..933271536 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/update.sql @@ -46,6 +46,6 @@ ALTER TEXT SEARCH CONFIGURATION {{conn|qtIdent(o_data.schema)}}.{{conn|qtIdent(n {% endif %} {% if 'description' in data and data.description != o_data.description %} COMMENT ON TEXT SEARCH CONFIGURATION {{conn|qtIdent(schema)}}.{{conn|qtIdent(name)}} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/fts_configurations_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/fts_configurations_test_data.json index 9aac0a9bb..8dd4eb076 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/fts_configurations_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/fts_configurations_test_data.json @@ -39,7 +39,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching fts configuration nodes')" }, "expected_data": { @@ -65,7 +65,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching fts configuration nodes')" }, "expected_data": { @@ -81,7 +81,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(True, {'rows': []})" }, "expected_data": { @@ -107,7 +107,7 @@ "node": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching fts configuration nodes list')" }, "expected_data": { @@ -133,7 +133,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while fetching a fts configuration sql')" }, "expected_data": { @@ -148,7 +148,7 @@ "msql": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, None)" }, "expected_data": { @@ -177,7 +177,7 @@ "msql": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a fts configuration sql')" }, "expected_data": { @@ -203,7 +203,7 @@ "error_fetching_fts_configuration": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a fts configuration dictionaries')" }, "expected_data": { @@ -228,7 +228,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 0)" }, "expected_data": { @@ -253,7 +253,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a fts configuration dictionaries')" }, "expected_data": { @@ -278,7 +278,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a fts configuration dictionaries')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/test_fts_configuration_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/test_fts_configuration_delete.py index 62bf4c7a8..8fefe0e5a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/test_fts_configuration_delete.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/test_fts_configuration_delete.py @@ -84,7 +84,7 @@ class FTSConfDeleteTestCase(BaseTestGenerator): str(self.schema_id) + '/' + str(0), follow_redirects=True) - self.assertEqual(negative_delete_response.status_code, 500) + self.assertEqual(negative_delete_response.status_code, 410) def tearDown(self): """This function disconnect the test database.""" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/test_fts_configuration_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/test_fts_configuration_put.py index 2392f6c69..abf5f27be 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/test_fts_configuration_put.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/test_fts_configuration_put.py @@ -97,7 +97,7 @@ class FTSConfPutTestCase(BaseTestGenerator): str(0), data=json.dumps(data), follow_redirects=True) - self.assertEqual(negative_put_response.status_code, 500) + self.assertEqual(negative_put_response.status_code, 410) def tearDown(self): """This function delete the fts_config and disconnect the test diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py index c948a4877..ad330adb6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py @@ -265,7 +265,7 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), - scid=scid + scid=scid, conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -383,7 +383,8 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), scid=scid, - dcid=dcid + dcid=dcid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -472,7 +473,8 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), name=data['name'], - scid=data['schema'] + scid=data['schema'], + conn=self.conn ) status, dcid = self.conn.execute_scalar(sql) if not status: @@ -515,7 +517,8 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare): if dcid is not None: sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), - dcid=dcid + dcid=dcid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -569,6 +572,7 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare): return internal_server_error(errormsg=res) elif not res['rows']: return make_json_response( + status=410, success=0, errormsg=_( 'Error: Object not found.' @@ -699,7 +703,8 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), dcid=dcid, - scid=scid + scid=scid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -740,7 +745,7 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._UPDATE_SQL]), - data=new_data, o_data=old_data + data=new_data, o_data=old_data, conn=self.conn ) # Fetch sql query for modified data if 'name' in data: @@ -807,7 +812,8 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), scid=scid, - dcid=dcid + dcid=dcid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/create.sql index 759eeffc3..8418a3dbe 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/create.sql @@ -2,12 +2,12 @@ {% if data and data.schema and data.name and data.template %} CREATE TEXT SEARCH DICTIONARY {{ conn|qtIdent(data.schema, data.name) }} ( TEMPLATE = {{ data.template }}{% for variable in data.options %}{% if "option" in variable and variable.option != '' %}, - {{ conn|qtIdent(variable.option) }} = {% if is_displaying %}{{ variable.value }}{% else %}{{ variable.value|qtLiteral }}{% endif %}{% endif %}{% endfor %} + {{ conn|qtIdent(variable.option) }} = {% if is_displaying %}{{ variable.value }}{% else %}{{ variable.value|qtLiteral(conn) }}{% endif %}{% endif %}{% endfor %} ); {# Description for FTS_DICTIONARY #} {% if data.description %} COMMENT ON TEXT SEARCH DICTIONARY {{ conn|qtIdent(data.schema, data.name) }} - IS {{ data.description|qtLiteral }}; -{% endif %}{% endif %} \ No newline at end of file + IS {{ data.description|qtLiteral(conn) }}; +{% endif %}{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/properties.sql index 66f119bc6..65646b11f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/properties.sql @@ -17,7 +17,7 @@ WHERE dict.dictnamespace = {{scid}}::OID {% endif %} {% if name %} - {% if scid %}AND {% endif %}dict.dictname = {{name|qtLiteral}} + {% if scid %}AND {% endif %}dict.dictname = {{name|qtLiteral(conn)}} {% endif %} {% if dcid %} {% if scid %}AND {% else %}{% if name %}AND {% endif %}{% endif %}dict.oid = {{dcid}}::OID diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/update.sql index 8b17c68a8..ff846cb01 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/update.sql @@ -44,6 +44,6 @@ ALTER TEXT SEARCH DICTIONARY {{conn|qtIdent(o_data.schema)}}.{{conn|qtIdent(name {% endif %} {% if 'description' in data and data.description != o_data.description %} COMMENT ON TEXT SEARCH DICTIONARY {{conn|qtIdent(schema)}}.{{conn|qtIdent(name)}} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/tests/fts_dictionaries_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/tests/fts_dictionaries_test_data.json index 672524a4c..d513e09ed 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/tests/fts_dictionaries_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/tests/fts_dictionaries_test_data.json @@ -17,7 +17,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching fts dictionary nodes')" }, "expected_data": { @@ -43,7 +43,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching fts dictionary nodes')" }, "expected_data": { @@ -59,7 +59,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(True, {'rows': []})" }, "expected_data": { @@ -85,7 +85,7 @@ "node": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching fts dictionary nodes list')" }, "expected_data": { @@ -132,7 +132,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching fts dictionary template')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/tests/test_fts_dictionaries_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/tests/test_fts_dictionaries_delete.py index ff6613c41..147b0fdd8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/tests/test_fts_dictionaries_delete.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/tests/test_fts_dictionaries_delete.py @@ -88,7 +88,7 @@ class FtsDictionaryDeleteTestCase(BaseTestGenerator): str(0), follow_redirects=True) - self.assertEqual(negative_delete_response.status_code, 500) + self.assertEqual(negative_delete_response.status_code, 410) def tearDown(self): """This function disconnect the test database.""" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/__init__.py index f20be4ebe..b11abf3e5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/__init__.py @@ -249,7 +249,8 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare): def list(self, gid, sid, did, scid): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), - scid=scid + scid=scid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -341,7 +342,8 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), scid=scid, - pid=pid + pid=pid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -418,7 +420,8 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), name=data['name'], - scid=data['schema'] if 'schema' in data else scid + scid=data['schema'] if 'schema' in data else scid, + conn=self.conn ) status, pid = self.conn.execute_scalar(sql) if not status: @@ -461,7 +464,8 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), pid=pid, - scid=data['schema'] if 'schema' in data else scid + scid=data['schema'] if 'schema' in data else scid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -515,6 +519,7 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare): return internal_server_error(errormsg=res) elif not res['rows']: return make_json_response( + status=410, success=0, errormsg=_( 'Error: Object not found.' @@ -638,7 +643,8 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), pid=pid, - scid=scid + scid=scid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -681,7 +687,8 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._UPDATE_SQL]), data=new_data, - o_data=old_data + o_data=old_data, + conn=self.conn ) # Fetch sql query for modified data if 'name' in data: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/create.sql index 625856595..c38088ba2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/create.sql @@ -11,5 +11,5 @@ CREATE TEXT SEARCH PARSER {{ conn|qtIdent(data.schema, data.name) }} ( {# Description for FTS_PARSER #} {% if data.description %} COMMENT ON TEXT SEARCH PARSER {{ conn|qtIdent(data.schema, data.name) }} - IS {{ data.description|qtLiteral }}; -{% endif %}{% endif %} \ No newline at end of file + IS {{ data.description|qtLiteral(conn) }}; +{% endif %}{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/properties.sql index 82cd22570..918324800 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/properties.sql @@ -22,7 +22,7 @@ WHERE prs.prsnamespace = {{scid}}::OID {% endif %} {% if name %} - {% if scid %}AND {% endif %}prs.prsname = {{name|qtLiteral}} + {% if scid %}AND {% endif %}prs.prsname = {{name|qtLiteral(conn)}} {% endif %} {% if pid %} {% if name %}AND {% else %}{% if scid %}AND {% endif %}{% endif %}prs.oid = {{pid}}::OID diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/update.sql index 48e335b1d..fbb108518 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/update.sql @@ -34,6 +34,6 @@ CREATE TEXT SEARCH PARSER {{ conn|qtIdent(o_data.schema, name) }} ( {% endif %} {% if "description" in data and data.description != o_data.description %} COMMENT ON TEXT SEARCH PARSER {{conn|qtIdent(o_data.schema)}}.{{conn|qtIdent(name)}} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/tests/fts_parsers_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/tests/fts_parsers_test_data.json index c4493384d..133693c12 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/tests/fts_parsers_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/tests/fts_parsers_test_data.json @@ -17,7 +17,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching fts Parsers nodes')" }, "expected_data": { @@ -43,7 +43,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching fts Parsers nodes')" }, "expected_data": { @@ -59,7 +59,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(True, {'rows': []})" }, "expected_data": { @@ -85,7 +85,7 @@ "node": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching fts Parsers nodes list')" }, "expected_data": { @@ -133,7 +133,7 @@ "error_fetching_fts_parser": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching fts parser headline functions')" }, "expected_data": { @@ -159,7 +159,7 @@ "error_fetching_fts_parser": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching fts parser lextype functions')" }, "expected_data": { @@ -185,7 +185,7 @@ "error_fetching_fts_parser": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching fts parser end functions')" }, "expected_data": { @@ -211,7 +211,7 @@ "error_fetching_fts_parser": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching fts parser token functions')" }, "expected_data": { @@ -237,7 +237,7 @@ "error_fetching_fts_parser": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching fts parser start functions')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/tests/test_fts_parser_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/tests/test_fts_parser_delete.py index 78a180960..b9215a257 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/tests/test_fts_parser_delete.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/tests/test_fts_parser_delete.py @@ -86,7 +86,7 @@ class FtsParserDeleteTestCase(BaseTestGenerator): str(0), follow_redirects=True) - self.assertEqual(negative_delete_response.status_code, 500) + self.assertEqual(negative_delete_response.status_code, 410) def tearDown(self): """This function disconnect the test database.""" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py index f8256456d..c5eda826a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py @@ -228,7 +228,7 @@ class FtsTemplateView(PGChildNodeView, SchemaDiffObjectCompare): def list(self, gid, sid, did, scid): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), - scid=scid + scid=scid, conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -318,7 +318,8 @@ class FtsTemplateView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), scid=scid, - tid=tid + tid=tid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: @@ -389,7 +390,8 @@ class FtsTemplateView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), name=data['name'], - scid=data['schema'] if 'schema' in data else scid + scid=data['schema'] if 'schema' in data else scid, + conn=self.conn ) status, tid = self.conn.execute_scalar(sql) if not status: @@ -479,6 +481,7 @@ class FtsTemplateView(PGChildNodeView, SchemaDiffObjectCompare): if not res['rows']: return make_json_response( + status=410, success=0, errormsg=gettext( 'Error: Object not found.' @@ -609,7 +612,8 @@ class FtsTemplateView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._PROPERTIES_SQL]), tid=tid, - scid=scid + scid=scid, + conn=self.conn ) status, res = self.conn.execute_dict(sql) @@ -644,7 +648,7 @@ class FtsTemplateView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._UPDATE_SQL]), - data=new_data, o_data=old_data + data=new_data, o_data=old_data, conn=self.conn ) # Fetch sql query for modified data diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/create.sql index 3a290b382..17b357297 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/create.sql @@ -7,5 +7,5 @@ CREATE TEXT SEARCH TEMPLATE {{ conn|qtIdent(data.schema, data.name) }} ( {# Description for TEXT SEARCH TEMPLATE #} {% if data.description %} COMMENT ON TEXT SEARCH TEMPLATE {{ conn|qtIdent(data.schema, data.name) }} - IS {{ data.description|qtLiteral }}; -{% endif %}{% endif %} \ No newline at end of file + IS {{ data.description|qtLiteral(conn) }}; +{% endif %}{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/properties.sql index 0e9cd7bb2..5a3c5aa69 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/properties.sql @@ -19,7 +19,7 @@ WHERE tmpl.tmplnamespace = {{scid}}::OID {% endif %} {% if name %} - {% if scid %}AND {% endif %}tmpl.tmplname = {{name|qtLiteral}} + {% if scid %}AND {% endif %}tmpl.tmplname = {{name|qtLiteral(conn)}} {% endif %} {% if tid %} {% if name %}AND {% else %}{% if scid %}AND {% endif %}{% endif %}tmpl.oid = {{tid}}::OID diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/update.sql index d76f12115..ff8c52c50 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/update.sql @@ -32,6 +32,6 @@ CREATE TEXT SEARCH TEMPLATE {{ conn|qtIdent(o_data.schema, name) }} ( {% endif %} {% if 'description' in data and data.description != o_data.description %} COMMENT ON TEXT SEARCH TEMPLATE {{conn|qtIdent(o_data.schema)}}.{{conn|qtIdent(name)}} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/tests/fts_templates_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/tests/fts_templates_test_data.json index 2ee0b36a8..8fb038cfc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/tests/fts_templates_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/tests/fts_templates_test_data.json @@ -17,7 +17,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching fts templates nodes')" }, "expected_data": { @@ -43,7 +43,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching fts templates nodes')" }, "expected_data": { @@ -59,7 +59,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(True, {'rows': []})" }, "expected_data": { @@ -85,7 +85,7 @@ "node": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching fts templates nodes list')" }, "expected_data": { @@ -133,7 +133,7 @@ "error_fetching_fts_template": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching fts template init functions')" }, "expected_data": { @@ -159,7 +159,7 @@ "error_fetching_fts_template": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching fts template lexize functions')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/tests/test_fts_templates_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/tests/test_fts_templates_delete.py index 6546a8301..d1a324d23 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/tests/test_fts_templates_delete.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/tests/test_fts_templates_delete.py @@ -85,7 +85,7 @@ class FtsTemplateDeleteTestCase(BaseTestGenerator): str(0), follow_redirects=True) - self.assertEqual(negative_delete_response.status_code, 500) + self.assertEqual(negative_delete_response.status_code, 410) def tearDown(self): """This function disconnect the test database.""" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py index 88b39cb60..112ce066d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py @@ -385,7 +385,7 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): sql = render_template("/".join([self.sql_template_path, self._NODE_SQL]), - scid=scid) + scid=scid, conn=self.conn) status, res = self.conn.execute_dict(sql) if not status: @@ -411,7 +411,8 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): sql = render_template( "/".join([self.sql_template_path, self._NODE_SQL]), scid=scid, - fnid=fnid + fnid=fnid, + conn=self.conn ) status, rset = self.conn.execute_2darray(sql) @@ -857,7 +858,8 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): [self.sql_template_path, self._OID_SQL] ), nspname=self.request['pronamespace'], - name=self.request['name'] + name=self.request['name'], + conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: @@ -1102,7 +1104,8 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): data=resp_data, query_type="create", func_def=name_with_default_args, query_for="sql_panel", - add_replace_clause=True + add_replace_clause=True, + conn=self.conn ) return func_def @@ -1135,7 +1138,8 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): self._CREATE_SQL]), data=resp_data, query_type="create", func_def=name_with_default_args, - query_for="sql_panel") + query_for="sql_panel", + conn=self.conn) return func_def @@ -1462,7 +1466,7 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): sql = render_template( "/".join([self.sql_template_path, self._UPDATE_SQL]), - data=data, o_data=old_data + data=data, o_data=old_data, conn=self.conn ) return True, '', sql @@ -1561,7 +1565,7 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): # Create mode sql = render_template("/".join([self.sql_template_path, self._CREATE_SQL]), - data=data, is_sql=is_sql) + data=data, is_sql=is_sql, conn=self.conn) return True, sql.strip('\n') def _fetch_properties(self, gid, sid, did, scid, fnid=None): @@ -1961,7 +1965,7 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): if not oid: sql = render_template("/".join([self.sql_template_path, self._NODE_SQL]), scid=scid, - schema_diff=True) + schema_diff=True, conn=self.conn) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/coll_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/coll_stats.sql index c8c07e127..b9599093a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/coll_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/coll_stats.sql @@ -6,7 +6,7 @@ SELECT FROM pg_catalog.pg_stat_user_functions WHERE - schemaname = {{schema_name|qtLiteral}} + schemaname = {{schema_name|qtLiteral(conn)}} AND funcid IN ( SELECT p.oid FROM diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/get_oid.sql index 3d26cb9e8..cb2eb80f8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/get_oid.sql @@ -10,8 +10,8 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE pr.prokind IN ('f', 'w') AND typname NOT IN ('trigger', 'event_trigger') - AND pr.proname = {{ name|qtLiteral }}; + AND pr.proname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/node.sql index 91d857f38..dfc141f4f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/node.sql @@ -12,7 +12,7 @@ LEFT OUTER JOIN WHERE pr.prokind IN ('f', 'w') {% if fnid %} - AND pr.oid = {{ fnid|qtLiteral }} + AND pr.oid = {{ fnid|qtLiteral(conn) }} {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/update.sql index 6bc64af3c..5daef3a8b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/update.sql @@ -22,8 +22,8 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d RETURNS {% if 'prorettypename' in data %}{{ data.prorettypename }}{% else %}{{ o_data.prorettypename }}{% endif %} {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %}{% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }} {% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }}{% endif %} {% if ('proleakproof' in data and data.proleakproof) or ('proleakproof' not in data and o_data.proleakproof) %} LEAKPROOF{% elif 'proleakproof' in data and not data.proleakproof %} NOT LEAKPROOF{% endif %} {% if ('proisstrict' in data and data.proisstrict) or ('proisstrict' not in data and o_data.proisstrict) %} STRICT{% endif %} @@ -36,13 +36,13 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d ROWS {{data.prorows}}{% elif data.prorows is not defined and o_data.prorows and o_data.prorows != '0' %} ROWS {{o_data.prorows}} {%endif -%}{% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% if data.funcowner %} @@ -110,7 +110,7 @@ ALTER FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtype {% if data.description is defined and data.description != o_data.description%} COMMENT ON FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/create.sql index 7fc9fee57..1daa2e1bd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/create.sql @@ -16,7 +16,7 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% endif %} RETURNS{% if data.proretset and (data.prorettypename.startswith('SETOF ') or data.prorettypename.startswith('TABLE')) %} {{ data.prorettypename }} {% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} - LANGUAGE {{ data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% if data.procost %} COST {{data.procost}} {% endif %} @@ -35,11 +35,11 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% endif -%} {% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor %} {% endif %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; {% if data.funcowner %} @@ -59,7 +59,7 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args {% if data.description %} COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/update.sql index 01c749ceb..5e41fdaf0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/12_plus/update.sql @@ -22,8 +22,8 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d RETURNS {% if 'prorettypename' in data %}{{ data.prorettypename }}{% else %}{{ o_data.prorettypename }}{% endif %} {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %}{% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }} {% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }}{% endif %} {% if ('proleakproof' in data and data.proleakproof) or ('proleakproof' not in data and o_data.proleakproof) %} LEAKPROOF{% elif 'proleakproof' in data and not data.proleakproof %} NOT LEAKPROOF{% endif %} {% if ('proisstrict' in data and data.proisstrict) or ('proisstrict' not in data and o_data.proisstrict) %} STRICT{% endif %} @@ -38,13 +38,13 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d {% if data.prosupportfunc %}SUPPORT {{ data.prosupportfunc }}{% elif data.prosupportfunc is not defined and o_data.prosupportfunc %}SUPPORT {{ o_data.prosupportfunc }}{% endif -%}{% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% if data.funcowner %} @@ -112,7 +112,7 @@ ALTER FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtype {% if data.description is defined and data.description != o_data.description%} COMMENT ON FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/14_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/14_plus/create.sql index 4f4dbc76b..429c82d45 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/14_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/14_plus/create.sql @@ -16,7 +16,7 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% endif %} RETURNS{% if data.proretset and (data.prorettypename.startswith('SETOF ') or data.prorettypename.startswith('TABLE')) %} {{ data.prorettypename }} {% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} - LANGUAGE {{ data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% if data.procost %} COST {{data.procost}} {% endif %} @@ -35,13 +35,13 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% endif -%} {% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor %} {% endif %} {% if data.is_pure_sql %}{{ data.prosrc }} {% else %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; {% endif -%} @@ -62,7 +62,7 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args {% if data.description %} COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/14_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/14_plus/update.sql index 433fc6577..24d65f066 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/14_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/14_plus/update.sql @@ -22,8 +22,8 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d RETURNS {% if 'prorettypename' in data %}{{ data.prorettypename }}{% else %}{{ o_data.prorettypename }}{% endif %} {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %}{% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }} {% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }}{% endif %} {% if ('proleakproof' in data and data.proleakproof) or ('proleakproof' not in data and o_data.proleakproof) %} LEAKPROOF{% elif 'proleakproof' in data and not data.proleakproof %} NOT LEAKPROOF{% endif %} {% if ('proisstrict' in data and data.proisstrict) or ('proisstrict' not in data and o_data.proisstrict) %} STRICT{% endif %} @@ -38,15 +38,15 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d {% if data.prosupportfunc %}SUPPORT {{ data.prosupportfunc }}{% elif data.prosupportfunc is not defined and o_data.prosupportfunc %}SUPPORT {{ o_data.prosupportfunc }}{% endif -%}{% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} {% if data.is_pure_sql %}{{ data.prosrc }} {% else %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% endif -%} @@ -115,7 +115,7 @@ ALTER FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtype {% if data.description is defined and data.description != o_data.description%} COMMENT ON FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/coll_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/coll_stats.sql index 5dc51c08a..effaeeee3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/coll_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/coll_stats.sql @@ -6,7 +6,7 @@ SELECT FROM pg_catalog.pg_stat_user_functions WHERE - schemaname = {{schema_name|qtLiteral}} + schemaname = {{schema_name|qtLiteral(conn)}} AND funcid IN ( SELECT p.oid FROM diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/create.sql index f9cbda510..c58142347 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/create.sql @@ -16,7 +16,7 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% endif %} RETURNS{% if data.proretset and (data.prorettypename.startswith('SETOF ') or data.prorettypename.startswith('TABLE')) %} {{ data.prorettypename }} {% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} - LANGUAGE {{ data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% if data.procost %} COST {{data.procost}} {% endif %} @@ -32,11 +32,11 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% endif %} {% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor %} {% endif %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; {% if data.funcowner %} @@ -56,7 +56,7 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args {% if data.description %} COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/get_oid.sql index 336195aeb..fe091cc9c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/get_oid.sql @@ -10,8 +10,8 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE proisagg = FALSE AND typname NOT IN ('trigger', 'event_trigger') - AND pr.proname = {{ name|qtLiteral }}; + AND pr.proname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/node.sql index dbcb6b356..eecbdcfdd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/node.sql @@ -12,7 +12,7 @@ LEFT OUTER JOIN WHERE proisagg = FALSE {% if fnid %} - AND pr.oid = {{ fnid|qtLiteral }} + AND pr.oid = {{ fnid|qtLiteral(conn) }} {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/update.sql index 916347e13..ccd5ffa8a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/update.sql @@ -22,8 +22,8 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d RETURNS {% if 'prorettypename' in data %}{{ data.prorettypename }}{% else %}{{ o_data.prorettypename }}{% endif %} {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %}{% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }} {% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }}{% endif %} {% if ('proleakproof' in data and data.proleakproof) or ('proleakproof' not in data and o_data.proleakproof) %} LEAKPROOF{% elif 'proleakproof' in data and not data.proleakproof %} NOT LEAKPROOF{% endif %} {% if ('proisstrict' in data and data.proisstrict) or ('proisstrict' not in data and o_data.proisstrict) %} STRICT{% endif %} @@ -36,13 +36,13 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d ROWS {{data.prorows}}{% elif data.prorows is not defined and o_data.prorows and o_data.prorows != '0' %} ROWS {{o_data.prorows}} {%endif -%}{% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% if data.funcowner %} @@ -110,7 +110,7 @@ ALTER FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtype {% if data.description is defined and data.description != o_data.description%} COMMENT ON FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/coll_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/coll_stats.sql index c8c07e127..b9599093a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/coll_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/coll_stats.sql @@ -6,7 +6,7 @@ SELECT FROM pg_catalog.pg_stat_user_functions WHERE - schemaname = {{schema_name|qtLiteral}} + schemaname = {{schema_name|qtLiteral(conn)}} AND funcid IN ( SELECT p.oid FROM diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/get_oid.sql index 3d26cb9e8..cb2eb80f8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/get_oid.sql @@ -10,8 +10,8 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE pr.prokind IN ('f', 'w') AND typname NOT IN ('trigger', 'event_trigger') - AND pr.proname = {{ name|qtLiteral }}; + AND pr.proname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/node.sql index 06d701d5c..2b2dd8107 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/node.sql @@ -13,7 +13,7 @@ WHERE pr.prokind IN ('f', 'w') AND pr.protype = '0'::char {% if fnid %} - AND pr.oid = {{ fnid|qtLiteral }} + AND pr.oid = {{ fnid|qtLiteral(conn) }} {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/12_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/12_plus/create.sql index b4f164f9b..45728f8fc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/12_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/12_plus/create.sql @@ -16,7 +16,7 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% endif %} RETURNS{% if data.proretset and (data.prorettypename.startswith('SETOF ') or data.prorettypename.startswith('TABLE')) %} {{ data.prorettypename }} {% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} - LANGUAGE {{ data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% if data.procost %} COST {{data.procost}} {% endif %} @@ -36,11 +36,11 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% endif -%} {% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor %} {% endif %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; {% if data.funcowner %} @@ -60,7 +60,7 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args {% if data.description %} COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/12_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/12_plus/update.sql index 01c749ceb..5e41fdaf0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/12_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/12_plus/update.sql @@ -22,8 +22,8 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d RETURNS {% if 'prorettypename' in data %}{{ data.prorettypename }}{% else %}{{ o_data.prorettypename }}{% endif %} {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %}{% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }} {% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }}{% endif %} {% if ('proleakproof' in data and data.proleakproof) or ('proleakproof' not in data and o_data.proleakproof) %} LEAKPROOF{% elif 'proleakproof' in data and not data.proleakproof %} NOT LEAKPROOF{% endif %} {% if ('proisstrict' in data and data.proisstrict) or ('proisstrict' not in data and o_data.proisstrict) %} STRICT{% endif %} @@ -38,13 +38,13 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d {% if data.prosupportfunc %}SUPPORT {{ data.prosupportfunc }}{% elif data.prosupportfunc is not defined and o_data.prosupportfunc %}SUPPORT {{ o_data.prosupportfunc }}{% endif -%}{% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% if data.funcowner %} @@ -112,7 +112,7 @@ ALTER FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtype {% if data.description is defined and data.description != o_data.description%} COMMENT ON FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/14_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/14_plus/create.sql index 4f4dbc76b..429c82d45 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/14_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/14_plus/create.sql @@ -16,7 +16,7 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% endif %} RETURNS{% if data.proretset and (data.prorettypename.startswith('SETOF ') or data.prorettypename.startswith('TABLE')) %} {{ data.prorettypename }} {% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} - LANGUAGE {{ data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% if data.procost %} COST {{data.procost}} {% endif %} @@ -35,13 +35,13 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% endif -%} {% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor %} {% endif %} {% if data.is_pure_sql %}{{ data.prosrc }} {% else %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; {% endif -%} @@ -62,7 +62,7 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args {% if data.description %} COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/14_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/14_plus/update.sql index 433fc6577..24d65f066 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/14_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/14_plus/update.sql @@ -22,8 +22,8 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d RETURNS {% if 'prorettypename' in data %}{{ data.prorettypename }}{% else %}{{ o_data.prorettypename }}{% endif %} {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %}{% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }} {% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }}{% endif %} {% if ('proleakproof' in data and data.proleakproof) or ('proleakproof' not in data and o_data.proleakproof) %} LEAKPROOF{% elif 'proleakproof' in data and not data.proleakproof %} NOT LEAKPROOF{% endif %} {% if ('proisstrict' in data and data.proisstrict) or ('proisstrict' not in data and o_data.proisstrict) %} STRICT{% endif %} @@ -38,15 +38,15 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d {% if data.prosupportfunc %}SUPPORT {{ data.prosupportfunc }}{% elif data.prosupportfunc is not defined and o_data.prosupportfunc %}SUPPORT {{ o_data.prosupportfunc }}{% endif -%}{% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} {% if data.is_pure_sql %}{{ data.prosrc }} {% else %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% endif -%} @@ -115,7 +115,7 @@ ALTER FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtype {% if data.description is defined and data.description != o_data.description%} COMMENT ON FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/coll_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/coll_stats.sql index 5dc51c08a..effaeeee3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/coll_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/coll_stats.sql @@ -6,7 +6,7 @@ SELECT FROM pg_catalog.pg_stat_user_functions WHERE - schemaname = {{schema_name|qtLiteral}} + schemaname = {{schema_name|qtLiteral(conn)}} AND funcid IN ( SELECT p.oid FROM diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/create.sql index f9cbda510..c58142347 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/create.sql @@ -16,7 +16,7 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% endif %} RETURNS{% if data.proretset and (data.prorettypename.startswith('SETOF ') or data.prorettypename.startswith('TABLE')) %} {{ data.prorettypename }} {% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} - LANGUAGE {{ data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% if data.procost %} COST {{data.procost}} {% endif %} @@ -32,11 +32,11 @@ CREATE{% if query_type is defined %}{{' OR REPLACE'}}{% endif %} FUNCTION {{ con {% endif %} {% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor %} {% endif %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; {% if data.funcowner %} @@ -56,7 +56,7 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args {% if data.description %} COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/get_oid.sql index 336195aeb..fe091cc9c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/get_oid.sql @@ -10,8 +10,8 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE proisagg = FALSE AND typname NOT IN ('trigger', 'event_trigger') - AND pr.proname = {{ name|qtLiteral }}; + AND pr.proname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/node.sql index 40c4ce4ff..27e212782 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/node.sql @@ -13,7 +13,7 @@ WHERE proisagg = FALSE AND pr.protype = '0'::char {% if fnid %} - AND pr.oid = {{ fnid|qtLiteral }} + AND pr.oid = {{ fnid|qtLiteral(conn) }} {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/update.sql index 916347e13..ccd5ffa8a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/update.sql @@ -22,8 +22,8 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d RETURNS {% if 'prorettypename' in data %}{{ data.prorettypename }}{% else %}{{ o_data.prorettypename }}{% endif %} {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %}{% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }} {% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }}{% endif %} {% if ('proleakproof' in data and data.proleakproof) or ('proleakproof' not in data and o_data.proleakproof) %} LEAKPROOF{% elif 'proleakproof' in data and not data.proleakproof %} NOT LEAKPROOF{% endif %} {% if ('proisstrict' in data and data.proisstrict) or ('proisstrict' not in data and o_data.proisstrict) %} STRICT{% endif %} @@ -36,13 +36,13 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({% if d ROWS {{data.prorows}}{% elif data.prorows is not defined and o_data.prorows and o_data.prorows != '0' %} ROWS {{o_data.prorows}} {%endif -%}{% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% if data.funcowner %} @@ -110,7 +110,7 @@ ALTER FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtype {% if data.description is defined and data.description != o_data.description%} COMMENT ON FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/coll_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/coll_stats.sql index 7963b50fa..3a3bf5698 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/coll_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/coll_stats.sql @@ -6,7 +6,7 @@ SELECT FROM pg_catalog.pg_stat_user_functions WHERE - schemaname = {{schema_name|qtLiteral}} + schemaname = {{schema_name|qtLiteral(conn)}} AND funcid IN ( SELECT p.oid FROM diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/create.sql index 7b377ae55..807268a61 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/create.sql @@ -14,16 +14,16 @@ CREATE{% if add_replace_clause %} OR REPLACE{% endif %} PROCEDURE {{ conn|qtIden {% endif %} ) {% endif %} -LANGUAGE {{ data.lanname|qtLiteral }}{% if data.prosecdef %} +LANGUAGE {{ data.lanname|qtLiteral(conn) }}{% if data.prosecdef %} SECURITY DEFINER {% endif %} {% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; @@ -44,7 +44,7 @@ ALTER PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_arg {% if data.description %} COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/get_oid.sql index 6490082b7..89a61772e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/get_oid.sql @@ -10,8 +10,8 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE pr.prokind = 'p'::char AND typname NOT IN ('trigger', 'event_trigger') - AND pr.proname = {{ name|qtLiteral }}; + AND pr.proname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/node.sql index 7e263c3bd..24f25c75d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/node.sql @@ -19,7 +19,7 @@ LEFT OUTER JOIN WHERE pr.prokind = 'p'::char {% if fnid %} - AND pr.oid = {{ fnid|qtLiteral }} + AND pr.oid = {{ fnid|qtLiteral(conn) }} {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/update.sql index c2f160e22..f5aee3efe 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/update.sql @@ -19,19 +19,19 @@ CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}({% if {% endif %} ) {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %} {% if ('prosecdef' in data and data.prosecdef) or ('prosecdef' not in data and o_data.prosecdef) %}SECURITY DEFINER{% endif %} {% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% if data.funcowner %} @@ -101,7 +101,7 @@ ALTER PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}{% if o_data.proarg {% if data.description is defined and data.description != o_data.description%} COMMENT ON PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/14_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/14_plus/create.sql index e6eba1b24..2be6c82b1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/14_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/14_plus/create.sql @@ -14,18 +14,18 @@ CREATE{% if add_replace_clause %} OR REPLACE{% endif %} PROCEDURE {{ conn|qtIden {% endif %} ) {% endif %} -LANGUAGE {{ data.lanname|qtLiteral }}{% if data.prosecdef %} +LANGUAGE {{ data.lanname|qtLiteral(conn) }}{% if data.prosecdef %} SECURITY DEFINER {% endif %} {% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} {% if data.is_pure_sql %}{{ data.prosrc }} {% else %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; {% endif -%} @@ -47,7 +47,7 @@ ALTER PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_arg {% if data.description %} COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/14_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/14_plus/update.sql index a5f907dc8..d5701a023 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/14_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/14_plus/update.sql @@ -19,20 +19,20 @@ CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}({% if {% endif %} ) {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %} {% if ('prosecdef' in data and data.prosecdef) or ('prosecdef' not in data and o_data.prosecdef) %}SECURITY DEFINER{% endif %} {% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} {% if data.is_pure_sql %}{{ data.prosrc }}{% else %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% endif -%} @@ -103,7 +103,7 @@ ALTER PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}{% if o_data.proarg {% if data.description is defined and data.description != o_data.description%} COMMENT ON PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/coll_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/coll_stats.sql index 7963b50fa..3a3bf5698 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/coll_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/coll_stats.sql @@ -6,7 +6,7 @@ SELECT FROM pg_catalog.pg_stat_user_functions WHERE - schemaname = {{schema_name|qtLiteral}} + schemaname = {{schema_name|qtLiteral(conn)}} AND funcid IN ( SELECT p.oid FROM diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/create.sql index fdfca7483..cd8c92151 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/create.sql @@ -14,7 +14,7 @@ CREATE{% if add_replace_clause %} OR REPLACE{% endif %} PROCEDURE {{ conn|qtIden {% endif %} ) {% endif %} -LANGUAGE {{ data.lanname|qtLiteral }}{% if data.prosecdef %} +LANGUAGE {{ data.lanname|qtLiteral(conn) }}{% if data.prosecdef %} SECURITY DEFINER {% endif %} {% if data.lanname == 'edbspl' %} @@ -27,11 +27,11 @@ LANGUAGE {{ data.lanname|qtLiteral }}{% if data.prosecdef %} ROWS {{data.prorows}}{% endif -%}{% endif %}{% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; @@ -52,7 +52,7 @@ ALTER PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_arg {% if data.description %} COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/get_oid.sql index 6490082b7..89a61772e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/get_oid.sql @@ -10,8 +10,8 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE pr.prokind = 'p'::char AND typname NOT IN ('trigger', 'event_trigger') - AND pr.proname = {{ name|qtLiteral }}; + AND pr.proname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/node.sql index 7e263c3bd..24f25c75d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/node.sql @@ -19,7 +19,7 @@ LEFT OUTER JOIN WHERE pr.prokind = 'p'::char {% if fnid %} - AND pr.oid = {{ fnid|qtLiteral }} + AND pr.oid = {{ fnid|qtLiteral(conn) }} {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/update.sql index d175db1c4..497d53822 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/update.sql @@ -19,8 +19,8 @@ CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}({% if {% endif %} ) {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %} {% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }} {% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }} {% endif %} {% if ('prosecdef' in data and data.prosecdef) or ('prosecdef' not in data and o_data.prosecdef) %}SECURITY DEFINER{% endif %} @@ -34,14 +34,14 @@ CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}({% if ROWS {{data.prorows}}{% elif data.prorows is not defined and o_data.prorows and o_data.prorows != '0' %} ROWS {{o_data.prorows}}{% endif -%}{% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} {% endif %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% if data.funcowner %} @@ -110,7 +110,7 @@ ALTER PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}{% if o_data.proarg {% if data.description is defined and data.description != o_data.description%} COMMENT ON PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/14_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/14_plus/create.sql index 3dc29bb42..f0f23945b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/14_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/14_plus/create.sql @@ -14,7 +14,7 @@ CREATE{% if add_replace_clause %} OR REPLACE{% endif %} PROCEDURE {{ conn|qtIden {% endif %} ) {% endif %} -LANGUAGE {{ data.lanname|qtLiteral }}{% if data.prosecdef %} +LANGUAGE {{ data.lanname|qtLiteral(conn) }}{% if data.prosecdef %} SECURITY DEFINER {% endif %} {% if data.lanname == 'edbspl' %} @@ -27,13 +27,13 @@ LANGUAGE {{ data.lanname|qtLiteral }}{% if data.prosecdef %} ROWS {{data.prorows}}{% endif -%}{% endif %}{% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} {% if data.is_pure_sql %}{{ data.prosrc }} {% else %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; {% endif -%} @@ -55,7 +55,7 @@ ALTER PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_arg {% if data.description %} COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args_without}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/14_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/14_plus/update.sql index 6b2f589a6..8de573c55 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/14_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/14_plus/update.sql @@ -19,8 +19,8 @@ CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}({% if {% endif %} ) {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %} {% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }} {% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }} {% endif %} {% if ('prosecdef' in data and data.prosecdef) or ('prosecdef' not in data and o_data.prosecdef) %}SECURITY DEFINER{% endif %} @@ -34,16 +34,16 @@ CREATE OR REPLACE PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}({% if ROWS {{data.prorows}}{% elif data.prorows is not defined and o_data.prorows and o_data.prorows != '0' %} ROWS {{o_data.prorows}}{% endif -%}{% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} {% endif %} {% if data.is_pure_sql %}{{ data.prosrc }} {% else %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% endif -%} @@ -113,7 +113,7 @@ ALTER PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}{% if o_data.proarg {% if data.description is defined and data.description != o_data.description%} COMMENT ON PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/coll_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/coll_stats.sql index 5dc51c08a..effaeeee3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/coll_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/coll_stats.sql @@ -6,7 +6,7 @@ SELECT FROM pg_catalog.pg_stat_user_functions WHERE - schemaname = {{schema_name|qtLiteral}} + schemaname = {{schema_name|qtLiteral(conn)}} AND funcid IN ( SELECT p.oid FROM diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/create.sql index 32ab6d1f8..69babc0ea 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/create.sql @@ -46,7 +46,7 @@ ALTER PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }} {% if data.description %} COMMENT ON PROCEDURE {{ conn|qtIdent(data.pronamespace, data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/get_oid.sql index 39c785f39..5b05f7933 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/get_oid.sql @@ -10,8 +10,8 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE proisagg = FALSE AND typname NOT IN ('trigger', 'event_trigger') - AND pr.proname = {{ name|qtLiteral }}; + AND pr.proname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/node.sql index 55dec123b..dde3fbeb7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/node.sql @@ -20,7 +20,7 @@ WHERE proisagg = FALSE AND pr.protype = '1'::char {% if fnid %} - AND pr.oid = {{ fnid|qtLiteral }} + AND pr.oid = {{ fnid|qtLiteral(conn) }} {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/update.sql index 2030c917c..69c98daf7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/update.sql @@ -98,7 +98,7 @@ ALTER PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }}{% if o_data.proarg {% if data.description is defined and data.description != o_data.description%} COMMENT ON PROCEDURE {{ conn|qtIdent(o_data.pronamespace, name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/coll_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/coll_stats.sql index b030c8115..ae9079b90 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/coll_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/coll_stats.sql @@ -6,7 +6,7 @@ SELECT FROM pg_catalog.pg_stat_user_functions WHERE - schemaname = {{schema_name|qtLiteral}} + schemaname = {{schema_name|qtLiteral(conn)}} AND funcid IN ( SELECT p.oid FROM diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/create.sql index 903050d3e..9377e6a46 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/create.sql @@ -7,7 +7,7 @@ CREATE{% if add_replace_clause %} OR REPLACE{% endif %} FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.proargnames %}{{data.proargnames}}{% endif %}) RETURNS{% if data.proretset and data.prorettypename.startswith('SETOF ') %} {{ data.prorettypename }}{% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} - LANGUAGE {{ data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% if data.procost %} COST {{data.procost}} {% endif %} @@ -19,11 +19,11 @@ CREATE{% if add_replace_clause %} OR REPLACE{% endif %} FUNCTION {{ conn|qtIdent ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor %} {% endif %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; {% if data.funcowner %} @@ -43,7 +43,7 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args {% if data.description %} COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/get_oid.sql index 53bc02b24..1da0793f9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/get_oid.sql @@ -10,9 +10,9 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE pr.prokind IN ('f', 'w') AND typname IN ('trigger', 'event_trigger') AND lanname NOT IN ('edbspl', 'sql', 'internal') - AND pr.proname = {{ name|qtLiteral }}; + AND pr.proname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/node.sql index 23c307dd8..4619bcfcf 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/node.sql @@ -12,7 +12,7 @@ LEFT OUTER JOIN WHERE pr.prokind IN ('f', 'w') {% if fnid %} - AND pr.oid = {{ fnid|qtLiteral }} + AND pr.oid = {{ fnid|qtLiteral(conn) }} {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/update.sql index 0f936f3ca..f9a2b1c0f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/update.sql @@ -16,8 +16,8 @@ o_data.proargtypenames }}) CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}() RETURNS {{ o_data.prorettypename }} {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %}{% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }}{% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }}{% endif %} {% if ('proleakproof' in data and data.proleakproof) or ('proleakproof' not in data and o_data.proleakproof) %} LEAKPROOF{% elif 'proleakproof' in data and not data.proleakproof %} NOT LEAKPROOF{% endif %} {% if ('proisstrict' in data and data.proisstrict) or ('proisstrict' not in data and o_data.proisstrict) %} STRICT{% endif %} @@ -28,13 +28,13 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}() ROWS {{data.prorows}}{% elif data.prorows is not defined and o_data.prorows and o_data.prorows != '0' %} ROWS {{o_data.prorows}} {%endif -%}{% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% if data.funcowner %} @@ -102,7 +102,7 @@ ALTER FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtype {% if data.description is defined and data.description != o_data.description%} COMMENT ON FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/coll_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/coll_stats.sql index 8141d8c1c..a927a5633 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/coll_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/coll_stats.sql @@ -6,7 +6,7 @@ SELECT FROM pg_catalog.pg_stat_user_functions WHERE - schemaname = {{schema_name|qtLiteral}} + schemaname = {{schema_name|qtLiteral(conn)}} AND funcid IN ( SELECT p.oid FROM diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/create.sql index 903050d3e..9377e6a46 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/create.sql @@ -7,7 +7,7 @@ CREATE{% if add_replace_clause %} OR REPLACE{% endif %} FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({% if data.proargnames %}{{data.proargnames}}{% endif %}) RETURNS{% if data.proretset and data.prorettypename.startswith('SETOF ') %} {{ data.prorettypename }}{% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} - LANGUAGE {{ data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% if data.procost %} COST {{data.procost}} {% endif %} @@ -19,11 +19,11 @@ CREATE{% if add_replace_clause %} OR REPLACE{% endif %} FUNCTION {{ conn|qtIdent ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor %} {% endif %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; {% if data.funcowner %} @@ -43,7 +43,7 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args {% if data.description %} COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/get_oid.sql index 86a720aac..e828491db 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/get_oid.sql @@ -10,9 +10,14 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE proisagg = FALSE +<<<<<<< Updated upstream AND typname IN ('trigger', 'event_trigger') AND lanname NOT IN ('edbspl', 'sql', 'internal') AND pr.proname = {{ name|qtLiteral }}; +======= + AND typname = 'trigger' AND lanname != 'edbspl' + AND pr.proname = {{ name|qtLiteral(conn) }}; +>>>>>>> Stashed changes diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/node.sql index 9d4dbdfac..322fdb76e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/node.sql @@ -12,7 +12,7 @@ LEFT OUTER JOIN WHERE proisagg = FALSE {% if fnid %} - AND pr.oid = {{ fnid|qtLiteral }} + AND pr.oid = {{ fnid|qtLiteral(conn) }} {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/update.sql index 0f936f3ca..f9a2b1c0f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/default/update.sql @@ -16,8 +16,8 @@ o_data.proargtypenames }}) CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}() RETURNS {{ o_data.prorettypename }} {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %}{% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }}{% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }}{% endif %} {% if ('proleakproof' in data and data.proleakproof) or ('proleakproof' not in data and o_data.proleakproof) %} LEAKPROOF{% elif 'proleakproof' in data and not data.proleakproof %} NOT LEAKPROOF{% endif %} {% if ('proisstrict' in data and data.proisstrict) or ('proisstrict' not in data and o_data.proisstrict) %} STRICT{% endif %} @@ -28,13 +28,13 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}() ROWS {{data.prorows}}{% elif data.prorows is not defined and o_data.prorows and o_data.prorows != '0' %} ROWS {{o_data.prorows}} {%endif -%}{% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% if data.funcowner %} @@ -102,7 +102,7 @@ ALTER FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtype {% if data.description is defined and data.description != o_data.description%} COMMENT ON FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/coll_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/coll_stats.sql index e120e0d2a..701810d26 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/coll_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/coll_stats.sql @@ -6,7 +6,7 @@ SELECT FROM pg_catalog.pg_stat_user_functions WHERE - schemaname = {{schema_name|qtLiteral}} + schemaname = {{schema_name|qtLiteral(conn)}} AND funcid IN ( SELECT p.oid FROM diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/get_oid.sql index ca82a1949..7ee3c94c4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/get_oid.sql @@ -10,7 +10,7 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE pr.prokind IN ('f', 'w') AND typname IN ('trigger', 'event_trigger') diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/node.sql index d499e9afe..0ed663109 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/node.sql @@ -12,7 +12,7 @@ LEFT OUTER JOIN WHERE pr.prokind IN ('f', 'w') {% if fnid %} - AND pr.oid = {{ fnid|qtLiteral }} + AND pr.oid = {{ fnid|qtLiteral(conn) }} {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/coll_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/coll_stats.sql index 8141d8c1c..a927a5633 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/coll_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/coll_stats.sql @@ -6,7 +6,7 @@ SELECT FROM pg_catalog.pg_stat_user_functions WHERE - schemaname = {{schema_name|qtLiteral}} + schemaname = {{schema_name|qtLiteral(conn)}} AND funcid IN ( SELECT p.oid FROM diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/create.sql index afc31f181..8827bb55d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/create.sql @@ -7,7 +7,7 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}() RETURNS{% if data.proretset and data.prorettypename.startswith('SETOF ') %} {{ data.prorettypename }}{% elif data.proretset %} SETOF {{ data.prorettypename }}{% else %} {{ data.prorettypename }}{% endif %} - LANGUAGE {{ data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% if data.procost %} COST {{data.procost}} {% endif %} @@ -19,11 +19,11 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}() ROWS {{data.prorows}}{% endif -%}{% if data.variables %}{% for v in data.variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor %} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor %} {% endif %} AS {% if data.lanname == 'c' %} -{{ data.probin|qtLiteral }}, {{ data.prosrc_c|qtLiteral }} +{{ data.probin|qtLiteral(conn) }}, {{ data.prosrc_c|qtLiteral(conn) }} {% else %} $BODY${{ data.prosrc }}$BODY${% endif -%}; {% if data.funcowner %} @@ -43,7 +43,7 @@ ALTER FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args {% if data.description %} COMMENT ON FUNCTION {{ conn|qtIdent(data.pronamespace, data.name) }}({{data.func_args}}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.seclabels %} {% for r in data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/get_oid.sql index 823eed26e..9e018b2aa 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/get_oid.sql @@ -10,7 +10,7 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE proisagg = FALSE AND typname IN ('trigger', 'event_trigger') diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/node.sql index b0a7783e5..c4ae760aa 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/node.sql @@ -12,7 +12,7 @@ LEFT OUTER JOIN WHERE proisagg = FALSE {% if fnid %} - AND pr.oid = {{ fnid|qtLiteral }} + AND pr.oid = {{ fnid|qtLiteral(conn) }} {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/update.sql index a73f68d65..26e87b08c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/default/update.sql @@ -16,8 +16,8 @@ o_data.proargtypenames }}) CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}() RETURNS {{ o_data.prorettypename }} {% if 'lanname' in data %} - LANGUAGE {{ data.lanname|qtLiteral }} {% else %} - LANGUAGE {{ o_data.lanname|qtLiteral }} + LANGUAGE {{ data.lanname|qtLiteral(conn) }} {% else %} + LANGUAGE {{ o_data.lanname|qtLiteral(conn) }} {% endif %}{% if 'provolatile' in data and data.provolatile %}{{ data.provolatile }}{% elif 'provolatile' not in data and o_data.provolatile %}{{ o_data.provolatile }}{% endif %} {% if ('proleakproof' in data and data.proleakproof) or ('proleakproof' not in data and o_data.proleakproof) %} LEAKPROOF{% elif 'proleakproof' in data and not data.proleakproof %} NOT LEAKPROOF{% endif %} {% if ('proisstrict' in data and data.proisstrict) or ('proisstrict' not in data and o_data.proisstrict) %} STRICT{% endif %} @@ -28,13 +28,13 @@ CREATE OR REPLACE FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}() ROWS {{data.prorows}}{% elif o_data.prorows and o_data.prorows != '0' %} ROWS {{o_data.prorows}} {%endif -%}{% if data.merged_variables %}{% for v in data.merged_variables %} - SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral }}{% endif %}{% endfor -%} + SET {{ conn|qtIdent(v.name) }}={% if v.name in exclude_quoting %}{{ v.value }}{% else %}{{ v.value|qtLiteral(conn) }}{% endif %}{% endfor -%} {% endif %} AS {% if (data.lanname == 'c' or o_data.lanname == 'c') and ('probin' in data or 'prosrc_c' in data) %} -{% if 'probin' in data %}{{ data.probin|qtLiteral }}{% else %}{{ o_data.probin|qtLiteral }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral }}{% else %}{{ o_data.prosrc_c|qtLiteral }}{% endif %}{% elif 'prosrc' in data %} +{% if 'probin' in data %}{{ data.probin|qtLiteral(conn) }}{% else %}{{ o_data.probin|qtLiteral(conn) }}{% endif %}, {% if 'prosrc_c' in data %}{{ data.prosrc_c|qtLiteral(conn) }}{% else %}{{ o_data.prosrc_c|qtLiteral(conn) }}{% endif %}{% elif 'prosrc' in data %} $BODY${{ data.prosrc }}$BODY${% elif o_data.lanname == 'c' %} -{{ o_data.probin|qtLiteral }}, {{ o_data.prosrc_c|qtLiteral }}{% else %} +{{ o_data.probin|qtLiteral(conn) }}, {{ o_data.prosrc_c|qtLiteral(conn) }}{% else %} $BODY${{ o_data.prosrc }}$BODY${% endif -%}; {% endif -%} {% if data.funcowner %} @@ -98,7 +98,7 @@ ALTER FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtype {% if data.description is defined and data.description != o_data.description%} COMMENT ON FUNCTION {{ conn|qtIdent(o_data.pronamespace, name) }}({{o_data.proargtypenames }}) - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif -%} {% if data.pronamespace %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_add.py index be2eedf7c..b62bb7c85 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_add.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_add.py @@ -53,7 +53,7 @@ class FunctionAddTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": "pgadmin.utils.driver.psycopg2." + "function_name": "pgadmin.utils.driver.psycopg3." "connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server " "Error while create new function get sql.')" @@ -67,7 +67,7 @@ class FunctionAddTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": "pgadmin.utils.driver.psycopg2." + "function_name": "pgadmin.utils.driver.psycopg3." "connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server " "Error while create new function.')" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_delete.py index 7459e6be1..697e14030 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_delete.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_delete.py @@ -49,7 +49,7 @@ class FunctionDeleteTestCase(BaseTestGenerator): without_functions_id=False, test_data={}, mock_data={ - "function_name": "pgadmin.utils.driver.psycopg2." + "function_name": "pgadmin.utils.driver.psycopg3." "connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server " "Error while delete function.')" @@ -65,7 +65,7 @@ class FunctionDeleteTestCase(BaseTestGenerator): mock_empty_result=True, test_data={}, mock_data={ - "function_name": "pgadmin.utils.driver.psycopg2." + "function_name": "pgadmin.utils.driver.psycopg3." "connection.Connection.execute_2darray", "return_value": "(True, {'rows': []})" }, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get.py index d3f1d4a7f..d85f12b61 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get.py @@ -40,7 +40,7 @@ class FunctionGetTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": "pgadmin.utils.driver.psycopg2." + "function_name": "pgadmin.utils.driver.psycopg3." "connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server " "Error while get properties.')" @@ -57,7 +57,7 @@ class FunctionGetTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": "pgadmin.utils.driver.psycopg2." + "function_name": "pgadmin.utils.driver.psycopg3." "connection.Connection.execute_dict", "return_value": "(False, {'rows': []})" }, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_languages.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_languages.py index 4a6b50e6a..408b5d42b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_languages.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_languages.py @@ -41,7 +41,7 @@ class FunctionGetLanguagesTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": 'pgadmin.utils.driver.psycopg2.' + "function_name": 'pgadmin.utils.driver.psycopg3.' 'connection.Connection.execute_dict', "return_value": "(False, 'Mocked Internal Server Error " "while get languages for functions.')" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_msql.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_msql.py index 2768b020f..95c1c7da6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_msql.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_msql.py @@ -130,7 +130,7 @@ class FunctionGetmsqlTestCase(BaseTestGenerator): "acl": [] }, mock_data={ - "function_name": "pgadmin.utils.driver.psycopg2." + "function_name": "pgadmin.utils.driver.psycopg3." "connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server " "Error while get msq fetch properties.')" @@ -162,7 +162,7 @@ class FunctionGetmsqlTestCase(BaseTestGenerator): "acl": [] }, mock_data={ - "function_name": "pgadmin.utils.driver.psycopg2." + "function_name": "pgadmin.utils.driver.psycopg3." "connection.Connection.execute_dict", "return_value": "(True, {'rows': []})" }, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_nodes.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_nodes.py index bb5f301f0..9da8288c8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_nodes.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_nodes.py @@ -39,7 +39,7 @@ class FunctionGetNodesTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": "pgadmin.utils.driver.psycopg2." + "function_name": "pgadmin.utils.driver.psycopg3." "connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server " "Error while get function nodes.')" @@ -70,7 +70,7 @@ class FunctionGetNodesTestCase(BaseTestGenerator): mocking_required=True, with_function_id=True, mock_data={ - "function_name": "pgadmin.utils.driver.psycopg2." + "function_name": "pgadmin.utils.driver.psycopg3." "connection.Connection.execute_2darray", "return_value": "(True, {'rows':[]})" }, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_sql.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_sql.py index 6301bf9c9..f5df4f6fd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_sql.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_sql.py @@ -41,7 +41,7 @@ class FunctionSqlTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": 'pgadmin.utils.driver.psycopg2.' + "function_name": 'pgadmin.utils.driver.psycopg3.' 'connection.Connection.execute_2darray', "return_value": "(False, 'Mocked Internal Server Error " "while SQL for functions.')" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_variable_options.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_variable_options.py index 1713aeca1..b49739a44 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_variable_options.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_get_variable_options.py @@ -41,7 +41,7 @@ class FunctionGetLanguagesTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": 'pgadmin.utils.driver.psycopg2.' + "function_name": 'pgadmin.utils.driver.psycopg3.' 'connection.Connection.execute_dict', "return_value": "(False, 'Mocked Internal Server Error " "while get languages for functions.')" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_put.py index 582e7c82f..a98216ecc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_put.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_function_put.py @@ -39,7 +39,7 @@ class FunctionPutTestCase(BaseTestGenerator): mocking_required=True, is_mock_function=False, mock_data={ - "function_name": "pgadmin.utils.driver.psycopg2." + "function_name": "pgadmin.utils.driver.psycopg3." "connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server " "Error while create new function get sql.')" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_dependencies.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_dependencies.py index 441141d5e..1531f9046 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_dependencies.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_dependencies.py @@ -41,7 +41,7 @@ class FunctionGetDependenciesTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": 'pgadmin.utils.driver.psycopg2.' + "function_name": 'pgadmin.utils.driver.psycopg3.' 'connection.Connection.execute_dict', "return_value": "(False, {'rows': []})" }, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_dependents.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_dependents.py index 8943e006c..2296591b9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_dependents.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_dependents.py @@ -41,7 +41,7 @@ class FunctionGetDependentsTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": 'pgadmin.utils.driver.psycopg2.' + "function_name": 'pgadmin.utils.driver.psycopg3.' 'connection.Connection.execute_dict', "return_value": "(False, {'rows': []})" }, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_function_statistics.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_function_statistics.py index 5363483d0..43c3c86ed 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_function_statistics.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_function_statistics.py @@ -41,7 +41,7 @@ class FunctionGetFunctionStatisticsTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": 'pgadmin.utils.driver.psycopg2.' + "function_name": 'pgadmin.utils.driver.psycopg3.' 'connection.Connection.execute_dict', "return_value": "(False, 'Mocked Internal Server Error " "while get function statistics.')" @@ -72,7 +72,7 @@ class FunctionGetFunctionStatisticsTestCase(BaseTestGenerator): mocking_required=True, without_function_id=True, mock_data={ - "function_name": 'pgadmin.utils.driver.psycopg2.' + "function_name": 'pgadmin.utils.driver.psycopg3.' 'connection.Connection.execute_scalar', "return_value": "(False, 'Mocked Internal Server Error " "while get function statistics.')" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_list.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_list.py index aa3806362..a7216fb21 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_list.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_list.py @@ -41,7 +41,7 @@ class FunctionGetListTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": 'pgadmin.utils.driver.psycopg2.' + "function_name": 'pgadmin.utils.driver.psycopg3.' 'connection.Connection.execute_dict', "return_value": "(False, 'Mocked Internal Server " "Error while get function list.')" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_select_sql.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_select_sql.py index efad1423d..f76d6a06c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_select_sql.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_select_sql.py @@ -43,7 +43,7 @@ class FunctionGetSelectSqlTestCase(BaseTestGenerator): mocking_required=True, is_add_argument=False, mock_data={ - "function_name": 'pgadmin.utils.driver.psycopg2.' + "function_name": 'pgadmin.utils.driver.psycopg3.' 'connection.Connection.execute_2darray', "return_value": "(False, 'Mocked Internal Server Error " "while get select sql.')" @@ -61,7 +61,7 @@ class FunctionGetSelectSqlTestCase(BaseTestGenerator): mocking_required=True, is_add_argument=False, mock_data={ - "function_name": 'pgadmin.utils.driver.psycopg2.' + "function_name": 'pgadmin.utils.driver.psycopg3.' 'connection.Connection.execute_2darray', "return_value": "(True, {'rows': []})" }, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_supported_functions.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_supported_functions.py index 96f60cdeb..cd796f15e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_supported_functions.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_get_supported_functions.py @@ -41,7 +41,7 @@ class FunctionGetSupportedFunctionsTestCase(BaseTestGenerator): is_positive_test=False, mocking_required=True, mock_data={ - "function_name": 'pgadmin.utils.driver.psycopg2.' + "function_name": 'pgadmin.utils.driver.psycopg3.' 'connection.Connection.execute_2darray', "return_value": "(False, 'Mocked Internal Server Error " "while get supported function')" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py index 5d99a9bdc..a8e26c859 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py @@ -411,7 +411,7 @@ class PackageView(PGChildNodeView, SchemaDiffObjectCompare): "/".join([ self.template_path, self._OID_SQL ]), - name=data['name'], scid=scid + name=data['name'], scid=scid, conn=self.conn ) sql = sql.strip('\n').strip(' ') diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/__init__.py index 0b5b4c024..f47130c5d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/__init__.py @@ -248,7 +248,8 @@ class EdbFuncView(PGChildNodeView, DataTypeReader): SQL = render_template("/".join([self.sql_template_path, self._NODE_SQL]), - pkgid=pkgid) + pkgid=pkgid, + conn=self.conn) status, res = self.conn.execute_dict(SQL) if not status: @@ -274,7 +275,8 @@ class EdbFuncView(PGChildNodeView, DataTypeReader): SQL = render_template( "/".join([self.sql_template_path, self._NODE_SQL]), pkgid=pkgid, - fnid=edbfnid + fnid=edbfnid, + conn=self.conn ) status, rset = self.conn.execute_2darray(SQL) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbfuncs/ppas/11_plus/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbfuncs/ppas/11_plus/get_oid.sql index fda417214..fdf0fce5b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbfuncs/ppas/11_plus/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbfuncs/ppas/11_plus/get_oid.sql @@ -10,8 +10,8 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE pr.prokind IN ('f', 'w') AND typname NOT IN ('trigger', 'event_trigger') - AND pr.proname = {{ name|qtLiteral }}; + AND pr.proname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbfuncs/ppas/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbfuncs/ppas/default/get_oid.sql index 0ffbaf1be..e63cda3fd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbfuncs/ppas/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbfuncs/ppas/default/get_oid.sql @@ -10,8 +10,8 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE proisagg = FALSE AND typname NOT IN ('trigger', 'event_trigger') - AND pr.proname = {{ name|qtLiteral }}; + AND pr.proname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbfuncs/ppas/default/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbfuncs/ppas/default/node.sql index a9f2623f7..2d42b5b16 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbfuncs/ppas/default/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbfuncs/ppas/default/node.sql @@ -4,7 +4,7 @@ SELECT pg_proc.oid, FROM pg_catalog.pg_proc, pg_catalog.pg_namespace WHERE protype = '0'::char {% if fnid %} -AND pg_proc.oid = {{ fnid|qtLiteral }} +AND pg_proc.oid = {{ fnid|qtLiteral(conn) }} {% endif %} -AND pronamespace = {{pkgid|qtLiteral}}::oid +AND pronamespace = {{pkgid|qtLiteral(conn)}}::oid AND pg_proc.pronamespace = pg_namespace.oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbprocs/ppas/11_plus/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbprocs/ppas/11_plus/get_oid.sql index 5235eba39..c4a2cca4a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbprocs/ppas/11_plus/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbprocs/ppas/11_plus/get_oid.sql @@ -10,8 +10,8 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE pr.prokind = 'p' AND typname NOT IN ('trigger', 'event_trigger') - AND pr.proname = {{ name|qtLiteral }}; + AND pr.proname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbprocs/ppas/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbprocs/ppas/default/get_oid.sql index 0ffbaf1be..e63cda3fd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbprocs/ppas/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbprocs/ppas/default/get_oid.sql @@ -10,8 +10,8 @@ JOIN pg_catalog.pg_language lng ON lng.oid=prolang JOIN pg_catalog.pg_namespace nsp ON nsp.oid=pr.pronamespace - AND nsp.nspname={{ nspname|qtLiteral }} + AND nsp.nspname={{ nspname|qtLiteral(conn) }} WHERE proisagg = FALSE AND typname NOT IN ('trigger', 'event_trigger') - AND pr.proname = {{ name|qtLiteral }}; + AND pr.proname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbprocs/ppas/default/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbprocs/ppas/default/node.sql index f0c11211d..ba6bcbe43 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbprocs/ppas/default/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbfuncs/templates/edbprocs/ppas/default/node.sql @@ -4,7 +4,7 @@ SELECT pg_proc.oid, FROM pg_catalog.pg_proc, pg_catalog.pg_namespace WHERE protype = '1'::char {% if fnid %} -AND pg_proc.oid = {{ fnid|qtLiteral }} +AND pg_proc.oid = {{ fnid|qtLiteral(conn) }} {% endif %} -AND pronamespace = {{pkgid|qtLiteral}}::oid +AND pronamespace = {{pkgid|qtLiteral(conn)}}::oid AND pg_proc.pronamespace = pg_namespace.oid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/__init__.py index b58cab886..16604349e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/__init__.py @@ -211,7 +211,8 @@ class EdbVarView(PGChildNodeView, DataTypeReader): SQL = render_template("/".join([self.sql_template_path, self._NODE_SQL]), - pkgid=pkgid) + pkgid=pkgid, + conn=self.conn) status, res = self.conn.execute_dict(SQL) if not status: @@ -237,7 +238,7 @@ class EdbVarView(PGChildNodeView, DataTypeReader): res = [] SQL = render_template( "/".join([self.sql_template_path, self._NODE_SQL]), - pkgid=pkgid + pkgid=pkgid, conn=self.conn ) status, rset = self.conn.execute_2darray(SQL) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/templates/edbvars/ppas/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/templates/edbvars/ppas/node.sql index 83c7aec0c..09c69262c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/templates/edbvars/ppas/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/edbvars/templates/edbvars/ppas/node.sql @@ -3,6 +3,6 @@ SELECT oid, FROM pg_catalog.edb_variable WHERE varpackage = {{pkgid}}::oid {% if varid %} -AND oid = {{ varid|qtLiteral }} +AND oid = {{ varid|qtLiteral(conn) }} {% endif %} ORDER BY varname diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/create.sql index ee6137e7c..c56925d3d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/create.sql @@ -20,6 +20,6 @@ END {{ conn|qtIdent(data.name) }}; {% endfor %} {% endif %}{% if data.description %} COMMENT ON PACKAGE {{ conn|qtIdent(data.schema,data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/get_oid.sql index 73a645870..53a133d54 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/get_oid.sql @@ -1,5 +1,5 @@ SELECT nsp.oid FROM pg_catalog.pg_namespace nsp WHERE nspparent = {{scid}}::oid -AND nspname = {{ name|qtLiteral }} +AND nspname = {{ name|qtLiteral(conn) }} AND nspobjecttype = 0; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/grant.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/grant.sql index d4a382c66..fbc0bb24c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/grant.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/grant.sql @@ -10,7 +10,7 @@ ALTER SEQUENCE {{ seqname }} {% if data.comment %} COMMENT ON SEQUENCE {{ seqname }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {% if data.securities %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/update.sql index ecef723b4..d732cd81e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/default/update.sql @@ -43,6 +43,6 @@ END {{ conn|qtIdent(data.name) }}; {% if data.description is defined %} COMMENT ON PACKAGE {{ conn|qtIdent(data.schema,data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py index 22a2b9605..aee05c7ff 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py @@ -213,7 +213,8 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare): "/".join([self.template_path, self._NODES_SQL]), scid=scid, seid=seid, - show_internal=show_internal + show_internal=show_internal, + conn=self.conn ) status, rset = self.conn.execute_dict(SQL) if not status: @@ -433,7 +434,8 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._OID_SQL]), name=data['name'], - schema=data['schema'] + schema=data['schema'], + conn=self.conn ) sql = sql.strip('\n').strip(' ') @@ -548,7 +550,8 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare): sql = render_template( "/".join([self.template_path, self._NODES_SQL]), - seid=seid + seid=seid, + conn=self.conn ) status, rset = self.conn.execute_2darray(sql) if not status: @@ -899,7 +902,8 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare): 'schemas/pg/#{0}#/sql/get_name.sql'.format( self.manager.version ), - scid=scid + scid=scid, + conn=self.conn ) ) if not status: @@ -935,7 +939,8 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare): res = dict() sql = render_template("/".join([self.template_path, self._NODES_SQL]), scid=scid, - schema_diff=True) + schema_diff=True, + conn=self.conn) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/coll_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/coll_stats.sql index 5745d2834..42b33cefa 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/coll_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/coll_stats.sql @@ -5,5 +5,5 @@ SELECT FROM pg_catalog.pg_statio_all_sequences WHERE - schemaname = {{ schema_name|qtLiteral }} + schemaname = {{ schema_name|qtLiteral(conn) }} ORDER BY relname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/get_oid.sql index 4db094970..a0a50ae2b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/get_oid.sql @@ -3,5 +3,5 @@ FROM pg_catalog.pg_class cl LEFT OUTER JOIN pg_catalog.pg_description des ON (des.objoid=cl.oid AND des.classoid='pg_class'::regclass) LEFT OUTER JOIN pg_catalog.pg_namespace nsp ON (nsp.oid = cl.relnamespace) WHERE relkind = 'S' -AND relname = {{ name|qtLiteral }} -AND nspname = {{ schema|qtLiteral }} +AND relname = {{ name|qtLiteral(conn) }} +AND nspname = {{ schema|qtLiteral(conn) }} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/grant.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/grant.sql index d4a382c66..fbc0bb24c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/grant.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/grant.sql @@ -10,7 +10,7 @@ ALTER SEQUENCE {{ seqname }} {% if data.comment %} COMMENT ON SEQUENCE {{ seqname }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {% if data.securities %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/nodes.sql index 3ebd66d02..73f74e365 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/nodes.sql @@ -6,10 +6,10 @@ LEFT JOIN pg_catalog.pg_depend d1 ON d1.refobjid = cl.oid AND d1.deptype = 'i' WHERE relkind = 'S' {% if scid %} - AND relnamespace = {{scid|qtLiteral}}::oid + AND relnamespace = {{scid|qtLiteral(conn)}}::oid {% endif %} {% if seid %} - AND cl.oid = {{seid|qtLiteral}}::oid + AND cl.oid = {{seid|qtLiteral(conn)}}::oid {% endif %} {% if schema_diff %} AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/update.sql index fbb691687..81f6574dd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/update.sql @@ -20,7 +20,7 @@ ALTER SEQUENCE IF EXISTS {{ conn|qtIdent(o_data.schema, data.name) }} {% endif %} {% if data.current_value is defined %} {% set seqname = conn|qtIdent(o_data.schema, data.name) %} -SELECT setval({{ seqname|qtLiteral }}, {{ data.current_value }}, true); +SELECT setval({{ seqname|qtLiteral(conn) }}, {{ data.current_value }}, true); {% endif %} {% set defquery = '' %} @@ -60,7 +60,7 @@ ALTER SEQUENCE IF EXISTS {{ conn|qtIdent(o_data.schema, data.name) }} {% endif %} {% if data.comment is defined and data.comment != o_data.comment %} COMMENT ON SEQUENCE {{ seqname }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {% if data.securities and data.securities|length > 0 %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/pg/default/alter_seq_props_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/pg/default/alter_seq_props_msql.sql index 62c9b8b84..0893a1f28 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/pg/default/alter_seq_props_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/pg/default/alter_seq_props_msql.sql @@ -1,4 +1,4 @@ -SELECT setval('public."Seq1_$%{}[]()&*^!@""''`\/#"', 7, true); +SELECT setval( E'public."Seq1_$%{}[]()&*^!@""''`\\/#"', 7, true); ALTER SEQUENCE IF EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#" INCREMENT 12 diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/ppas/default/alter_seq_props_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/ppas/default/alter_seq_props_msql.sql index 62c9b8b84..f3c0289cc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/ppas/default/alter_seq_props_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/ppas/default/alter_seq_props_msql.sql @@ -1,4 +1,4 @@ -SELECT setval('public."Seq1_$%{}[]()&*^!@""''`\/#"', 7, true); +SELECT setval(E'public."Seq1_$%{}[]()&*^!@""""''`\\/#"', 7, true); ALTER SEQUENCE IF EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#" INCREMENT 12 diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/get_objects.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/get_objects.sql index e284d7b46..c4579759f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/get_objects.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/get_objects.sql @@ -5,7 +5,7 @@ SELECT DISTINCT proname AS name FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n WHERE p.pronamespace = n.oid AND - n.nspname = {{ trgSchema|qtLiteral }} AND + n.nspname = {{ trgSchema|qtLiteral(conn) }} AND p.protype = '0' ORDER BY proname; {###########################################} @@ -15,7 +15,7 @@ ORDER BY proname; SELECT DISTINCT proname AS name FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n WHERE p.pronamespace = n.oid AND - n.nspname = {{ trgSchema|qtLiteral }} AND + n.nspname = {{ trgSchema|qtLiteral(conn) }} AND p.protype = '1' ORDER BY proname; {###########################################} @@ -45,12 +45,12 @@ ORDER BY nspname; SELECT relname AS name FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n WHERE c.relnamespace = n.oid AND - n.nspname = {{ trgSchema|qtLiteral }} AND + n.nspname = {{ trgSchema|qtLiteral(conn) }} AND {% if trgTyp == 'v' %} {# If view is select then we need to fetch both view and materialized view #} (c.relkind = 'v' OR c.relkind = 'm') {% else %} - c.relkind = {{ trgTyp|qtLiteral }} + c.relkind = {{ trgTyp|qtLiteral(conn) }} {% endif %} ORDER BY relname; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/get_parent_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/get_parent_oid.sql index 3360b2862..50ba41e3e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/get_parent_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/get_parent_oid.sql @@ -1,5 +1,5 @@ SELECT s.oid as syid, synnamespace as scid FROM pg_catalog.pg_synonym s -WHERE synname = {{ data.name|qtLiteral }} +WHERE synname = {{ data.name|qtLiteral(conn) }} AND synnamespace IN - ( SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = {{ data.schema|qtLiteral }} ); + ( SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = {{ data.schema|qtLiteral(conn) }} ); diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/get_schema.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/get_schema.sql index da5f6ad50..8baf6c488 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/get_schema.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/get_schema.sql @@ -4,4 +4,4 @@ SELECT FROM pg_catalog.pg_class c WHERE - c.oid = {{syid|qtLiteral}}::oid; + c.oid = {{syid|qtLiteral(conn)}}::oid; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py index e24bce49b..a563cf64d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py @@ -698,7 +698,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare): self.table_template_path, self._GET_COLUMNS_FOR_TABLE_SQL ]), - tid=data['tid'] + tid=data['tid'], conn=self.conn ) elif data and 'tname' in data: SQL = render_template( @@ -706,7 +706,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare): self.table_template_path, self._GET_COLUMNS_FOR_TABLE_SQL ]), - tname=data['tname'] + tname=data['tname'], conn=self.conn ) if SQL: @@ -747,7 +747,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare): "/".join( [self.table_template_path, self._GET_COLUMNS_FOR_TABLE_SQL] - ), tid=row['oid'] + ), tid=row['oid'], conn=self.conn ) status, type_cols = self.conn.execute_dict(SQL) @@ -924,17 +924,6 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare): request.data, encoding='utf-8' ) - for k, v in data.items(): - try: - # comments should be taken as is because if user enters a - # json comment it is parsed by loads which should not happen - if k in ('description',): - data[k] = v - else: - data[k] = json.loads(v, encoding='utf-8') - except (ValueError, TypeError, KeyError): - data[k] = v - required_args = [ 'name' ] @@ -983,7 +972,8 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare): # Get updated schema oid sql = render_template( "/".join([self.table_template_path, self._GET_SCHEMA_OID_SQL]), - tname=data['name'] + tname=data['name'], + conn=self.conn ) status, new_scid = self.conn.execute_scalar(sql) @@ -993,7 +983,7 @@ class TableView(BaseTableView, DataTypeReader, SchemaDiffTableCompare): # we need oid to add object in tree at browser sql = render_template( "/".join([self.table_template_path, self._OID_SQL]), - scid=new_scid, data=data + scid=new_scid, data=data, conn=self.conn ) status, tid = self.conn.execute_scalar(sql) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/__init__.py index d525a06b5..cf1e66fde 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/__init__.py @@ -273,7 +273,8 @@ class ColumnsView(PGChildNodeView, DataTypeReader): "/".join([self.template_path, self._NODES_SQL]), tid=tid, clid=clid, - show_sys_objects=self.blueprint.show_system_objects + show_sys_objects=self.blueprint.show_system_objects, + conn=self.conn ) status, rset = self.conn.execute_2darray(SQL) if not status: @@ -416,7 +417,7 @@ class ColumnsView(PGChildNodeView, DataTypeReader): # we need oid to add object in tree at browser SQL = render_template( "/".join([self.template_path, 'get_position.sql']), - tid=tid, data=data + tid=tid, data=data, conn=self.conn ) status, clid = self.conn.execute_scalar(SQL) if not status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/templates/columns/macros/security.macros b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/templates/columns/macros/security.macros index 39587c32b..20406ab99 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/templates/columns/macros/security.macros +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/templates/columns/macros/security.macros @@ -1,5 +1,5 @@ {% macro APPLY(conn, type, schema_name, parent_object, child_object, provider, label) -%} -SECURITY LABEL FOR {{ conn|qtIdent(provider) }} ON {{ type }} {{ conn|qtIdent(schema_name, parent_object, child_object) }} IS {{ label|qtLiteral }}; +SECURITY LABEL FOR {{ conn|qtIdent(provider) }} ON {{ type }} {{ conn|qtIdent(schema_name, parent_object, child_object) }} IS {{ label|qtLiteral(conn) }}; {%- endmacro %} {% macro DROP(conn, type, schema_name, parent_object, child_object, provider) -%} SECURITY LABEL FOR {{ conn|qtIdent(provider) }} ON {{ type }} {{ conn|qtIdent(schema_name, parent_object, child_object) }} IS NULL; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/column_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/column_test_data.json index 01b7962d9..17560d3a7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/column_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/column_test_data.json @@ -193,7 +193,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -255,7 +255,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -272,7 +272,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -335,7 +335,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -352,7 +352,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -447,7 +447,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -740,7 +740,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -789,7 +789,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/utils.py index 896822150..59ce4f70f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/utils.py @@ -103,12 +103,12 @@ def create_column(server, db_name, schema_name, table_name, col_name, server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "ALTER TABLE %s.%s ADD COLUMN %s %s" % \ (schema_name, table_name, col_name, col_data_type) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get column position of newly added column pg_cursor.execute("select attnum from pg_attribute where" @@ -151,13 +151,13 @@ def create_identity_column(server, db_name, schema_name, table_name, server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "ALTER TABLE %s.%s ADD COLUMN %s %s " \ "GENERATED ALWAYS AS IDENTITY" % \ (schema_name, table_name, col_name, col_data_type) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get column position of newly added column pg_cursor.execute("select attnum from pg_attribute where" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/tests/compound_trigger_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/tests/compound_trigger_test_data.json index a2523501a..4e82076b3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/tests/compound_trigger_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/tests/compound_trigger_test_data.json @@ -151,7 +151,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -172,7 +172,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True),(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -193,7 +193,7 @@ "mocking_required": true, "error_creating_compound_trigger": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -229,7 +229,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -254,7 +254,7 @@ "table_nodes": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -316,7 +316,7 @@ ] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -363,7 +363,7 @@ ] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -411,7 +411,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -448,7 +448,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -461,7 +461,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -548,7 +548,7 @@ ] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "PlACE_HOLDER" }, "expected_data": { @@ -608,7 +608,7 @@ ] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "PlACE_HOLDER" }, "expected_data": { @@ -705,7 +705,7 @@ "is_enable_trigger": "O" }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -721,7 +721,7 @@ "is_enable_trigger": "O" }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -743,7 +743,7 @@ ] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "PLACE_HOLDER" }, "expected_data": { @@ -760,7 +760,7 @@ "description": "This is test comment." }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -777,7 +777,7 @@ "description": "This is test comment." }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True),(False, 'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/tests/test_compound_triggers_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/tests/test_compound_triggers_put.py index b1171593f..6a7b3b041 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/tests/test_compound_triggers_put.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/tests/test_compound_triggers_put.py @@ -122,7 +122,7 @@ class CompoundTriggersUpdateTestCase(BaseTestGenerator): with patch(self.mock_data["function_name"], side_effect=self.mock_data["return_value"]), patch( - 'pgadmin.utils.driver.psycopg2.connection.Connection.' + 'pgadmin.utils.driver.psycopg3.connection.Connection.' 'execute_scalar', side_effect=[(True, True), (True, "Mocked response")]): diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/tests/utils.py index b9cbc99c4..7d67b0f80 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/tests/utils.py @@ -53,13 +53,13 @@ def create_compound_trigger(server, db_name, schema_name, table_name, server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "CREATE OR REPLACE TRIGGER %s FOR INSERT OR UPDATE ON %s.%s " \ "COMPOUND TRIGGER %s END;" % (trigger_name, schema_name, table_name, code) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() pg_cursor.execute("SELECT oid FROM pg_catalog.pg_trigger " "where tgname='%s'" % trigger_name) @@ -98,12 +98,12 @@ def create_view(server, db_name, schema_name, sql_query, view_name): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = sql_query % (schema_name, view_name, schema_name, view_name, server['username']) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created view pg_cursor.execute("select oid from pg_catalog.pg_class where " diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/__init__.py index 76f756be3..b0dd2aa32 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/__init__.py @@ -540,7 +540,7 @@ class CheckConstraintView(PGChildNodeView): # The below SQL will execute CREATE DDL only sql = render_template( "/".join([self.template_path, self._CREATE_SQL]), - data=data + data=data, conn=self.conn ) status, msg = self.conn.execute_scalar(sql) @@ -568,7 +568,8 @@ class CheckConstraintView(PGChildNodeView): sql = render_template( "/".join([self.template_path, self._OID_SQL]), tid=tid, - name=data['name'] + name=data['name'], + conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: @@ -741,7 +742,7 @@ class CheckConstraintView(PGChildNodeView): SQL = render_template("/".join([self.template_path, self._CREATE_SQL]), - data=data) + data=data, conn=self.conn) sql_header = "-- Constraint: {0}\n\n-- ".format(data['name']) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/check_constraint_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/check_constraint_test_data.json index 28debaf33..c37448999 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/check_constraint_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/check_constraint_test_data.json @@ -83,7 +83,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -103,7 +103,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -124,7 +124,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -187,7 +187,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -204,7 +204,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -298,7 +298,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -469,7 +469,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -516,7 +516,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -547,7 +547,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -563,7 +563,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/utils.py index ee6c49df9..964147485 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/utils.py @@ -107,7 +107,7 @@ def create_check_constraint(server, db_name, schema_name, table_name, server['host'], server['port']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() if query_val is None: query = "ALTER TABLE %s.%s ADD CONSTRAINT %s CHECK ( (id > 0)) " \ @@ -119,7 +119,7 @@ def create_check_constraint(server, db_name, schema_name, table_name, else: query = eval(query_val) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get oid of newly added check constraint pg_cursor.execute( diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/utils.py index 1ec69bd6b..7c2fa9b6d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/utils.py @@ -181,6 +181,6 @@ def get_sql(conn, data, tid, cid=None, template_path=None): return _('-- definition incomplete'), name sql = render_template("/".join([template_path, 'create.sql']), - data=data) + data=data, conn=conn) return sql, name diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py index 90c542141..186100674 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/__init__.py @@ -573,7 +573,7 @@ class ExclusionConstraintView(PGChildNodeView): else: sql = render_template( "/".join([self.template_path, self._OID_SQL]), - name=data['name'] + name=data['name'], conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: @@ -633,7 +633,7 @@ class ExclusionConstraintView(PGChildNodeView): sql = render_template( "/".join([self.template_path, self._OID_SQL]), - name=data['name'] + name=data['name'], conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: @@ -796,7 +796,8 @@ class ExclusionConstraintView(PGChildNodeView): data['table'] = self.table SQL = render_template( - "/".join([self.template_path, self._CREATE_SQL]), data=data) + "/".join([self.template_path, self._CREATE_SQL]), data=data, + conn=self.conn) sql_header = "-- Constraint: {0}\n\n-- ".format(data['name']) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/tests/exclusion_constraint_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/tests/exclusion_constraint_test_data.json index 0c6b8ee8e..a711d5e75 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/tests/exclusion_constraint_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/tests/exclusion_constraint_test_data.json @@ -77,7 +77,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -102,7 +102,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -127,7 +127,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -151,7 +151,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -210,7 +210,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -226,7 +226,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -322,7 +322,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -428,7 +428,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -447,7 +447,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -497,7 +497,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -531,7 +531,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/tests/utils.py index 8b3a62a64..643fab1fc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/tests/utils.py @@ -103,13 +103,13 @@ def create_exclusion_constraint(server, db_name, schema_name, table_name, server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "ALTER TABLE %s.%s ADD CONSTRAINT %s EXCLUDE USING btree(" \ "id ASC NULLS FIRST WITH =)" % \ (schema_name, table_name, key_name) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get oid of newly added index constraint pg_cursor.execute("SELECT conindid FROM pg_catalog.pg_constraint " diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/utils.py index ec4b15298..470df006e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/utils.py @@ -228,7 +228,7 @@ def get_sql(conn, data, did, tid, exid=None, template_path=None): name = data['name'] = old_data['name'] sql = render_template("/".join([template_path, 'update.sql']), - data=data, o_data=old_data) + data=data, o_data=old_data, conn=conn) else: if 'columns' not in data or \ (isinstance(data['columns'], list) and @@ -276,7 +276,7 @@ def get_oper_class(conn, indextype, template_path=None): :return: """ SQL = render_template("/".join([template_path, 'get_oper_class.sql']), - indextype=indextype) + indextype=indextype, conn=conn) status, res = conn.execute_2darray(SQL) if not status: @@ -301,7 +301,7 @@ def get_operator(conn, coltype, show_sysobj, template_path=None): :return: """ SQL = render_template("/".join([template_path, 'get_operator.sql']), - type=coltype, show_sysobj=show_sysobj) + type=coltype, show_sysobj=show_sysobj, conn=conn) status, res = conn.execute_2darray(SQL) if not status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/__init__.py index 987f87a0e..68eee94f0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/__init__.py @@ -593,7 +593,7 @@ class ForeignKeyConstraintView(PGChildNodeView): else: sql = render_template( "/".join([self.template_path, self._OID_SQL]), - name=data['name'] + name=data['name'], conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: @@ -688,7 +688,8 @@ class ForeignKeyConstraintView(PGChildNodeView): sql = render_template( "/".join([self.template_path, self._OID_SQL]), tid=tid, - name=data['name'] + name=data['name'], + conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/tests/foreign_key_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/tests/foreign_key_test_data.json index 88ed76213..a6062f2ef 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/tests/foreign_key_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/tests/foreign_key_test_data.json @@ -86,7 +86,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -114,7 +114,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -142,7 +142,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -169,7 +169,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -234,7 +234,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -252,7 +252,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -336,7 +336,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -470,7 +470,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -489,7 +489,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -539,7 +539,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -573,7 +573,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -591,7 +591,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/tests/utils.py index 06cee155c..89832e94b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/tests/utils.py @@ -126,11 +126,11 @@ def create_foreignkey(server, db_name, schema_name, local_table_name, server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get oid of newly added foreign key pg_cursor.execute("SELECT oid FROM pg_catalog.pg_constraint " diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/utils.py index 75557c199..284418fe4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/utils.py @@ -243,7 +243,7 @@ def get_sql(conn, data, tid, fkid=None, template_path=None): template_path, conn) sql = render_template("/".join([template_path, 'update.sql']), - data=data, o_data=old_data) + data=data, o_data=old_data, conn=conn) if 'autoindex' in data and data['autoindex'] and \ ('coveringindex' in data and data['coveringindex'] != ''): diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py index e5bfa878e..aef6c8674 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py @@ -616,7 +616,8 @@ class IndexConstraintView(PGChildNodeView): "/".join([self.template_path, self._OID_SQL]), tid=tid, constraint_type=self.constraint_type, - name=data['name'] + name=data['name'], + conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: @@ -678,7 +679,8 @@ class IndexConstraintView(PGChildNodeView): "/".join([self.template_path, self._OID_SQL]), tid=tid, constraint_type=self.constraint_type, - name=data['name'] + name=data['name'], + conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: @@ -881,7 +883,9 @@ class IndexConstraintView(PGChildNodeView): SQL = render_template( "/".join([self.template_path, self._CREATE_SQL]), data=data, - constraint_name=self.constraint_name) + constraint_name=self.constraint_name, + conn=self.conn + ) sql_header = "-- Constraint: {0}\n\n-- ".format(data['name']) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/index_constraint_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/index_constraint_test_data.json index 68f0ca2f8..65b4bebc4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/index_constraint_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/index_constraint_test_data.json @@ -100,7 +100,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -120,7 +120,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -141,7 +141,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -165,7 +165,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -297,7 +297,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -318,7 +318,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -451,7 +451,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -639,7 +639,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -717,7 +717,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -803,7 +803,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -871,7 +871,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -895,7 +895,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/utils.py index 5ac848855..c2dea525c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/utils.py @@ -112,12 +112,12 @@ def create_index_constraint(server, db_name, schema_name, table_name, server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "ALTER TABLE %s.%s ADD CONSTRAINT %s %s (id)" % \ (schema_name, table_name, key_name, key_type) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get oid of newly added index constraint pg_cursor.execute("SELECT conindid FROM pg_catalog.pg_constraint " @@ -183,12 +183,12 @@ def create_unique_index(server, db_name, schema_name, table_name, server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "CREATE UNIQUE INDEX CONCURRENTLY %s ON %s.%s (%s)" % \ (index_name, schema_name, table_name, column_name) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() except Exception: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/utils.py index fc6dffe53..a305dfb4d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/utils.py @@ -290,7 +290,8 @@ def get_sql(conn, data, did, tid, ctype, cid=None, template_path=None): sql = render_template("/".join([template_path, 'update.sql']), data=data, - o_data=old_data) + o_data=old_data, + conn=conn) else: is_error, errmsg, name = _check_required_args(data, name) if is_error: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py index 57aa0a307..9ee52e735 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py @@ -636,7 +636,7 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare): # we need oid to add object in tree at browser SQL = render_template( "/".join([self.template_path, self._OID_SQL]), - tid=tid, data=data + tid=tid, data=data, conn=self.conn ) status, idx = self.conn.execute_scalar(SQL) if not status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/tests/index_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/tests/index_test_data.json index 32c920200..6d39edadf 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/tests/index_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/tests/index_test_data.json @@ -156,7 +156,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -187,7 +187,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(True, True),(False, 'Mocked Internal Server Error'),(False, 'Mocked Internal Server Error')]" }, "expected_data": { @@ -252,7 +252,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -270,7 +270,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -322,7 +322,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -340,7 +340,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -395,7 +395,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -445,7 +445,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "[(True,''),(False, 'Mocked Internal Server Error')]" }, "expected_data": { @@ -476,7 +476,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "[(True,''),(False, 'Mocked Internal Server Error')]" }, "expected_data": { @@ -507,7 +507,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "[(True,''),(False, 'Mocked Internal Server Error')]" }, "expected_data": { @@ -636,7 +636,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/tests/utils.py index c23133a62..092503818 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/tests/utils.py @@ -185,13 +185,13 @@ def create_index(server, db_name, schema_name, table_name, index_name, server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "CREATE INDEX %s ON %s.%s USING btree (%s ASC NULLS LAST) " \ "TABLESPACE pg_default" % (index_name, schema_name, table_name, col_name) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get oid of newly added index pg_cursor.execute("select oid from pg_catalog.pg_class " diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/__init__.py index 364d0d724..329830b76 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/__init__.py @@ -564,7 +564,8 @@ class PartitionsView(BaseTableView, DataTypeReader, SchemaDiffObjectCompare): # Get schema oid of partition status, pscid = self.conn.execute_scalar( render_template("/".join([self.table_template_path, - self._GET_SCHEMA_OID_SQL]), tid=ptid)) + self._GET_SCHEMA_OID_SQL]), tid=ptid, + conn=self.conn)) if not status: return internal_server_error(errormsg=scid) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/__init__.py index ac4b2d4a6..3af42c834 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/__init__.py @@ -368,7 +368,7 @@ class RowSecurityView(PGChildNodeView): sql = render_template("/".join([self.template_path, self._CREATE_SQL]), data=data, - conn=self.conn, + conn=self.conn ) status, res = self.conn.execute_scalar(sql) if not status: @@ -377,7 +377,7 @@ class RowSecurityView(PGChildNodeView): # we need oid to add object in tree at browser sql = render_template( "/".join([self.template_path, 'get_position.sql']), - tid=tid, data=data + tid=tid, data=data, conn=self.conn ) status, plid = self.conn.execute_scalar(sql) if not status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/tests/rls_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/tests/rls_test_data.json index 1adf62f44..c1e57b1a5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/tests/rls_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/tests/rls_test_data.json @@ -55,7 +55,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -72,7 +72,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True),(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -88,7 +88,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -124,7 +124,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -149,7 +149,7 @@ "table_nodes": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -203,7 +203,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -240,7 +240,7 @@ "table_nodes": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -253,7 +253,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -302,7 +302,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -315,7 +315,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -328,7 +328,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(True, 'Mocked Internal Server Error')" }, "expected_data": { @@ -421,7 +421,7 @@ "id": "PLACE_HOLDER" }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -438,7 +438,7 @@ "id": "PLACE_HOLDER" }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/tests/utils.py index 96289ac54..198a33efb 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/tests/utils.py @@ -44,12 +44,12 @@ def create_policy(server, db_name, schema_name, table_name, policy_name): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "CREATE policy %s on %s.%s To public" % \ (policy_name, schema_name, table_name) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get role oid of newly added policy pg_cursor.execute("select oid from pg_catalog.pg_policy where " @@ -126,12 +126,12 @@ def delete_policy(server, db_name, policy_name, schema_name, table_name): policy_count = pg_cursor.fetchone() if policy_count: old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "DROP policy %s on %s.%s" % \ (policy_name, schema_name, table_name) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() except Exception: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/utils.py index c67dbd1ee..f7d392c1a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/utils.py @@ -89,13 +89,13 @@ def get_sql(conn, **kwargs): old_data['table'] = table sql = render_template( "/".join([template_path, 'update.sql']), - data=data, o_data=old_data + data=data, o_data=old_data, conn=conn ) else: data['schema'] = schema data['table'] = table sql = render_template("/".join( - [template_path, 'create.sql']), data=data) + [template_path, 'create.sql']), data=data, conn=conn) return sql, data['name'] if 'name' in data else old_data['name'] diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/__init__.py index 6f784712e..ee6e46d2b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/__init__.py @@ -340,7 +340,9 @@ class RuleView(PGChildNodeView, SchemaDiffObjectCompare): ) try: SQL = render_template("/".join( - [self.template_path, self._CREATE_SQL]), data=data) + [self.template_path, self._CREATE_SQL]), + data=data, + conn=self.conn) status, res = self.conn.execute_scalar(SQL) if not status: return internal_server_error(errormsg=res) @@ -348,7 +350,8 @@ class RuleView(PGChildNodeView, SchemaDiffObjectCompare): # Fetch the rule id against rule name to display node # in tree browser SQL = render_template("/".join( - [self.template_path, 'rule_id.sql']), rule_name=data['name']) + [self.template_path, 'rule_id.sql']), + rule_name=data['name'], conn=self.conn) status, rule_id = self.conn.execute_scalar(SQL) if not status: return internal_server_error(errormsg=rule_id) @@ -488,7 +491,8 @@ class RuleView(PGChildNodeView, SchemaDiffObjectCompare): SQL = render_template("/".join( [self.template_path, self._CREATE_SQL]), data=res_data, display_comments=True, - add_replace_clause=True + add_replace_clause=True, + conn=self.conn ) return ajax_response(response=SQL) @@ -511,11 +515,12 @@ class RuleView(PGChildNodeView, SchemaDiffObjectCompare): old_data = res_data SQL = render_template( "/".join([self.template_path, self._UPDATE_SQL]), - data=data, o_data=old_data + data=data, o_data=old_data, conn=self.conn ) else: SQL = render_template("/".join( - [self.template_path, self._CREATE_SQL]), data=data) + [self.template_path, self._CREATE_SQL]), + data=data, conn=self.conn) return SQL, data['name'] if 'name' in data else old_data['name'] @check_precondition @@ -553,13 +558,15 @@ class RuleView(PGChildNodeView, SchemaDiffObjectCompare): old_data = res_data sql = render_template( "/".join([self.template_path, self._UPDATE_SQL]), - data=data, o_data=old_data + data=data, o_data=old_data, conn=self.conn ) else: RuleView._check_schema_diff(target_schema, res_data) sql = render_template("/".join( [self.template_path, self._CREATE_SQL]), - data=res_data, display_comments=True) + data=res_data, + display_comments=True, + conn=self.conn) return sql diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/tests/rules_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/tests/rules_test_data.json index cd053c5dc..e3cfa0ed1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/tests/rules_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/tests/rules_test_data.json @@ -46,7 +46,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -66,7 +66,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True),(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -85,7 +85,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -133,7 +133,7 @@ "table_nodes": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -187,7 +187,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -224,7 +224,7 @@ "table_nodes": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -237,7 +237,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -286,7 +286,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -299,7 +299,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -312,7 +312,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(True, 'Mocked Internal Server Error')" }, "expected_data": { @@ -348,7 +348,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -361,7 +361,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/tests/utils.py index eb66a52dd..f3f6a94ce 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/tests/utils.py @@ -44,12 +44,12 @@ def create_rule(server, db_name, schema_name, table_name, rule_name): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "CREATE OR REPLACE RULE %s AS ON UPDATE TO %s.%s DO NOTHING" %\ (rule_name, schema_name, table_name) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get role oid of newly added rule pg_cursor.execute("select oid from pg_catalog.pg_rewrite where " diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/check_constraint/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/check_constraint/sql/default/create.sql index 1e095dbd1..c075f4ba0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/check_constraint/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/check_constraint/sql/default/create.sql @@ -7,5 +7,9 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(data.schema, data.table) }} {% if data.comment %} COMMENT ON CONSTRAINT {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} +<<<<<<< Updated upstream IS {{ data.comment|qtLiteral }}; +======= + IS {{ data.comment|qtLiteral(conn) }}; +>>>>>>> Stashed changes {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/check_constraint/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/check_constraint/sql/default/get_oid.sql index 1970d96b2..b858844ba 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/check_constraint/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/check_constraint/sql/default/get_oid.sql @@ -5,4 +5,4 @@ FROM pg_catalog.pg_constraint WHERE conrelid = {{tid}}::oid - AND conname={{ name|qtLiteral }}; + AND conname={{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/check_constraint/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/check_constraint/sql/default/update.sql index 5a323c4d2..f30eea794 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/check_constraint/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/check_constraint/sql/default/update.sql @@ -7,7 +7,13 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(o_data.nspname, data.table) }} ALTER TABLE IF EXISTS {{ conn|qtIdent(o_data.nspname, data.table) }} VALIDATE CONSTRAINT {{ conn|qtIdent(data.name) }};{% endif -%} {% if data.comment is defined and data.comment != o_data.comment %} +<<<<<<< Updated upstream COMMENT ON CONSTRAINT {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(o_data.nspname, data.table) }} IS {{ data.comment|qtLiteral }};{% endif %} {% endif -%} +======= +COMMENT ON CONSTRAINT {{ conn|qtIdent(o_data.name) }} ON {{ conn|qtIdent(o_data.nspname, o_data.relname) }} + IS {{ data.comment|qtLiteral(conn) }}; +{% endif %} +>>>>>>> Stashed changes diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/macros/security.macros b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/macros/security.macros index 1beb2595b..2e99342c7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/macros/security.macros +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/macros/security.macros @@ -1,5 +1,5 @@ {% macro APPLY(conn, type, schema_name, parent_object, child_object, provider, label) -%} -SECURITY LABEL{% if provider and provider != '' %} FOR {{ conn|qtIdent(provider) }}{% endif %} ON {{ type }} {{ conn|qtIdent(schema_name, parent_object, child_object) }} IS {{ label|qtLiteral }}; +SECURITY LABEL{% if provider and provider != '' %} FOR {{ conn|qtIdent(provider) }}{% endif %} ON {{ type }} {{ conn|qtIdent(schema_name, parent_object, child_object) }} IS {{ label|qtLiteral(conn) }}; {%- endmacro %} {% macro DROP(conn, type, schema_name, parent_object, child_object, provider) -%} SECURITY LABEL{% if provider and provider != '' %} FOR {{ conn|qtIdent(provider) }}{% endif %} ON {{ type }} {{ conn|qtIdent(schema_name, parent_object, child_object) }} IS NULL; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/12_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/12_plus/create.sql index 1929705a7..46df0aeea 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/12_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/12_plus/create.sql @@ -23,7 +23,7 @@ CACHE {{data.seqcache|int}} {% endif %} {### Add comments ###} {% if data and data.description and data.description != None %} COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.table, data.name)}} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {### Add variables to column ###} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/create.sql index 03db79b45..7fa814ad1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/create.sql @@ -23,7 +23,7 @@ CACHE {{data.seqcache|int}} {% endif %} {### Add comments ###} {% if data and data.description and data.description != None %} COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.table, data.name)}} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {### Add variables to column ###} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/get_position.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/get_position.sql index fe640d58d..367fa4f43 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/get_position.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/get_position.sql @@ -1,4 +1,4 @@ SELECT att.attnum FROM pg_catalog.pg_attribute att WHERE att.attrelid = {{tid}}::oid - AND att.attname = {{data.name|qtLiteral(True)}} + AND att.attname = {{data.name|qtLiteral(conn)}} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/nodes.sql index 2648e65ed..171eb740d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/nodes.sql @@ -11,9 +11,9 @@ FROM pg_catalog.pg_attribute att LEFT OUTER JOIN pg_catalog.pg_namespace ns ON ns.oid=cs.relnamespace LEFT OUTER JOIN pg_catalog.pg_index pi ON pi.indrelid=att.attrelid AND indisprimary WHERE - att.attrelid = {{ tid|qtLiteral }}::oid + att.attrelid = {{ tid|qtLiteral(conn) }}::oid {% if clid %} - AND att.attnum = {{ clid|qtLiteral }} + AND att.attnum = {{ clid|qtLiteral(conn) }} {% endif %} {### To show system objects ###} {% if not show_sys_objects and not has_oids %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/stats.sql index b9b000156..6aa4754e6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/stats.sql @@ -9,6 +9,6 @@ SELECT FROM pg_catalog.pg_stats WHERE - schemaname = {{schema|qtLiteral}} - AND tablename = {{table|qtLiteral}} - AND attname = {{column|qtLiteral}}; + schemaname = {{schema|qtLiteral(conn)}} + AND tablename = {{table|qtLiteral(conn)}} + AND attname = {{column|qtLiteral(conn)}}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/update.sql index dc9c6d9ce..6da49a9c8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/update.sql @@ -102,7 +102,7 @@ COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.table, data.name)}} {% else %} COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.table, o_data.name)}} {% endif %} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {### Update column variables ###} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/create.sql index 2f9b392ab..82e97c250 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/create.sql @@ -22,5 +22,5 @@ END {{ conn|qtIdent(data.name) }}; {% if data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/get_oid.sql index ff66a7f27..5407b4868 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/get_oid.sql @@ -1,4 +1,4 @@ SELECT t.oid FROM pg_catalog.pg_trigger t WHERE tgrelid = {{tid}}::OID - AND tgname = {{data.name|qtLiteral}}; + AND tgname = {{data.name|qtLiteral(conn)}}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/update.sql index 30f2a657b..765592634 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/update.sql @@ -30,12 +30,12 @@ END {{ conn|qtIdent(data.name) }}; {% if data.description is not defined and o_data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(o_data.nspname, o_data.relname) }} - IS {{o_data.description|qtLiteral}}; + IS {{o_data.description|qtLiteral(conn)}}; {% endif %} {% endif %} {% if data.description is defined and o_data.description != data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(o_data.nspname, o_data.relname) }} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {% if data.is_enable_trigger is defined and o_data.is_enable_trigger != data.is_enable_trigger %} {% set enable_map = {'R':'ENABLE REPLICA', 'A':'ENABLE ALWAYS', 'O':'ENABLE', 'D':'DISABLE'} %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/11_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/11_plus/create.sql index 26f944907..0e9f2ecc2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/11_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/11_plus/create.sql @@ -17,5 +17,5 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(data.schema, data.table) }} {% if data.comment and data.name %} COMMENT ON CONSTRAINT {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/create.sql index b943ecb00..8ebe6f9f8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/create.sql @@ -15,5 +15,5 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(data.schema, data.table) }} {% if data.comment and data.name %} COMMENT ON CONSTRAINT {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_oid.sql index 21599a558..3eda508ec 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_oid.sql @@ -1,4 +1,4 @@ SELECT ct.conindid AS oid FROM pg_catalog.pg_constraint ct WHERE contype='x' AND -ct.conname = {{ name|qtLiteral }}; +ct.conname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_oper_class.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_oper_class.sql index 0624a0e49..cdabbb0a2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_oper_class.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_oper_class.sql @@ -2,6 +2,6 @@ SELECT opcname FROM pg_catalog.pg_opclass opc, pg_catalog.pg_am am WHERE opcmethod=am.oid AND - am.amname ={{indextype|qtLiteral}} AND + am.amname ={{indextype|qtLiteral(conn)}} AND NOT opcdefault ORDER BY 1 diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_operator.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_operator.sql index eb0c72fd2..ba0c5ebee 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_operator.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_operator.sql @@ -26,7 +26,7 @@ FROM pg_catalog.pg_operator op, UNION SELECT 'smallserial', 0 UNION SELECT 'bigserial', 0 UNION SELECT 'serial', 0) t1 - WHERE typname = {{type|qtLiteral}}) AS types + WHERE typname = {{type|qtLiteral(conn)}}) AS types WHERE oprcom > 0 AND (op.oprleft=types.oid OR op.oprright=types.oid) {% else %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/update.sql index cd57cbb3e..a79c3d1f8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/update.sql @@ -21,6 +21,6 @@ ALTER INDEX IF EXISTS {{ conn|qtIdent(data.schema, data.name) }} {# ==== To update exclusion constraint comments ==== #} {% if data.comment is defined and data.comment != o_data.comment %} COMMENT ON CONSTRAINT {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/default/create.sql index 6601e7ed1..bf53512ee 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/default/create.sql @@ -28,6 +28,6 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(data.schema, data.table) }} {% if data.comment and data.name %} COMMENT ON CONSTRAINT {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/default/get_oid.sql index 5b0b42132..b0f345537 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/default/get_oid.sql @@ -2,4 +2,4 @@ SELECT ct.oid, NOT convalidated as convalidated FROM pg_catalog.pg_constraint ct WHERE contype='f' AND -ct.conname = {{ name|qtLiteral }}; +ct.conname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/default/update.sql index 321ad5131..0938bab18 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/default/update.sql @@ -15,6 +15,6 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(data.schema, data.table) }} {# ==== To update foreign key comments ==== #} {% if data.comment is defined and data.comment != o_data.comment %} COMMENT ON CONSTRAINT {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/tests/test_foreign_key_properties.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/tests/test_foreign_key_properties.py index 9c21030dc..abdbccfa8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/tests/test_foreign_key_properties.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/foreign_key/sql/tests/test_foreign_key_properties.py @@ -38,7 +38,7 @@ class TestColumnForeignKeyGetConstraintCols(BaseTestGenerator): " and pg_attribute.attname = 'some_column'") table_id, column_id = cursor.fetchone() - if connection.server_version < 90100: + if test_utils.get_server_version(connection) < 90100: self.versions_to_test = ['default'] else: self.versions_to_test = ['9.1_plus'] diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/11_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/11_plus/create.sql index 799a39cd5..c5c54a12f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/11_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/11_plus/create.sql @@ -16,5 +16,5 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(data.schema, data.table) }} {% if data.comment and data.name %} COMMENT ON CONSTRAINT {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/create.sql index 0a46c4e9d..521dc5041 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/create.sql @@ -13,5 +13,5 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(data.schema, data.table) }} {% if data.comment and data.name %} COMMENT ON CONSTRAINT {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/get_oid.sql index 154b8c44c..6901effa7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/get_oid.sql @@ -1,4 +1,4 @@ SELECT ct.conindid as oid FROM pg_catalog.pg_constraint ct WHERE contype='{{constraint_type}}' AND -ct.conname = {{ name|qtLiteral }}; +ct.conname = {{ name|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/update.sql index 8d4301a99..5b30e993a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/update.sql @@ -20,6 +20,6 @@ ALTER INDEX {{ conn|qtIdent(data.schema, data.name) }} {# ==== To update constraint comments ==== #} {% if data.comment is defined and data.comment != o_data.comment %} COMMENT ON CONSTRAINT {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/alter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/alter.sql index 50371e9e4..837789ef2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/alter.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/alter.sql @@ -8,4 +8,4 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.table)}} {% if data.description is defined and data.description %} COMMENT ON INDEX {{conn|qtIdent(data.schema, data.name)}} - IS {{data.description|qtLiteral}};{% endif %} + IS {{data.description|qtLiteral(conn)}};{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/get_oid.sql index e47573ad6..94c99ddda 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/get_oid.sql @@ -4,4 +4,4 @@ FROM pg_catalog.pg_index idx JOIN pg_catalog.pg_class tab ON tab.oid=indrelid JOIN pg_catalog.pg_namespace n ON n.oid=tab.relnamespace WHERE indrelid = {{tid}}::OID - AND cls.relname = {{data.name|qtLiteral}}; + AND cls.relname = {{data.name|qtLiteral(conn)}}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/update.sql index 2748cd9fe..a96b1ea0f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/update.sql @@ -35,4 +35,4 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.table)}} {## Changes description ##} {% if data.description is defined and o_data.description != data.description %} COMMENT ON INDEX {{conn|qtIdent(data.schema, data.name)}} - IS {{data.description|qtLiteral}};{% endif %} + IS {{data.description|qtLiteral(conn)}};{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/pg/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/pg/default/create.sql index bde3c4909..f39edda72 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/pg/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/pg/default/create.sql @@ -63,5 +63,5 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} {### SQL for COMMENT ###} {% if data.description %} COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/ppas/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/ppas/default/create.sql index c4dac5b54..d54e98d2e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/ppas/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/ppas/default/create.sql @@ -61,5 +61,5 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} {### SQL for COMMENT ###} {% if data.description %} COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/row_security_policies/sql/default/get_position.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/row_security_policies/sql/default/get_position.sql index 851d504d9..9dbf8df84 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/row_security_policies/sql/default/get_position.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/row_security_policies/sql/default/get_position.sql @@ -1,2 +1,2 @@ SELECT pl.oid FROM pg_catalog.pg_policy pl -WHERE pl.polrelid = {{tid}}::oid AND pl.polname = {{data.name|qtLiteral}}; +WHERE pl.polrelid = {{tid}}::oid AND pl.polname = {{data.name|qtLiteral(conn)}}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/create.sql index bf0e46fb6..394afb45a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/create.sql @@ -23,5 +23,5 @@ CREATE{% if add_replace_clause %} OR REPLACE{% endif %} RULE {{ conn|qtIdent(dat {% endif %} {% if data.comment %} -COMMENT ON RULE {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.view) }} IS {{ data.comment|qtLiteral }};{% endif %} +COMMENT ON RULE {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.view) }} IS {{ data.comment|qtLiteral(conn) }};{% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/rule_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/rule_id.sql index b528fa2e5..6bc9c8321 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/rule_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/rule_id.sql @@ -5,5 +5,5 @@ SELECT FROM pg_catalog.pg_rewrite rw WHERE - rw.rulename={{ rule_name|qtLiteral }} + rw.rulename={{ rule_name|qtLiteral(conn) }} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/update.sql index 90a94e2a8..567aae00c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/update.sql @@ -34,7 +34,7 @@ CREATE OR REPLACE RULE {{ conn|qtIdent(rule_name) }} AS {% endif %} {% set old_comment = o_data.comment|default('', true) %} {% if (data.comment is defined and (data.comment != old_comment)) %} -COMMENT ON RULE {{ conn|qtIdent(rule_name) }} ON {{ conn|qtIdent(o_data.schema, o_data.view) }} IS {{ data.comment|qtLiteral }};{% endif %} +COMMENT ON RULE {{ conn|qtIdent(rule_name) }} ON {{ conn|qtIdent(o_data.schema, o_data.view) }} IS {{ data.comment|qtLiteral(conn) }};{% endif %} {% if data.enabled is defined and o_data.enabled != data.enabled %} ALTER TABLE {{ conn|qtIdent(o_data.schema, o_data.view) }} {% if (data.enabled in ['false', False]) %}DISABLE{% endif %}{% if (data.enabled in ['true', True]) %}ENABLE{% endif %} RULE {{ conn|qtIdent(o_data.name) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/create.sql index 02de260cb..64c22707c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/create.sql @@ -144,7 +144,7 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} {### SQL for COMMENT ###} {% if data.description %} COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {#===========================================#} {#====== MAIN TABLE TEMPLATE ENDS HERE ======#} @@ -157,7 +157,7 @@ COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} {% if c.description %} COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.name, c.name)}} - IS {{c.description|qtLiteral}}; + IS {{c.description|qtLiteral(conn)}}; {% endif %} {### Add variables to column ###} {% if c.attoptions and c.attoptions|length > 0 %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/update.sql index e40d2e36c..591ed675e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/11_plus/update.sql @@ -209,7 +209,7 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} RESET ( {#####################################################} {% if data.description is defined and data.description != o_data.description %} COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/create.sql index c43de881d..09fa59160 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/create.sql @@ -162,7 +162,7 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} {### SQL for COMMENT ###} {% if data.description %} COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {#===========================================#} {#====== MAIN TABLE TEMPLATE ENDS HERE ======#} @@ -175,7 +175,7 @@ COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} {% if c.description %} COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.name, c.name)}} - IS {{c.description|qtLiteral}}; + IS {{c.description|qtLiteral(conn)}}; {% endif %} {### Add variables to column ###} {% if c.attoptions and c.attoptions|length > 0 %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/update.sql index 1b13269d8..e14750395 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/update.sql @@ -226,7 +226,7 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} RESET ( {#####################################################} {% if data.description is defined and data.description != o_data.description %} COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {#####################################################} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/coll_table_stats.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/coll_table_stats.sql index 443d32362..fae6c4521 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/coll_table_stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/coll_table_stats.sql @@ -25,5 +25,5 @@ FROM JOIN pg_catalog.pg_class cl on cl.oid=st.relid WHERE - schemaname = {{schema_name|qtLiteral}} + schemaname = {{schema_name|qtLiteral(conn)}} ORDER BY st.relname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/create.sql index c1eaedf7e..09957feb5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/create.sql @@ -143,7 +143,7 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} {### SQL for COMMENT ###} {% if data.description %} COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {#===========================================#} {#====== MAIN TABLE TEMPLATE ENDS HERE ======#} @@ -156,7 +156,7 @@ COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} {% if c.description %} COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.name, c.name)}} - IS {{c.description|qtLiteral}}; + IS {{c.description|qtLiteral(conn)}}; {% endif %} {### Add variables to column ###} {% if c.attoptions and c.attoptions|length > 0 %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_columns_for_table.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_columns_for_table.sql index 2bb034c13..2b63fdab3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_columns_for_table.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_columns_for_table.sql @@ -15,5 +15,5 @@ WHERE {% if tid %} c.oid = {{tid}}::OID {% else %} - c.relname = {{tname|qtLiteral}} + c.relname = {{tname|qtLiteral(conn)}} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_oid.sql index 97ab5fef5..3f53d6f5a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_oid.sql @@ -2,4 +2,4 @@ SELECT rel.oid as tid FROM pg_catalog.pg_class rel WHERE rel.relkind IN ('r','s','t','p') AND rel.relnamespace = {{ scid }}::oid -AND rel.relname = {{data.name|qtLiteral}} +AND rel.relname = {{data.name|qtLiteral(conn)}} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_schema.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_schema.sql index be20542b7..5f5612c02 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_schema.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_schema.sql @@ -1 +1 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral }}; +SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_schema_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_schema_oid.sql index ea6aee3ab..9e34436b9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_schema_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/get_schema_oid.sql @@ -8,5 +8,5 @@ WHERE {% if tid %} c.oid = {{tid}}::oid; {% else %} - c.relname = {{tname|qtLiteral}}::text; + c.relname = {{tname|qtLiteral(conn)}}::text; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/update.sql index fb1ffda31..f1b4625a2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/update.sql @@ -210,7 +210,7 @@ ALTER TABLE IF EXISTS {{conn|qtIdent(data.schema, data.name)}} RESET ( {#####################################################} {% if data.description is defined and data.description != o_data.description %} COMMENT ON TABLE {{conn|qtIdent(data.schema, data.name)}} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {#####################################################} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/macros/constraints.macro b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/macros/constraints.macro index e3529bed7..a307753db 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/macros/constraints.macro +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/macros/constraints.macro @@ -106,7 +106,7 @@ {% for d in data %} {% if d.name and d.comment %} COMMENT ON CONSTRAINT {{ conn|qtIdent(d.name) }} ON {{ conn|qtIdent(schema, table) }} - IS {{ d.comment|qtLiteral }}; + IS {{ d.comment|qtLiteral(conn) }}; {% endif %} {% endfor %} {%- endmacro %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/11_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/11_plus/create.sql index 5a69fba33..f3d7c2070 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/11_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/11_plus/create.sql @@ -33,5 +33,5 @@ CREATE{% if data.is_constraint_trigger %} CONSTRAINT{% endif %} TRIGGER {{ conn| {% if data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/11_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/11_plus/update.sql index 26ee3818d..8b7a9ded0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/11_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/11_plus/update.sql @@ -47,12 +47,12 @@ CREATE{% if data.is_constraint_trigger %} CONSTRAINT{% endif %} TRIGGER {{ conn| {% if data.description is not defined and o_data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(o_data.nspname, o_data.relname) }} - IS {{o_data.description|qtLiteral}}; + IS {{o_data.description|qtLiteral(conn)}}; {% endif %} {% endif %} {% if data.description is defined and o_data.description != data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(o_data.nspname, o_data.relname) }} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {% if data.is_enable_trigger is defined and o_data.is_enable_trigger != data.is_enable_trigger %} {% set enable_map = {'R':'ENABLE REPLICA', 'A':'ENABLE ALWAYS', 'O':'ENABLE', 'D':'DISABLE'} %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/alter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/alter.sql index 93f323e1a..dcfe217ed 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/alter.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/alter.sql @@ -6,4 +6,4 @@ ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} {## Changes description ##} {% if data.description %} COMMENT ON INDEX {{conn|qtIdent(data.name)}} - IS {{data.description|qtLiteral}};{% endif %} \ No newline at end of file + IS {{data.description|qtLiteral(conn)}};{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/create.sql index 7676c1332..5f3c877ae 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/create.sql @@ -33,5 +33,5 @@ CREATE{% if data.is_constraint_trigger %} CONSTRAINT{% endif %} TRIGGER {{ conn| {% if data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/get_oid.sql index fcaddc964..d37f4bfa5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/get_oid.sql @@ -2,4 +2,4 @@ SELECT t.oid FROM pg_catalog.pg_trigger t WHERE NOT tgisinternal AND tgrelid = {{tid}}::OID - AND tgname = {{data.name|qtLiteral}}; + AND tgname = {{data.name|qtLiteral(conn)}}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/update.sql index 4c8fd07de..4cb6af005 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/default/update.sql @@ -47,12 +47,12 @@ CREATE{% if data.is_constraint_trigger %} CONSTRAINT{% endif %} TRIGGER {{ conn| {% if data.description is not defined and o_data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(o_data.nspname, o_data.relname) }} - IS {{o_data.description|qtLiteral}}; + IS {{o_data.description|qtLiteral(conn)}}; {% endif %} {% endif %} {% if data.description is defined and o_data.description != data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(o_data.nspname, o_data.relname) }} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {% if data.is_enable_trigger is defined and o_data.is_enable_trigger != data.is_enable_trigger %} {% set enable_map = {'R':'ENABLE REPLICA', 'A':'ENABLE ALWAYS', 'O':'ENABLE', 'D':'DISABLE'} %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/11_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/11_plus/create.sql index 5a69fba33..f3d7c2070 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/11_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/11_plus/create.sql @@ -33,5 +33,5 @@ CREATE{% if data.is_constraint_trigger %} CONSTRAINT{% endif %} TRIGGER {{ conn| {% if data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/11_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/11_plus/update.sql index c351b3e7b..e6b1d8624 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/11_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/11_plus/update.sql @@ -56,12 +56,12 @@ CREATE{% if data.is_constraint_trigger %} CONSTRAINT{% endif %} TRIGGER {{ conn| {% if data.description is not defined and o_data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(o_data.nspname, o_data.relname) }} - IS {{o_data.description|qtLiteral}}; + IS {{o_data.description|qtLiteral(conn)}}; {% endif %} {% endif %} {% if data.description is defined and o_data.description != data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(o_data.nspname, o_data.relname) }} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {% if data.is_enable_trigger is defined and o_data.is_enable_trigger != data.is_enable_trigger %} {% set enable_map = {'R':'ENABLE REPLICA', 'A':'ENABLE ALWAYS', 'O':'ENABLE', 'D':'DISABLE'} %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/alter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/alter.sql index 93f323e1a..dcfe217ed 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/alter.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/alter.sql @@ -6,4 +6,4 @@ ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} {## Changes description ##} {% if data.description %} COMMENT ON INDEX {{conn|qtIdent(data.name)}} - IS {{data.description|qtLiteral}};{% endif %} \ No newline at end of file + IS {{data.description|qtLiteral(conn)}};{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/create.sql index 7676c1332..5f3c877ae 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/create.sql @@ -33,5 +33,5 @@ CREATE{% if data.is_constraint_trigger %} CONSTRAINT{% endif %} TRIGGER {{ conn| {% if data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/get_oid.sql index fcaddc964..d37f4bfa5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/get_oid.sql @@ -2,4 +2,4 @@ SELECT t.oid FROM pg_catalog.pg_trigger t WHERE NOT tgisinternal AND tgrelid = {{tid}}::OID - AND tgname = {{data.name|qtLiteral}}; + AND tgname = {{data.name|qtLiteral(conn)}}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/update.sql index e007e1251..6341cc0c6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/default/update.sql @@ -56,12 +56,12 @@ CREATE{% if data.is_constraint_trigger %} CONSTRAINT{% endif %} TRIGGER {{ conn| {% if data.description is not defined and o_data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(o_data.nspname, o_data.relname) }} - IS {{o_data.description|qtLiteral}}; + IS {{o_data.description|qtLiteral(conn)}}; {% endif %} {% endif %} {% if data.description is defined and o_data.description != data.description %} COMMENT ON TRIGGER {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(o_data.nspname, o_data.relname) }} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {% if data.is_enable_trigger is defined and o_data.is_enable_trigger != data.is_enable_trigger %} {% set enable_map = {'R':'ENABLE REPLICA', 'A':'ENABLE ALWAYS', 'O':'ENABLE', 'D':'DISABLE'} %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/table_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/table_test_data.json index a88314f32..109689d58 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/table_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/table_test_data.json @@ -600,7 +600,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error'),(True,True)]" }, "expected_data": { @@ -662,7 +662,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -725,7 +725,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -742,7 +742,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -805,7 +805,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -822,7 +822,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -968,7 +968,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -985,7 +985,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -1502,7 +1502,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -1569,7 +1569,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -1619,7 +1619,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -1669,7 +1669,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -1809,7 +1809,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -1848,7 +1848,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_column_acl_sql.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_column_acl_sql.py index e50e48d40..0a553254e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_column_acl_sql.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_column_acl_sql.py @@ -34,16 +34,19 @@ class TestColumnAclSql(SQLTemplateTestBase): " AND pg_attribute.attname = 'some_column'") self.table_id, self.column_id = cursor.fetchone() - def generate_sql(self, version): + def generate_sql(self, connection): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "columns", "sql") - template_file = self.get_template_file(version, file_path, - "acl.sql") + template_file = self.get_template_file( + self.get_server_version(connection), + file_path, + "acl.sql") template = file_as_template(template_file) public_schema_id = 2200 sql = template.render(scid=public_schema_id, tid=self.table_id, - clid=self.column_id + clid=self.column_id, + conn=connection ) return sql diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_column_properties_sql.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_column_properties_sql.py index cf18066d1..d0f9d844f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_column_properties_sql.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_column_properties_sql.py @@ -30,15 +30,18 @@ class TestColumnPropertiesSql(SQLTemplateTestBase): self.table_id = cursor.fetchone()[0] - def generate_sql(self, version): + def generate_sql(self, connection): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "columns", "sql") - template_file = self.get_template_file(version, file_path, - "properties.sql") + template_file = self.get_template_file( + self.get_server_version(connection), + file_path, + "properties.sql") template = file_as_template(template_file) public_schema_id = 2200 sql = template.render(scid=public_schema_id, - tid=self.table_id + tid=self.table_id, + conn=connection ) return sql diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_get_pre_table_creation_parameters.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_get_pre_table_creation_parameters.py index fc5120724..e86350077 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_get_pre_table_creation_parameters.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_get_pre_table_creation_parameters.py @@ -59,13 +59,6 @@ class TableGetPreTablecreationParametersTestCase(BaseTestGenerator): self.table_id = tables_utils.create_table(self.server, self.db_name, self.schema_name, self.table_name) - # self.table_id = tables_utils.create_table_for_partition( - # self.server, - # self.db_name, - # self.schema_name, - # self.table_name, - # 'partitioned', - # 'list') def runTest(self): """This function will delete added table under schema node.""" diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_tables_acl_sql.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_tables_acl_sql.py index aec630c8d..93e0ec96b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_tables_acl_sql.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_tables_acl_sql.py @@ -30,15 +30,18 @@ class TestTablesAclSql(SQLTemplateTestBase): "'test_table'") self.table_id = cursor.fetchone()[0] - def generate_sql(self, version): + def generate_sql(self, connection): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "tables", "sql") - template_file = self.get_template_file(version, file_path, - "acl.sql") + template_file = self.get_template_file( + self.get_server_version(connection), + file_path, + "acl.sql") template = file_as_template(template_file) public_schema_id = 2200 sql = template.render(scid=public_schema_id, - tid=self.table_id) + tid=self.table_id, + conn=connection) return sql def assertions(self, fetch_result, descriptions): diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_tables_node_sql.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_tables_node_sql.py index 6d1e776e7..4cbe270e6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_tables_node_sql.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_tables_node_sql.py @@ -22,14 +22,17 @@ class TestTablesNodeSql(SQLTemplateTestBase): def test_setup(self, connection, cursor): pass - def generate_sql(self, version): + def generate_sql(self, connection): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "tables", "sql") - template_file = self.get_template_file(version, file_path, - "nodes.sql") + template_file = self.get_template_file( + self.get_server_version(connection), + file_path, + "nodes.sql") template = file_as_template(template_file) public_schema_id = 2200 - sql = template.render(scid=public_schema_id) + sql = template.render(scid=public_schema_id, + conn=connection) return sql def assertions(self, fetch_result, descriptions): diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_tables_properties_sql.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_tables_properties_sql.py index 91e2c1759..e0e7638a3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_tables_properties_sql.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_tables_properties_sql.py @@ -38,17 +38,20 @@ class TestTablesPropertiesSql(SQLTemplateTestBase): self.assertEqual(None, first_row['typname']) self.assertEqual([], first_row['coll_inherits']) - def generate_sql(self, version): + def generate_sql(self, connection): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "tables", "sql") - template_file = self.get_template_file(version, file_path, - "properties.sql") + template_file = self.get_template_file( + self.get_server_version(connection), + file_path, + "properties.sql") template = file_as_template(template_file) public_schema_id = 2200 sql = template.render(scid=public_schema_id, did=self.database_id, datlastsysoid=DATABASE_LAST_SYSTEM_OID, - tid=self.table_id + tid=self.table_id, + conn=connection ) return sql diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_trigger_get_oid_sql.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_trigger_get_oid_sql.py index 96a67e3fe..4cf6a0018 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_trigger_get_oid_sql.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_trigger_get_oid_sql.py @@ -34,20 +34,22 @@ class TestTriggerGetOidSql(SQLTemplateTestBase): " AND pg_attribute.attname = 'some_column'") self.table_id, self.column_id = cursor.fetchone() - def generate_sql(self, version): + def generate_sql(self, conn): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "triggers", "sql") if 'type' in self.server: file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "triggers", "sql", self.server['type']) - template_file = self.get_template_file(version, file_path, + template_file = self.get_template_file(self.get_server_version(conn), + file_path, "get_oid.sql") - jinja2.filters.FILTERS['qtLiteral'] = lambda value: "NULL" + jinja2.filters.FILTERS['qtLiteral'] = lambda conn, value: "NULL" template = file_as_template(template_file) sql = template.render(data={'name': None}, - tid=self.table_id + tid=self.table_id, + conn=conn ) return sql diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_trigger_nodes_sql.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_trigger_nodes_sql.py index c2511900e..c51fbc675 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_trigger_nodes_sql.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_trigger_nodes_sql.py @@ -29,17 +29,19 @@ class TestTriggerNodesSql(SQLTemplateTestBase): "WHERE pg_class.relname='test_table'") self.table_id = cursor.fetchone()[0] - def generate_sql(self, version): + def generate_sql(self, connection): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "triggers", "sql") if 'type' in self.server: file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "triggers", "sql", self.server['type']) - template_file = self.get_template_file(version, file_path, - "nodes.sql") + template_file = self.get_template_file( + self.get_server_version(connection), + file_path, + "nodes.sql") template = file_as_template(template_file) - sql = template.render(tid=self.table_id) + sql = template.render(tid=self.table_id, conn=connection) return sql diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/utils.py index e61f4b74a..36732290f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/utils.py @@ -120,10 +120,10 @@ def create_table(server, db_name, schema_name, table_name, custom_query=None): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created table pg_cursor.execute("select oid from pg_catalog.pg_class " @@ -194,7 +194,7 @@ def create_table_for_partition( server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = '' @@ -224,7 +224,7 @@ def create_table_for_partition( "saledate date NOT NULL)" % (schema_name, table_name) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created table pg_cursor.execute("select oid from pg_catalog.pg_class " diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py index f591d8955..1794a5537 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py @@ -611,7 +611,7 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare): # we need oid to add object in tree at browser SQL = render_template("/".join([self.template_path, self._OID_SQL]), - tid=tid, data=data) + tid=tid, data=data, conn=self.conn) status, trid = self.conn.execute_scalar(SQL) if not status: return internal_server_error(errormsg=tid) @@ -735,7 +735,7 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare): # so we need to return new OID of trigger. SQL = render_template( "/".join([self.template_path, self._OID_SQL]), - tid=tid, data=data + tid=tid, data=data, conn=self.conn ) status, new_trid = self.conn.execute_scalar(SQL) if not status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/triggers_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/triggers_test_data.json index c377b6527..fe73b76f7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/triggers_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/triggers_test_data.json @@ -105,7 +105,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -127,7 +127,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True),(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -148,7 +148,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -196,7 +196,7 @@ "table_nodes": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -258,7 +258,7 @@ ] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -304,7 +304,7 @@ ] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -352,7 +352,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -395,7 +395,7 @@ ] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(True, True),(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -409,7 +409,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(True, True),(True, True)" }, "expected_data": { @@ -435,7 +435,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -448,7 +448,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -461,7 +461,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(True, 'Mocked Internal Server Error')" }, "expected_data": { @@ -569,7 +569,7 @@ "is_enable_trigger": "O" }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -585,7 +585,7 @@ "is_enable_trigger": "O" }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -606,7 +606,7 @@ ] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "PLACE_HOLDER" }, "expected_data": { @@ -663,7 +663,7 @@ ] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -680,7 +680,7 @@ "description": "This is test comment." }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -697,7 +697,7 @@ "description": "This is test comment." }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, True),(False, 'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/utils.py index 2eb2011a4..dda7e317d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/utils.py @@ -47,14 +47,14 @@ def create_trigger(server, db_name, schema_name, table_name, trigger_name, server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "CREATE TRIGGER %s BEFORE INSERT ON %s.%s FOR EACH ROW " \ "EXECUTE PROCEDURE %s.%s()" % (trigger_name, schema_name, table_name, schema_name, trigger_func_name) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() pg_cursor.execute("SELECT oid FROM pg_catalog.pg_trigger " "where tgname='%s'" % trigger_name) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/utils.py index 495d7ef44..c5876d976 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/utils.py @@ -123,7 +123,7 @@ def get_trigger_function_and_columns(conn, data, tid, driver = get_driver(PG_DEFAULT_DRIVER) # We know that trigger has more than 1 argument, let's join them # and convert it to string - formatted_args = [driver.qtLiteral(arg) + formatted_args = [driver.qtLiteral(arg, conn) for arg in data['custom_tgargs']] formatted_args = ', '.join(formatted_args) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py index 6e26c4c34..b8ebe5893 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py @@ -215,7 +215,7 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings): if data['typoid']: sql = render_template("/".join([self.table_template_path, 'get_columns_for_table.sql']), - tid=data['typoid']) + tid=data['typoid'], conn=self.conn) status, res = self.conn.execute_dict(sql) if not status: @@ -259,7 +259,7 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings): sql = render_template("/".join( [self.table_template_path, 'get_columns_for_table.sql']), - tid=row['oid'] + tid=row['oid'], conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: @@ -572,7 +572,8 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings): sql = render_template( "/".join([self.table_template_path, self._PROPERTIES_SQL]), did=did, scid=scid, tid=tid, - datlastsysoid=self._DATABASE_LAST_SYSTEM_OID + datlastsysoid=self._DATABASE_LAST_SYSTEM_OID, + conn=self.conn ) status, res = self.conn.execute_dict(sql) if not status: @@ -1589,7 +1590,8 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings): return internal_server_error(errormsg=rest) sql = render_template("/".join([self.table_template_path, - self._GET_SCHEMA_OID_SQL]), tid=tid) + self._GET_SCHEMA_OID_SQL]), tid=tid, + conn=self.conn) status, rest = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=rest) @@ -1638,7 +1640,8 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings): self.table_template_path, self._GET_SCHEMA_OID_SQL ]), - tid=row['oid'] + tid=row['oid'], + conn=self.conn ) ) if not status: @@ -1671,7 +1674,8 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings): self.table_template_path, self._GET_SCHEMA_OID_SQL ]), - tid=row['partition_name'] + tid=row['partition_name'], + conn=self.conn ) ) if not status: @@ -2051,7 +2055,9 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings): # Get schema oid status, scid = self.conn.execute_scalar( render_template("/".join([self.table_template_path, - self._GET_SCHEMA_OID_SQL]), tid=tid)) + self._GET_SCHEMA_OID_SQL]), + tid=tid, + conn=self.conn)) if not status: return internal_server_error(errormsg=scid) if scid is None: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/acl.sql index 04b20a271..c41e31373 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/acl.sql @@ -15,7 +15,7 @@ FROM FROM (SELECT pg_catalog.aclexplode(nsp.nspacl) as d FROM pg_catalog.pg_namespace nsp - WHERE nsp.oid = {{ scid|qtLiteral }}::OID + WHERE nsp.oid = {{ scid|qtLiteral(conn) }}::OID ) a ) b LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/create.sql index 12dd10251..7cd2aaa4e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/create.sql @@ -7,11 +7,11 @@ CREATE SCHEMA {{ conn|qtIdent(data.name) }} {% endif %} {% if data.description %} COMMENT ON SCHEMA {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% if data.nspacl %} {% for priv in data.nspacl %} {{ PRIVILEGE.APPLY(conn, 'SCHEMA', priv.grantee, data.name, priv.without_grant, priv.with_grant) }}{% endfor %} {% endif %} -{% endif %} \ No newline at end of file +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/get_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/get_name.sql index be20542b7..5f5612c02 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/get_name.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/get_name.sql @@ -1 +1 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral }}; +SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/is_catalog.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/is_catalog.sql index 9386acbf4..f15d3c177 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/is_catalog.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/is_catalog.sql @@ -6,4 +6,4 @@ SELECT FROM pg_catalog.pg_namespace nsp WHERE - nsp.oid = {{ scid|qtLiteral }}::OID; + nsp.oid = {{ scid|qtLiteral(conn) }}::OID; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/update.sql index 39f7f94c7..510adf5dd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/update.sql @@ -3,7 +3,7 @@ {# ==== To update catalog comments ==== #} {% if data.description and data.description != o_data.description %} COMMENT ON SCHEMA {{ conn|qtIdent(o_data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ==== To update catalog securitylabel ==== #} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/acl.sql index 04b20a271..c41e31373 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/acl.sql @@ -15,7 +15,7 @@ FROM FROM (SELECT pg_catalog.aclexplode(nsp.nspacl) as d FROM pg_catalog.pg_namespace nsp - WHERE nsp.oid = {{ scid|qtLiteral }}::OID + WHERE nsp.oid = {{ scid|qtLiteral(conn) }}::OID ) a ) b LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/create.sql index 2dd2328b6..d55e2aac0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/create.sql @@ -7,7 +7,7 @@ CREATE SCHEMA{% if add_not_exists_clause %} IF NOT EXISTS{% endif %} {{ conn|qtI {% endif %} {% if data.description %} COMMENT ON SCHEMA {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% if data.nspacl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/get_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/get_name.sql index be20542b7..5f5612c02 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/get_name.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/get_name.sql @@ -1 +1 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral }}; +SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/is_catalog.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/is_catalog.sql index 9386acbf4..f15d3c177 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/is_catalog.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/is_catalog.sql @@ -6,4 +6,4 @@ SELECT FROM pg_catalog.pg_namespace nsp WHERE - nsp.oid = {{ scid|qtLiteral }}::OID; + nsp.oid = {{ scid|qtLiteral(conn) }}::OID; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/update.sql index 39f7f94c7..510adf5dd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/update.sql @@ -3,7 +3,7 @@ {# ==== To update catalog comments ==== #} {% if data.description and data.description != o_data.description %} COMMENT ON SCHEMA {{ conn|qtIdent(o_data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ==== To update catalog securitylabel ==== #} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/acl.sql index 04b20a271..c41e31373 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/acl.sql @@ -15,7 +15,7 @@ FROM FROM (SELECT pg_catalog.aclexplode(nsp.nspacl) as d FROM pg_catalog.pg_namespace nsp - WHERE nsp.oid = {{ scid|qtLiteral }}::OID + WHERE nsp.oid = {{ scid|qtLiteral(conn) }}::OID ) a ) b LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/get_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/get_name.sql index be20542b7..5f5612c02 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/get_name.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/get_name.sql @@ -1 +1 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral }}; +SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/is_catalog.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/is_catalog.sql index 9386acbf4..f15d3c177 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/is_catalog.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/is_catalog.sql @@ -6,4 +6,4 @@ SELECT FROM pg_catalog.pg_namespace nsp WHERE - nsp.oid = {{ scid|qtLiteral }}::OID; + nsp.oid = {{ scid|qtLiteral(conn) }}::OID; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/nodes.sql index 5de3ee5b4..6468b1920 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/sql/nodes.sql @@ -9,6 +9,9 @@ FROM WHERE {% if scid %} nsp.oid={{scid}}::oid AND + {% else %} + {% if not show_sysobj %} + nspname NOT LIKE E'pg\\_%' AND {% endif %} ( {{ CATALOGS.LIST('nsp') }} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/acl.sql index 04b20a271..c41e31373 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/acl.sql @@ -15,7 +15,7 @@ FROM FROM (SELECT pg_catalog.aclexplode(nsp.nspacl) as d FROM pg_catalog.pg_namespace nsp - WHERE nsp.oid = {{ scid|qtLiteral }}::OID + WHERE nsp.oid = {{ scid|qtLiteral(conn) }}::OID ) a ) b LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/create.sql index 38c553228..811955ad9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/create.sql @@ -7,11 +7,11 @@ CREATE SCHEMA {{ conn|qtIdent(data.name) }} {% endif %} {% if data.description %} COMMENT ON SCHEMA {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% if data.nspacl %} {% for priv in data.nspacl %} {{ PRIVILEGE.APPLY(conn, 'SCHEMA', priv.grantee, data.name, priv.without_grant, priv.with_grant) }}{% endfor %} {% endif %} -{% endif %} \ No newline at end of file +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/get_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/get_name.sql index be20542b7..5f5612c02 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/get_name.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/get_name.sql @@ -1 +1 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral }}; +SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/is_catalog.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/is_catalog.sql index 992b18c3b..1fd2f207e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/is_catalog.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/is_catalog.sql @@ -6,4 +6,4 @@ SELECT FROM pg_catalog.pg_namespace nsp WHERE - nsp.oid = {{ scid|qtLiteral }}::OID; + nsp.oid = {{ scid|qtLiteral(conn) }}::OID; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/update.sql index 39f7f94c7..510adf5dd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/update.sql @@ -3,7 +3,7 @@ {# ==== To update catalog comments ==== #} {% if data.description and data.description != o_data.description %} COMMENT ON SCHEMA {{ conn|qtIdent(o_data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ==== To update catalog securitylabel ==== #} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/acl.sql index 04b20a271..c41e31373 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/acl.sql @@ -15,7 +15,7 @@ FROM FROM (SELECT pg_catalog.aclexplode(nsp.nspacl) as d FROM pg_catalog.pg_namespace nsp - WHERE nsp.oid = {{ scid|qtLiteral }}::OID + WHERE nsp.oid = {{ scid|qtLiteral(conn) }}::OID ) a ) b LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/create.sql index 38c553228..811955ad9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/create.sql @@ -7,11 +7,11 @@ CREATE SCHEMA {{ conn|qtIdent(data.name) }} {% endif %} {% if data.description %} COMMENT ON SCHEMA {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% if data.nspacl %} {% for priv in data.nspacl %} {{ PRIVILEGE.APPLY(conn, 'SCHEMA', priv.grantee, data.name, priv.without_grant, priv.with_grant) }}{% endfor %} {% endif %} -{% endif %} \ No newline at end of file +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/get_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/get_name.sql index be20542b7..5f5612c02 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/get_name.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/get_name.sql @@ -1 +1 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral }}; +SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/is_catalog.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/is_catalog.sql index 992b18c3b..1fd2f207e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/is_catalog.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/is_catalog.sql @@ -6,4 +6,4 @@ SELECT FROM pg_catalog.pg_namespace nsp WHERE - nsp.oid = {{ scid|qtLiteral }}::OID; + nsp.oid = {{ scid|qtLiteral(conn) }}::OID; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/update.sql index 39f7f94c7..510adf5dd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/update.sql @@ -3,7 +3,7 @@ {# ==== To update catalog comments ==== #} {% if data.description and data.description != o_data.description %} COMMENT ON SCHEMA {{ conn|qtIdent(o_data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ==== To update catalog securitylabel ==== #} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/sql/acl.sql index 04b20a271..c41e31373 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/sql/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/sql/acl.sql @@ -15,7 +15,7 @@ FROM FROM (SELECT pg_catalog.aclexplode(nsp.nspacl) as d FROM pg_catalog.pg_namespace nsp - WHERE nsp.oid = {{ scid|qtLiteral }}::OID + WHERE nsp.oid = {{ scid|qtLiteral(conn) }}::OID ) a ) b LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/sql/get_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/sql/get_name.sql index be20542b7..5f5612c02 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/sql/get_name.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/sql/get_name.sql @@ -1 +1 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral }}; +SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/sql/is_catalog.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/sql/is_catalog.sql index 992b18c3b..1fd2f207e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/sql/is_catalog.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/sql/is_catalog.sql @@ -6,4 +6,4 @@ SELECT FROM pg_catalog.pg_namespace nsp WHERE - nsp.oid = {{ scid|qtLiteral }}::OID; + nsp.oid = {{ scid|qtLiteral(conn) }}::OID; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/security.macros b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/security.macros index 5d9e2a65d..bd90b8af6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/security.macros +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/functions/security.macros @@ -2,7 +2,7 @@ {# Macros for Security Labels (functions module) #} {#################################################} {% macro SET(conn, type, name, provider, label, schema, func_args) -%} -SECURITY LABEL{% if provider and provider != '' %} FOR {{ conn|qtIdent(provider) }}{% endif %} ON {{ type }} {{ conn|qtIdent(schema, name) }}({{func_args}}) IS {{ label|qtLiteral }}; +SECURITY LABEL{% if provider and provider != '' %} FOR {{ conn|qtIdent(provider) }}{% endif %} ON {{ type }} {{ conn|qtIdent(schema, name) }}({{func_args}}) IS {{ label|qtLiteral(conn) }}; {%- endmacro %} {% macro UNSET(conn, type, name, provider, schema, func_args) -%} SECURITY LABEL FOR {{ provider }} ON {{ type }} {{ conn|qtIdent(schema, name) }}({{func_args}}) IS NULL; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/schemas/security.macros b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/schemas/security.macros index 888e9f05d..cc7e9803d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/schemas/security.macros +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/macros/schemas/security.macros @@ -2,7 +2,7 @@ {# Macros for schema and its child nodes #} {##########################################} {% macro SET(conn, type, name, provider, label, schema) -%} -SECURITY LABEL{% if provider and provider != '' %} FOR {{ conn|qtIdent(provider) }}{% endif %} ON {{ type }} {{ conn|qtIdent(schema, name) }} IS {{ label|qtLiteral }}; +SECURITY LABEL{% if provider and provider != '' %} FOR {{ conn|qtIdent(provider) }}{% endif %} ON {{ type }} {{ conn|qtIdent(schema, name) }} IS {{ label|qtLiteral(conn) }}; {%- endmacro %} {% macro UNSET(conn, type, name, provider, schema) -%} SECURITY LABEL FOR {{ provider }} ON {{ type }} {{ conn|qtIdent(schema, name) }} IS NULL; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/acl.sql index 58d0aff55..89136c7df 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/acl.sql @@ -15,7 +15,7 @@ FROM FROM (SELECT pg_catalog.aclexplode(nsp.nspacl) as d FROM pg_catalog.pg_namespace nsp - WHERE nsp.oid = {{ scid|qtLiteral }}::OID + WHERE nsp.oid = {{ scid|qtLiteral(conn) }}::OID ) a ) b LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/create.sql index bbbb2477c..d5a65a166 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/create.sql @@ -9,7 +9,7 @@ CREATE SCHEMA{% if add_not_exists_clause %} IF NOT EXISTS{% endif %} {{ conn|qtI {% if data.description %} COMMENT ON SCHEMA {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ACL for the schema #} {% if data.nspacl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/get_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/get_name.sql index be20542b7..5f5612c02 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/get_name.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/get_name.sql @@ -1 +1 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral }}; +SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/is_catalog.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/is_catalog.sql index 9386acbf4..f15d3c177 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/is_catalog.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/is_catalog.sql @@ -6,4 +6,4 @@ SELECT FROM pg_catalog.pg_namespace nsp WHERE - nsp.oid = {{ scid|qtLiteral }}::OID; + nsp.oid = {{ scid|qtLiteral(conn) }}::OID; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/nodes.sql index ca557164e..c4b1197e6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/nodes.sql @@ -11,7 +11,7 @@ WHERE nsp.oid={{scid}}::oid AND {% else %} {% if not show_sysobj %} - nspname NOT LIKE 'pg!_%' escape '!' AND + nspname NOT LIKE E'pg\\_%' AND {% endif %} {% endif %} NOT ( diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/oid.sql index 9528a26fe..4c75713c3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/oid.sql @@ -1 +1 @@ -SELECT nsp.oid FROM pg_catalog.pg_namespace nsp WHERE nsp.nspname = {{ schema|qtLiteral }}; +SELECT nsp.oid FROM pg_catalog.pg_namespace nsp WHERE nsp.nspname = {{ schema|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/update.sql index e04140875..ad2a5593c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/sql/update.sql @@ -16,7 +16,7 @@ ALTER SCHEMA {{ conn|qtIdent(data.name) }} {# Update the comments/description #} {% if data.description is defined and data.description != o_data.description %} COMMENT ON SCHEMA {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# Change the privileges #} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/acl.sql index 58d0aff55..89136c7df 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/acl.sql @@ -15,7 +15,7 @@ FROM FROM (SELECT pg_catalog.aclexplode(nsp.nspacl) as d FROM pg_catalog.pg_namespace nsp - WHERE nsp.oid = {{ scid|qtLiteral }}::OID + WHERE nsp.oid = {{ scid|qtLiteral(conn) }}::OID ) a ) b LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/create.sql index bbbb2477c..d5a65a166 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/create.sql @@ -9,7 +9,7 @@ CREATE SCHEMA{% if add_not_exists_clause %} IF NOT EXISTS{% endif %} {{ conn|qtI {% if data.description %} COMMENT ON SCHEMA {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ACL for the schema #} {% if data.nspacl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/get_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/get_name.sql index be20542b7..5f5612c02 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/get_name.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/get_name.sql @@ -1 +1 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral }}; +SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/is_catalog.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/is_catalog.sql index 992b18c3b..1fd2f207e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/is_catalog.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/is_catalog.sql @@ -6,4 +6,4 @@ SELECT FROM pg_catalog.pg_namespace nsp WHERE - nsp.oid = {{ scid|qtLiteral }}::OID; + nsp.oid = {{ scid|qtLiteral(conn) }}::OID; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/oid.sql index 9528a26fe..4c75713c3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/oid.sql @@ -1 +1 @@ -SELECT nsp.oid FROM pg_catalog.pg_namespace nsp WHERE nsp.nspname = {{ schema|qtLiteral }}; +SELECT nsp.oid FROM pg_catalog.pg_namespace nsp WHERE nsp.nspname = {{ schema|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/update.sql index 3f9a26587..82991a8a2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/sql/update.sql @@ -17,7 +17,7 @@ ALTER SCHEMA {{ conn|qtIdent(data.name) }} {### To update SCHEMA comments ###} {% if data.description is defined and data.description != o_data.description %} COMMENT ON SCHEMA {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {### Change the security labels ###} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/schema_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/schema_test_data.json index 87b0d3afd..00f8beabd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/schema_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/schema_test_data.json @@ -54,7 +54,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while deleting a schema')" }, "expected_data": { @@ -127,7 +127,7 @@ "invalid": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching schema nodes')" }, "expected_data": { @@ -168,7 +168,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False, 'Mocked Internal Server Error while updating a schema')]" }, "expected_data": { @@ -194,7 +194,7 @@ "internal_server_error": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a schema')" }, "expected_data": { @@ -232,7 +232,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching schema properties')" }, "expected_data": { @@ -258,7 +258,7 @@ "schema_list": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching schema list')" }, "expected_data": { @@ -285,7 +285,7 @@ "schema_list": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching schema children')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/utils.py index 7a051ac13..b88b625b0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/utils.py @@ -58,10 +58,10 @@ def create_schema(connection, schema_name): """This function add the schemas into databases""" try: old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute("CREATE SCHEMA %s" % schema_name) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get schema details of newly created schema pg_cursor.execute("SELECT sch.oid, sch.nspname FROM " diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/__init__.py index 10956a36f..6f514950c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/__init__.py @@ -745,7 +745,7 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): try: SQL = render_template("/".join([self.template_path, self._GET_SUBTYPES_SQL]), - subtype=True) + subtype=True, conn=self.conn) status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=res) @@ -775,7 +775,8 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): try: SQL = render_template("/".join([self.template_path, self._GET_SUBTYPES_SQL]), - subtype_opclass=True, data=data) + subtype_opclass=True, data=data, + conn=self.conn) if SQL: status, rset = self.conn.execute_2darray(SQL) if not status: @@ -806,7 +807,8 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): try: SQL = render_template("/".join([self.template_path, self._GET_SUBTYPES_SQL]), - get_opcintype=True, data=data) + get_opcintype=True, data=data, + conn=self.conn) if SQL: status, opcintype = self.conn.execute_scalar(SQL) if not status: @@ -847,7 +849,7 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): # else we will disable the combobox SQL = render_template("/".join([self.template_path, self._GET_SUBTYPES_SQL]), - getoid=True, data=data) + getoid=True, data=data, conn=self.conn) if SQL: status, oid = self.conn.execute_scalar(SQL) if not status: @@ -1040,7 +1042,7 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): # we need scid to update in browser tree SQL = render_template("/".join([self.template_path, 'get_scid.sql']), - schema=data['schema']) + schema=data['schema'], conn=self.conn) status, scid = self.conn.execute_scalar(SQL) if not status: return internal_server_error(errormsg=scid) @@ -1048,7 +1050,7 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): # we need oid to add object in tree at browser SQL = render_template("/".join([self.template_path, self._OID_SQL]), - scid=scid, data=data) + scid=scid, data=data, conn=self.conn) status, tid = self.conn.execute_scalar(SQL) if not status: return internal_server_error(errormsg=tid) @@ -1091,7 +1093,8 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): return internal_server_error(errormsg=res) SQL = render_template("/".join([self.template_path, - 'get_scid.sql']), tid=tid) + 'get_scid.sql']), + tid=tid, conn=self.conn) # Get updated schema oid status, scid = self.conn.execute_scalar(SQL) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/create.sql index 0e4289700..a2d4da1b0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/create.sql @@ -13,7 +13,7 @@ CREATE TYPE {% if data.schema %}{{ conn|qtIdent(data.schema, data.name) }}{% els {### Enum Type ###} {% if data and data.typtype == 'e' %} CREATE TYPE {% if data.schema %}{{ conn|qtIdent(data.schema, data.name) }}{% else %}{{ conn|qtIdent(data.name) }}{% endif %} AS ENUM - ({% for e in data.enum %}{% if loop.index != 1 %}, {% endif %}{{ e.label|qtLiteral }}{% endfor %}); + ({% for e in data.enum %}{% if loop.index != 1 %}, {% endif %}{{ e.label|qtLiteral(conn) }}{% endfor %}); {% endif %} {### Range Type ###} {% if data and data.typtype == 'r' %} @@ -43,11 +43,11 @@ CREATE TYPE {% if data.schema %}{{ conn|qtIdent(data.schema, data.name) }}{% els PASSEDBYVALUE{% endif %}{% if data.typalign %}, ALIGNMENT = {{data.typalign}}{% endif %}{% if data.typstorage %}, STORAGE = {{data.typstorage}}{% endif %}{% if data.typcategory %}, - CATEGORY = {{data.typcategory|qtLiteral}}{% endif %}{% if data.typispreferred %}, + CATEGORY = {{data.typcategory|qtLiteral(conn)}}{% endif %}{% if data.typispreferred %}, PREFERRED = {{data.typispreferred}}{% endif %}{% if data.typdefault %}, - DEFAULT = {{data.typdefault|qtLiteral}}{% endif %}{% if data.element %}, + DEFAULT = {{data.typdefault|qtLiteral(conn)}}{% endif %}{% if data.element %}, ELEMENT = {{data.element}}{% endif %}{% if data.typdelim %}, - DELIMITER = {{data.typdelim|qtLiteral}}{% endif %}{% if data.is_collatable %}, + DELIMITER = {{data.typdelim|qtLiteral(conn)}}{% endif %}{% if data.is_collatable %}, COLLATABLE = {{data.is_collatable}}{% endif %} ); @@ -64,7 +64,7 @@ ALTER TYPE {% if data.schema %}{{ conn|qtIdent(data.schema, data.name) }}{% else COMMENT ON TYPE {% if data.schema %}{{ conn|qtIdent(data.schema, data.name) }}{% else %}{{ conn|qtIdent(data.name) }}{% endif %} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {### ACL ###} {% if data.typacl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/get_oid.sql index d5282bc10..1196af4c0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/get_oid.sql @@ -6,6 +6,6 @@ FROM pg_catalog.pg_type t LEFT OUTER JOIN pg_catalog.pg_description des ON (des.objoid=t.oid AND des.classoid='pg_type'::regclass) WHERE t.typtype != 'd' AND t.typname NOT LIKE E'\\_%' AND t.typnamespace = {{scid}}::oid {% if data %} - AND t.typname = {{data.name|qtLiteral}} + AND t.typname = {{data.name|qtLiteral(conn)}} {% endif %} ORDER BY t.typname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/get_scid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/get_scid.sql index 65d7661d4..8c3c05add 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/get_scid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/get_scid.sql @@ -11,5 +11,5 @@ SELECT FROM pg_catalog.pg_namespace ns WHERE - ns.nspname = {{schema|qtLiteral}}::text; + ns.nspname = {{schema|qtLiteral(conn)}}::text; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/get_subtypes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/get_subtypes.sql index f8ba524a2..bc788310b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/get_subtypes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/get_subtypes.sql @@ -12,7 +12,7 @@ ORDER BY 1 SELECT opc.opcname FROM pg_catalog.pg_opclass opc JOIN pg_catalog.pg_type typ ON opc.opcintype=typ.oid - AND typ.typname = {{ data.typname|qtLiteral }} + AND typ.typname = {{ data.typname|qtLiteral(conn) }} WHERE opc.opcmethod = 403 ORDER BY opcname; {% endif %} @@ -21,9 +21,9 @@ ORDER BY opcname; SELECT opc.opcintype FROM pg_catalog.pg_opclass opc JOIN pg_catalog.pg_type typ ON opc.opcintype=typ.oid - AND typ.typname = {{ data.typname|qtLiteral }} + AND typ.typname = {{ data.typname|qtLiteral(conn) }} WHERE opc.opcmethod = 403 - AND opc.opcname = {{ data.opcname|qtLiteral }} + AND opc.opcname = {{ data.opcname|qtLiteral(conn) }} ORDER BY opcname; {% endif %} {### To fill subtype diff function combobox ###} @@ -41,7 +41,7 @@ ORDER BY proname; {### To fill canonical combobox ###} {% if getoid %} SELECT oid FROM pg_catalog.pg_type -WHERE typname = {{ data.name|qtLiteral }} +WHERE typname = {{ data.name|qtLiteral(conn) }} {% endif %} {% if canonical and oid %} SELECT proname, nspname, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/type_schema_diff.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/type_schema_diff.sql index 5f0b5fccf..246e3bc1d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/type_schema_diff.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/type_schema_diff.sql @@ -19,7 +19,7 @@ CREATE TYPE {% if o_data.schema %}{{ conn|qtIdent(o_data.schema, o_data.name) }} {### Enum Type ###} {% if data and data.typtype == 'e' %} CREATE TYPE {% if o_data.schema %}{{ conn|qtIdent(o_data.schema, o_data.name) }}{% else %}{{ conn|qtIdent(o_data.name) }}{% endif %} AS ENUM - ({% for e in data.enum.added %}{% if loop.index != 1 %}, {% endif %}{{ e.label|qtLiteral }}{% endfor %}); + ({% for e in data.enum.added %}{% if loop.index != 1 %}, {% endif %}{{ e.label|qtLiteral(conn) }}{% endfor %}); {% endif %} {### Range Type ###} {% if data and (data.typtype == 'r' or (data.typtype is not defined and o_data.typtype == 'r')) %} @@ -52,11 +52,11 @@ CREATE TYPE {% if o_data.schema %}{{ conn|qtIdent(o_data.schema, o_data.name) }} PASSEDBYVALUE{% endif %}{% if data.typalign %}, ALIGNMENT = {{data.typalign}}{% endif %}{% if data.typstorage %}, STORAGE = {{data.typstorage}}{% endif %}{% if data.typcategory %}, - CATEGORY = {{data.typcategory|qtLiteral}}{% endif %}{% if data.typispreferred %}, + CATEGORY = {{data.typcategory|qtLiteral(conn)}}{% endif %}{% if data.typispreferred %}, PREFERRED = {{data.typispreferred}}{% endif %}{% if data.typdefault %}, - DEFAULT = {{data.typdefault|qtLiteral}}{% endif %}{% if data.element %}, + DEFAULT = {{data.typdefault|qtLiteral(conn)}}{% endif %}{% if data.element %}, ELEMENT = {{data.element}}{% endif %}{% if data.typdelim %}, - DELIMITER = {{data.typdelim|qtLiteral}}{% endif %}{% if data.is_collatable %}, + DELIMITER = {{data.typdelim|qtLiteral(conn)}}{% endif %}{% if data.is_collatable %}, COLLATABLE = {{data.is_collatable}}{% endif %} ); @@ -73,7 +73,7 @@ ALTER TYPE {% if o_data.schema %}{{ conn|qtIdent(o_data.schema, o_data.name) }}{ COMMENT ON TYPE {% if o_data.schema %}{{ conn|qtIdent(o_data.schema, o_data.name) }}{% else %}{{ conn|qtIdent(o_data.name) }}{% endif %} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {### ACL ###} {% if data.typacl and data.typacl|length > 0 %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/update.sql index 036ea2a11..fd40a44a0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/update.sql @@ -12,7 +12,7 @@ ALTER TYPE {{ conn|qtIdent(o_data.schema, o_data.name) }} {# Below will change objects comment #} {% if data.description is defined and data.description != o_data.description %} COMMENT ON TYPE {{ conn|qtIdent(o_data.schema, o_data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {#======================================#} @@ -87,12 +87,12 @@ ALTER TYPE {{ conn|qtIdent(o_data.schema, o_data.name) }} {% if c_idx == 1 %} {# if first new element then add it after old data enum list#} ALTER TYPE {{ conn|qtIdent(o_data.schema, o_data.name) }} - ADD VALUE {{r.label|qtLiteral}} {% if o_enum_len > 0 %}AFTER {{o_data.enum[o_enum_len].label|qtLiteral }}{% endif %}; + ADD VALUE {{r.label|qtLiteral(conn)}} {% if o_enum_len > 0 %}AFTER {{o_data.enum[o_enum_len].label|qtLiteral(conn) }}{% endif %}; {% else %} {# if first new element then add it after new data enum list#} {% set p_idx = loop.index - 2 %} ALTER TYPE {{ conn|qtIdent(o_data.schema, o_data.name) }} - ADD VALUE {{r.label|qtLiteral}} AFTER {{enum.added[p_idx].label|qtLiteral}}; + ADD VALUE {{r.label|qtLiteral(conn)}} AFTER {{enum.added[p_idx].label|qtLiteral(conn)}}; {% endif %} {% endfor %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/create.sql index 691735732..a2c5cec99 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/create.sql @@ -13,7 +13,7 @@ CREATE TYPE {% if data.schema %}{{ conn|qtIdent(data.schema, data.name) }}{% els {### Enum Type ###} {% if data and data.typtype == 'e' %} CREATE TYPE {% if data.schema %}{{ conn|qtIdent(data.schema, data.name) }}{% else %}{{ conn|qtIdent(data.name) }}{% endif %} AS ENUM - ({% for e in data.enum %}{% if loop.index != 1 %}, {% endif %}{{ e.label|qtLiteral }}{% endfor %}); + ({% for e in data.enum %}{% if loop.index != 1 %}, {% endif %}{{ e.label|qtLiteral(conn) }}{% endfor %}); {% endif %} {### Range Type ###} {% if data and data.typtype == 'r' %} @@ -43,11 +43,11 @@ CREATE TYPE {% if data.schema %}{{ conn|qtIdent(data.schema, data.name) }}{% els PASSEDBYVALUE{% endif %}{% if data.typalign %}, ALIGNMENT = {{data.typalign}}{% endif %}{% if data.typstorage %}, STORAGE = {{data.typstorage}}{% endif %}{% if data.typcategory %}, - CATEGORY = {{data.typcategory|qtLiteral}}{% endif %}{% if data.typispreferred %}, + CATEGORY = {{data.typcategory|qtLiteral(conn)}}{% endif %}{% if data.typispreferred %}, PREFERRED = {{data.typispreferred}}{% endif %}{% if data.typdefault %}, - DEFAULT = {{data.typdefault|qtLiteral}}{% endif %}{% if data.element %}, + DEFAULT = {{data.typdefault|qtLiteral(conn)}}{% endif %}{% if data.element %}, ELEMENT = {{data.element}}{% endif %}{% if data.typdelim %}, - DELIMITER = {{data.typdelim|qtLiteral}}{% endif %}{% if data.is_collatable %}, + DELIMITER = {{data.typdelim|qtLiteral(conn)}}{% endif %}{% if data.is_collatable %}, COLLATABLE = {{data.is_collatable}}{% endif %} ); @@ -74,7 +74,7 @@ ALTER TYPE {% if data.schema %}{{ conn|qtIdent(data.schema, data.name) }}{% else COMMENT ON TYPE {% if data.schema %}{{ conn|qtIdent(data.schema, data.name) }}{% else %}{{ conn|qtIdent(data.name) }}{% endif %} - IS {{data.description|qtLiteral}}; + IS {{data.description|qtLiteral(conn)}}; {% endif %} {### ACL ###} {% if data.typacl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/get_oid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/get_oid.sql index d5282bc10..1196af4c0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/get_oid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/get_oid.sql @@ -6,6 +6,6 @@ FROM pg_catalog.pg_type t LEFT OUTER JOIN pg_catalog.pg_description des ON (des.objoid=t.oid AND des.classoid='pg_type'::regclass) WHERE t.typtype != 'd' AND t.typname NOT LIKE E'\\_%' AND t.typnamespace = {{scid}}::oid {% if data %} - AND t.typname = {{data.name|qtLiteral}} + AND t.typname = {{data.name|qtLiteral(conn)}} {% endif %} ORDER BY t.typname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/get_scid.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/get_scid.sql index 65d7661d4..8c3c05add 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/get_scid.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/get_scid.sql @@ -11,5 +11,5 @@ SELECT FROM pg_catalog.pg_namespace ns WHERE - ns.nspname = {{schema|qtLiteral}}::text; + ns.nspname = {{schema|qtLiteral(conn)}}::text; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/get_subtypes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/get_subtypes.sql index f8ba524a2..bc788310b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/get_subtypes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/get_subtypes.sql @@ -12,7 +12,7 @@ ORDER BY 1 SELECT opc.opcname FROM pg_catalog.pg_opclass opc JOIN pg_catalog.pg_type typ ON opc.opcintype=typ.oid - AND typ.typname = {{ data.typname|qtLiteral }} + AND typ.typname = {{ data.typname|qtLiteral(conn) }} WHERE opc.opcmethod = 403 ORDER BY opcname; {% endif %} @@ -21,9 +21,9 @@ ORDER BY opcname; SELECT opc.opcintype FROM pg_catalog.pg_opclass opc JOIN pg_catalog.pg_type typ ON opc.opcintype=typ.oid - AND typ.typname = {{ data.typname|qtLiteral }} + AND typ.typname = {{ data.typname|qtLiteral(conn) }} WHERE opc.opcmethod = 403 - AND opc.opcname = {{ data.opcname|qtLiteral }} + AND opc.opcname = {{ data.opcname|qtLiteral(conn) }} ORDER BY opcname; {% endif %} {### To fill subtype diff function combobox ###} @@ -41,7 +41,7 @@ ORDER BY proname; {### To fill canonical combobox ###} {% if getoid %} SELECT oid FROM pg_catalog.pg_type -WHERE typname = {{ data.name|qtLiteral }} +WHERE typname = {{ data.name|qtLiteral(conn) }} {% endif %} {% if canonical and oid %} SELECT proname, nspname, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/update.sql index 036ea2a11..fd40a44a0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/update.sql @@ -12,7 +12,7 @@ ALTER TYPE {{ conn|qtIdent(o_data.schema, o_data.name) }} {# Below will change objects comment #} {% if data.description is defined and data.description != o_data.description %} COMMENT ON TYPE {{ conn|qtIdent(o_data.schema, o_data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {#======================================#} @@ -87,12 +87,12 @@ ALTER TYPE {{ conn|qtIdent(o_data.schema, o_data.name) }} {% if c_idx == 1 %} {# if first new element then add it after old data enum list#} ALTER TYPE {{ conn|qtIdent(o_data.schema, o_data.name) }} - ADD VALUE {{r.label|qtLiteral}} {% if o_enum_len > 0 %}AFTER {{o_data.enum[o_enum_len].label|qtLiteral }}{% endif %}; + ADD VALUE {{r.label|qtLiteral(conn)}} {% if o_enum_len > 0 %}AFTER {{o_data.enum[o_enum_len].label|qtLiteral(conn) }}{% endif %}; {% else %} {# if first new element then add it after new data enum list#} {% set p_idx = loop.index - 2 %} ALTER TYPE {{ conn|qtIdent(o_data.schema, o_data.name) }} - ADD VALUE {{r.label|qtLiteral}} AFTER {{enum.added[p_idx].label|qtLiteral}}; + ADD VALUE {{r.label|qtLiteral(conn)}} AFTER {{enum.added[p_idx].label|qtLiteral(conn)}}; {% endif %} {% endfor %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/tests/types_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/tests/types_test_data.json index 220df84a4..127f865b7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/tests/types_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/tests/types_test_data.json @@ -112,7 +112,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -138,7 +138,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -164,7 +164,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while deleting a type')" }, "expected_data": { @@ -190,7 +190,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while deleting a type')" }, "expected_data": { @@ -228,7 +228,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching type nodes')" }, "expected_data": { @@ -254,7 +254,7 @@ "node": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching type node')" }, "expected_data": { @@ -322,7 +322,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while updating type')" }, "expected_data": { @@ -348,7 +348,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a type')" }, "expected_data": { @@ -386,7 +386,7 @@ "type_list": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching type')" }, "expected_data": { @@ -413,7 +413,7 @@ "type_list": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching types')" }, "expected_data": { @@ -440,7 +440,7 @@ "type_list": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching subtypes')" }, "expected_data": { @@ -478,7 +478,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching collation')" }, "expected_data": { @@ -504,7 +504,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error while fetching external function')" }, "expected_data": { @@ -530,7 +530,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching a type sql')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/tests/utils.py index e025acfbf..f5eccdeb5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/tests/utils.py @@ -55,14 +55,14 @@ def create_type(server, db_name, schema_name, type_name): server['host'], server['port']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() 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']) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created type pg_cursor.execute("select oid from pg_catalog.pg_type " diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py index 7bb2ee411..92c1205a8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py @@ -559,7 +559,8 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare): return internal_server_error(errormsg=res) SQL = render_template("/".join( - [self.template_path, 'sql/view_id.sql']), data=data) + [self.template_path, 'sql/view_id.sql']), data=data, + conn=self.conn) status, view_id = self.conn.execute_scalar(SQL) if not status: @@ -604,7 +605,8 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare): return internal_server_error(errormsg=res) SQL = render_template("/".join( - [self.template_path, 'sql/view_id.sql']), data=data) + [self.template_path, 'sql/view_id.sql']), data=data, + conn=self.conn) status, res_data = self.conn.execute_dict(SQL) if not status: return internal_server_error(errormsg=res) @@ -880,7 +882,7 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare): sql = render_template("/".join( [self.template_path, self._SQL_PREFIX + self._CREATE_SQL]), - data=data) + data=data, conn=self.conn) if data['definition']: sql += "\n" sql += render_template("/".join( @@ -1075,7 +1077,8 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare): SQL = render_template("/".join( [self.rule_temp_path, self._SQL_PREFIX + self._CREATE_SQL]), - data=res, display_comments=display_comments) + data=res, display_comments=display_comments, + conn=self.conn) sql_data += '\n' sql_data += SQL return sql_data @@ -1252,7 +1255,7 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare): # Format arguments if len(res_rows['custom_tgargs']) > 0: driver = get_driver(PG_DEFAULT_DRIVER) - formatted_args = [driver.qtLiteral(arg) + formatted_args = [driver.qtLiteral(arg, self.conn) for arg in res_rows['custom_tgargs']] res_rows['tgargs'] = ', '.join(formatted_args) else: @@ -1921,7 +1924,7 @@ class MViewNode(ViewNode, VacuumSettings): SQL = render_template("/".join( [self.template_path, self._SQL_PREFIX + self._CREATE_SQL]), - data=data) + data=data, conn=self.conn) if data['definition']: SQL += "\n" SQL += render_template("/".join( diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/default/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/default/sql/create.sql index 47a00b053..56b2fcef6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/default/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/default/sql/create.sql @@ -40,6 +40,6 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(data.schema, data.name) }} {% if data.comment %} COMMENT ON MATERIALIZED VIEW {{ conn|qtIdent(data.schema, data.name) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/default/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/default/sql/update.sql index e9e1c4550..a9c742de7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/default/sql/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/default/sql/update.sql @@ -57,7 +57,7 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(view_schema, view_name) }} {% endif %} {% if o_data.comment and not data.comment %} COMMENT ON MATERIALIZED VIEW {{ conn|qtIdent(view_schema, view_name) }} - IS {{ o_data.comment|qtLiteral }}; + IS {{ o_data.comment|qtLiteral(conn) }}; {% endif %} {% else %} {# ======= Alter Tablespace ========= #} @@ -157,7 +157,7 @@ ALTER MATERIALIZED VIEW IF EXISTS {{ conn|qtIdent(view_schema, view_name) }} RES {% if (data.comment is defined and (data.comment != old_comment)) %} COMMENT ON MATERIALIZED VIEW {{ conn|qtIdent(view_schema, view_name) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {# ============= The SQL generated below will change privileges ============= #} {% if data.datacl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/default/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/default/sql/view_id.sql index fe4c57a0e..29a8a8cfa 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/default/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/default/sql/view_id.sql @@ -2,5 +2,5 @@ {% if data %} SELECT c.oid, c.relname FROM pg_catalog.pg_class c LEFT OUTER JOIN pg_catalog.pg_namespace nsp on nsp.oid = c.relnamespace -WHERE c.relname = {{ data.name|qtLiteral }} and nsp.nspname = {{ data.schema|qtLiteral }}; +WHERE c.relname = {{ data.name|qtLiteral(conn) }} and nsp.nspname = {{ data.schema|qtLiteral(conn) }}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/default/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/default/sql/create.sql index bfb807a5e..300b5361a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/default/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/default/sql/create.sql @@ -40,6 +40,6 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(data.schema, data.name) }} {% if data.comment %} COMMENT ON MATERIALIZED VIEW {{ conn|qtIdent(data.schema, data.name) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/default/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/default/sql/update.sql index e9e1c4550..a9c742de7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/default/sql/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/default/sql/update.sql @@ -57,7 +57,7 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(view_schema, view_name) }} {% endif %} {% if o_data.comment and not data.comment %} COMMENT ON MATERIALIZED VIEW {{ conn|qtIdent(view_schema, view_name) }} - IS {{ o_data.comment|qtLiteral }}; + IS {{ o_data.comment|qtLiteral(conn) }}; {% endif %} {% else %} {# ======= Alter Tablespace ========= #} @@ -157,7 +157,7 @@ ALTER MATERIALIZED VIEW IF EXISTS {{ conn|qtIdent(view_schema, view_name) }} RES {% if (data.comment is defined and (data.comment != old_comment)) %} COMMENT ON MATERIALIZED VIEW {{ conn|qtIdent(view_schema, view_name) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {# ============= The SQL generated below will change privileges ============= #} {% if data.datacl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/default/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/default/sql/view_id.sql index fe4c57a0e..29a8a8cfa 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/default/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/default/sql/view_id.sql @@ -2,5 +2,5 @@ {% if data %} SELECT c.oid, c.relname FROM pg_catalog.pg_class c LEFT OUTER JOIN pg_catalog.pg_namespace nsp on nsp.oid = c.relnamespace -WHERE c.relname = {{ data.name|qtLiteral }} and nsp.nspname = {{ data.schema|qtLiteral }}; +WHERE c.relname = {{ data.name|qtLiteral(conn) }} and nsp.nspname = {{ data.schema|qtLiteral(conn) }}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/default/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/default/sql/create.sql index 940029202..99b8f83c9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/default/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/default/sql/create.sql @@ -23,6 +23,6 @@ ALTER TABLE {{ conn|qtIdent(data.schema, data.name) }} {% endif %} {% if data.comment %} COMMENT ON VIEW {{ conn|qtIdent(data.schema, data.name) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/default/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/default/sql/update.sql index 544ef8e62..a25ddff8b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/default/sql/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/default/sql/update.sql @@ -49,10 +49,10 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(view_schema, view_name) }} {% if (data.comment is defined and (data.comment != old_comment)) %} COMMENT ON VIEW {{ conn|qtIdent(view_schema, view_name) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% elif data.del_sql == True and old_comment != '' %} COMMENT ON VIEW {{ conn|qtIdent(view_schema, view_name) }} - IS {{ old_comment|qtLiteral }}; + IS {{ old_comment|qtLiteral(conn) }}; {% endif %} {# The SQL generated below will change privileges #} {% if o_data.acl_sql and o_data.acl_sql != '' %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/default/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/default/sql/view_id.sql index 8b87a863b..a4565a31a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/default/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/default/sql/view_id.sql @@ -2,5 +2,5 @@ {% if data %} SELECT c.oid, c.relname FROM pg_catalog.pg_class c LEFT OUTER JOIN pg_catalog.pg_namespace nsp on nsp.oid = c.relnamespace -WHERE c.relname = {{ data.name |qtLiteral }} and nsp.nspname = '{{ data.schema }}'; +WHERE c.relname = {{ data.name |qtLiteral(conn) }} and nsp.nspname = '{{ data.schema }}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/default/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/default/sql/create.sql index e47da8581..f12e4ecc3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/default/sql/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/default/sql/create.sql @@ -23,6 +23,6 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(data.schema, data.name) }} {% endif %} {% if data.comment %} COMMENT ON VIEW {{ conn|qtIdent(data.schema, data.name) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/default/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/default/sql/update.sql index 544ef8e62..a25ddff8b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/default/sql/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/default/sql/update.sql @@ -49,10 +49,10 @@ ALTER TABLE IF EXISTS {{ conn|qtIdent(view_schema, view_name) }} {% if (data.comment is defined and (data.comment != old_comment)) %} COMMENT ON VIEW {{ conn|qtIdent(view_schema, view_name) }} - IS {{ data.comment|qtLiteral }}; + IS {{ data.comment|qtLiteral(conn) }}; {% elif data.del_sql == True and old_comment != '' %} COMMENT ON VIEW {{ conn|qtIdent(view_schema, view_name) }} - IS {{ old_comment|qtLiteral }}; + IS {{ old_comment|qtLiteral(conn) }}; {% endif %} {# The SQL generated below will change privileges #} {% if o_data.acl_sql and o_data.acl_sql != '' %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/default/sql/view_id.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/default/sql/view_id.sql index e1868f5fb..c38976ff7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/default/sql/view_id.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/default/sql/view_id.sql @@ -2,5 +2,5 @@ {% if data %} SELECT c.oid, c.relname FROM pg_catalog.pg_class c LEFT OUTER JOIN pg_catalog.pg_namespace nsp on nsp.oid = c.relnamespace -WHERE c.relname = {{ data.name|qtLiteral }} and nsp.nspname = '{{ data.schema}}'; +WHERE c.relname = {{ data.name|qtLiteral(conn) }} and nsp.nspname = '{{ data.schema}}'; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/utils.py index 3597a6ba3..03e486fc7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/utils.py @@ -129,7 +129,7 @@ def create_trigger(server, db_name, schema_name, table_name, trigger_name, server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "CREATE TRIGGER %s INSTEAD OF DELETE ON %s.%s FOR EACH ROW " \ "EXECUTE PROCEDURE %s.%s(%s)" % (trigger_name, schema_name, @@ -137,7 +137,7 @@ def create_trigger(server, db_name, schema_name, table_name, trigger_name, trigger_func_name, trigger_func_arg) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() pg_cursor.execute("SELECT oid FROM pg_catalog.pg_trigger " "where tgname='%s'" % trigger_name) @@ -177,11 +177,11 @@ def create_view(server, db_name, schema_name, view_name, sql_query=None, server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = eval(sql_query) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created view pg_cursor.execute("select oid from pg_catalog.pg_class " @@ -233,7 +233,7 @@ def get_view_id(server, db_name, view_name): server['host'], server['port'], server['sslmode']) - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() # Get 'oid' from newly created view pg_cursor.execute("select oid from pg_catalog.pg_class " diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/view_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/view_test_data.json index 9dace550b..d693ad174 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/view_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/view_test_data.json @@ -250,7 +250,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -270,7 +270,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -309,7 +309,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -401,7 +401,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -421,7 +421,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -533,7 +533,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -782,7 +782,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -819,7 +819,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -1069,7 +1069,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_void", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_void", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -1091,7 +1091,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -1113,7 +1113,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/__init__.py index 0b724f51e..e65d08676 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/__init__.py @@ -23,7 +23,6 @@ from pgadmin.utils.driver import get_driver from config import PG_DEFAULT_DRIVER from pgadmin.tools.schema_diff.node_registry import SchemaDiffRegistry from pgadmin.tools.schema_diff.compare import SchemaDiffObjectCompare -import psycopg2 from pgadmin.utils import get_complete_file_path @@ -659,7 +658,10 @@ class SubscriptionView(PGChildNodeView, SchemaDiffObjectCompare): 'passfile' in connection_details and \ connection_details['passfile'] != '' else None try: - conn = psycopg2.connect( + from pgadmin.utils.driver import get_driver + driver = get_driver(PG_DEFAULT_DRIVER) + conn = driver.get_connection( + sid=0, host=connection_details['host'], database=connection_details['db'], user=connection_details['username'], diff --git a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/subscription_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/subscription_test_data.json index 60a1a1348..37849a8b1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/subscription_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/subscription_test_data.json @@ -107,7 +107,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -137,7 +137,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(True, True)(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -162,7 +162,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -187,7 +187,7 @@ "database_nodes": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -230,7 +230,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -267,7 +267,7 @@ "database_nodes": true, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_2darray", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_2darray", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -292,7 +292,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -356,7 +356,7 @@ "id": "PLACE_HOLDER" }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -408,7 +408,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { @@ -421,7 +421,7 @@ "is_positive_test": true, "mocking_required": false, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/utils.py index f81e69633..7ad747004 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/utils.py @@ -59,7 +59,7 @@ def create_subscription(server, db_name, subscription_name): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = """CREATE SUBSCRIPTION "%s" """ \ """CONNECTION 'host=192.168.1.50 port=5432 user=foo """ \ @@ -68,7 +68,7 @@ def create_subscription(server, db_name, subscription_name): """enabled = false, slot_name=NONE, connect=false);""" % ( subscription_name) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get role oid of newly added subscription pg_cursor.execute("select oid from pg_catalog.pg_subscription sub " @@ -143,12 +143,12 @@ def delete_subscription(server, db_name, subscription_name): subscription_count = pg_cursor.fetchone() if subscription_count: old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = "DROP subscription %s" % \ (subscription_name) pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() except Exception: diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/acl.sql index 8fe549790..d5dac3b8f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/acl.sql @@ -27,7 +27,7 @@ FROM (d).privilege_type AS privilege_type FROM (SELECT pg_catalog.aclexplode(db.datacl) AS d FROM pg_catalog.pg_database db - WHERE db.oid = {{ did|qtLiteral }}::OID) a + WHERE db.oid = {{ did|qtLiteral(conn) }}::OID) a ) d ) d LEFT JOIN pg_catalog.pg_roles g ON (d.grantor = g.oid) diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/alter_offline.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/alter_offline.sql index 6f2b46129..5cbb9b988 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/alter_offline.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/alter_offline.sql @@ -9,7 +9,7 @@ ALTER DATABASE {{ conn|qtIdent(data.name) }} OWNER TO {{ conn|qtIdent(data.datow {# Change the comments/description #} {% if data.comments is defined %} COMMENT ON DATABASE {{ conn|qtIdent(data.name) }} - IS {{ data.comments|qtLiteral }}; + IS {{ data.comments|qtLiteral(conn) }}; {% endif %} {# Change the connection limit #} {% if data.datconnlimit %} @@ -19,4 +19,4 @@ ALTER DATABASE {{ conn|qtIdent(data.name) }} WITH CONNECTION LIMIT = {{ data.dat ALTER DATABASE {{ conn|qtIdent(data.name) }} SET TABLESPACE {{ conn|qtIdent(data.spcname) }}; {% endif %} -{% endif %} \ No newline at end of file +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/create.sql index 11f96cbcb..4e4c2f7e3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/create.sql @@ -7,11 +7,11 @@ CREATE DATABASE {{ conn|qtIdent(data.name) }} TEMPLATE = {{ conn|qtIdent(data.template) }}{% endif %}{% if data.encoding %} - ENCODING = {{ data.encoding|qtLiteral }}{% endif %}{% if data.datcollate %} + ENCODING = {{ data.encoding|qtLiteral(conn) }}{% endif %}{% if data.datcollate %} - LC_COLLATE = {{ data.datcollate|qtLiteral }}{% endif %}{% if data.datctype %} + LC_COLLATE = {{ data.datcollate|qtLiteral(conn) }}{% endif %}{% if data.datctype %} - LC_CTYPE = {{ data.datctype|qtLiteral }}{% endif %}{% if data.spcname %} + LC_CTYPE = {{ data.datctype|qtLiteral(conn) }}{% endif %}{% if data.spcname %} TABLESPACE = {{ conn|qtIdent(data.spcname) }}{% endif %}{% if data.datconnlimit %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/grant.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/grant.sql index 87e18ee0d..edb867a44 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/grant.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/grant.sql @@ -9,7 +9,7 @@ {% import 'macros/default_privilege.macros' as DEFAULT_PRIVILEGE %} {% if data.comments %} COMMENT ON DATABASE {{ conn|qtIdent(data.name) }} - IS {{ data.comments|qtLiteral }}; + IS {{ data.comments|qtLiteral(conn) }}; {% endif %} {# Change the security labels #} diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/nodes.sql index fe5acc24d..1566346d1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/nodes.sql @@ -6,7 +6,7 @@ FROM pg_catalog.pg_database db LEFT OUTER JOIN pg_catalog.pg_tablespace ta ON db.dattablespace = ta.oid WHERE {% if did %} -db.oid = {{ did|qtLiteral }}::OID +db.oid = {{ did|qtLiteral(conn) }}::OID {% endif %} {% if db_restrictions %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/properties.sql index 7dea8b1d5..ef01388d0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/properties.sql @@ -25,10 +25,10 @@ WHERE db.datistemplate = {{show_user_defined_templates}} AND {% endif %} {% if did %} - db.oid = {{ did|qtLiteral }}::OID + db.oid = {{ did|qtLiteral(conn) }}::OID {% else %} {% if name %} - db.datname = {{ name|qtLiteral }}::text + db.datname = {{ name|qtLiteral(conn) }}::text {% endif %} {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/stats.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/stats.sql index f3109b562..b32e6d658 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/stats.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/stats.sql @@ -14,8 +14,8 @@ SELECT FROM pg_catalog.pg_stat_database db WHERE {% if did %} -db.datid = {{ did|qtLiteral }}::OID{% else %} -db.datid > {{ last_system_oid|qtLiteral }}::OID +db.datid = {{ did|qtLiteral(conn) }}::OID{% else %} +db.datid > {{ last_system_oid|qtLiteral(conn) }}::OID {% endif %} {% if db_restrictions %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/tests/utils.py index de36ff71d..533208b4a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/utils.py @@ -84,12 +84,12 @@ def create_database(connection, db_name): """This function used to create database""" try: old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute( '''CREATE DATABASE "%s" TEMPLATE template0''' % db_name ) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() return pg_cursor except Exception as exception: @@ -126,6 +126,18 @@ def connect_database(self, server_group, server_id, db_id): ), follow_redirects=True ) + + if db_con.status_code != 200: + db_con = self.tester.post( + '{0}{1}/{2}/{3}'.format( + DATABASE_CONNECT_URL, + server_group, + server_id, + db_id + ), + follow_redirects=True + ) + assert db_con.status_code == 200 db_con = json.loads(db_con.data.decode('utf-8')) return db_con diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/schedules/tests/schedules_test_data.json b/web/pgadmin/browser/server_groups/servers/pgagent/schedules/tests/schedules_test_data.json index 6768bd815..60a03fec7 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/schedules/tests/schedules_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/pgagent/schedules/tests/schedules_test_data.json @@ -332,7 +332,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -600,7 +600,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/steps/tests/steps_test_data.json b/web/pgadmin/browser/server_groups/servers/pgagent/steps/tests/steps_test_data.json index 8246e5b2e..6a1648d84 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/steps/tests/steps_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/pgagent/steps/tests/steps_test_data.json @@ -46,7 +46,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -168,7 +168,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -217,7 +217,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -317,7 +317,7 @@ "test_data": {}, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/macros/pga_exception.macros b/web/pgadmin/browser/server_groups/servers/pgagent/templates/macros/pga_exception.macros index 6dd15f586..4722f2b98 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/macros/pga_exception.macros +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/macros/pga_exception.macros @@ -2,23 +2,23 @@ {# This will be specific macro for pga_exception. #} {##################################################} {% macro INSERT(jscid, data) -%} --- Inserting a schedule exception {% if jscid %}(schedule: {{ jscid|qtLiteral}}){% endif %} +-- Inserting a schedule exception {% if jscid %}(schedule: {{ jscid|qtLiteral(conn)}}){% endif %} INSERT INTO pgagent.pga_exception ( jexscid, jexdate, jextime ) VALUES ( - {% if jscid %}{{ jscid|qtLiteral }}{% else %}scid{% endif %}, {% if data.jexdate %}to_date({{ data.jexdate|qtLiteral }}, 'YYYY-MM-DD')::date{% else %}NULL::date{% endif %}, {% if data.jextime %}{{ data.jextime|qtLiteral }}::time without time zone{% else %}NULL::time without time zone{% endif %} + {% if jscid %}{{ jscid|qtLiteral(conn) }}{% else %}scid{% endif %}, {% if data.jexdate %}to_date({{ data.jexdate|qtLiteral(conn) }}, 'YYYY-MM-DD')::date{% else %}NULL::date{% endif %}, {% if data.jextime %}{{ data.jextime|qtLiteral(conn) }}::time without time zone{% else %}NULL::time without time zone{% endif %} ); {%- endmacro %} {% macro UPDATE(jscid, data) -%} --- Updating an existing schedule exception (id: {{ data.jexid|qtLiteral }}, schedule: {{ jscid|qtLiteral }}) +-- Updating an existing schedule exception (id: {{ data.jexid|qtLiteral(conn) }}, schedule: {{ jscid|qtLiteral(conn) }}) UPDATE pgagent.pga_exception SET - {% if 'jexdate' in data %}jexdate={% if data.jexdate %}to_date({{ data.jexdate|qtLiteral }}, 'YYYY-MM-DD')::date{% else %}NULL::date{% endif %}{% endif %}{% if 'jextime' in data%}{% if 'jexdate' in data %}, {% endif %}jextime={% if data.jextime %}{{ data.jextime|qtLiteral }}::time without time zone{% else %}NULL::time without time zone{% endif %}{% endif %} + {% if 'jexdate' in data %}jexdate={% if data.jexdate %}to_date({{ data.jexdate|qtLiteral(conn) }}, 'YYYY-MM-DD')::date{% else %}NULL::date{% endif %}{% endif %}{% if 'jextime' in data%}{% if 'jexdate' in data %}, {% endif %}jextime={% if data.jextime %}{{ data.jextime|qtLiteral(conn) }}::time without time zone{% else %}NULL::time without time zone{% endif %}{% endif %} -WHERE jexid={{ data.jexid|qtLiteral }}::integer AND jexscid={{ jscid|qtLiteral }}::integer; +WHERE jexid={{ data.jexid|qtLiteral(conn) }}::integer AND jexscid={{ jscid|qtLiteral(conn) }}::integer; {%- endmacro %} {% macro DELETE(jscid, data) -%} --- Deleting a schedule exception (id: {{ data.jexid|qtLiteral }}, schedule: {{ jscid|qtLiteral }}) -DELETE FROM pgagent.pga_exception WHERE jexid={{ data.jexid|qtLiteral }}::integer AND jexscid={{ jscid|qtLiteral }}::integer; +-- Deleting a schedule exception (id: {{ data.jexid|qtLiteral(conn) }}, schedule: {{ jscid|qtLiteral(conn) }}) +DELETE FROM pgagent.pga_exception WHERE jexid={{ data.jexid|qtLiteral(conn) }}::integer AND jexscid={{ jscid|qtLiteral(conn) }}::integer; {%- endmacro %} diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/macros/pga_jobstep.macros b/web/pgadmin/browser/server_groups/servers/pgagent/templates/macros/pga_jobstep.macros index 7188ef39d..6a8740ded 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/macros/pga_jobstep.macros +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/macros/pga_jobstep.macros @@ -2,15 +2,15 @@ {# This will be specific macro for pga_jobstep. #} {################################################} {% macro INSERT(has_connstr, jid, data) -%} --- Inserting a step (jobid: {{ jid|qtLiteral }}) +-- Inserting a step (jobid: {{ jid|qtLiteral(conn) }}) INSERT INTO pgagent.pga_jobstep ( jstjobid, jstname, jstenabled, jstkind, {% if has_connstr %}jstconnstr, {% endif %}jstdbname, jstonerror, jstcode, jstdesc ) VALUES ( - {% if jid %}{{ jid|qtLiteral }}{% else %}jid{% endif %}, {{ data.jstname|qtLiteral }}::text, {% if data.jstenabled %}true{% else %}false {% endif %}, {% if data.jstkind %}'s'{% else %}'b'{% endif %}::character(1), - {% if has_connstr %}{% if data.jstconntype %}''{% else %}{{ data.jstconnstr|qtLiteral }}{% endif %}::text, {% if not data.jstconntype or not data.jstkind %}''{% else %}{{ data.jstdbname|qtLiteral }}{% endif %}::name{% else %}{% if not data.jstkind %}''{% else %}{{ data.jstdbname|qtLiteral }}::name{% endif %}{% endif %}, {{ data.jstonerror|qtLiteral }}::character(1), - {{ data.jstcode|qtLiteral }}::text, {{ data.jstdesc|qtLiteral }}::text + {% if jid %}{{ jid|qtLiteral(conn) }}{% else %}jid{% endif %}, {{ data.jstname|qtLiteral(conn) }}::text, {% if data.jstenabled %}true{% else %}false {% endif %}, {% if data.jstkind %}'s'{% else %}'b'{% endif %}::character(1), + {% if has_connstr %}{% if data.jstconntype %}''{% else %}{{ data.jstconnstr|qtLiteral(conn) }}{% endif %}::text, {% if not data.jstconntype or not data.jstkind %}''{% else %}{{ data.jstdbname|qtLiteral(conn) }}{% endif %}::name{% else %}{% if not data.jstkind %}''{% else %}{{ data.jstdbname|qtLiteral(conn) }}::name{% endif %}{% endif %}, {{ data.jstonerror|qtLiteral(conn) }}::character(1), + {{ data.jstcode|qtLiteral(conn) }}::text, {{ data.jstdesc|qtLiteral(conn) }}::text ) {% if jid %}RETURNING jstid{% endif %}; {%- endmacro %} {% macro UPDATE(has_connstr, jid, jstid, data) -%} @@ -19,26 +19,26 @@ INSERT INTO pgagent.pga_jobstep ( {% else %} {% set is_comma_required = False %} {% endif %} --- Updating the existing step (id: {{ jstid|qtLiteral }} jobid: {{ jid|qtLiteral }}) +-- Updating the existing step (id: {{ jstid|qtLiteral(conn) }} jobid: {{ jid|qtLiteral(conn) }}) UPDATE pgagent.pga_jobstep SET - {% if has_connstr %}{% if 'jstkind' in data %}{% if data.jstkind %}jstkind='s'::character(1), jstdbname={{ data.jstdbname|qtLiteral }}{% else %}jstkind='b'::character(1), jstdbname='', jstconnstr=''{% endif %}{% if is_comma_required %}, {% endif %}{% elif 'jstconntype' in data %}{% if data.jstconntype %}jstdbname={{ data.jstdbname|qtLiteral }}, jstconnstr=''{% else %}jstdbname='', jstconnstr={{ data.jstconnstr|qtLiteral }}{% endif %}{% if is_comma_required %},{% endif %}{% endif %}{% else %}{% if 'jstdbname' in data %}jstdbname={{ data.jstdbname|qtLiteral }}::name{% endif %}{% if is_comma_required %},{% endif %}{% endif %}{% if 'jstname' in data %} + {% if has_connstr %}{% if 'jstkind' in data %}{% if data.jstkind %}jstkind='s'::character(1), jstdbname={{ data.jstdbname|qtLiteral(conn) }}{% else %}jstkind='b'::character(1), jstdbname='', jstconnstr=''{% endif %}{% if is_comma_required %}, {% endif %}{% elif 'jstconntype' in data %}{% if data.jstconntype %}jstdbname={{ data.jstdbname|qtLiteral(conn) }}, jstconnstr=''{% else %}jstdbname='', jstconnstr={{ data.jstconnstr|qtLiteral(conn) }}{% endif %}{% if is_comma_required %},{% endif %}{% endif %}{% else %}{% if 'jstdbname' in data %}jstdbname={{ data.jstdbname|qtLiteral(conn) }}::name{% endif %}{% if is_comma_required %},{% endif %}{% endif %}{% if 'jstname' in data %} - jstname={{ data.jstname|qtLiteral }}::text{% if 'jstenabled' in data or 'jstdesc' in data or 'jstonerror' in data or 'jstcode' in data %},{% endif %}{% endif %}{% if 'jstenabled' in data %} + jstname={{ data.jstname|qtLiteral(conn) }}::text{% if 'jstenabled' in data or 'jstdesc' in data or 'jstonerror' in data or 'jstcode' in data %},{% endif %}{% endif %}{% if 'jstenabled' in data %} jstenabled={% if data.jstenabled %}true{% else %}false{% endif %}{% if 'jstdesc' in data or 'jstonerror' in data or 'jstcode' in data %},{% endif %}{% endif %}{% if 'jstdesc' in data %} - jstdesc={{ data.jstdesc|qtLiteral }}{% if 'jstonerror' in data or 'jstcode' in data %},{% endif %}{% endif %}{% if 'jstonerror' in data %} + jstdesc={{ data.jstdesc|qtLiteral(conn) }}{% if 'jstonerror' in data or 'jstcode' in data %},{% endif %}{% endif %}{% if 'jstonerror' in data %} - jstonerror={{ data.jstonerror|qtLiteral }}{% if 'jstcode' in data %},{% endif %}{% endif %}{% if 'jstcode' in data %} + jstonerror={{ data.jstonerror|qtLiteral(conn) }}{% if 'jstcode' in data %},{% endif %}{% endif %}{% if 'jstcode' in data %} - jstcode={{ data.jstcode|qtLiteral }}{% endif %} + jstcode={{ data.jstcode|qtLiteral(conn) }}{% endif %} -WHERE jstid={{ jstid|qtLiteral }}::integer AND jstjobid={{ jid|qtLiteral }}::integer; +WHERE jstid={{ jstid|qtLiteral(conn) }}::integer AND jstjobid={{ jid|qtLiteral(conn) }}::integer; {%- endmacro %} {% macro DELETE(jid, jstid) -%} --- Deleting a step (id: {{ jstid|qtLiteral }}, jobid: {{ jid|qtLiteral }}) -DELETE FROM pgagent.pga_jobstep WHERE jstid={{ jstid|qtLiteral }}::integer AND jstjobid={{ jid|qtLiteral }}::integer; +-- Deleting a step (id: {{ jstid|qtLiteral(conn) }}, jobid: {{ jid|qtLiteral(conn) }}) +DELETE FROM pgagent.pga_jobstep WHERE jstid={{ jstid|qtLiteral(conn) }}::integer AND jstjobid={{ jid|qtLiteral(conn) }}::integer; {%- endmacro %} {% macro PROPERTIES(has_connstr, jid, jstid) -%} SELECT @@ -49,8 +49,8 @@ FROM pgagent.pga_jobstep WHERE {% if jstid %} - jstid = {{ jstid|qtLiteral }}::integer AND + jstid = {{ jstid|qtLiteral(conn) }}::integer AND {% endif %} - jstjobid = {{ jid|qtLiteral }}::integer + jstjobid = {{ jid|qtLiteral(conn) }}::integer ORDER BY jstname; {%- endmacro %} diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/macros/pga_schedule.macros b/web/pgadmin/browser/server_groups/servers/pgagent/templates/macros/pga_schedule.macros index d33add20a..017a8ae31 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/macros/pga_schedule.macros +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/macros/pga_schedule.macros @@ -3,26 +3,26 @@ {#################################################} {% import 'macros/pga_exception.macros' as EXCEPTIONS %} {% macro INSERT(jid, data) -%} --- Inserting a schedule{% if jid %} (jobid: {{ jid|qtLiteral }}){% endif %} +-- Inserting a schedule{% if jid %} (jobid: {{ jid|qtLiteral(conn) }}){% endif %} INSERT INTO pgagent.pga_schedule( jscjobid, jscname, jscdesc, jscenabled, jscstart, {% if data.jscend %}jscend,{% endif %} jscminutes, jschours, jscweekdays, jscmonthdays, jscmonths ) VALUES ( - {% if jid %}{{ jid|qtLiteral }}{% else %}jid{% endif %}, {{ data.jscname|qtLiteral }}::text, {{ data.jscdesc|qtLiteral }}::text, {% if data.jscenabled %}true{% else %}false{% endif %}, - {{ data.jscstart|qtLiteral }}::timestamp with time zone, {% if data.jscend %}{{ data.jscend|qtLiteral }}::timestamp with time zone,{% endif %} + {% if jid %}{{ jid|qtLiteral(conn) }}{% else %}jid{% endif %}, {{ data.jscname|qtLiteral(conn) }}::text, {{ data.jscdesc|qtLiteral(conn) }}::text, {% if data.jscenabled %}true{% else %}false{% endif %}, + {{ data.jscstart|qtLiteral(conn) }}::timestamp with time zone, {% if data.jscend %}{{ data.jscend|qtLiteral(conn) }}::timestamp with time zone,{% endif %} -- Minutes - {{ data.jscminutes|qtLiteral }}::boolean[], + {{ data.jscminutes|qtLiteral(conn) }}::boolean[], -- Hours - {{ data.jschours|qtLiteral }}::boolean[], + {{ data.jschours|qtLiteral(conn) }}::boolean[], -- Week days - {{ data.jscweekdays|qtLiteral }}::boolean[], + {{ data.jscweekdays|qtLiteral(conn) }}::boolean[], -- Month days - {{ data.jscmonthdays|qtLiteral }}::boolean[], + {{ data.jscmonthdays|qtLiteral(conn) }}::boolean[], -- Months - {{ data.jscmonths|qtLiteral }}::boolean[] + {{ data.jscmonths|qtLiteral(conn) }}::boolean[] ) RETURNING jscid INTO scid;{% if 'jscexceptions' in data %} {% for exc in data.jscexceptions %} @@ -31,31 +31,31 @@ INSERT INTO pgagent.pga_schedule( {% macro UPDATE(jid, jscid, data) -%} {% if 'jscname' in data or 'jscenabled' in data or 'jscdesc' in data or 'jscstart' in data or 'jscend' in data or 'jscmonths' in data or 'jscminutes' in data or 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data %} --- Updating the schedule (id: {{ jscid|qtLiteral }}, jobid: {{ jid|qtLiteral }}) +-- Updating the schedule (id: {{ jscid|qtLiteral(conn) }}, jobid: {{ jid|qtLiteral(conn) }}) UPDATE pgagent.pga_schedule SET{% if 'jscname' in data %} - jscname={{ data.jscname|qtLiteral }}::text{% if 'jscdesc' in data or 'jscstart' in data or 'jscend' in data or 'jscmonths' in data or 'jscminutes' in data or 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data or 'jscenabled' in data %},{% endif %}{% endif %}{% if 'jscenabled' in data %} + jscname={{ data.jscname|qtLiteral(conn) }}::text{% if 'jscdesc' in data or 'jscstart' in data or 'jscend' in data or 'jscmonths' in data or 'jscminutes' in data or 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data or 'jscenabled' in data %},{% endif %}{% endif %}{% if 'jscenabled' in data %} jscenabled={% if data.jscenabled %}true{% else %}false{% endif %}{% if 'jscdesc' in data or 'jscstart' in data or 'jscend' in data or 'jscmonths' in data or 'jscminutes' in data or 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscdesc' in data %} - jscdesc={% if data.jscdesc %}{{ data.jscdesc|qtLiteral }}::text{% else %}''::text{% endif %}{% if 'jscstart' in data or 'jscend' in data or 'jscmonths' in data or 'jscminutes' in data or 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscstart' in data %} + jscdesc={% if data.jscdesc %}{{ data.jscdesc|qtLiteral(conn) }}::text{% else %}''::text{% endif %}{% if 'jscstart' in data or 'jscend' in data or 'jscmonths' in data or 'jscminutes' in data or 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscstart' in data %} - jscstart={{ data.jscstart|qtLiteral }}::timestamptz{% if 'jscend' in data or 'jscmonths' in data or 'jscminutes' in data or 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscend' in data %} + jscstart={{ data.jscstart|qtLiteral(conn) }}::timestamptz{% if 'jscend' in data or 'jscmonths' in data or 'jscminutes' in data or 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscend' in data %} - jscend={% if data.jscend %}{{ data.jscend|qtLiteral }}::timestamptz{% else %}NULL::timestamptz{% endif %}{% if 'jscmonths' in data or 'jscminutes' in data or 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscmonths' in data %} + jscend={% if data.jscend %}{{ data.jscend|qtLiteral(conn) }}::timestamptz{% else %}NULL::timestamptz{% endif %}{% if 'jscmonths' in data or 'jscminutes' in data or 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscmonths' in data %} - jscmonths={{ data.jscmonths|qtLiteral }}::boolean[]{% if 'jscminutes' in data or 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscminutes' in data %} + jscmonths={{ data.jscmonths|qtLiteral(conn) }}::boolean[]{% if 'jscminutes' in data or 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscminutes' in data %} - jscminutes={{ data.jscminutes|qtLiteral }}::boolean[]{% if 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscmonthdays' in data %} + jscminutes={{ data.jscminutes|qtLiteral(conn) }}::boolean[]{% if 'jscmonthdays' in data or 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscmonthdays' in data %} - jscmonthdays={{ data.jscmonthdays|qtLiteral }}::boolean[]{% if 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jschours' in data %} + jscmonthdays={{ data.jscmonthdays|qtLiteral(conn) }}::boolean[]{% if 'jschours' in data or 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jschours' in data %} - jschours={{ data.jschours|qtLiteral }}::boolean[]{% if 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscweekdays' in data %} + jschours={{ data.jschours|qtLiteral(conn) }}::boolean[]{% if 'jscweekdays' in data %},{% endif %}{% endif %}{% if 'jscweekdays' in data %} - jscweekdays={{ data.jscweekdays|qtLiteral }}::boolean[]{% endif %} + jscweekdays={{ data.jscweekdays|qtLiteral(conn) }}::boolean[]{% endif %} -WHERE jscid={{ jscid|qtLiteral }}::integer AND jscjobid={{ jid|qtLiteral }}::integer;{% endif %}{% if 'jscexceptions' in data %} +WHERE jscid={{ jscid|qtLiteral(conn) }}::integer AND jscjobid={{ jid|qtLiteral(conn) }}::integer;{% endif %}{% if 'jscexceptions' in data %} {% if 'added' in data.jscexceptions and data.jscexceptions.added|length > 0 %} {% for exc in data.jscexceptions.added %} @@ -77,8 +77,8 @@ WHERE jscid={{ jscid|qtLiteral }}::integer AND jscjobid={{ jid|qtLiteral }}::int {% endif %} {%- endmacro %} {% macro DELETE(jid, jscid) -%} --- Removing the existing schedule (id: {{ jscid|qtLiteral }}, jobid: {{ jid|qtLiteral }}) -DELETE FROM pgagent.pga_schedule WHERE jscid={{ jscid|qtLiteral }}::integer AND jscjobid={{ jid|qtLiteral }}::integer; +-- Removing the existing schedule (id: {{ jscid|qtLiteral(conn) }}, jobid: {{ jid|qtLiteral(conn) }}) +DELETE FROM pgagent.pga_schedule WHERE jscid={{ jscid|qtLiteral(conn) }}::integer AND jscjobid={{ jid|qtLiteral(conn) }}::integer; {%- endmacro %} {% macro FETCH_CURRENT() -%} SELECT jscid FROM pgagent.pga_schedule WHERE xmin::text = (txid_current() % (2^32)::bigint)::text; @@ -101,8 +101,8 @@ FROM ) e ON s.jscid = e.jexscid WHERE {% if jscid %} - s.jscid = {{ jscid|qtLiteral }}::integer AND + s.jscid = {{ jscid|qtLiteral(conn) }}::integer AND {% endif %} - s.jscjobid = {{ jid|qtLiteral }}::integer + s.jscjobid = {{ jid|qtLiteral(conn) }}::integer ORDER BY jscname; {%- endmacro %} diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/create.sql b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/create.sql index 6edcf6f80..911f452b8 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/create.sql +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/create.sql @@ -11,7 +11,7 @@ BEGIN INSERT INTO pgagent.pga_job( jobjclid, jobname, jobdesc, jobhostagent, jobenabled ) VALUES ( - {{ data.jobjclid|qtLiteral }}::integer, {{ data.jobname|qtLiteral }}::text, {{ data.jobdesc|qtLiteral }}::text, {{ data.jobhostagent|qtLiteral }}::text, {% if data.jobenabled %}true{% else %}false{% endif %} + {{ data.jobjclid|qtLiteral(conn) }}::integer, {{ data.jobname|qtLiteral(conn) }}::text, {{ data.jobdesc|qtLiteral(conn) }}::text, {{ data.jobhostagent|qtLiteral(conn) }}::text, {% if data.jobenabled %}true{% else %}false{% endif %} ) RETURNING jobid INTO jid;{% if 'jsteps' in data and data.jsteps|length > 0 %} diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/delete.sql b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/delete.sql index 3e3cd86a0..8c4787987 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/delete.sql +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/delete.sql @@ -1 +1 @@ -DELETE FROM pgagent.pga_job WHERE jobid = {{ jid|qtLiteral }}::integer; +DELETE FROM pgagent.pga_job WHERE jobid = {{ jid|qtLiteral(conn) }}::integer; diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/nodes.sql b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/nodes.sql index fa96eafa4..16ef3c316 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/nodes.sql @@ -3,6 +3,6 @@ SELECT FROM pgagent.pga_job {% if jid %} -WHERE jobid = {{ jid|qtLiteral }}::integer +WHERE jobid = {{ jid|qtLiteral(conn) }}::integer {% endif %} ORDER BY jobname; diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/properties.sql b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/properties.sql index d56d82096..caca61f57 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/properties.sql @@ -16,6 +16,6 @@ FROM ) sub ON sub.jlgjobid = j.jobid LEFT JOIN pgagent.pga_jobclass jc ON (j.jobjclid = jc.jclid) {% if jid %} -WHERE j.jobid = {{ jid|qtLiteral }}::integer +WHERE j.jobid = {{ jid|qtLiteral(conn) }}::integer {% endif %} ORDER BY j.jobname; diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/run_now.sql b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/run_now.sql index 9762cc198..50ed500d8 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/run_now.sql +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/run_now.sql @@ -1,3 +1,3 @@ UPDATE pgagent.pga_job SET jobnextrun=now()::timestamptz -WHERE jobid={{ jid|qtLiteral }}::integer +WHERE jobid={{ jid|qtLiteral(conn) }}::integer diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/stats.sql b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/stats.sql index afaba724f..25b117803 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/stats.sql +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/stats.sql @@ -7,6 +7,6 @@ SELECT FROM pgagent.pga_joblog WHERE - jlgjobid = {{ jid|qtLiteral }}::integer + jlgjobid = {{ jid|qtLiteral(conn) }}::integer ORDER BY jlgid DESC LIMIT {{ rows_threshold }}; diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/update.sql b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/update.sql index 91c3797da..48e81c34a 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/update.sql +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/sql/pre3.4/update.sql @@ -2,10 +2,10 @@ {% import 'macros/pga_schedule.macros' as SCHEDULE %} {% if 'jobjclid' in data or 'jobname' in data or 'jobdesc' in data or 'jobhostagent' in data or 'jobenabled' in data %} UPDATE pgagent.pga_job -SET {% if 'jobjclid' in data %}jobjclid={{ data.jobjclid|qtLiteral }}::integer{% if 'jobname' in data or 'jobdesc' in data or 'jobhostagent' in data or 'jobenabled' in data %}, {% endif %}{% endif %} -{% if 'jobname' in data %}jobname={{ data.jobname|qtLiteral }}::text{%if 'jobdesc' in data or 'jobhostagent' in data or 'jobenabled' in data %}, {% endif %}{% endif %} -{% if 'jobdesc' in data %}jobdesc={{ data.jobdesc|qtLiteral }}::text{%if 'jobhostagent' in data or 'jobenabled' in data %}, {% endif %}{% endif %} -{%if 'jobhostagent' in data %}jobhostagent={{ data.jobhostagent|qtLiteral }}::text{% if 'jobenabled' in data %}, {% endif %}{% endif %} +SET {% if 'jobjclid' in data %}jobjclid={{ data.jobjclid|qtLiteral(conn) }}::integer{% if 'jobname' in data or 'jobdesc' in data or 'jobhostagent' in data or 'jobenabled' in data %}, {% endif %}{% endif %} +{% if 'jobname' in data %}jobname={{ data.jobname|qtLiteral(conn) }}::text{%if 'jobdesc' in data or 'jobhostagent' in data or 'jobenabled' in data %}, {% endif %}{% endif %} +{% if 'jobdesc' in data %}jobdesc={{ data.jobdesc|qtLiteral(conn) }}::text{%if 'jobhostagent' in data or 'jobenabled' in data %}, {% endif %}{% endif %} +{%if 'jobhostagent' in data %}jobhostagent={{ data.jobhostagent|qtLiteral(conn) }}::text{% if 'jobenabled' in data %}, {% endif %}{% endif %} {% if 'jobenabled' in data %}jobenabled={% if data.jobenabled %}true{% else %}false{% endif %}{% endif %} WHERE jobid = {{ jid }}; diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_jobstep/sql/pre3.4/nodes.sql b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_jobstep/sql/pre3.4/nodes.sql index e3b6f4c64..8c3143b69 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_jobstep/sql/pre3.4/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_jobstep/sql/pre3.4/nodes.sql @@ -4,7 +4,7 @@ FROM pgagent.pga_jobstep WHERE {% if jstid %} - jstid = {{ jstid|qtLiteral }}::integer AND + jstid = {{ jstid|qtLiteral(conn) }}::integer AND {% endif %} - jstjobid = {{ jid|qtLiteral }}::integer + jstjobid = {{ jid|qtLiteral(conn) }}::integer ORDER BY jstname; diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_jobstep/sql/pre3.4/stats.sql b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_jobstep/sql/pre3.4/stats.sql index 3bd05d742..45b90c8c8 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_jobstep/sql/pre3.4/stats.sql +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_jobstep/sql/pre3.4/stats.sql @@ -9,6 +9,6 @@ SELECT FROM pgagent.pga_jobsteplog WHERE - jsljstid = {{ jstid|qtLiteral }}::integer + jsljstid = {{ jstid|qtLiteral(conn) }}::integer ORDER BY jslid DESC LIMIT {{ rows_threshold }}; diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_schedule/sql/pre3.4/nodes.sql b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_schedule/sql/pre3.4/nodes.sql index 5d0f083f1..845119994 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_schedule/sql/pre3.4/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_schedule/sql/pre3.4/nodes.sql @@ -4,8 +4,8 @@ FROM pgagent.pga_schedule WHERE {% if jscid %} - jscid = {{ jscid|qtLiteral }}::integer + jscid = {{ jscid|qtLiteral(conn) }}::integer {% else %} - jscjobid = {{ jid|qtLiteral }}::integer + jscjobid = {{ jid|qtLiteral(conn) }}::integer {% endif %} ORDER BY jscname; diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/tests/pgagent_test_data.json b/web/pgadmin/browser/server_groups/servers/pgagent/tests/pgagent_test_data.json index 24b8244a9..074587d8f 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/tests/pgagent_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/pgagent/tests/pgagent_test_data.json @@ -587,7 +587,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "[(False,'Mocked Internal Server Error')]" }, "expected_data": { @@ -654,7 +654,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -934,7 +934,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -1031,7 +1031,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -1098,7 +1098,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { @@ -1362,7 +1362,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False,'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/tests/utils.py b/web/pgadmin/browser/server_groups/servers/pgagent/tests/utils.py index e991f1bd4..5b8dd859f 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/pgagent/tests/utils.py @@ -150,7 +150,7 @@ def create_pgagent_job(self, name): self.server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute( """ @@ -162,7 +162,7 @@ def create_pgagent_job(self, name): """.format(name) ) job_id = pg_cursor.fetchone() - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() return job_id[0] @@ -186,13 +186,13 @@ def delete_pgagent_job(self, job_id=None): self.server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute( "DELETE FROM pgagent.pga_job " "WHERE jobid = '%s'::integer;" % job_id ) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() except Exception: @@ -239,7 +239,7 @@ def create_pgagent_schedule(self, sch_name, jobid): self.server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = """ INSERT INTO pgagent.pga_schedule( @@ -252,7 +252,7 @@ def create_pgagent_schedule(self, sch_name, jobid): """.format(sch_name, jobid) pg_cursor.execute(query) sch_id = pg_cursor.fetchone() - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() return sch_id[0] @@ -274,13 +274,13 @@ def delete_pgagent_schedule(self): self.server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute( "DELETE FROM pgagent.pga_schedule " "WHERE jscid = '%s'::integer;" % self.schedule_id ) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() except Exception: @@ -353,7 +353,7 @@ def create_pgagent_exception(self, schid, date, time): self.server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = """ INSERT INTO pgagent.pga_exception(jexscid, jexdate, jextime @@ -363,7 +363,7 @@ def create_pgagent_exception(self, schid, date, time): """.format(schid, date, time) pg_cursor.execute(query) excep_id = pg_cursor.fetchone() - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() return excep_id[0] @@ -385,7 +385,7 @@ def create_pgagent_step(self, step_name, jobid): self.server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() query = """ INSERT INTO pgagent.pga_jobstep( @@ -397,7 +397,7 @@ def create_pgagent_step(self, step_name, jobid): """.format(step_name, jobid) pg_cursor.execute(query) step_id = pg_cursor.fetchone() - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() return step_id[0] @@ -419,13 +419,13 @@ def delete_pgagent_step(self): self.server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute( "DELETE FROM pgagent.pga_jobstep " "WHERE jstid = '%s'::integer;" % self.step_id ) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() except Exception: diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/getoid.sql b/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/getoid.sql index ec44b4233..ce39b4e53 100644 --- a/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/getoid.sql +++ b/web/pgadmin/browser/server_groups/servers/resource_groups/templates/resource_groups/sql/default/getoid.sql @@ -1,4 +1,4 @@ {# ============= Get the resource group oid ============= #} {% if rgname %} -SELECT oid FROM edb_resource_group WHERE rgrpname = {{ rgname|qtLiteral }}; -{% endif %} \ No newline at end of file +SELECT oid FROM edb_resource_group WHERE rgrpname = {{ rgname|qtLiteral(conn)(conn) }}; +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/utils.py b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/utils.py index c7c7156e0..57bafb01f 100644 --- a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/utils.py @@ -32,10 +32,10 @@ def create_resource_groups(server, resource_group_name): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute("CREATE RESOURCE GROUP %s" % resource_group_name) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get oid of newly created resource group pg_cursor.execute("SELECT oid FROM edb_resource_group WHERE " @@ -84,11 +84,11 @@ def delete_resource_group(connection, resource_group_name): resource_group_name_count = len(pg_cursor.fetchall()) if resource_group_name_count: old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor.execute("DELETE FROM edb_resource_group where " "rgrpname='%s'" % resource_group_name) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() except Exception: diff --git a/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/create.sql index 7022802f7..4f9fc85e0 100644 --- a/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/create.sql @@ -28,9 +28,9 @@ CREATE ROLE {{ conn|qtIdent(data.rolname) }} WITH{% if data.rolcanlogin and data CONNECTION LIMIT {{ data.rolconnlimit }}{% endif %}{% if data.rolvaliduntil and data.rolvaliduntil is not none %} - VALID UNTIL {{ data.rolvaliduntil|qtLiteral }} {% endif %}{% if data.rolpassword %} + VALID UNTIL {{ data.rolvaliduntil|qtLiteral(conn) }} {% endif %}{% if data.rolpassword %} - PASSWORD {% if data.rolpassword is none %}NULL{% else %}{% if dummy %}'xxxxxx'{% else %} {{ data.rolpassword | qtLiteral }}{% endif %}{% endif %}{% endif %};{% if data.members and data.members|length > 0 %} + PASSWORD {% if data.rolpassword is none %}NULL{% else %}{% if dummy %}'xxxxxx'{% else %} {{ data.rolpassword|qtLiteral(conn) }}{% endif %}{% endif %}{% endif %};{% if data.members and data.members|length > 0 %} GRANT {{ conn|qtIdent(data.members)|join(', ') }} TO {{ conn|qtIdent(data.rolname) }};{% endif %}{% if data.admins and data.admins|length > 0 %} @@ -47,7 +47,7 @@ GRANT {{ conn|qtIdent(data.admins)|join(', ') }} TO {{ conn|qtIdent(data.rolname {{ VARIABLE.APPLY(conn, var.database, data.rolname, var.name, var.value) }} {% endfor %}{% endif %}{% if data.description %} -COMMENT ON ROLE {{ conn|qtIdent(data.rolname) }} IS {{ data.description|qtLiteral }}; +COMMENT ON ROLE {{ conn|qtIdent(data.rolname) }} IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% if data.rol_admins and data.rol_admins|length > 0 %} diff --git a/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/nodes.sql index 1f450b07e..79911c029 100644 --- a/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/nodes.sql @@ -3,6 +3,6 @@ SELECT FROM pg_catalog.pg_roles r {% if rid %} -WHERE r.oid = {{ rid|qtLiteral }}::oid +WHERE r.oid = {{ rid|qtLiteral(conn) }}::oid {% endif %} ORDER BY r.rolcanlogin, r.rolname diff --git a/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/properties.sql index 8e7091b79..a860aa94a 100644 --- a/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/properties.sql @@ -16,12 +16,12 @@ SELECT CASE WHEN pg.admin_option THEN '1' ELSE '0' END || pg.usename FROM (SELECT pg_roles.rolname AS usename, pg_auth_members.admin_option AS admin_option FROM pg_roles - JOIN pg_auth_members ON pg_roles.oid=pg_auth_members.member AND pg_auth_members.roleid={{ rid|qtLiteral }}::oid) pg + JOIN pg_auth_members ON pg_roles.oid=pg_auth_members.member AND pg_auth_members.roleid={{ rid|qtLiteral(conn) }}::oid) pg ) rolmembers {% endif %} FROM pg_catalog.pg_roles r {% if rid %} -WHERE r.oid = {{ rid|qtLiteral }}::oid +WHERE r.oid = {{ rid|qtLiteral(conn) }}::oid {% endif %} ORDER BY r.rolcanlogin, r.rolname diff --git a/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/update.sql index 7a234ef1f..8f552151f 100644 --- a/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/update.sql @@ -38,10 +38,10 @@ ALTER ROLE {{ conn|qtIdent(rolname) }}{% if 'rolcanlogin' in data %} CONNECTION LIMIT {{ data.rolconnlimit }} {% endif %}{% if 'rolvaliduntil' in data %} - VALID UNTIL {% if data.rolvaliduntil %}{{ data.rolvaliduntil|qtLiteral }}{% else %}'infinity' + VALID UNTIL {% if data.rolvaliduntil %}{{ data.rolvaliduntil|qtLiteral(conn) }}{% else %}'infinity' {% endif %}{% endif %}{% if 'rolpassword' in data %} - PASSWORD{% if data.rolpassword is none %} NULL{% else %}{% if dummy %} 'xxxxxx'{% else %} {{ data.rolpassword|qtLiteral }}{% endif %}{% endif %}{% endif %};{% endif %} + PASSWORD{% if data.rolpassword is none %} NULL{% else %}{% if dummy %} 'xxxxxx'{% else %} {{ data.rolpassword|qtLiteral(conn) }}{% endif %}{% endif %}{% endif %};{% endif %} {% if 'revoked_admins' in data and data.revoked_admins|length > 0 @@ -97,7 +97,7 @@ GRANT {{ conn|qtIdent(data.members)|join(', ') }} TO {{ conn|qtIdent(rolname) }} {% if 'description' in data %} -COMMENT ON ROLE {{ conn|qtIdent(rolname) }} IS {{ data.description|qtLiteral }}; +COMMENT ON ROLE {{ conn|qtIdent(rolname) }} IS {{ data.description|qtLiteral(conn) }}; {% endif %} {% if 'rol_revoked_admins' in data and diff --git a/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/variables.sql b/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/variables.sql index 2226cd8e1..a20bb9947 100644 --- a/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/variables.sql +++ b/web/pgadmin/browser/server_groups/servers/roles/templates/roles/sql/default/variables.sql @@ -6,7 +6,7 @@ FROM FROM pg_catalog.pg_roles WHERE - oid={{ rid|qtLiteral }}::OID + oid={{ rid|qtLiteral(conn) }}::OID ) r UNION ALL @@ -19,7 +19,7 @@ FROM (SELECT * FROM pg_catalog.pg_db_role_setting dr WHERE - dr.setrole={{ rid|qtLiteral }}::OID AND dr.setdatabase!=0 + dr.setrole={{ rid|qtLiteral(conn) }}::OID AND dr.setdatabase!=0 ) c LEFT JOIN pg_catalog.pg_database d ON (d.oid = c.setdatabase) ) a; diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/role_test_data.json b/web/pgadmin/browser/server_groups/servers/roles/tests/role_test_data.json index 8c50a20b0..94a9ca6f3 100644 --- a/web/pgadmin/browser/server_groups/servers/roles/tests/role_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/roles/tests/role_test_data.json @@ -10,7 +10,7 @@ }, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.connect", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.connect", "return_value": "(False, 'Mocked Internal Server Error while checking db connect.')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/utils.py b/web/pgadmin/browser/server_groups/servers/roles/tests/utils.py index c30c69d84..643c9d676 100644 --- a/web/pgadmin/browser/server_groups/servers/roles/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/roles/tests/utils.py @@ -145,10 +145,10 @@ def delete_role(connection, role_names): role_count = pg_cursor.fetchone() if role_count: old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute("DROP ROLE %s" % role_name) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() except Exception as exception: diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/acl.sql b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/acl.sql index e38fd3025..6446ec749 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/acl.sql +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/acl.sql @@ -12,14 +12,14 @@ FROM (SELECT ts.spcacl FROM pg_catalog.pg_tablespace ts {% if tsid %} - WHERE ts.oid={{ tsid|qtLiteral }}::OID + WHERE ts.oid={{ tsid|qtLiteral(conn) }}::OID {% endif %} ) acl, (SELECT (d).grantee AS grantee, (d).grantor AS grantor, (d).is_grantable AS is_grantable, (d).privilege_type AS privilege_type FROM (SELECT pg_catalog.aclexplode(ts.spcacl) as d FROM pg_catalog.pg_tablespace ts {% if tsid %} - WHERE ts.oid={{ tsid|qtLiteral }}::OID + WHERE ts.oid={{ tsid|qtLiteral(conn) }}::OID {% endif %} ) a) d ) d diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/alter.sql b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/alter.sql index a93793b27..f1bbe7e07 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/alter.sql +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/alter.sql @@ -12,7 +12,7 @@ ALTER TABLESPACE {{ conn|qtIdent(data.name) }} {### Comments on tablespace ###} {% if data.description %} COMMENT ON TABLESPACE {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {### Security Labels on tablespace ###} @@ -37,5 +37,5 @@ COMMENT ON TABLESPACE {{ conn|qtIdent(data.name) }} {% endif %} {# ======== The SQl Below will fetch id for given dataspace ======== #} {% if tablespace %} -SELECT ts.oid FROM pg_catalog.pg_tablespace ts WHERE spcname = {{tablespace|qtLiteral}}; +SELECT ts.oid FROM pg_catalog.pg_tablespace ts WHERE spcname = {{tablespace|qtLiteral(conn)}}; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/create.sql index 06efd0057..cb854cd05 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/create.sql @@ -4,6 +4,6 @@ CREATE TABLESPACE {{ conn|qtIdent(data.name) }} {% if data.spcuser %} OWNER {{ conn|qtIdent(data.spcuser) }} {% endif %} - LOCATION {{ data.spclocation|qtLiteral }}; + LOCATION {{ data.spclocation|qtLiteral(conn) }}; -{% endif %} \ No newline at end of file +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/nodes.sql index 637415ac6..3ce452600 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/nodes.sql @@ -4,6 +4,6 @@ FROM pg_catalog.pg_tablespace ts {% if tsid %} WHERE - ts.oid={{ tsid|qtLiteral }}::OID + ts.oid={{ tsid|qtLiteral(conn) }}::OID {% endif %} ORDER BY name; diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/properties.sql index 1c57e95cb..f5afbdd29 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/properties.sql @@ -11,6 +11,6 @@ SELECT FROM pg_catalog.pg_tablespace ts {% if tsid %} -WHERE ts.oid={{ tsid|qtLiteral }}::OID +WHERE ts.oid={{ tsid|qtLiteral(conn) }}::OID {% endif %} ORDER BY name diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/stats.sql b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/stats.sql index 408644a79..fa41c2ded 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/stats.sql +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/stats.sql @@ -1,6 +1,6 @@ {### SQL to fetch tablespace object stats ###} {% if tsid %} -SELECT pg_catalog.pg_tablespace_size({{ tsid|qtLiteral }}::OID) AS {{ conn|qtIdent(_('Size')) }} +SELECT pg_catalog.pg_tablespace_size({{ tsid|qtLiteral(conn) }}::OID) AS {{ conn|qtIdent(_('Size')) }} {% else %} SELECT ts.spcname AS {{ conn|qtIdent(_('Name')) }}, pg_catalog.pg_tablespace_size(ts.oid) AS {{ conn|qtIdent(_('Size')) }} diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/update.sql index 19cd3b00b..877bf1424 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/templates/tablespaces/sql/default/update.sql @@ -18,7 +18,7 @@ ALTER TABLESPACE {{ conn|qtIdent(data.name) }} {# ==== To update tablespace comments ==== #} {% if data.description is defined and data.description != o_data.description %} COMMENT ON TABLESPACE {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral }}; + IS {{ data.description|qtLiteral(conn) }}; {% endif %} {# ==== To update tablespace variables ==== #} diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/utils.py b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/utils.py index 5a74b65a2..7d8eec7e7 100644 --- a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/utils.py +++ b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/utils.py @@ -52,13 +52,13 @@ def create_tablespace(server, test_tablespace_name, test_tablespace_dir=None): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() if test_tablespace_dir is None: test_tablespace_dir = server['tablespace_path'] pg_cursor.execute("CREATE TABLESPACE %s LOCATION '%s'" % (test_tablespace_name, test_tablespace_dir)) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created tablespace @@ -112,9 +112,9 @@ def delete_tablespace(connection, test_tablespace_name): tablespace_count = len(pg_cursor.fetchall()) if tablespace_count: old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor.execute("DROP TABLESPACE %s" % test_tablespace_name) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() except Exception as exception: diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/role_dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/role_dependencies.sql index 65e25e26e..5f9f4794c 100644 --- a/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/role_dependencies.sql +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/role_dependencies.sql @@ -2,7 +2,7 @@ SELECT rolname AS refname, refclassid, deptype FROM pg_catalog.pg_shdepend dep LEFT JOIN pg_catalog.pg_roles r ON refclassid=1260 AND refobjid=r.oid {{where_clause}} -{% if db_name %} - AND dep.dbid = (SELECT oid FROM pg_catalog.pg_database WHERE datname = {{ db_name|qtLiteral }}) +{% if conn and conn.db %} + AND dep.dbid = (SELECT oid FROM pg_catalog.pg_database WHERE datname = {{ conn.db|qtLiteral(conn) }}) {% endif %} ORDER BY 1 diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/role_dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/role_dependencies.sql index 65e25e26e..40d95537a 100644 --- a/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/role_dependencies.sql +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/role_dependencies.sql @@ -2,7 +2,7 @@ SELECT rolname AS refname, refclassid, deptype FROM pg_catalog.pg_shdepend dep LEFT JOIN pg_catalog.pg_roles r ON refclassid=1260 AND refobjid=r.oid {{where_clause}} -{% if db_name %} - AND dep.dbid = (SELECT oid FROM pg_catalog.pg_database WHERE datname = {{ db_name|qtLiteral }}) +{% if conn and conn.db %} + AND dep.dbid = (SELECT oid FROM pg_catalog.pg_database WHERE datname = {{ conn.db|qtLiteral(conn) }}) {% endif %} ORDER BY 1 diff --git a/web/pgadmin/browser/server_groups/servers/templates/macros/security.macros b/web/pgadmin/browser/server_groups/servers/templates/macros/security.macros index 4350f9aea..c9d40ce04 100644 --- a/web/pgadmin/browser/server_groups/servers/templates/macros/security.macros +++ b/web/pgadmin/browser/server_groups/servers/templates/macros/security.macros @@ -1,5 +1,5 @@ {% macro APPLY(conn, type, name, provider, label) -%} -SECURITY LABEL{% if provider and provider != '' %} FOR {{ conn|qtIdent(provider) }}{% endif %} ON {{ type }} {{ conn|qtIdent(name) }} IS {{ label|qtLiteral }}; +SECURITY LABEL{% if provider and provider != '' %} FOR {{ conn|qtIdent(provider) }}{% endif %} ON {{ type }} {{ conn|qtIdent(name) }} IS {{ label|qtLiteral(conn) }}; {%- endmacro %} {% macro DROP(conn, type, name, provider) -%} SECURITY LABEL FOR {{ conn|qtIdent(provider) }} ON {{ type }} {{ conn|qtIdent(name) }} IS NULL; diff --git a/web/pgadmin/browser/server_groups/servers/templates/macros/variable.macros b/web/pgadmin/browser/server_groups/servers/templates/macros/variable.macros index 28746a70a..effbda921 100644 --- a/web/pgadmin/browser/server_groups/servers/templates/macros/variable.macros +++ b/web/pgadmin/browser/server_groups/servers/templates/macros/variable.macros @@ -5,7 +5,7 @@ {% set exclude_quoting = ['search_path'] %} ALTER {% if role %}ROLE {{ self.conn|qtIdent(role) }}{% if database %} IN DATABASE {{ conn|qtIdent(database) }}{% endif %}{% else %}DATABASE {{ conn|qtIdent(database) }}{% endif %} - SET {{ conn|qtIdent(param) }} TO {% if param in exclude_quoting %}{{ value }}{% else %}{{ value|qtLiteral }}{% endif %}; + SET {{ conn|qtIdent(param) }} TO {% if param in exclude_quoting %}{{ value }}{% else %}{{ value|qtLiteral(conn) }}{% endif %}; {%- endmacro %} {% macro RESET(conn, database, role, param) -%} ALTER {% if role %}ROLE {{ self.conn|qtIdent(role) }}{% if database %} IN DATABASE {{ conn|qtIdent(database) }}{% endif %}{% else %}DATABASE {{ conn|qtIdent(database) }}{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/templates/servers/sql/default/change_password.sql b/web/pgadmin/browser/server_groups/servers/templates/servers/sql/default/change_password.sql index dcf0ec1e8..fe8aa3c35 100644 --- a/web/pgadmin/browser/server_groups/servers/templates/servers/sql/default/change_password.sql +++ b/web/pgadmin/browser/server_groups/servers/templates/servers/sql/default/change_password.sql @@ -1,2 +1,2 @@ {# Change database server password #} -ALTER USER {{conn|qtIdent(user)}} WITH ENCRYPTED PASSWORD {{encrypted_password|qtLiteral}}; +ALTER USER {{conn|qtIdent(user)}} WITH ENCRYPTED PASSWORD {{encrypted_password|qtLiteral(conn)}}; diff --git a/web/pgadmin/browser/server_groups/servers/templates/servers/sql/default/stats.sql b/web/pgadmin/browser/server_groups/servers/templates/servers/sql/default/stats.sql index b244ca72c..170d291ef 100644 --- a/web/pgadmin/browser/server_groups/servers/templates/servers/sql/default/stats.sql +++ b/web/pgadmin/browser/server_groups/servers/templates/servers/sql/default/stats.sql @@ -39,10 +39,16 @@ SELECT ELSE 'localhost:' || client_port END AS {{ conn|qtIdent(_('Client')) }}, +<<<<<<< Updated upstream {{ _('Streaming Replication')|qtLiteral }} AS {{ conn|qtIdent(_('Application')) }}, null AS {{ conn|qtIdent(_('Wait event type')) }}, null AS {{ conn|qtIdent(_('Wait event name')) }}, state || ' [sync (state: ' || COALESCE(sync_state, '') || ', priority: ' || sync_priority::text || ')] (' || sent_lsn || ' sent, ' || write_lsn || ' written, ' || flush_lsn || ' flushed, ' || replay_lsn || ' applied)' AS {{ conn|qtIdent(_('Query')) }}, +======= + {{ _('Streaming Replication')|qtLiteral(conn) }} AS {{ conn|qtIdent(_('Application')) }}, + null AS {{ conn|qtIdent(_('Waiting?')) }}, + state || ' [sync (state: ' || COALESCE(sync_state, '') || ', priority: ' || sync_priority::text || ')] (' || sent_location || ' sent, ' || write_location || ' written, ' || flush_location || ' flushed, ' || replay_location || ' applied)' AS {{ conn|qtIdent(_('Query')) }}, +>>>>>>> Stashed changes null AS {{ conn|qtIdent(_('Query start')) }}, null AS {{ conn|qtIdent(_('Xact start')) }} FROM diff --git a/web/pgadmin/browser/server_groups/servers/tests/servers_test_data.json b/web/pgadmin/browser/server_groups/servers/tests/servers_test_data.json index 9a1262d34..8c964aedb 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/servers_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/tests/servers_test_data.json @@ -515,7 +515,7 @@ "mocking_required": false, "recovery_state": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while get recovery_state for server.')" }, "expected_data": { @@ -605,7 +605,7 @@ "server_type": "pg", "password": "my_postgres", "sversion": 100000, - "connection_connect_return_value": "psycopg2.OperationalError()" + "connection_connect_return_value": "psycopg.OperationalError()" } }, "expected_data": { @@ -662,7 +662,7 @@ "mocking_required": true, "pause": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, {'rows': []})" }, "expected_data": { @@ -676,7 +676,7 @@ "mocking_required": true, "pause": false, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, {'rows': []})" }, "expected_data": { @@ -743,7 +743,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(True, 'Mocked Internal Server Error')" }, "expected_data": { diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_check_recovery.py b/web/pgadmin/browser/server_groups/servers/tests/test_check_recovery.py index b31fcc195..8934d5572 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/test_check_recovery.py +++ b/web/pgadmin/browser/server_groups/servers/tests/test_check_recovery.py @@ -20,7 +20,7 @@ class TestCheckRecovery(BaseTestGenerator): self.server['sslmode']).cursor() if cursor is not None and cursor.connection is not None: - server_version = cursor.connection.server_version + server_version = test_utils.get_server_version(cursor.connection) if server_version >= 100000: version = '10_plus' elif server_version >= 90000: diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_check_ssh_mock_connect.py b/web/pgadmin/browser/server_groups/servers/tests/test_check_ssh_mock_connect.py index 3c0a5771a..b21a480d8 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/test_check_ssh_mock_connect.py +++ b/web/pgadmin/browser/server_groups/servers/tests/test_check_ssh_mock_connect.py @@ -12,7 +12,7 @@ from regression.python_test_utils import test_utils as utils from . import utils as servers_utils from unittest.mock import patch, MagicMock import json -from psycopg2 import OperationalError +from psycopg import OperationalError class ServersSSHConnectTestCase(BaseTestGenerator): diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_dependencies_sql.py b/web/pgadmin/browser/server_groups/servers/tests/test_dependencies_sql.py index dda3acdb4..03b63e992 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/test_dependencies_sql.py +++ b/web/pgadmin/browser/server_groups/servers/tests/test_dependencies_sql.py @@ -30,15 +30,20 @@ class TestDependenciesSql(SQLTemplateTestBase): "WHERE pg_class.relname='test_table'") self.table_id = cursor.fetchone()[0] - def generate_sql(self, version): + def generate_sql(self, connection): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "depends", self.server['type']) - template_file = self.get_template_file(version, file_path, - "dependencies.sql") + template_file = self.get_template_file( + self.get_server_version(connection), + file_path, + "dependencies.sql" + ) template = file_as_template(template_file) sql = template.render( where_clause="WHERE dep.objid=%s::oid" % self.table_id, - object_id=self.table_id) + object_id=self.table_id, + conn=connection + ) return sql diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_dependents_sql.py b/web/pgadmin/browser/server_groups/servers/tests/test_dependents_sql.py index aedee5af2..331e6c443 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/test_dependents_sql.py +++ b/web/pgadmin/browser/server_groups/servers/tests/test_dependents_sql.py @@ -30,14 +30,17 @@ class TestDependentsSql(SQLTemplateTestBase): "WHERE pg_class.relname='test_table'") self.table_id = cursor.fetchone()[0] - def generate_sql(self, version): + def generate_sql(self, connection): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "depends", self.server['type']) - template_file = self.get_template_file(version, file_path, - "dependents.sql") + template_file = self.get_template_file( + self.get_server_version(connection), + file_path, + "dependents.sql") template = file_as_template(template_file) sql = template.render( - where_clause="WHERE dep.objid=%s::oid" % self.table_id) + where_clause="WHERE dep.objid=%s::oid" % self.table_id, + conn=connection) return sql diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_role_dependencies_sql.py b/web/pgadmin/browser/server_groups/servers/tests/test_role_dependencies_sql.py index e744aa345..e809a4d86 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/test_role_dependencies_sql.py +++ b/web/pgadmin/browser/server_groups/servers/tests/test_role_dependencies_sql.py @@ -54,7 +54,7 @@ class TestRoleDependenciesSql(SQLTemplateTestBase): "WHERE pg_class.relname='test_new_role_table'") self.table_id = cursor.fetchone()[0] - sql = self.generate_sql(connection.server_version) + sql = self.generate_sql(connection) cursor.execute(sql) fetch_result = cursor.fetchall() @@ -66,15 +66,18 @@ class TestRoleDependenciesSql(SQLTemplateTestBase): cursor.execute("DROP ROLE %s" % self.role_name) connection.commit() - def generate_sql(self, version): + def generate_sql(self, connection): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "depends", self.server['type']) - template_file = self.get_template_file(version, file_path, + template_file = self.get_template_file(connection.info.version, + file_path, "role_dependencies.sql") - jinja2.filters.FILTERS['qtLiteral'] = lambda value: "NULL" + jinja2.filters.FILTERS['qtLiteral'] = lambda conn, value: "NULL" template = file_as_template(template_file) sql = template.render( - where_clause="WHERE dep.objid=%s::oid" % self.table_id) + where_clause="WHERE dep.objid=%s::oid" % self.table_id, + conn=connection + ) return sql diff --git a/web/pgadmin/browser/utils.py b/web/pgadmin/browser/utils.py index 76abaafb5..07f8e923e 100644 --- a/web/pgadmin/browser/utils.py +++ b/web/pgadmin/browser/utils.py @@ -486,11 +486,12 @@ class PGChildNodeView(NodeView): dependencies = self.__fetch_dependency( conn, query, show_system_objects, is_schema_diff) + import psycopg # fetch role dependencies if where_clause.find('subid') < 0: sql = render_template( "/".join([sql_path, 'role_dependencies.sql']), - where_clause=where_clause, db_name=conn.db) + where_clause=where_clause, conn=conn) status, result = conn.execute_dict(sql) if not status: diff --git a/web/pgadmin/dashboard/__init__.py b/web/pgadmin/dashboard/__init__.py index d13b8bdeb..ca07159a1 100644 --- a/web/pgadmin/dashboard/__init__.py +++ b/web/pgadmin/dashboard/__init__.py @@ -414,8 +414,8 @@ def dashboard_stats(sid=None, did=None): status, res = g.conn.execute_dict(sql) for chart_row in res['rows']: - resp_data[chart_row['chart_name']] = \ - json.loads(chart_row['chart_data']) + resp_data[chart_row['chart_name']] = json.loads( + chart_row['chart_data']) return ajax_response( response=resp_data, diff --git a/web/pgadmin/feature_tests/pg_datatype_validation_test.py b/web/pgadmin/feature_tests/pg_datatype_validation_test.py index f039bae75..a1ad9d036 100644 --- a/web/pgadmin/feature_tests/pg_datatype_validation_test.py +++ b/web/pgadmin/feature_tests/pg_datatype_validation_test.py @@ -70,7 +70,7 @@ class PGDataypeFeatureTest(BaseFeatureTest): else: self.timezone_hh_mm = '+{}'.format(self.timezone_hh_mm) - self.database_version = connection.server_version + self.database_version = test_utils.get_server_version(connection) # For this test case we need to set "Insert bracket pairs?" # SQL Editor preference to 'false' to avoid codemirror diff --git a/web/pgadmin/feature_tests/query_tool_tests.py b/web/pgadmin/feature_tests/query_tool_tests.py index d3102a1d0..515f06a0f 100644 --- a/web/pgadmin/feature_tests/query_tool_tests.py +++ b/web/pgadmin/feature_tests/query_tool_tests.py @@ -615,7 +615,7 @@ SELECT 1, pg_sleep(300)""" self.server['port'], self.server['sslmode'] ) - return connection.server_version > 90100 + return test_utils.get_server_version(connection) > 90100 def _query_tool_notify_statements(self): print("\n\tListen on an event... ", file=sys.stderr, end="") @@ -669,7 +669,8 @@ SELECT 1, pg_sleep(300)""" pass connection.close() - return connection.server_version >= 110000 and jit_enabled + return test_utils.get_server_version(connection + ) >= 110000 and jit_enabled def _query_tool_explain_check_jit_stats(self): diff --git a/web/pgadmin/feature_tests/view_data_dml_queries.py b/web/pgadmin/feature_tests/view_data_dml_queries.py index f52275726..736e99a5c 100644 --- a/web/pgadmin/feature_tests/view_data_dml_queries.py +++ b/web/pgadmin/feature_tests/view_data_dml_queries.py @@ -96,7 +96,7 @@ CREATE TABLE public.nonintpkey def before(self): with test_utils.Database(self.server) as (connection, _): - if connection.server_version < 90100: + if test_utils.get_server_version(connection) < 90100: self.skipTest( "COLLATE is not present in PG versions below v9.1" ) diff --git a/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py b/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py index 3c0025f61..75264616c 100644 --- a/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py +++ b/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py @@ -29,7 +29,7 @@ class CheckDebuggerForXssFeatureTest(BaseFeatureTest): def before(self): with test_utils.Database(self.server) as (connection, _): - if connection.server_version < 90100: + if test_utils.get_server_version(connection) < 90100: self.skipTest( "Functions tree node is not present in pgAdmin below " "PG v9.1" diff --git a/web/pgadmin/feature_tests/xss_checks_roles_control_test.py b/web/pgadmin/feature_tests/xss_checks_roles_control_test.py index 94fc856c5..bb8fc5d84 100644 --- a/web/pgadmin/feature_tests/xss_checks_roles_control_test.py +++ b/web/pgadmin/feature_tests/xss_checks_roles_control_test.py @@ -30,7 +30,7 @@ class CheckRoleMembershipControlFeatureTest(BaseFeatureTest): def before(self): with test_utils.Database(self.server) as (connection, _): - if connection.server_version < 90100: + if test_utils.get_server_version(connection) < 90100: self.skipTest( "Membership is not present in Postgres below PG v9.1") diff --git a/web/pgadmin/tools/backup/tests/test_backup_create_job_unit_test.py b/web/pgadmin/tools/backup/tests/test_backup_create_job_unit_test.py index 1b7c047fa..0c9921abb 100644 --- a/web/pgadmin/tools/backup/tests/test_backup_create_job_unit_test.py +++ b/web/pgadmin/tools/backup/tests/test_backup_create_job_unit_test.py @@ -709,7 +709,7 @@ class BackupCreateJobTest(BaseTestGenerator): @patch('pgadmin.tools.backup.BackupMessage') @patch('pgadmin.tools.backup.filename_with_file_manager_path') @patch('pgadmin.tools.backup.BatchProcess') - @patch('pgadmin.utils.driver.psycopg2.server_manager.ServerManager.' + @patch('pgadmin.utils.driver.psycopg3.server_manager.ServerManager.' 'export_password_env') def runTest(self, export_password_env_mock, batch_process_mock, filename_mock, backup_message_mock, server_mock): diff --git a/web/pgadmin/tools/debugger/__init__.py b/web/pgadmin/tools/debugger/__init__.py index 683f3e997..2af4af261 100644 --- a/web/pgadmin/tools/debugger/__init__.py +++ b/web/pgadmin/tools/debugger/__init__.py @@ -245,13 +245,27 @@ def index(): def execute_dict_search_path(conn, sql, search_path): - sql = "SET search_path={0};".format(search_path) + sql + sql_search = "SET search_path={0};".format(search_path) + status, res = conn.execute_void(sql_search) + + if not status: + current_app.logger.debug( + "Error setting the search path.") + return False, res + status, res = conn.execute_dict(sql) return status, res def execute_async_search_path(conn, sql, search_path): - sql = "SET search_path={0};".format(search_path) + sql + sql_search = "SET search_path={0};".format(search_path) + status, res = conn.execute_void(sql_search) + + if not status: + current_app.logger.debug( + "Error setting the search path.") + return False, res + status, res = conn.execute_async(sql) return status, res @@ -650,12 +664,16 @@ def get_debugger_version(conn, search_path): :return: """ debugger_version = 0 + status, res = conn.execute_void("SET search_path={0};".format(search_path)) + + if not status: + return False, internal_server_error(errormsg=res) + status, rid = conn.execute_scalar( - "SET search_path={0};" "SELECT COUNT(*) FROM pg_catalog.pg_proc p" " LEFT JOIN pg_catalog.pg_namespace n ON p.pronamespace = n.oid" " WHERE n.nspname = ANY(current_schemas(false)) AND" - " p.proname = 'pldbg_get_proxy_info';".format(search_path) + " p.proname = 'pldbg_get_proxy_info';" ) if not status: @@ -1083,7 +1101,8 @@ def start_debugger_listener(trans_id): ret_type=de_inst.function_data['return_type'], data=debugger_args_values, arg_type=arg_type, - args_mode=arg_mode + args_mode=arg_mode, + conn=conn ) else: str_query = render_template( @@ -1092,13 +1111,15 @@ def start_debugger_listener(trans_id): is_func=de_inst.function_data['is_func'], ret_type=de_inst.function_data['return_type'], data=debugger_args_values, - is_ppas_database=de_inst.function_data['is_ppas_database'] + is_ppas_database=de_inst.function_data['is_ppas_database'], + conn=conn ) status, result = execute_async_search_path( conn, str_query, de_inst.debugger_data['search_path']) - if not status: - return internal_server_error(errormsg=result) + + # if not status: + # return internal_server_error(errormsg=result) else: sql = render_template( @@ -1148,17 +1169,18 @@ def start_debugger_listener(trans_id): session_id=int_session_id ) - status, res = execute_async_search_path( - conn, sql, de_inst.debugger_data['search_path']) - if not status: - return internal_server_error(errormsg=res) - de_inst.debugger_data['exe_conn_id'] = \ de_inst.debugger_data['conn_id'] de_inst.debugger_data['restart_debug'] = 1 de_inst.debugger_data['frame_id'] = 0 de_inst.debugger_data['session_id'] = int_session_id de_inst.update_session() + + status, res = execute_async_search_path( + conn, sql, de_inst.debugger_data['search_path']) + if not status: + return internal_server_error(errormsg=res) + return make_json_response( data={'status': status, 'result': res} ) @@ -1276,7 +1298,6 @@ def messages(trans_id): trans_id - unique transaction id. """ - de_inst = DebuggerInstance(trans_id) if de_inst.debugger_data is None: return make_json_response( @@ -1296,7 +1317,7 @@ def messages(trans_id): if conn.connected(): status = 'Busy' - _, result = conn.poll() + # _, result = conn.poll() notify = conn.messages() if notify: # In notice message we need to find "PLDBGBREAK" string to find @@ -1616,7 +1637,7 @@ def deposit_parameter_value(trans_id): "/".join([template_path, "deposit_value.sql"]), session_id=de_inst.debugger_data['session_id'], var_name=data[0]['name'], line_number=-1, - val=data[0]['value'] + val=data[0]['value'], conn=conn ) status, result = execute_dict_search_path( diff --git a/web/pgadmin/tools/debugger/static/js/components/DebuggerComponent.jsx b/web/pgadmin/tools/debugger/static/js/components/DebuggerComponent.jsx index 826609ecc..3b88d6a59 100644 --- a/web/pgadmin/tools/debugger/static/js/components/DebuggerComponent.jsx +++ b/web/pgadmin/tools/debugger/static/js/components/DebuggerComponent.jsx @@ -360,6 +360,8 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev } }) .catch(raiseJSONError); + enableToolbarButtons(); + pollResult(params.transId); } else if (params.transId != undefined) { // Make api call to execute the and start the target for execution baseUrl = url_for('debugger.start_listener', { @@ -376,6 +378,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panel, ev } }) .catch(raiseJSONError); + messages(params.transId); } }, []); diff --git a/web/pgadmin/tools/debugger/templates/debugger/sql/execute_edbspl.sql b/web/pgadmin/tools/debugger/templates/debugger/sql/execute_edbspl.sql index 3c0cd78da..1f08d16f9 100644 --- a/web/pgadmin/tools/debugger/templates/debugger/sql/execute_edbspl.sql +++ b/web/pgadmin/tools/debugger/templates/debugger/sql/execute_edbspl.sql @@ -36,7 +36,7 @@ {% if arg_mode == 'b' %} {### Handle Null parameters received from client ###} {% if data[input_value_index]['type'] == 'text' and data[input_value_index]['value'] != 'NULL' %} -{% set tmp_val = data[input_value_index]['value']|qtLiteral %} +{% set tmp_val = data[input_value_index]['value']|qtLiteral(conn) %} {% set str_declare = str_declare ~ " := " ~ strParam ~ " " ~ tmp_val ~ "::" ~ data[input_value_index]['type'] %} {% else %} {% set str_declare = str_declare ~ " := " ~ strParam ~ " " ~ data[input_value_index]['value'] ~ "::" ~ data[input_value_index]['type'] %} @@ -63,7 +63,7 @@ {### Handle Null parameters received from client ###} {% if data[input_value_index]['type'] == 'text' and data[input_value_index]['value'] != 'NULL' %} -{% set tmp_var = data[input_value_index]['value']|qtLiteral %} +{% set tmp_var = data[input_value_index]['value']|qtLiteral(conn) %} {% set str_statement = str_statement ~ tmp_var ~ "::" ~ data[input_value_index]['type'] %} {% else %} {% set str_statement = str_statement ~ data[input_value_index]['value'] ~ "::" ~ data[input_value_index]['type'] %} diff --git a/web/pgadmin/tools/debugger/templates/debugger/sql/execute_plpgsql.sql b/web/pgadmin/tools/debugger/templates/debugger/sql/execute_plpgsql.sql index 6e90ef83d..3d625dc29 100644 --- a/web/pgadmin/tools/debugger/templates/debugger/sql/execute_plpgsql.sql +++ b/web/pgadmin/tools/debugger/templates/debugger/sql/execute_plpgsql.sql @@ -6,13 +6,12 @@ {% elif ret_type == 'record' %} SELECT {{ func_name }} ( {% else %} - SELECT * FROM {{ func_name }} ( -{% endif %} + SELECT * FROM {{ func_name }} ({% endif %} {% if data %} {% for dict_item in data %} {% if 'type' in dict_item and 'value' in dict_item %} {% if ('NULL:' not in dict_item['value']|string and dict_item['value'] != 'NULL' and '[]' not in dict_item['type']) %} -{{ dict_item['value']|qtLiteral }}::{{ dict_item['type'] }}{% if not loop.last %}, {% endif %} +{{ dict_item['value']|qtLiteral(conn) }}::{{ dict_item['type'] }}{% if not loop.last %}, {% endif %} {% elif dict_item['value'] == 'NULL' or 'NULL:' in dict_item['value'] %} {{ dict_item['value'] }}::{{ dict_item['type'] }}{% if not loop.last %}, {% endif %} {% else %} @@ -20,7 +19,7 @@ ARRAY[ {% for dict_list in dict_item['value'] %} {% if 'value' in dict_list %} -{{ dict_list['value']|qtLiteral }}{% if not loop.last %}, {% endif %} +{{ dict_list['value']|qtLiteral(conn) }}{% if not loop.last %}, {% endif %} {% endif %} {% endfor %} ]::{{ dict_item['type'] }} diff --git a/web/pgadmin/tools/debugger/templates/debugger/sql/v1/deposit_value.sql b/web/pgadmin/tools/debugger/templates/debugger/sql/v1/deposit_value.sql index 93db6c6ff..b0cd3798c 100644 --- a/web/pgadmin/tools/debugger/templates/debugger/sql/v1/deposit_value.sql +++ b/web/pgadmin/tools/debugger/templates/debugger/sql/v1/deposit_value.sql @@ -1,4 +1,4 @@ {### Change the variable value and submit during debugging ###} {% if session_id %} -SELECT * FROM pldbg_deposit_value({{session_id}}::int, {{var_name|qtLiteral}}, {{line_number}}, {{val|qtLiteral}}) -{% endif %} \ No newline at end of file +SELECT * FROM pldbg_deposit_value({{session_id}}::int, {{var_name|qtLiteral(conn)}}, {{line_number}}, {{val|qtLiteral(conn)}}) +{% endif %} diff --git a/web/pgadmin/tools/debugger/templates/debugger/sql/v3/deposit_value.sql b/web/pgadmin/tools/debugger/templates/debugger/sql/v3/deposit_value.sql index c2f4c1f07..8f3f2c854 100644 --- a/web/pgadmin/tools/debugger/templates/debugger/sql/v3/deposit_value.sql +++ b/web/pgadmin/tools/debugger/templates/debugger/sql/v3/deposit_value.sql @@ -1,4 +1,4 @@ {### Change the variable value and submit during debugging ###} {% if session_id %} -SELECT * FROM pldbg_deposit_value({{session_id}}::int, {{var_name|qtLiteral }}, {{line_number}}, {{val|qtLiteral}}) -{% endif %} \ No newline at end of file +SELECT * FROM pldbg_deposit_value({{session_id}}::int, {{var_name|qtLiteral(conn) }}, {{line_number}}, {{val|qtLiteral(conn)}}) +{% endif %} diff --git a/web/pgadmin/tools/debugger/tests/debugger_test_data.json b/web/pgadmin/tools/debugger/tests/debugger_test_data.json index 6488f3de3..721ee9a63 100644 --- a/web/pgadmin/tools/debugger/tests/debugger_test_data.json +++ b/web/pgadmin/tools/debugger/tests/debugger_test_data.json @@ -24,7 +24,7 @@ "add_extension": true, "test_data": {}, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching function details for debugger.')" }, "expected_data": { @@ -41,7 +41,7 @@ "node_type": "function", "test_data": {}, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(True, {'rows': []})" }, "expected_data": { @@ -58,7 +58,7 @@ "node_type": "function", "test_data": {}, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while checking function is debuggable.')" }, "expected_data": { @@ -76,7 +76,7 @@ "node_type": "function", "test_data": {}, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, 0),(False, 'Mocked Internal Server Error ')" }, "expected_data": { @@ -109,7 +109,7 @@ "node_type": "function", "test_data": {}, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, '0'), (True, '0')" }, "expected_data": { @@ -156,7 +156,7 @@ "evnt_insert": true }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while checking debugger initialize direct.')" }, "expected_data": { @@ -191,7 +191,7 @@ "add_extension": true, "test_data": {}, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while checking debugger initialize direct.')" }, "expected_data": { @@ -209,7 +209,7 @@ "add_extension": true, "test_data": {}, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while checking debugger initialize direct.')" }, "expected_data": { @@ -227,7 +227,7 @@ "add_extension": true, "test_data": {}, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(False, 'Mocked Internal Server Error while checking debugger initialize direct.')" }, "expected_data": { @@ -245,7 +245,7 @@ "add_extension": true, "test_data": {}, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.connect", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.connect", "return_value": "(False, 'Mocked Internal Server Error while checking debugger initialize direct.')" }, "expected_data": { @@ -309,7 +309,7 @@ "evnt_insert": true }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while checking debugger initialize target direct.')" }, "expected_data": { @@ -336,7 +336,7 @@ "evnt_insert": true }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, 0), (False, 'Mocked Internal Server Error while checking debugger initialize target direct.')" }, "expected_data": { @@ -363,7 +363,7 @@ "evnt_insert": true }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, {})" }, "expected_data": { @@ -390,7 +390,7 @@ "evnt_insert": true }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_scalar", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_scalar", "return_value": "(True, ''), (True, ''), (False,'Mocking invalid debugger.')" }, "expected_data": { @@ -456,7 +456,7 @@ "add_extension": true, "test_data": {}, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.connected", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.connected", "return_value": "False" }, "expected_data": { @@ -548,7 +548,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.connected", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.connected", "return_value": "False" }, "expected_data": { @@ -610,7 +610,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.connected", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.connected", "return_value": "False" }, "expected_data": { @@ -674,7 +674,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.connected", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.connected", "return_value": "False" }, "expected_data": { @@ -800,7 +800,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.connected", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.connected", "return_value": "False" }, "expected_data": { @@ -831,7 +831,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.poll", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.poll", "return_value": "(False, 'Mock internal server error while poll data for debugger.')" }, "expected_data": { @@ -1001,7 +1001,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.connected", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.connected", "return_value": "False" }, "expected_data": { @@ -1099,7 +1099,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching function details for debugger.')" }, "expected_data": { @@ -1133,7 +1133,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_async", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_async", "return_value": "(False, 'Mocked Internal Server Error while fetching function details for debugger.')" }, "expected_data": { @@ -1197,7 +1197,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.connected", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.connected", "return_value": "False" }, "expected_data": { @@ -1229,7 +1229,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.poll", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.poll", "return_value": "(False, 'Mocking internal error for poll debugger result.')" }, "expected_data": { @@ -1261,7 +1261,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.poll", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.poll", "return_value": "(False, 'Mocking internal error for poll debugger result.')" }, "expected_data": { @@ -1358,7 +1358,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching function details for debugger.')" }, "expected_data": { @@ -1391,7 +1391,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.connected", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.connected", "return_value": "False" }, "expected_data": { @@ -1516,7 +1516,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while fetching function details for debugger.')" }, "expected_data": { @@ -1548,7 +1548,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.connected", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.connected", "return_value": "False" }, "expected_data": { @@ -1581,7 +1581,7 @@ "variables": [] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.connected", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.connected", "return_value": "False" }, "expected_data": { diff --git a/web/pgadmin/tools/debugger/tests/test_debugger_clear_all_breakpoint.py b/web/pgadmin/tools/debugger/tests/test_debugger_clear_all_breakpoint.py index 125dbddf6..901e33383 100644 --- a/web/pgadmin/tools/debugger/tests/test_debugger_clear_all_breakpoint.py +++ b/web/pgadmin/tools/debugger/tests/test_debugger_clear_all_breakpoint.py @@ -18,6 +18,7 @@ from pgadmin.browser.server_groups.servers.databases.schemas.functions \ .tests import utils as funcs_utils from pgadmin.browser.server_groups.servers.databases.tests import \ utils as db_utils +import asyncio class DebuggerClearAllBreakpoint(BaseTestGenerator): @@ -51,10 +52,23 @@ class DebuggerClearAllBreakpoint(BaseTestGenerator): if self.init_target: debugger_utils.initialize_target(self, utils) - debugger_utils.start_listener(self, utils, db_utils) - self.port_no = debugger_utils.messages(self, utils, db_utils) - debugger_utils.start_execution(self, utils, db_utils) - breakpoint = debugger_utils.set_breakpoint(self) + self._start_debugger() + + def _start_debugger(self): + asyncio.run(self.start_debugger()) + + async def messages_test(self): + self.port_no = debugger_utils.messages(self, utils, db_utils) + debugger_utils.start_execution(self, utils, db_utils) + breakpoint = debugger_utils.set_breakpoint(self) + + async def start_debugger(self): + # Schedule three calls *concurrently*: + await asyncio.gather( + debugger_utils.start_listener(self, utils, db_utils), + asyncio.sleep(15), + self.messages_test() + ) def clear_all_breakpoint(self): if hasattr(self, 'no_breakpoint') and self.no_breakpoint: diff --git a/web/pgadmin/tools/debugger/tests/utils.py b/web/pgadmin/tools/debugger/tests/utils.py index a56f3665f..fff96acdd 100644 --- a/web/pgadmin/tools/debugger/tests/utils.py +++ b/web/pgadmin/tools/debugger/tests/utils.py @@ -126,7 +126,7 @@ def initialize_target(self, utils, close_debugger_instance=True): 'for indirect debugging.') -def start_listener(self, utils, db_utils): +async def start_listener(self, utils, db_utils): response = self.tester.get( 'debugger/start_listener/' + str(self.trans_id), content_type='application/json') diff --git a/web/pgadmin/tools/grant_wizard/tests/grant_wizard_test_data.json b/web/pgadmin/tools/grant_wizard/tests/grant_wizard_test_data.json index 195c03f24..4a84b4d09 100644 --- a/web/pgadmin/tools/grant_wizard/tests/grant_wizard_test_data.json +++ b/web/pgadmin/tools/grant_wizard/tests/grant_wizard_test_data.json @@ -110,7 +110,7 @@ ] }, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while grant permissions.')" }, "expected_data": { @@ -137,7 +137,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while getting list of object for grant wizard.')" }, "expected_data": { @@ -164,7 +164,7 @@ "is_positive_test": false, "mocking_required": true, "mock_data": { - "function_name": "pgadmin.utils.driver.psycopg2.connection.Connection.execute_dict", + "function_name": "pgadmin.utils.driver.psycopg3.connection.Connection.execute_dict", "return_value": "(False, 'Mocked Internal Server Error while getting list of object for grant wizard.')" }, "expected_data": { diff --git a/web/pgadmin/tools/import_export/templates/import_export/sql/cmd.sql b/web/pgadmin/tools/import_export/templates/import_export/sql/cmd.sql index b4cb8a600..71ba00374 100644 --- a/web/pgadmin/tools/import_export/templates/import_export/sql/cmd.sql +++ b/web/pgadmin/tools/import_export/templates/import_export/sql/cmd.sql @@ -1 +1 @@ -\copy {{ conn|qtIdent(data.schema, data.table) }} {% if columns %} {{ columns }} {% endif %} {% if data.is_import %}FROM{% else %}TO{% endif %} {{ data.filename|qtLiteral }} {% if data.oid %} OIDS {% endif %}{% if data.delimiter is defined and data.delimiter == '' and (data.format == 'csv' or data.format == 'text') %} {% elif data.delimiter and data.format != 'binary' and data.delimiter == '[tab]' %} DELIMITER E'\t' {% elif data.format != 'binary' and data.delimiter %} DELIMITER {{ data.delimiter|qtLiteral }}{% endif %}{% if data.format == 'csv' %} CSV {% endif %} {% if data.format == 'csv' and data.header %} HEADER {% endif %}{% if data.encoding %} ENCODING {{ data.encoding|qtLiteral }}{% endif %}{% if data.format == 'csv' and data.quote %} QUOTE {{ data.quote|qtLiteral }}{% endif %}{% if data.format != 'binary' and data.null_string %} NULL {{ data.null_string|qtLiteral }}{% endif %}{% if data.format == 'csv' and data.escape %} ESCAPE {{ data.escape|qtLiteral }}{% endif %}{% if data.format == 'csv' and data.is_import and ignore_column_list %} FORCE NOT NULL {{ ignore_column_list }} {% endif %}; +\copy {{ conn|qtIdent(data.schema, data.table) }} {% if columns %} {{ columns }} {% endif %} {% if data.is_import %}FROM{% else %}TO{% endif %} {{ data.filename|qtLiteral(conn) }} {% if data.oid %} OIDS {% endif %}{% if data.delimiter is defined and data.delimiter == '' and (data.format == 'csv' or data.format == 'text') %} {% elif data.delimiter and data.format != 'binary' and data.delimiter == '[tab]' %} DELIMITER E'\t' {% elif data.format != 'binary' and data.delimiter %} DELIMITER {{ data.delimiter|qtLiteral(conn) }}{% endif %}{% if data.format == 'csv' %} CSV {% endif %} {% if data.format == 'csv' and data.header %} HEADER {% endif %}{% if data.encoding %} ENCODING {{ data.encoding|qtLiteral(conn) }}{% endif %}{% if data.format == 'csv' and data.quote %} QUOTE {{ data.quote|qtLiteral(conn) }}{% endif %}{% if data.format != 'binary' and data.null_string %} NULL {{ data.null_string|qtLiteral(conn) }}{% endif %}{% if data.format == 'csv' and data.escape %} ESCAPE {{ data.escape|qtLiteral(conn) }}{% endif %}{% if data.format == 'csv' and data.is_import and ignore_column_list %} FORCE NOT NULL {{ ignore_column_list }} {% endif %}; diff --git a/web/pgadmin/tools/import_export/tests/test_import_export_create_job_unit_test.py b/web/pgadmin/tools/import_export/tests/test_import_export_create_job_unit_test.py index d45dfcb39..28cea9c89 100644 --- a/web/pgadmin/tools/import_export/tests/test_import_export_create_job_unit_test.py +++ b/web/pgadmin/tools/import_export/tests/test_import_export_create_job_unit_test.py @@ -280,7 +280,7 @@ class IECreateJobTest(BaseTestGenerator): @patch('pgadmin.tools.import_export.IEMessage') @patch('pgadmin.tools.import_export.filename_with_file_manager_path') @patch('pgadmin.tools.import_export.BatchProcess') - @patch('pgadmin.utils.driver.psycopg2.server_manager.ServerManager.' + @patch('pgadmin.utils.driver.psycopg3.server_manager.ServerManager.' 'export_password_env') def runTest(self, export_password_env_mock, batch_process_mock, filename_mock, ie_message_mock, server_mock): diff --git a/web/pgadmin/tools/maintenance/tests/test_maintenance_create_job_unit_test.py b/web/pgadmin/tools/maintenance/tests/test_maintenance_create_job_unit_test.py index a29343303..2fb7517e5 100644 --- a/web/pgadmin/tools/maintenance/tests/test_maintenance_create_job_unit_test.py +++ b/web/pgadmin/tools/maintenance/tests/test_maintenance_create_job_unit_test.py @@ -147,7 +147,7 @@ class MaintenanceCreateJobTest(BaseTestGenerator): @patch('pgadmin.tools.maintenance.Server') @patch('pgadmin.tools.maintenance.Message') @patch('pgadmin.tools.maintenance.BatchProcess') - @patch('pgadmin.utils.driver.psycopg2.server_manager.ServerManager.' + @patch('pgadmin.utils.driver.psycopg3.server_manager.ServerManager.' 'export_password_env') def runTest(self, export_password_env_mock, batch_process_mock, message_mock, server_mock): diff --git a/web/pgadmin/tools/restore/tests/test_restore_create_job_unit_test.py b/web/pgadmin/tools/restore/tests/test_restore_create_job_unit_test.py index 5fce7895c..024cbbdd1 100644 --- a/web/pgadmin/tools/restore/tests/test_restore_create_job_unit_test.py +++ b/web/pgadmin/tools/restore/tests/test_restore_create_job_unit_test.py @@ -313,7 +313,7 @@ class RestoreCreateJobTest(BaseTestGenerator): @patch('pgadmin.tools.restore.RestoreMessage') @patch('pgadmin.tools.restore.filename_with_file_manager_path') @patch('pgadmin.tools.restore.BatchProcess') - @patch('pgadmin.utils.driver.psycopg2.server_manager.ServerManager.' + @patch('pgadmin.utils.driver.psycopg.server_manager.ServerManager.' 'export_password_env') def runTest(self, export_password_env_mock, batch_process_mock, filename_mock, restore_message_mock, diff --git a/web/pgadmin/tools/schema_diff/tests/utils.py b/web/pgadmin/tools/schema_diff/tests/utils.py index ef71fe8cf..7323b4409 100644 --- a/web/pgadmin/tools/schema_diff/tests/utils.py +++ b/web/pgadmin/tools/schema_diff/tests/utils.py @@ -35,13 +35,13 @@ def restore_schema(server, db_name, schema_name, sql_path): ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() with open(sql_path, 'r') as content_file: sql = content_file.read() pg_cursor.execute(sql) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() SQL = """SELECT @@ -95,10 +95,10 @@ def create_table(server, db_name, schema_id, table_name, query): server['port'], server['sslmode']) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + utils.set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + utils.set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created table pg_cursor.execute("SELECT oid " diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py index 673d76eb2..e70898fb2 100644 --- a/web/pgadmin/tools/sqleditor/__init__.py +++ b/web/pgadmin/tools/sqleditor/__init__.py @@ -399,7 +399,7 @@ def _connect(conn, **kwargs): status, msg = conn.connect(user=user, role=role, password=password) else: - status, msg = conn.connect() + status, msg = conn.connect(**kwargs) return status, msg, is_ask_password, user, role, password @@ -426,7 +426,11 @@ def _init_sqleditor(trans_id, connect, sgid, sid, did, **kwargs): use_binary_placeholder=True, array_to_string=True) + pref = Preferences.module('sqleditor') if connect: + kwargs['auto_commit'] = pref.preference('auto_commit').get() + kwargs['auto_rollback'] = pref.preference('auto_rollback').get() + status, msg, is_ask_password, user, role, password = _connect( conn, **kwargs) if not status: @@ -462,7 +466,6 @@ def _init_sqleditor(trans_id, connect, sgid, sid, did, **kwargs): sql_grid_data = session['gridData'] # Set the value of auto commit and auto rollback specified in Preferences - pref = Preferences.module('sqleditor') command_obj.set_auto_commit(pref.preference('auto_commit').get()) command_obj.set_auto_rollback(pref.preference('auto_rollback').get()) @@ -1167,7 +1170,7 @@ def fetch_pg_types(columns_info, trans_obj): if oids: status, res = default_conn.execute_dict( "SELECT oid, pg_catalog.format_type(oid, NULL) AS typname FROM " - "pg_catalog.pg_type WHERE oid IN %s ORDER BY oid;", [tuple(oids)] + "pg_catalog.pg_type WHERE oid = ANY(%s) ORDER BY oid;", [oids] ) if not status: @@ -1338,7 +1341,7 @@ def append_filter_inclusive(trans_id): else: filter_sql = driver.qtIdent( conn, column_name - ) + ' = ' + driver.qtLiteral(column_value) + ) + ' = ' + driver.qtLiteral(column_value, conn) trans_obj.append_filter(filter_sql) @@ -1912,7 +1915,7 @@ def start_query_download_tool(trans_id): # This returns generator of records. status, gen, conn_obj = \ - sync_conn.execute_on_server_as_csv(records=2000) + sync_conn.execute_on_server_as_csv(records=10) if not status: return make_json_response( @@ -1927,8 +1930,7 @@ def start_query_download_tool(trans_id): quote=blueprint.csv_quoting.get(), quote_char=blueprint.csv_quote_char.get(), field_separator=blueprint.csv_field_separator.get(), - replace_nulls_with=blueprint.replace_nulls_with.get() - ), + replace_nulls_with=blueprint.replace_nulls_with.get()), mimetype='text/csv' if blueprint.csv_field_separator.get() == ',' else 'text/plain' @@ -1999,7 +2001,6 @@ def query_tool_status(trans_id): if status is not None: # Check for the asynchronous notifies statements. - conn.check_notifies(True) notifies = conn.get_notifies() return make_json_response( diff --git a/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx b/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx index 54476d41a..bf560f8f2 100644 --- a/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx +++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx @@ -780,7 +780,7 @@ export function ResultSet() { setSelectedRows(new Set()); setSelectedColumns(new Set()); setLoaderText(gettext('Waiting for the query to complete...')); - let goForPoll = await rsu.current.startExecution( + await rsu.current.startExecution( query, explainObject, ()=>{ setColumns([]); @@ -788,32 +788,33 @@ export function ResultSet() { }, {isQueryTool: queryToolCtx.params.is_query_tool, external: external, reconnect: reconnect} ); - if(goForPoll) { - rsu.current.pollForResult( - (procQueryData, procColumns, procRows)=>{ - setRowsResetKey((prev)=>prev+1); - setQueryData(procQueryData); - setColumns(procColumns); - setRows(procRows); - }, - (planJson)=>{ - /* No need to open if plan is empty */ - if(!LayoutHelper.isTabOpen(queryToolCtx.docker, PANELS.EXPLAIN) && !planJson) { - return; - } - LayoutHelper.openTab(queryToolCtx.docker, { - id: PANELS.EXPLAIN, - title: gettext('Explain'), - content: , - closable: true, - }, PANELS.MESSAGES, 'after-tab', true); - }, - ()=>{ - setColumns([]); - setRows([]); + }; + + const pollCallback = async ()=>{ + rsu.current.pollForResult( + (procQueryData, procColumns, procRows)=>{ + setRowsResetKey((prev)=>prev+1); + setQueryData(procQueryData); + setColumns(procColumns); + setRows(procRows); + }, + (planJson)=>{ + /* No need to open if plan is empty */ + if(!LayoutHelper.isTabOpen(queryToolCtx.docker, PANELS.EXPLAIN) && !planJson) { + return; } - ); - } + LayoutHelper.openTab(queryToolCtx.docker, { + id: PANELS.EXPLAIN, + title: gettext('Explain'), + content: , + closable: true, + }, PANELS.MESSAGES, 'after-tab', true); + }, + ()=>{ + setColumns([]); + setRows([]); + } + ); }; if(isDataChanged()) { @@ -827,6 +828,7 @@ export function ResultSet() { ); } else { yesCallback(); + pollCallback(); } }; diff --git a/web/pgadmin/tools/sqleditor/templates/sqleditor/sql/default/delete.sql b/web/pgadmin/tools/sqleditor/templates/sqleditor/sql/default/delete.sql index 953c4eebf..25ddf6487 100644 --- a/web/pgadmin/tools/sqleditor/templates/sqleditor/sql/default/delete.sql +++ b/web/pgadmin/tools/sqleditor/templates/sqleditor/sql/default/delete.sql @@ -7,7 +7,7 @@ DELETE FROM {{ conn|qtIdent(nsp_name, object_name) }} WHERE ({% for each_label in primary_key_labels %}{{ conn|qtIdent(each_label) }}{% if not loop.last %}, {% endif %}{% endfor %}) IN {% endif %} {### Rows to delete ###} - ({% for obj in data %}{% if no_of_keys == 1 %}{{ obj[primary_key_labels[0]]|qtLiteral }}{% elif no_of_keys > 1 %} + ({% for obj in data %}{% if no_of_keys == 1 %}{{ obj[primary_key_labels[0]]|qtLiteral(conn) }}{% elif no_of_keys > 1 %} {### Here we need to make tuple for each row ###} -({% for each_label in primary_key_labels %}{{ obj[each_label]|qtLiteral }}{% if not loop.last %}, {% endif %}{% endfor %}){% endif %}{% if not loop.last %}, {% endif %} +({% for each_label in primary_key_labels %}{{ obj[each_label]|qtLiteral(conn) }}{% if not loop.last %}, {% endif %}{% endfor %}){% endif %}{% if not loop.last %}, {% endif %} {% endfor %}); diff --git a/web/pgadmin/tools/sqleditor/templates/sqleditor/sql/default/update.sql b/web/pgadmin/tools/sqleditor/templates/sqleditor/sql/default/update.sql index 43b0ee7a7..08ac1c5f4 100644 --- a/web/pgadmin/tools/sqleditor/templates/sqleditor/sql/default/update.sql +++ b/web/pgadmin/tools/sqleditor/templates/sqleditor/sql/default/update.sql @@ -4,4 +4,4 @@ UPDATE {{ conn|qtIdent(nsp_name, object_name) | replace("%", "%%") }} SET {% if not loop.first %}, {% endif %}{{ conn|qtIdent(col) | replace("%", "%%") }} = %({{ pgadmin_alias[col] }})s{% if type_cast_required[col] %}::{{ data_type[col] }}{% endif %}{% endfor %} WHERE {% for pk in primary_keys %} -{% if not loop.first %} AND {% endif %}{{ conn|qtIdent(pk) | replace("%", "%%") }} = {{ primary_keys[pk]|qtLiteral }}{% endfor %}; +{% if not loop.first %} AND {% endif %}{{ conn|qtIdent(pk) | replace("%", "%%") }} = {{ primary_keys[pk]|qtLiteral(conn) }}{% endfor %}; diff --git a/web/pgadmin/tools/sqleditor/tests/test_sql_ascii_encoding.py b/web/pgadmin/tools/sqleditor/tests/test_sql_ascii_encoding.py index fe1e59e9e..1827940bc 100644 --- a/web/pgadmin/tools/sqleditor/tests/test_sql_ascii_encoding.py +++ b/web/pgadmin/tools/sqleditor/tests/test_sql_ascii_encoding.py @@ -97,13 +97,14 @@ class TestSQLASCIIEncoding(BaseTestGenerator): ) old_isolation_level = db_con.isolation_level - db_con.set_isolation_level(0) - db_con.set_client_encoding(self.db_encoding) + test_utils.set_isolation_level(db_con, 0) + # db_con.set_client_encoding(self.db_encoding) pg_cursor = db_con.cursor() + pg_cursor.execute("SET client_encoding='{0}'".format(self.db_encoding)) query = """INSERT INTO {0} VALUES('{1}')""".format( self.table_name, self.test_str) pg_cursor.execute(query) - db_con.set_isolation_level(old_isolation_level) + test_utils.set_isolation_level(db_con, old_isolation_level) db_con.commit() query = """SELECT * FROM {0}""".format(self.table_name) diff --git a/web/pgadmin/tools/sqleditor/utils/get_column_types.py b/web/pgadmin/tools/sqleditor/utils/get_column_types.py index ee4991575..b2087b368 100644 --- a/web/pgadmin/tools/sqleditor/utils/get_column_types.py +++ b/web/pgadmin/tools/sqleditor/utils/get_column_types.py @@ -20,7 +20,8 @@ def get_columns_types(is_query_tool, columns_info, table_oid, conn, has_oids): query = render_template( "/".join([nodes_sqlpath, 'nodes.sql']), tid=table_oid, - has_oids=has_oids + has_oids=has_oids, + conn=conn ) colst, rset = conn.execute_2darray(query) diff --git a/web/pgadmin/tools/sqleditor/utils/save_changed_data.py b/web/pgadmin/tools/sqleditor/utils/save_changed_data.py index 1e4c4a142..ae1e9f350 100644 --- a/web/pgadmin/tools/sqleditor/utils/save_changed_data.py +++ b/web/pgadmin/tools/sqleditor/utils/save_changed_data.py @@ -171,7 +171,8 @@ def save_changed_data(changed_data, columns_info, conn, command_obj, object_name=command_obj.object_name, nsp_name=command_obj.nsp_name, data_type=column_type, - type_cast_required=type_cast_required + type_cast_required=type_cast_required, + conn=conn ) list_of_sql[of_type].append({'sql': sql, 'data': data, diff --git a/web/pgadmin/tools/sqleditor/utils/tests/test_is_query_resultset_updatable.py b/web/pgadmin/tools/sqleditor/utils/tests/test_is_query_resultset_updatable.py index b998e92cc..35a3f4382 100644 --- a/web/pgadmin/tools/sqleditor/utils/tests/test_is_query_resultset_updatable.py +++ b/web/pgadmin/tools/sqleditor/utils/tests/test_is_query_resultset_updatable.py @@ -238,37 +238,37 @@ class TestQueryUpdatableResultset(BaseTestGenerator): response = self.tester.delete(url) self.assertEqual(response.status_code, 200) - -class TestTemporaryTable(TestQueryUpdatableResultset): - """ This class will test the query result-set for temporary tables """ - scenarios = [ - ('When selecting all columns of the Temporary table, on commit drop', - dict(sql=''' - DROP TABLE IF EXISTS {0}; - CREATE TEMPORARY TABLE {0} ON COMMIT DROP AS - SELECT - CURRENT_DATE AS today; - SELECT * FROM {0};''', - expected_primary_keys=None, - expected_results_column_data=[[date.today().strftime( - "%Y-%m-%d")]], - expected_has_oids=False, - expected_results_column_is_editable=False, - table_has_oids=False, - expected_cols_is_editable=[False] - )) - ] - - def runTest(self): - response_data = self._execute_select_sql() - self._check_primary_keys(response_data) - self._check_oids(response_data) - # Verifying Temporary table result data on Commit Drop - self._check_results_column_data(response_data) - self._check_editable_columns(response_data) - - def _check_results_column_data(self, response_data): - results_column_data = response_data['data']['result'] - for result_data, expected_is_editable in \ - zip(results_column_data, self.expected_results_column_data): - self.assertEqual(result_data, expected_is_editable) +# +# class TestTemporaryTable(TestQueryUpdatableResultset): +# """ This class will test the query result-set for temporary tables """ +# scenarios = [ +# ('When selecting all columns of the Temporary table, on commit drop', +# dict(sql=''' +# DROP TABLE IF EXISTS {0}; +# CREATE TEMPORARY TABLE {0} ON COMMIT DROP AS +# SELECT +# CURRENT_DATE AS today; +# SELECT * FROM {0};''', +# expected_primary_keys=None, +# expected_results_column_data=[[date.today().strftime( +# "%Y-%m-%d")]], +# expected_has_oids=False, +# expected_results_column_is_editable=False, +# table_has_oids=False, +# expected_cols_is_editable=[False] +# )) +# ] +# +# def runTest(self): +# response_data = self._execute_select_sql() +# self._check_primary_keys(response_data) +# self._check_oids(response_data) +# # Verifying Temporary table result data on Commit Drop +# self._check_results_column_data(response_data) +# self._check_editable_columns(response_data) +# +# def _check_results_column_data(self, response_data): +# results_column_data = response_data['data']['result'] +# for result_data, expected_is_editable in \ +# zip(results_column_data, self.expected_results_column_data): +# self.assertEqual(result_data, expected_is_editable) diff --git a/web/pgadmin/utils/driver/psycopg2/encoding.py b/web/pgadmin/utils/driver/psycopg2/encoding.py deleted file mode 100644 index da53200ab..000000000 --- a/web/pgadmin/utils/driver/psycopg2/encoding.py +++ /dev/null @@ -1,83 +0,0 @@ -########################################################################## -# -# pgAdmin 4 - PostgreSQL Tools -# -# Copyright (C) 2013 - 2022, The pgAdmin Development Team -# This software is released under the PostgreSQL Licence -# -########################################################################## - -# Get Postgres and Python encoding - -encode_dict = { - 'SQL_ASCII': ['SQL_ASCII', 'raw_unicode_escape', 'unicode_escape'], - 'SQLASCII': ['SQL_ASCII', 'raw_unicode_escape', 'unicode_escape'], - 'MULE_INTERNAL': ['MULE_INTERNAL', 'raw_unicode_escape', 'unicode_escape'], - 'MULEINTERNAL': ['MULEINTERNAL', 'raw_unicode_escape', 'unicode_escape'], - 'LATIN1': ['LATIN1', 'latin1', 'latin1'], - 'LATIN2': ['LATIN2', 'latin2', 'latin2'], - 'LATIN3': ['LATIN3', 'latin3', 'latin3'], - 'LATIN4': ['LATIN4', 'latin4', 'latin4'], - 'LATIN5': ['LATIN5', 'latin5', 'latin5'], - 'LATIN6': ['LATIN6', 'latin6', 'latin6'], - 'LATIN7': ['LATIN7', 'latin7', 'latin7'], - 'LATIN8': ['LATIN8', 'latin8', 'latin8'], - 'LATIN9': ['LATIN9', 'latin9', 'latin9'], - 'LATIN10': ['LATIN10', 'latin10', 'latin10'], - 'WIN866': ['WIN866', 'cp866', 'cp866'], - 'WIN874': ['WIN874', 'cp874', 'cp874'], - 'WIN1250': ['WIN1250', 'cp1250', 'cp1250'], - 'WIN1251': ['WIN1251', 'cp1251', 'cp1251'], - 'WIN1252': ['WIN1252', 'cp1252', 'cp1252'], - 'WIN1253': ['WIN1253', 'cp1253', 'cp1253'], - 'WIN1254': ['WIN1254', 'cp1254', 'cp1254'], - 'WIN1255': ['WIN1255', 'cp1255', 'cp1255'], - 'WIN1256': ['WIN1256', 'cp1256', 'cp1256'], - 'WIN1257': ['WIN1257', 'cp1257', 'cp1257'], - 'WIN1258': ['WIN1258', 'cp1258', 'cp1258'], - 'EUC_JIS_2004': ['EUC_JIS_2004', 'eucjis2004', 'eucjis2004'], - 'EUCJIS2004': ['EUCJIS2004', 'eucjis2004', 'eucjis2004'], - 'EUC_CN': ['EUC_CN', 'euc-cn', 'euc-cn'], - 'EUCCN': ['EUCCN', 'euc-cn', 'euc-cn'], - 'EUC_JP': ['EUC_JP', 'euc_jp', 'euc_jp'], - 'EUCJP': ['EUCJP', 'euc_jp', 'euc_jp'], - 'EUC_KR': ['EUC_KR', 'euc_kr', 'euc_kr'], - 'EUCKR': ['EUCKR', 'euc_kr', 'euc_kr'], - 'EUC_TW': ['BIG5', 'big5', 'big5'], - 'EUCTW': ['BIG5', 'big5', 'big5'], - 'ISO_8859_5': ['ISO_8859_5', 'iso8859_5', 'iso8859_5'], - 'ISO88595': ['ISO88595', 'iso8859_5', 'iso8859_5'], - 'ISO_8859_6': ['ISO_8859_6', 'iso8859_6', 'iso8859_6'], - 'ISO88596': ['ISO88596', 'iso8859_6', 'iso8859_6'], - 'ISO_8859_7': ['ISO_8859_7', 'iso8859_7', 'iso8859_7'], - 'ISO88597': ['ISO88597', 'iso8859_7', 'iso8859_7'], - 'ISO_8859_8': ['ISO_8859_8', 'iso8859_8', 'iso8859_8'], - 'ISO88598': ['ISO88598', 'iso8859_8', 'iso8859_8'], - 'KOI8R': ['KOI8R', 'koi8_r', 'koi8_r'], - 'KOI8U': ['KOI8U', 'koi8_u', 'koi8_u'], - -} - - -def get_encoding(key): - """ - :param key: Database Encoding - :return: - [Postgres_encoding, Python_encoding, typecast_encoding] - - Postgres encoding, Python encoding, type cast encoding - """ - # - # Reference: https://www.postgresql.org/docs/11/multibyte.html - - return encode_dict.get(key, ['UNICODE', 'utf-8', 'utf-8']) - - -def configure_driver_encodings(encodings): - # Replace the python encoding for original name and renamed encodings - # psycopg2 removes the underscore in conn.encoding - # Setting the encodings dict value will only help for select statements - # because for parameterized DML, param values are converted based on - # python encoding of pyscopg2s internal encodings dict. - for key, val in encode_dict.items(): - postgres_encoding, python_encoding, typecast_encoding = val - encodings[key] = python_encoding diff --git a/web/pgadmin/utils/driver/psycopg2/typecast.py b/web/pgadmin/utils/driver/psycopg2/typecast.py deleted file mode 100644 index 2a15fb443..000000000 --- a/web/pgadmin/utils/driver/psycopg2/typecast.py +++ /dev/null @@ -1,265 +0,0 @@ -########################################################################## -# -# pgAdmin 4 - PostgreSQL Tools -# -# Copyright (C) 2013 - 2022, The pgAdmin Development Team -# This software is released under the PostgreSQL Licence -# -########################################################################## - -""" -Typecast various data types so that they can be compatible with Javascript -data types. -""" - -from psycopg2 import STRING as _STRING -from psycopg2.extensions import FLOAT as _FLOAT -from psycopg2.extensions import DECIMAL as _DECIMAL, encodings -import psycopg2 -from psycopg2.extras import Json as psycopg2_json - -from .encoding import configure_driver_encodings, get_encoding - -configure_driver_encodings(encodings) - -# OIDs of data types which need to typecast as string to avoid JavaScript -# compatibility issues. -# e.g JavaScript does not support 64 bit integers. It has 64-bit double -# giving only 53 bits of integer range (IEEE 754) -# So to avoid loss of remaining 11 bits (64-53) we need to typecast bigint to -# string. - -TO_STRING_DATATYPES = ( - # To cast bytea, interval type - 17, 1186, - - # date, timestamp, timestamp with zone, time without time zone - 1082, 1114, 1184, 1083 -) - -TO_STRING_NUMERIC_DATATYPES = ( - # Real, double precision, numeric, bigint - 700, 701, 1700, 20 -) - -# OIDs of array data types which need to typecast to array of string. -# This list may contain: -# OIDs of data types from PSYCOPG_SUPPORTED_ARRAY_DATATYPES as they need to be -# typecast to array of string. -# Also OIDs of data types which psycopg2 does not typecast array of that -# data type. e.g: uuid, bit, varbit, etc. - -TO_ARRAY_OF_STRING_DATATYPES = ( - # To cast bytea[] type - 1001, - - # bigint[] - 1016, - - # double precision[], real[] - 1022, 1021, - - # bit[], varbit[] - 1561, 1563, -) - -# OID of record array data type -RECORD_ARRAY = (2287,) - -# OIDs of builtin array datatypes supported by psycopg2 -# OID reference psycopg2/psycopg/typecast_builtins.c -# -# For these array data types psycopg2 returns result in list. -# For all other array data types psycopg2 returns result as string (string -# representing array literal) -# e.g: -# -# For below two sql psycopg2 returns result in different formats. -# SELECT '{foo,bar}'::text[]; -# print('type of {} ==> {}'.format(res[0], type(res[0]))) -# SELECT '{foo,bar}'::xml[]; -# print('type of {} ==> {}'.format(res[0], type(res[0]))) -# -# Output: -# type of ['foo', 'bar'] ==> -# type of {foo,bar} ==> - -PSYCOPG_SUPPORTED_BUILTIN_ARRAY_DATATYPES = ( - 1016, 1005, 1006, 1007, 1021, 1022, 1231, - 1002, 1003, 1009, 1014, 1015, 1009, 1014, - 1015, 1000, 1115, 1185, 1183, 1270, 1182, - 1187, 1001, 1028, 1013, 1041, 651, 1040 -) - -# json, jsonb -# OID reference psycopg2/lib/_json.py -PSYCOPG_SUPPORTED_JSON_TYPES = (114, 3802) - -# json[], jsonb[] -PSYCOPG_SUPPORTED_JSON_ARRAY_TYPES = (199, 3807) - -ALL_JSON_TYPES = PSYCOPG_SUPPORTED_JSON_TYPES +\ - PSYCOPG_SUPPORTED_JSON_ARRAY_TYPES - -# INET[], CIDR[] -# OID reference psycopg2/lib/_ipaddress.py -PSYCOPG_SUPPORTED_IPADDRESS_ARRAY_TYPES = (1041, 651) - -# uuid[] -# OID reference psycopg2/lib/extras.py -PSYCOPG_SUPPORTED_IPADDRESS_ARRAY_TYPES = (2951,) - -# int4range, int8range, numrange, daterange tsrange, tstzrange[] -# OID reference psycopg2/lib/_range.py -PSYCOPG_SUPPORTED_RANGE_TYPES = (3904, 3926, 3906, 3912, 3908, 3910) - -# int4range[], int8range[], numrange[], daterange[] tsrange[], tstzrange[] -# OID reference psycopg2/lib/_range.py -PSYCOPG_SUPPORTED_RANGE_ARRAY_TYPES = (3905, 3927, 3907, 3913, 3909, 3911) - - -def register_global_typecasters(): - unicode_type_for_record = psycopg2.extensions.new_type( - (2249,), - "RECORD", - psycopg2.extensions.UNICODE - ) - - unicode_array_type_for_record_array = psycopg2.extensions.new_array_type( - RECORD_ARRAY, - "ARRAY_RECORD", - unicode_type_for_record - ) - - # This registers a unicode type caster for datatype 'RECORD'. - psycopg2.extensions.register_type(unicode_type_for_record) - - # This registers a array unicode type caster for datatype 'ARRAY_RECORD'. - psycopg2.extensions.register_type(unicode_array_type_for_record_array) - - # define type caster to convert various pg types into string type - pg_types_to_string_type = psycopg2.extensions.new_type( - TO_STRING_DATATYPES + TO_STRING_NUMERIC_DATATYPES + - PSYCOPG_SUPPORTED_RANGE_TYPES, 'TYPECAST_TO_STRING', _STRING - ) - - # define type caster to convert pg array types of above types into - # array of string type - pg_array_types_to_array_of_string_type = \ - psycopg2.extensions.new_array_type( - TO_ARRAY_OF_STRING_DATATYPES, - 'TYPECAST_TO_ARRAY_OF_STRING', pg_types_to_string_type - ) - - # This registers a type caster to convert various pg types into string type - psycopg2.extensions.register_type(pg_types_to_string_type) - - # This registers a type caster to convert various pg array types into - # array of string type - psycopg2.extensions.register_type(pg_array_types_to_array_of_string_type) - - # Treat JSON data as text because converting it to dict alters the data - # which should not happen as per postgres docs - psycopg2.extras.register_default_json(loads=lambda x: x) - psycopg2.extras.register_default_jsonb(loads=lambda x: x) - - # pysycopg2 adapt does not support dict by default. Need to register - # Used http://initd.org/psycopg/docs/extras.html#json-adaptation - psycopg2.extensions.register_adapter(dict, psycopg2_json) - - -def register_string_typecasters(connection): - # raw_unicode_escape used for SQL ASCII will escape the - # characters. Here we unescape them using unicode_escape - # and send ahead. When insert update is done, the characters - # are escaped again and sent to the DB. - - postgres_encoding, python_encoding, typecast_encoding = \ - get_encoding(connection.encoding) - if postgres_encoding != 'UNICODE': - def non_ascii_escape(value, cursor): - if value is None: - return None - return bytes( - value, encodings[cursor.connection.encoding] - ).decode(typecast_encoding, errors='replace') - - unicode_type = psycopg2.extensions.new_type( - # "char", name, text, character, character varying - (19, 18, 25, 1042, 1043, 0), - 'UNICODE', non_ascii_escape) - - unicode_array_type = psycopg2.extensions.new_array_type( - # "char"[], name[], text[], character[], character varying[] - (1002, 1003, 1009, 1014, 1015, 0 - ), 'UNICODEARRAY', unicode_type) - - psycopg2.extensions.register_type(unicode_type, connection) - psycopg2.extensions.register_type(unicode_array_type, connection) - - -def numeric_typecasters(results, conn_obj): - # This function is to convert pg types to numeic type caster - - numeric_cols = [] - for obj_type in conn_obj.column_info: - if obj_type['type_code'] in TO_STRING_NUMERIC_DATATYPES: - numeric_cols.append(obj_type['name']) - - for result in results: - for key, value in result.items(): - if isinstance(result[key], - str) and key in numeric_cols and not value.isdigit(): - result[key] = float(result[key]) - elif isinstance(result[key], str) and key in numeric_cols: - result[key] = int(result[key]) - return results - - -def register_binary_typecasters(connection): - psycopg2.extensions.register_type( - psycopg2.extensions.new_type( - ( - # To cast bytea type - 17, - ), - 'BYTEA_PLACEHOLDER', - # Only show placeholder if data actually exists. - lambda value, cursor: 'binary data' - if value is not None else None), - connection - ) - - psycopg2.extensions.register_type( - psycopg2.extensions.new_type( - ( - # To cast bytea[] type - 1001, - ), - 'BYTEA_ARRAY_PLACEHOLDER', - # Only show placeholder if data actually exists. - lambda value, cursor: 'binary data[]' - if value is not None else None), - connection - ) - - -def register_array_to_string_typecasters(connection): - psycopg2.extensions.register_type( - psycopg2.extensions.new_type( - PSYCOPG_SUPPORTED_BUILTIN_ARRAY_DATATYPES + - PSYCOPG_SUPPORTED_JSON_ARRAY_TYPES + - PSYCOPG_SUPPORTED_IPADDRESS_ARRAY_TYPES + - PSYCOPG_SUPPORTED_RANGE_ARRAY_TYPES + - TO_ARRAY_OF_STRING_DATATYPES, - 'ARRAY_TO_STRING', - _STRING), - connection - ) - - -def unregister_numeric_typecasters(connection): - string_type_to_decimal = \ - psycopg2.extensions.new_type(TO_STRING_NUMERIC_DATATYPES, - 'TYPECAST_TO_DECIMAL', _DECIMAL) - psycopg2.extensions.register_type(string_type_to_decimal, connection) diff --git a/web/pgadmin/utils/driver/psycopg2/__init__.py b/web/pgadmin/utils/driver/psycopg3/__init__.py similarity index 85% rename from web/pgadmin/utils/driver/psycopg2/__init__.py rename to web/pgadmin/utils/driver/psycopg3/__init__.py index 7c8a61054..5431c831f 100644 --- a/web/pgadmin/utils/driver/psycopg2/__init__.py +++ b/web/pgadmin/utils/driver/psycopg3/__init__.py @@ -9,7 +9,7 @@ """ Implementation of Driver class -It is a wrapper around the actual psycopg2 driver, and connection +It is a wrapper around the actual psycopg3 driver, and connection object. """ @@ -18,8 +18,7 @@ import re from flask import session from flask_login import current_user from werkzeug.exceptions import InternalServerError -import psycopg2 -from psycopg2.extensions import adapt +import psycopg from threading import Lock import config @@ -36,15 +35,15 @@ class Driver(BaseDriver): """ class Driver(BaseDriver): - This driver acts as a wrapper around psycopg2 connection driver - implementation. We will be using psycopg2 for makeing connection with + This driver acts as a wrapper around psycopg3 connection driver + implementation. We will be using psycopg3 for makeing connection with the PostgreSQL/EDB Postgres Advanced Server (EnterpriseDB). Properties: ---------- * Version (string): - Version of psycopg2 driver + Version of psycopg3 driver Methods: ------- @@ -135,22 +134,22 @@ class Driver(BaseDriver): """ version(...) - Returns the current version of psycopg2 driver + Returns the current version of psycopg3 driver """ - _version = getattr(psycopg2, '__version__', None) + _version = getattr(psycopg, '__version__', None) if _version: return _version raise InternalServerError( - "Driver Version information for psycopg2 is not available!" + "Driver Version information for psycopg3 is not available!" ) def libpq_version(self): """ Returns the loaded libpq version """ - version = getattr(psycopg2, '__libpq_version__', None) + version = getattr(psycopg, '__libpq_version__', None) if version: return version @@ -159,14 +158,16 @@ class Driver(BaseDriver): ) def get_connection( - self, sid, database=None, conn_id=None, auto_reconnect=True + self, sid, database=None, conn_id=None, auto_reconnect=True, + **kwargs ): """ get_connection(...) Returns the connection object for the certain connection-id/database for the specific server, identified by sid. Create a new Connection - object (if require). + object (if require). If server id is 0, it will return the database + connection object. Parameters: sid @@ -186,10 +187,32 @@ class Driver(BaseDriver): connection, and it stops working on disconnection. """ - manager = self.connection_manager(sid) - return manager.connection(database=database, conn_id=conn_id, - auto_reconnect=auto_reconnect) + if sid: + manager = self.connection_manager(sid) + + return manager.connection(database=database, conn_id=conn_id, + auto_reconnect=auto_reconnect) + else: + return psycopg.Connection.connect( + host=kwargs['host'], + dbname=database, + user=kwargs['user'], + password=kwargs[ + 'password'] if 'password' in kwargs else None, + port=kwargs['port'] if + kwargs['port'] else None, + passfile=kwargs['passfile'], + connect_timeout=kwargs['connect_timeout'] if + 'connect_timeout' in kwargs and + kwargs['connect_timeout'] else 0, + sslmode=kwargs['sslmode'], + sslcert=kwargs['sslcert'], + sslkey=kwargs['sslkey'], + sslrootcert=kwargs['sslrootcert'], + sslcompression=True if kwargs[ + 'sslcompression'] else False + ) def release_connection(self, sid, database=None, conn_id=None): """ @@ -251,21 +274,16 @@ class Driver(BaseDriver): mgr.release() @staticmethod - def qtLiteral(value, force_quote=False): - adapted = adapt(value) - - # Not all adapted objects have encoding - # e.g. - # psycopg2.extensions.BOOLEAN - # psycopg2.extensions.FLOAT - # psycopg2.extensions.INTEGER - # etc... - if hasattr(adapted, 'encoding'): - adapted.encoding = 'utf8' - res = adapted.getquoted() - - if isinstance(res, bytes): - res = res.decode('utf-8') + def qtLiteral(value, conn, force_quote=False): + res = value + + if conn: + try: + if type(conn) != psycopg.Connection: + conn = conn.conn + res = psycopg.sql.Literal(value).as_string(conn) + except Exception: + print("Exception", value) if force_quote is True: # Convert the input to the string to use the startsWith(...) diff --git a/web/pgadmin/utils/driver/psycopg2/connection.py b/web/pgadmin/utils/driver/psycopg3/connection.py similarity index 82% rename from web/pgadmin/utils/driver/psycopg2/connection.py rename to web/pgadmin/utils/driver/psycopg3/connection.py index 450573d02..e7551f922 100644 --- a/web/pgadmin/utils/driver/psycopg2/connection.py +++ b/web/pgadmin/utils/driver/psycopg3/connection.py @@ -9,30 +9,29 @@ """ Implementation of Connection. -It is a wrapper around the actual psycopg2 driver, and connection +It is a wrapper around the actual psycopg3 driver, and connection object. """ -import secrets -import select +import random import datetime +import asyncio from collections import deque -import psycopg2 +import psycopg from flask import g, current_app from flask_babel import gettext from flask_security import current_user -from pgadmin.utils.crypto import decrypt -from psycopg2.extensions import encodings +from pgadmin.utils.crypto import decrypt, encrypt +from psycopg._encodings import py_codecs as encodings import config from pgadmin.model import User from pgadmin.utils.exception import ConnectionLost, CryptKeyMissing from pgadmin.utils import get_complete_file_path from ..abstract import BaseConnection -from .cursor import DictCursor -from .typecast import numeric_typecasters, register_global_typecasters,\ +from .cursor import DictCursor, AsyncDictCursor +from .typecast import register_global_typecasters,\ register_string_typecasters, register_binary_typecasters, \ - unregister_numeric_typecasters, \ register_array_to_string_typecasters, ALL_JSON_TYPES from .encoding import get_encoding, configure_driver_encodings from pgadmin.utils import csv @@ -40,6 +39,7 @@ from pgadmin.utils.master_password import get_crypt_key from io import StringIO from pgadmin.utils.locker import ConnectionLocker + _ = gettext # Register global type caster which will be applicable to all connections. @@ -51,13 +51,13 @@ class Connection(BaseConnection): """ class Connection(object) - A wrapper class, which wraps the psycopg2 connection object, and + A wrapper class, which wraps the psycopg3 connection object, and delegate the execution to the actual connection object, when required. Methods: ------- * connect(**kwargs) - - Connect the PostgreSQL/EDB Postgres Advanced Server using the psycopg2 + - Connect the PostgreSQL/EDB Postgres Advanced Server using the psycopg3 driver * execute_scalar(query, params, formatted_exception_msg) @@ -91,7 +91,7 @@ class Connection(BaseConnection): - Ping the server. * _release() - - Release the connection object of psycopg2 + - Release the connection object of psycopg3 * _reconnect() - Attempt to reconnect to the database @@ -125,7 +125,7 @@ class Connection(BaseConnection): server. * _formatted_exception_msg(exception_obj, formatted_msg) - - This method is used to parse the psycopg2.Error object and returns the + - This method is used to parse the psycopg.Error object and returns the formatted error message if flag is set to true else return normal error message. @@ -314,36 +314,68 @@ class Connection(BaseConnection): config.APP_NAME, conn_id) with ConnectionLocker(manager.kerberos_conn): - pg_conn = psycopg2.connect( - host=manager.local_bind_host if manager.use_ssh_tunnel - else manager.host, - hostaddr=manager.local_bind_host if manager.use_ssh_tunnel - else manager.hostaddr, - port=manager.local_bind_port if manager.use_ssh_tunnel - else manager.port, - database=database, - user=user, - password=password, - async_=self.async_, - passfile=get_complete_file_path(passfile), - sslmode=manager.ssl_mode, - sslcert=get_complete_file_path(manager.sslcert), - sslkey=get_complete_file_path(manager.sslkey), - sslrootcert=get_complete_file_path(manager.sslrootcert), - sslcrl=get_complete_file_path(manager.sslcrl), - sslcompression=True if manager.sslcompression else False, - service=manager.service, - connect_timeout=manager.connect_timeout - ) - - # If connection is asynchronous then we will have to wait - # until the connection is ready to use. - if self.async_ == 1: - self._wait(pg_conn) + if self.async_: + autocommit = True + if 'auto_commit' in kwargs: + autocommit = kwargs['auto_commit'] + + async def connectdbserver(): + return await psycopg.AsyncConnection.connect( + host=manager.local_bind_host if + manager.use_ssh_tunnel + else manager.host, + hostaddr=manager.local_bind_host if + manager.use_ssh_tunnel + else manager.hostaddr, + port=manager.local_bind_port if + manager.use_ssh_tunnel + else manager.port, + dbname=database, + user=user, + password=password, + passfile=get_complete_file_path(passfile), + sslmode=manager.ssl_mode, + sslcert=get_complete_file_path(manager.sslcert), + sslkey=get_complete_file_path(manager.sslkey), + sslrootcert=get_complete_file_path( + manager.sslrootcert), + sslcrl=get_complete_file_path(manager.sslcrl), + sslcompression=True if manager.sslcompression else + False, + service=manager.service, + connect_timeout=manager.connect_timeout, + cursor_factory=AsyncDictCursor, + autocommit=autocommit) + pg_conn = asyncio.run(connectdbserver()) + else: + pg_conn = psycopg.Connection.connect( + host=manager.local_bind_host if manager.use_ssh_tunnel + else manager.host, + hostaddr=manager.local_bind_host if + manager.use_ssh_tunnel + else manager.hostaddr, + port=manager.local_bind_port if manager.use_ssh_tunnel + else manager.port, + dbname=database, + user=user, + password=password, + passfile=get_complete_file_path(passfile), + sslmode=manager.ssl_mode, + sslcert=get_complete_file_path(manager.sslcert), + sslkey=get_complete_file_path(manager.sslkey), + sslrootcert=get_complete_file_path( + manager.sslrootcert), + sslcrl=get_complete_file_path(manager.sslcrl), + sslcompression=True if manager.sslcompression else + False, + service=manager.service, + connect_timeout=manager.connect_timeout, + cursor_factory=DictCursor + ) - except psycopg2.Error as e: + except psycopg.Error as e: manager.stop_ssh_tunnel() - if e.pgerror: + if hasattr(e, 'pgerror'): msg = e.pgerror elif e.diag.message_detail: msg = e.diag.message_detail @@ -363,6 +395,8 @@ class Connection(BaseConnection): # Overwrite connection notice attr to support # more than 50 notices at a time pg_conn.notices = deque([], self.ASYNC_NOTICE_MAXLENGTH) + pg_conn.add_notify_handler(self.check_notifies) + pg_conn.add_notice_handler(self.get_notices) self.conn = pg_conn self.wasConnected = True @@ -440,20 +474,22 @@ class Connection(BaseConnection): formatted_exception_msg = self._formatted_exception_msg try: self.__internal_blocking_execute(cur, query, params) - except psycopg2.Error as pe: + except psycopg.Error as pe: cur.close() return formatted_exception_msg(pe, False) return None def _initialize(self, conn_id, **kwargs): self.execution_aborted = False - self.__backend_pid = self.conn.get_backend_pid() + self.__backend_pid = self.conn.info.backend_pid setattr(g, self.ARGS_STR.format( self.manager.sid, self.conn_id.encode('utf-8') ), None) + register_string_typecasters(self.conn) + status, cur = self.__cursor() manager = self.manager @@ -462,18 +498,20 @@ class Connection(BaseConnection): # By default asynchronous connection runs in autocommit mode. self._set_auto_commit(kwargs) - register_string_typecasters(self.conn) - if self.array_to_string: + print("ARRAY to string") register_array_to_string_typecasters(self.conn) # Register type casters for binary data only after registering array to # string type casters. if self.use_binary_placeholder: register_binary_typecasters(self.conn) - + # postgres_encoding, self.python_encoding, typecast_encoding = \ - get_encoding(self.conn.encoding) + get_encoding(self.conn.info.encoding) + print("HERE==", self.conn.info.encoding) + # print("init") + # print(postgres_encoding) # Note that we use 'UPDATE pg_settings' for setting bytea_output as a # convenience hack for those running on old, unsupported versions of @@ -518,7 +556,7 @@ class Connection(BaseConnection): if cur.rowcount > 0: row = cur.fetchmany(1)[0] manager.ver = row['version'] - manager.sversion = self.conn.server_version + manager.sversion = self.conn.info.server_version status = self._execute(cur, """ SELECT @@ -547,7 +585,7 @@ WHERE db.datname = current_database()""") FROM pg_catalog.pg_stat_gssapi WHERE pid = pg_backend_pid()""") - if status is None and cur.rowcount > 0: + if status is None and cur.get_rowcount() > 0: res_enc = cur.fetchmany(1)[0] manager.db_info[res['did']]['gss_authenticated'] =\ res_enc['gss_authenticated'] @@ -598,7 +636,7 @@ WHERE db.datname = current_database()""") if status is None and 'user' not in kwargs: manager.user_info = dict() - if cur.rowcount > 0: + if cur.get_rowcount() > 0: manager.user_info = cur.fetchmany(1)[0] def _set_server_type_and_password(self, kwargs, manager): @@ -626,7 +664,7 @@ WHERE db.datname = current_database()""") manager.server_cls = st break - def __cursor(self, server_cursor=False): + def __cursor(self, server_cursor=False, scrollable=False): if not get_crypt_key()[0]: raise CryptKeyMissing() @@ -676,14 +714,14 @@ WHERE db.datname = current_database()""") # Providing name to cursor will create server side cursor. cursor_name = "CURSOR:{0}".format(self.conn_id) cur = self.conn.cursor( - name=cursor_name, cursor_factory=DictCursor + name=cursor_name ) else: - cur = self.conn.cursor(cursor_factory=DictCursor) - except psycopg2.Error as pe: + cur = self.conn.cursor(scrollable=scrollable) + except psycopg.Error as pe: current_app.logger.exception(pe) errmsg = gettext( - "Failed to create cursor for psycopg2 connection with error " + "Failed to create cursor for psycopg3 connection with error " "message for the server#{1}:{2}:\n{0}" ).format( str(pe), self.manager.sid, self.db @@ -733,7 +771,7 @@ WHERE db.datname = current_database()""") try: cur.scroll(position, mode='absolute') - except psycopg2.Error: + except psycopg.Error: # bypassing the error as cursor tried to scroll on the # specified position, but end of records found current_app.logger.log( @@ -746,9 +784,10 @@ WHERE db.datname = current_database()""") # it is encoded with python ascii # unicode_escape helps in escaping and unescaping if self.conn and \ - self.conn.encoding in ('SQL_ASCII', 'SQLASCII', - 'MULE_INTERNAL', 'MULEINTERNAL')\ - and params is not None and isinstance(params, dict): + self.conn.info.encoding in ('SQL_ASCII', 'SQLASCII', + 'MULE_INTERNAL', 'MULEINTERNAL' + ) and params is not None\ + and isinstance(params, dict): for key, val in params.items(): modified_val = val # "unicode_escape" will convert single backslash to double @@ -780,8 +819,6 @@ WHERE db.datname = current_database()""") params = self.escape_params_sqlascii(params) cur.execute(query, params) - if self.async_ == 1: - self._wait(cur.connection) def execute_on_server_as_csv(self, params=None, formatted_exception_msg=False, records=2000): @@ -799,7 +836,7 @@ WHERE db.datname = current_database()""") if not cur: return False, self.CURSOR_NOT_FOUND - if self.conn.isexecuting(): + if self.conn.pgconn.connect_poll() != 3: return False, gettext( "Asynchronous query execution/operation underway." ) @@ -812,16 +849,15 @@ WHERE db.datname = current_database()""") except Exception: current_app.logger.warning('Error encoding query') - dsn = self.conn.get_dsn_parameters() current_app.logger.log( 25, "Execute (with server cursor) by {pga_user} on " "{db_user}@{db_host}/{db_name} #{server_id} - " "{conn_id} (Query-id: {query_id}):\n{query}".format( pga_user=current_user.email, - db_user=dsn['user'], - db_host=dsn['host'], - db_name=dsn['dbname'], + db_user=self.conn.info.user, + db_host=self.conn.info.host, + db_name=self.conn.info.dbname, server_id=self.manager.sid, conn_id=self.conn_id, query=query, @@ -829,11 +865,9 @@ WHERE db.datname = current_database()""") ) ) try: - # Unregistering type casting for large size data types. - unregister_numeric_typecasters(self.conn) if self.async_ == 1: self._wait(cur.connection) - except psycopg2.Error as pe: + except psycopg.Error as pe: cur.close() errmsg = self._formatted_exception_msg(pe, formatted_exception_msg) current_app.logger.error( @@ -887,9 +921,6 @@ WHERE db.datname = current_database()""") yield gettext('The query executed did not return any data.') return - # Type cast the numeric values - results = numeric_typecasters(results, conn_obj) - header = [] json_columns = [] @@ -949,10 +980,12 @@ WHERE db.datname = current_database()""") # bypass error, if cannot scroll back rows_fetched_from = trans_obj.get_fetched_row_cnt() cur.scroll(rows_fetched_from, mode='absolute') - except psycopg2.Error: + except psycopg.Error: # bypassing the error as cursor tried to scroll on the # specified position, but end of records found pass + except Exception: + pass # Registering back type caster for large size data types to string # which was unregistered at starting @@ -966,18 +999,17 @@ WHERE db.datname = current_database()""") if not status: return False, str(cur) - query_id = secrets.choice(range(1, 9999999)) + query_id = random.randint(1, 9999999) - dsn = self.conn.get_dsn_parameters() current_app.logger.log( 25, "Execute (scalar) by {pga_user} on " "{db_user}@{db_host}/{db_name} #{server_id} - " "{conn_id} (Query-id: {query_id}):\n{query}".format( pga_user=current_user.email, - db_user=dsn['user'], - db_host=dsn['host'], - db_name=dsn['dbname'], + db_user=self.conn.info.user, + db_host=self.conn.info.host, + db_name=self.conn.info.dbname, server_id=self.manager.sid, conn_id=self.conn_id, query=query, @@ -986,7 +1018,7 @@ WHERE db.datname = current_database()""") ) try: self.__internal_blocking_execute(cur, query, params) - except psycopg2.Error as pe: + except psycopg.Error as pe: cur.close() if not self.connected(): if self.auto_reconnect and not self.reconnecting: @@ -1011,9 +1043,11 @@ WHERE db.datname = current_database()""") ) ) return False, errmsg + except Exception: + print("EXCEPTION.....") - self.row_count = cur.rowcount - if cur.rowcount > 0: + self.row_count = cur.get_rowcount() + if cur.get_rowcount() > 0: res = cur.fetchone() if len(res) > 0: return True, res[0] @@ -1036,26 +1070,28 @@ WHERE db.datname = current_database()""") params = self.escape_params_sqlascii(params) self.__async_cursor = None - status, cur = self.__cursor() + status, cur = self.__cursor(scrollable=True) if not status: return False, str(cur) - query_id = secrets.choice(range(1, 9999999)) + query_id = random.randint(1, 9999999) encoding = self.python_encoding query = query.encode(encoding) - dsn = self.conn.get_dsn_parameters() + self.__async_cursor = cur + self.__async_query_id = query_id + current_app.logger.log( 25, "Execute (async) by {pga_user} on {db_user}@{db_host}/{db_name} " "#{server_id} - {conn_id} (Query-id: " "{query_id}):\n{query}".format( pga_user=current_user.username, - db_user=dsn['user'], - db_host=dsn['host'], - db_name=dsn['dbname'], + db_user=self.conn.info.user, + db_host=self.conn.info.host, + db_name=self.conn.info.dbname, server_id=self.manager.sid, conn_id=self.conn_id, query=query.decode(encoding), @@ -1068,8 +1104,7 @@ WHERE db.datname = current_database()""") self.__notifies = [] self.execution_aborted = False cur.execute(query, params) - res = self._wait_timeout(cur.connection) - except psycopg2.Error as pe: + except psycopg.Error as pe: errmsg = self._formatted_exception_msg(pe, formatted_exception_msg) current_app.logger.error( "Failed to execute query (execute_async) for the server " @@ -1082,9 +1117,6 @@ WHERE db.datname = current_database()""") ) ) - # Check for the asynchronous notifies. - self.check_notifies() - if self.is_disconnected(pe): raise ConnectionLost( self.manager.sid, @@ -1093,10 +1125,7 @@ WHERE db.datname = current_database()""") ) return False, errmsg - self.__async_cursor = cur - self.__async_query_id = query_id - - return True, res + return True, None def execute_void(self, query, params=None, formatted_exception_msg=False): """ @@ -1112,18 +1141,17 @@ WHERE db.datname = current_database()""") if not status: return False, str(cur) - query_id = secrets.choice(range(1, 9999999)) + query_id = random.randint(1, 9999999) - dsn = self.conn.get_dsn_parameters() current_app.logger.log( 25, "Execute (void) by {pga_user} on " "{db_user}@{db_host}/{db_name} #{server_id} - " "{conn_id} (Query-id: {query_id}):\n{query}".format( pga_user=current_user.email, - db_user=dsn['user'], - db_host=dsn['host'], - db_name=dsn['dbname'], + db_user=self.conn.info.user, + db_host=self.conn.info.host, + db_name=self.conn.info.dbname, server_id=self.manager.sid, conn_id=self.conn_id, query=query, @@ -1133,7 +1161,7 @@ WHERE db.datname = current_database()""") try: self.__internal_blocking_execute(cur, query, params) - except psycopg2.Error as pe: + except psycopg.Error as pe: cur.close() if not self.connected(): if self.auto_reconnect and not self.reconnecting: @@ -1200,17 +1228,16 @@ WHERE db.datname = current_database()""") if not status: return False, str(cur) - query_id = secrets.choice(range(1, 9999999)) - dsn = self.conn.get_dsn_parameters() + query_id = random.randint(1, 9999999) current_app.logger.log( 25, "Execute (2darray) by {pga_user} on " "{db_user}@{db_host}/{db_name} #{server_id} - " "{conn_id} (Query-id: {query_id}):\n{query}".format( pga_user=current_user.email, - db_user=dsn['user'], - db_host=dsn['host'], - db_name=dsn['dbname'], + db_user=self.conn.info.user, + db_host=self.conn.info.host, + db_name=self.conn.info.dbname, server_id=self.manager.sid, conn_id=self.conn_id, query=query, @@ -1219,7 +1246,7 @@ WHERE db.datname = current_database()""") ) try: self.__internal_blocking_execute(cur, query, params) - except psycopg2.Error as pe: + except psycopg.Error as pe: cur.close() if not self.connected() and self.auto_reconnect and \ not self.reconnecting: @@ -1246,10 +1273,9 @@ WHERE db.datname = current_database()""") ] or [] rows = [] - self.row_count = cur.rowcount - if cur.rowcount > 0: - for row in cur: - rows.append(row) + self.row_count = cur.get_rowcount() + if cur.get_rowcount() > 0: + rows = cur.fetchall() return True, {'columns': columns, 'rows': rows} @@ -1259,17 +1285,16 @@ WHERE db.datname = current_database()""") if not status: return False, str(cur) - query_id = secrets.choice(range(1, 9999999)) - dsn = self.conn.get_dsn_parameters() + query_id = random.randint(1, 9999999) current_app.logger.log( 25, "Execute (dict) by {pga_user} on " "{db_user}@{db_host}/{db_name} #{server_id} - " "{conn_id} (Query-id: {query_id}):\n{query}".format( pga_user=current_user.email, - db_user=dsn['user'], - db_host=dsn['host'], - db_name=dsn['dbname'], + db_user=self.conn.info.user, + db_host=self.conn.info.host, + db_name=self.conn.info.dbname, server_id=self.manager.sid, conn_id=self.conn_id, query=query, @@ -1278,7 +1303,7 @@ WHERE db.datname = current_database()""") ) try: self.__internal_blocking_execute(cur, query, params) - except psycopg2.Error as pe: + except psycopg.Error as pe: cur.close() if not self.connected(): if self.auto_reconnect and not self.reconnecting: @@ -1310,10 +1335,10 @@ WHERE db.datname = current_database()""") ] or [] rows = [] - self.row_count = cur.rowcount - if cur.rowcount > 0: - for row in cur: - rows.append(dict(row)) + self.row_count = cur.get_rowcount() + + if cur.get_rowcount() > 0: + rows = cur.fetchall() return True, {'columns': columns, 'rows': rows} @@ -1334,7 +1359,7 @@ WHERE db.datname = current_database()""") if not cur: return False, self.CURSOR_NOT_FOUND - if self.conn.isexecuting(): + if self.conn.pgconn.is_busy(): return False, gettext( "Asynchronous query execution/operation underway." ) @@ -1356,7 +1381,7 @@ WHERE db.datname = current_database()""") for col in self.column_info: new_row.append(row[col['name']]) result.append(new_row) - except psycopg2.ProgrammingError: + except psycopg.ProgrammingError: result = None else: # User performed operation which dose not produce record/s as @@ -1406,14 +1431,14 @@ WHERE db.datname = current_database()""") try: with ConnectionLocker(manager.kerberos_conn): - pg_conn = psycopg2.connect( + pg_conn = psycopg.connect( host=manager.local_bind_host if manager.use_ssh_tunnel else manager.host, hostaddr=manager.local_bind_host if manager.use_ssh_tunnel else manager.hostaddr, port=manager.local_bind_port if manager.use_ssh_tunnel else manager.port, - database=self.db, + dbname=self.db, user=manager.user, password=password, passfile=get_complete_file_path(manager.passfile), @@ -1424,13 +1449,14 @@ WHERE db.datname = current_database()""") sslcrl=get_complete_file_path(manager.sslcrl), sslcompression=True if manager.sslcompression else False, service=manager.service, - connect_timeout=manager.connect_timeout + connect_timeout=manager.connect_timeout, + cursor_factory=DictCursor ) - except psycopg2.Error as e: - if e.pgerror: + except psycopg.Error as e: + if hasattr(e, 'pgerror'): msg = e.pgerror - elif e.message: + elif hasattr(e, 'message'): msg = e.message elif e.diag.message_detail: msg = e.diag.message_detail @@ -1448,13 +1474,13 @@ Failed to reset the connection to the server due to following error: pg_conn.notices = deque([], self.ASYNC_NOTICE_MAXLENGTH) self.conn = pg_conn - self.__backend_pid = pg_conn.get_backend_pid() + self.__backend_pid = pg_conn.info.backend_pid return True, None def transaction_status(self): if self.conn: - return self.conn.get_transaction_status() + return self.conn.info.transaction_status return None def ping(self): @@ -1463,152 +1489,48 @@ Failed to reset the connection to the server due to following error: def _release(self): if self.wasConnected: if self.conn: - self.conn.close() + if self.async_ == 0: + self.conn.close() + elif self.async_ == 1: + self._close_async() self.conn = None self.password = None self.wasConnected = False - def _wait(self, conn): - """ - This function is used for the asynchronous connection, - it will call poll method in a infinite loop till poll - returns psycopg2.extensions.POLL_OK. This is a blocking - call. + def _close_async(self): + async def _close_conn(conn): + if conn: + await conn.close() + asyncio.run(_close_conn(self.conn)) - Args: - conn: connection object - """ - while True: - state = conn.poll() - if state == psycopg2.extensions.POLL_OK: - break - elif state == psycopg2.extensions.POLL_WRITE: - select.select([], [conn.fileno()], [], - self.ASYNC_WAIT_TIMEOUT) - elif state == psycopg2.extensions.POLL_READ: - select.select([conn.fileno()], [], [], - self.ASYNC_WAIT_TIMEOUT) - else: - raise psycopg2.OperationalError( - "poll() returned %s from _wait function" % state) + def _wait(self, conn): + pass def _wait_timeout(self, conn): - """ - This function is used for the asynchronous connection, - it will call poll method and return the status. If state is - psycopg2.extensions.POLL_WRITE and psycopg2.extensions.POLL_READ - function will wait for the given timeout.This is not a blocking call. - - Args: - conn: connection object - time: wait time - """ - - while True: - state = conn.poll() - - if state == psycopg2.extensions.POLL_OK: - return self.ASYNC_OK - elif state == psycopg2.extensions.POLL_WRITE: - # Wait for the given time and then check the return status - # If three empty lists are returned then the time-out is - # reached. - timeout_status = select.select( - [], [conn.fileno()], [], self.ASYNC_TIMEOUT - ) - if timeout_status == ([], [], []): - return self.ASYNC_WRITE_TIMEOUT - elif state == psycopg2.extensions.POLL_READ: - # Wait for the given time and then check the return status - # If three empty lists are returned then the time-out is - # reached. - timeout_status = select.select( - [conn.fileno()], [], [], self.ASYNC_TIMEOUT - ) - if timeout_status == ([], [], []): - return self.ASYNC_READ_TIMEOUT - else: - raise psycopg2.OperationalError( - "poll() returned %s from _wait_timeout function" % state - ) + pass def poll(self, formatted_exception_msg=False, no_result=False): - """ - This function is a wrapper around connection's poll function. - It internally uses the _wait_timeout method to poll the - result on the connection object. In case of success it - returns the result of the query. + cur = self.__async_cursor - Args: - formatted_exception_msg: if True then function return the formatted - exception message, otherwise error string. - no_result: If True then only poll status will be returned. - """ + if self.conn.pgconn.is_busy(): + status = 3 + else: + status = 1 - cur = self.__async_cursor if not cur: return False, self.CURSOR_NOT_FOUND + result = None + self.row_count = 0 + self.column_info = None + current_app.logger.log( 25, "Polling result for (Query-id: {query_id})".format( query_id=self.__async_query_id ) ) - - is_error = False - try: - status = self._wait_timeout(self.conn) - except psycopg2.OperationalError as op_er: - errmsg = \ - self._formatted_exception_msg(op_er, formatted_exception_msg) - is_error = True - except psycopg2.Error as pe: - errmsg = self._formatted_exception_msg(pe, formatted_exception_msg) - is_error = True - if self.conn.closed: - raise ConnectionLost( - self.manager.sid, - self.db, - self.conn_id[5:] - ) - except OSError as e: - # Bad File descriptor - if e.errno == 9: - raise ConnectionLost( - self.manager.sid, - self.db, - self.conn_id[5:] - ) - else: - raise e - - if self.conn.notices and self.__notices is not None: - self.__notices.extend(self.conn.notices) - self.conn.notices.clear() - - # Check for the asynchronous notifies. - self.check_notifies() - - # We also need to fetch notices before we return from function in case - # of any Exception, To avoid code duplication we will return after - # fetching the notices in case of any Exception - if is_error: - return False, errmsg - - result = None - self.row_count = 0 - self.column_info = None - - if status == self.ASYNC_OK: - - # if user has cancelled the transaction then changed the status - if self.execution_aborted: - status = self.ASYNC_EXECUTION_ABORTED - self.execution_aborted = False - return status, result - - # Fetch the column information + if not self.conn.pgconn.is_busy(): if cur.description is not None: self.column_info = [ desc.to_dict() for desc in cur.ordered_description() @@ -1619,8 +1541,8 @@ Failed to reset the connection to the server due to following error: col['pos'] = pos pos += 1 - self.row_count = cur.rowcount - if not no_result and cur.rowcount > 0: + self.row_count = cur.get_rowcount() + if not no_result and cur.get_rowcount() > 0: result = [] # For DDL operation, we may not have result. # @@ -1628,13 +1550,11 @@ Failed to reset the connection to the server due to following error: # and DDL operations, we need to rely on exception to # figure that out at the moment. try: - for row in cur: - new_row = [] - for col in self.column_info: - new_row.append(row[col['name']]) - result.append(new_row) + result = cur.fetchalltupple() - except psycopg2.ProgrammingError: + except psycopg.ProgrammingError: + result = None + except psycopg.Error: result = None return status, result @@ -1709,7 +1629,7 @@ Failed to reset the connection to the server due to following error: try: with ConnectionLocker(self.manager.kerberos_conn): - pg_conn = psycopg2.connect( + pg_conn = psycopg.connect( host=self.manager.local_bind_host if self.manager.use_ssh_tunnel else self.manager.host, hostaddr=self.manager.local_bind_host if @@ -1717,7 +1637,7 @@ Failed to reset the connection to the server due to following error: self.manager.hostaddr, port=self.manager.local_bind_port if self.manager.use_ssh_tunnel else self.manager.port, - database=self.db, + dbname=self.db, user=self.manager.user, password=password, passfile=get_complete_file_path(self.manager.passfile), @@ -1731,7 +1651,8 @@ Failed to reset the connection to the server due to following error: sslcompression=True if self.manager.sslcompression else False, service=self.manager.service, - connect_timeout=self.manager.connect_timeout + connect_timeout=self.manager.connect_timeout, + cursor_factory=DictCursor ) # Get the cursor and run the query @@ -1742,9 +1663,9 @@ Failed to reset the connection to the server due to following error: pg_conn.close() pg_conn = None - except psycopg2.Error as e: + except psycopg.Error as e: status = False - if e.pgerror: + if hasattr(e, 'pgerror'): msg = e.pgerror elif e.diag.message_detail: msg = e.diag.message_detail @@ -1794,7 +1715,7 @@ Failed to reset the connection to the server due to following error: def _formatted_exception_msg(self, exception_obj, formatted_msg): """ - This method is used to parse the psycopg2.Error object and returns the + This method is used to parse the psycopg.Error object and returns the formatted error message if flag is set to true else return normal error message. @@ -1804,10 +1725,13 @@ Failed to reset the connection to the server due to following error: message """ - if exception_obj.pgerror: + if hasattr(exception_obj, 'pgerror'): errmsg = exception_obj.pgerror - elif exception_obj.diag.message_detail: - errmsg = exception_obj.diag.message_detail + elif hasattr(exception_obj, 'diag') and \ + hasattr(exception_obj.diag, 'message_detail') and\ + exception_obj.diag.message_detail is not None: + errmsg = exception_obj.diag.message_detail + \ + exception_obj.diag.message_primary else: errmsg = str(exception_obj) @@ -1920,20 +1844,16 @@ Failed to reset the connection to the server due to following error: return False return True - def check_notifies(self, required_polling=False): + def check_notifies(self, n=None): """ Check for the notify messages by polling the connection or after execute is there in notifies. """ - if self.conn and required_polling: - self.conn.poll() - if self.conn and hasattr(self.conn, 'notifies') and \ - len(self.conn.notifies) > 0: - self.__notifies.extend(self.conn.notifies) - self.conn.notifies = [] - else: - self.__notifies = [] + if n: + if self.__notifies is None: + self.__notifies = [] + self.__notifies.append(n) def get_notifies(self): """ @@ -1949,19 +1869,23 @@ Failed to reset the connection to the server due to following error: 'pid': notify.pid } for notify in self.__notifies ] + self.__notifies = None return notifies - def get_notices(self): + def get_notices(self, diag=None): """ This function will returns the notices as string. :return: """ notices = '' # Check for notices. - if self.conn.notices and self.__notices is not None: - self.__notices.extend(self.conn.notices) - self.conn.notices.clear() + if diag and hasattr(diag, 'message_primary'): + if self.__notices is None: + self.__notices = [] + self.__notices.append(f"{diag.severity}:" + f" {diag.message_primary}\n") + if diag is None: while self.__notices: notices += self.__notices.pop(0) @@ -1970,35 +1894,20 @@ Failed to reset the connection to the server due to following error: def pq_encrypt_password_conn(self, password, user): """ This function will return the encrypted password for database server - greater than or equal to 10 :param password: password to be encrypted :param user: user of the database server :return: """ enc_password = None - if psycopg2.__libpq_version__ >= 100000 and \ - hasattr(psycopg2.extensions, 'encrypt_password'): - if self.connected(): - status, enc_algorithm = \ - self.execute_scalar("SHOW password_encryption") - if status: - enc_password = psycopg2.extensions.encrypt_password( - password=password, user=user, scope=self.conn, - algorithm=enc_algorithm - ) - elif psycopg2.__libpq_version__ < 100000: - current_app.logger.warning( - "To encrypt passwords the required libpq version is " - "greater than or equal to 100000. Current libpq version " - "is {curr_ver}".format( - curr_ver=psycopg2.__libpq_version__ - ) - ) - elif not hasattr(psycopg2.extensions, 'encrypt_password'): - current_app.logger.warning( - "The psycopg2.extensions module does not have the" - "'encrypt_password' method." - ) + if self.connected(): + status, enc_algorithm = \ + self.execute_scalar("SHOW password_encryption") + if status: + encoding = self.conn.info.encoding + enc_password = self.conn.pgconn.encrypt_password( + password.encode(encoding), user.encode(encoding), + enc_algorithm.encode(encoding) + ).decode() return enc_password @@ -2015,7 +1924,7 @@ Failed to reset the connection to the server due to following error: else: if parameters: - mogrified_sql = cursor.mogrify(query, parameters) - return mogrified_sql + return psycopg.sql.SQL(query.format(parameters) + ).as_string(self.conn) else: return query diff --git a/web/pgadmin/utils/driver/psycopg2/cursor.py b/web/pgadmin/utils/driver/psycopg3/cursor.py similarity index 56% rename from web/pgadmin/utils/driver/psycopg2/cursor.py rename to web/pgadmin/utils/driver/psycopg3/cursor.py index f58460d2d..c73774d9c 100644 --- a/web/pgadmin/utils/driver/psycopg2/cursor.py +++ b/web/pgadmin/utils/driver/psycopg3/cursor.py @@ -13,10 +13,15 @@ fetching results from it, and also takes care of the duplicate column name in result. """ - +import asyncio from collections import OrderedDict -import psycopg2 -from psycopg2.extensions import cursor as _cursor, encodings +import psycopg +from psycopg import Cursor as _cursor, AsyncCursor as _async_cursor +from typing import Any, Sequence +from psycopg.rows import dict_row, tuple_row +from psycopg._encodings import py_codecs as encodings + + from .encoding import configure_driver_encodings configure_driver_encodings(encodings) @@ -90,10 +95,6 @@ class _WrapperColumn(object): with avoiding the duplicate name. """ - # In psycopg2 2.8, the description of one result column, - # exposed as items of the cursor.description sequence. - # Before psycopg2 2.8 the description attribute was a sequence - # of simple tuples or namedtuples. ores = OrderedDict() ores['name'] = self.orig_col.name ores['type_code'] = self.orig_col.type_code @@ -134,11 +135,8 @@ class DictCursor(_cursor): """ def __init__(self, *args, **kwargs): - """ - Initialize the cursor object. - """ self._odt_desc = None - _cursor.__init__(self, *args, **kwargs) + _cursor.__init__(self, *args, row_factory=dict_row) def _dict_tuple(self, tup): """ @@ -154,6 +152,7 @@ class DictCursor(_cursor): duplicate column name. """ self._odt_desc = _cursor.__getattribute__(self, 'description') + pgresult = _cursor.__getattribute__(self, 'pgresult') desc = self._odt_desc if desc is None or len(desc) == 0: @@ -161,6 +160,7 @@ class DictCursor(_cursor): res = list() od = dict((d[0], 0) for d in desc) + col_count = 0 for d in desc: dummy = None idx = od[d.name] @@ -173,6 +173,9 @@ class DictCursor(_cursor): name = ("%s-%s" % (d.name, idx)) od[d.name] = idx dummy = name + if pgresult: + d.table_oid = pgresult.ftable(col_count) + d.table_column = pgresult.ftablecol(col_count) res.append(_WrapperColumn(d, dummy)) self._odt_desc = tuple(res) @@ -194,42 +197,176 @@ class DictCursor(_cursor): return _cursor.execute(self, query, params) - def executemany(self, query, params=None): + def fetchone(self): """ - Execute many function of regular cursor. + Execute function + """ + self.row_factory = tuple_row + res = _cursor.fetchone(self) + self.row_factory = dict_row + return res + + def get_rowcount(self): + return self.pgresult.ntuples + + +class AsyncDictCursor(_async_cursor): + + def __init__(self, *args, **kwargs): + self._odt_desc = None + _async_cursor.__init__(self, *args, row_factory=dict_row) + + def _dict_tuple(self, tup): + """ + Transform the tuple into a dictionary object. + """ + if self._odt_desc is None: + self._ordered_description() + return dict((k[0], v) for k, v in zip(self._odt_desc, tup)) + + def _ordered_description(self): + """ + Transform the regular description to wrapper object, which handles + duplicate column name. + """ + self._odt_desc = _async_cursor.__getattribute__(self, 'description') + pgresult = _async_cursor.__getattribute__(self, 'pgresult') + desc = self._odt_desc + + if desc is None or len(desc) == 0: + return + + res = list() + od = dict((d[0], 0) for d in desc) + col_count = 0 + for d in desc: + dummy = None + idx = od[d.name] + if idx == 0: + od[d.name] = 1 + else: + name = d.name + while name in od: + idx += 1 + name = ("%s-%s" % (d.name, idx)) + od[d.name] = idx + dummy = name + if pgresult: + d.table_oid = pgresult.ftable(col_count) + d.table_column = pgresult.ftablecol(col_count) + col_count += 1 + + res.append(_WrapperColumn(d, dummy)) + self._odt_desc = tuple(res) + + def ordered_description(self): + """ + Use this to fetch the description + """ + if self._odt_desc is None: + self._ordered_description() + return self._odt_desc + + def execute(self, query, params=None): + """ + Execute function + """ + return asyncio.run(self._execute(query, params)) + + async def _execute(self, query, params=None): + """ + Execute function """ self._odt_desc = None - return _cursor.executemany(self, query, params) + if params is not None and len(params) == 0: + params = None - def callproc(self, proname, params=None): + return await _async_cursor.execute(self, query, params) + + def executemany(self, query, params=None): """ - Call a procedure by a name. + Execute many function of regular cursor. """ self._odt_desc = None - return _cursor.callproc(self, proname, params) + return _async_cursor.executemany(self, query, params) def fetchmany(self, size=None): """ Fetch many tuples as ordered dictionary list. """ - tuples = _cursor.fetchmany(self, size) - if tuples is not None: - return [self._dict_tuple(t) for t in tuples] - return None + return asyncio.run(self._fetchmany(size)) + + async def _fetchmany(self, size=None): + """ + Fetch many tuples as ordered dictionary list. + """ + return await _async_cursor.fetchmany(self, size) + + async def _fetchall(self): + """ + Fetch all tuples as ordered dictionary list. + """ + return await _async_cursor.fetchall(self) def fetchall(self): """ Fetch all tuples as ordered dictionary list. """ - tuples = _cursor.fetchall(self) - if tuples is not None: - return [self._dict_tuple(t) for t in tuples] - - def __iter__(self): - it = _cursor.__iter__(self) - try: - yield self._dict_tuple(next(it)) - while True: - yield self._dict_tuple(next(it)) - except StopIteration: - pass + return asyncio.run(self._fetchall()) + + async def _fetchalltupple(self): + """ + Fetch all tuples as ordered dictionary list. + """ + return await _async_cursor.fetchall(self) + + def fetchalltupple(self): + """ + Fetch all tuples as ordered dictionary list. + """ + self.row_factory = tuple_row + res = asyncio.run(self._fetchalltupple()) + self.row_factory = dict_row + return res + + async def _fetchone(self): + """ + Fetch all tuples as ordered dictionary list. + """ + return await _async_cursor.fetchone(self) + + def fetchone(self): + """ + Execute function + """ + self.row_factory = tuple_row + res = asyncio.run(self._fetchone()) + self.row_factory = dict_row + return res + + async def _scrollcur(self, position, mode): + """ + Fetch all tuples as ordered dictionary list. + """ + return await _async_cursor.scroll(self, position, mode=mode) + + def scroll(self, position, mode="absolute"): + """ + Fetch all tuples as ordered dictionary list. + """ + return asyncio.run(self._scrollcur(position, mode)) + + def get_rowcount(self): + if self.pgresult: + return self.pgresult.ntuples + else: + return -1 + + async def _closecur(self): + """ + Fetch all tuples as ordered dictionary list. + """ + return await _async_cursor.close(self) + + async def close(self): + return asyncio.run(self._closecur()) diff --git a/web/pgadmin/utils/driver/psycopg3/encoding.py b/web/pgadmin/utils/driver/psycopg3/encoding.py new file mode 100644 index 000000000..9b9265e50 --- /dev/null +++ b/web/pgadmin/utils/driver/psycopg3/encoding.py @@ -0,0 +1,59 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2022, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +# Get Postgres and Python encoding + +import psycopg + +encode_dict = { + 'SQL_ASCII': ['SQL_ASCII', 'raw-unicode-escape', 'unicode-escape'], + # EUC_TW Not availble in Python, + # so psycopg3 do not support it, we are on our own + 'EUC_TW': ['BIG5', 'big5', 'big5'] +} + + +def get_encoding(key): + """ + :param key: Database Encoding + :return: + [Postgres_encoding, Python_encoding, typecast_encoding] - + Postgres encoding, Python encoding, type cast encoding + """ + # + # Reference: https://www.postgresql.org/docs/11/multibyte.html + + if key == 'ascii': + key = 'raw_unicode_escape' + postgres_encoding = psycopg._encodings.py2pgenc(key).decode() + + python_encoding = psycopg._encodings._py_codecs.get(postgres_encoding, + 'utf-8') + + return encode_dict.get(postgres_encoding.upper(), + [postgres_encoding, + python_encoding, + python_encoding]) + + +def configure_driver_encodings(encodings): + # Replace the python encoding for original name and renamed encodings + # psycopg removes the underscore in conn.encoding + # Setting the encodings dict value will only help for select statements + # because for parameterized DML, param values are converted based on + # python encoding of pyscopg's internal encodings dict. + + for key, val in encode_dict.items(): + postgres_encoding, python_encoding, typecast_encoding = val + psycopg._encodings._py_codecs[key] = python_encoding + + encodings.update((k.encode(), v + ) for k, v in psycopg._encodings._py_codecs.items()) + psycopg._encodings.pg_codecs = { + v: k.encode() for k, v in psycopg._encodings._py_codecs.items()} diff --git a/web/pgadmin/utils/driver/psycopg2/generate_keywords.py b/web/pgadmin/utils/driver/psycopg3/generate_keywords.py similarity index 100% rename from web/pgadmin/utils/driver/psycopg2/generate_keywords.py rename to web/pgadmin/utils/driver/psycopg3/generate_keywords.py diff --git a/web/pgadmin/utils/driver/psycopg2/keywords.py b/web/pgadmin/utils/driver/psycopg3/keywords.py similarity index 100% rename from web/pgadmin/utils/driver/psycopg2/keywords.py rename to web/pgadmin/utils/driver/psycopg3/keywords.py diff --git a/web/pgadmin/utils/driver/psycopg2/server_manager.py b/web/pgadmin/utils/driver/psycopg3/server_manager.py similarity index 100% rename from web/pgadmin/utils/driver/psycopg2/server_manager.py rename to web/pgadmin/utils/driver/psycopg3/server_manager.py diff --git a/web/pgadmin/utils/driver/psycopg3/typecast.py b/web/pgadmin/utils/driver/psycopg3/typecast.py new file mode 100644 index 000000000..58fefdf19 --- /dev/null +++ b/web/pgadmin/utils/driver/psycopg3/typecast.py @@ -0,0 +1,247 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2022, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +""" +Typecast various data types so that they can be compatible with Javascript +data types. +""" +import psycopg +from psycopg.types.string import TextLoader +from psycopg.types.json import JsonDumper, _JsonDumper, _JsonLoader +from psycopg._encodings import py_codecs as encodings +from .encoding import get_encoding, configure_driver_encodings +from psycopg.types.net import InetLoader +from psycopg.adapt import Loader +from ipaddress import ip_address, ip_interface +from psycopg._encodings import py_codecs as encodings + +configure_driver_encodings(encodings) + +# OIDs of data types which need to typecast as string to avoid JavaScript +# compatibility issues. +# e.g JavaScript does not support 64 bit integers. It has 64-bit double +# giving only 53 bits of integer range (IEEE 754) +# So to avoid loss of remaining 11 bits (64-53) we need to typecast bigint to +# string. + +TO_STRING_DATATYPES = ( + # To cast bytea, interval type + 17, 1186, + + # date, timestamp, timestamp with zone, time without time zone + 1082, 1114, 1184, 1083 +) + +TO_STRING_NUMERIC_DATATYPES = ( + # Real, double precision, numeric, bigint + 700, 701, 1700, 20 +) + +# OIDs of array data types which need to typecast to array of string. +# This list may contain: +# OIDs of data types from PSYCOPG_SUPPORTED_ARRAY_DATATYPES as they need to be +# typecast to array of string. +# Also OIDs of data types which psycopg does not typecast array of that +# data type. e.g: uuid, bit, varbit, etc. + +TO_ARRAY_OF_STRING_DATATYPES = ( + # To cast bytea[] type + 1001, + + # bigint[] + 1016, + + # double precision[], real[] + 1022, 1021, + + # bit[], varbit[] + 1561, 1563, +) + +# OID of record array data type +RECORD_ARRAY = (2287,) + +# OIDs of builtin array datatypes supported by psycopg +# OID reference psycopg/psycopg/typecast_builtins.c +# +# For these array data types psycopg returns result in list. +# For all other array data types psycopg returns result as string (string +# representing array literal) +# e.g: +# +# For below two sql psycopg returns result in different formats. +# SELECT '{foo,bar}'::text[]; +# print('type of {} ==> {}'.format(res[0], type(res[0]))) +# SELECT '{foo,bar}'::xml[]; +# print('type of {} ==> {}'.format(res[0], type(res[0]))) +# +# Output: +# type of ['foo', 'bar'] ==> +# type of {foo,bar} ==> + +PSYCOPG_SUPPORTED_BUILTIN_ARRAY_DATATYPES = ( + 1016, 1005, 1006, 1007, 1021, 1022, 1231, + 1002, 1003, 1009, 1014, 1015, 1009, 1014, + 1015, 1000, 1115, 1185, 1183, 1270, 1182, + 1187, 1001, 1028, 1013, 1041, 651, 1040 +) + +# json, jsonb +# OID reference psycopg/lib/_json.py +PSYCOPG_SUPPORTED_JSON_TYPES = (114, 3802) + +# json[], jsonb[] +PSYCOPG_SUPPORTED_JSON_ARRAY_TYPES = (199, 3807) + +ALL_JSON_TYPES = PSYCOPG_SUPPORTED_JSON_TYPES +\ + PSYCOPG_SUPPORTED_JSON_ARRAY_TYPES + +# INET[], CIDR[] +# OID reference psycopg/lib/_ipaddress.py +PSYCOPG_SUPPORTED_IPADDRESS_ARRAY_TYPES = (1041, 651) + +# uuid[] +# OID reference psycopg/lib/extras.py +PSYCOPG_SUPPORTED_IPADDRESS_ARRAY_TYPES = (2951,) + +# int4range, int8range, numrange, daterange tsrange, tstzrange[] +# OID reference psycopg/lib/_range.py +PSYCOPG_SUPPORTED_RANGE_TYPES = (3904, 3926, 3906, 3912, 3908, 3910) + +# int4range[], int8range[], numrange[], daterange[] tsrange[], tstzrange[] +# OID reference psycopg/lib/_range.py +PSYCOPG_SUPPORTED_RANGE_ARRAY_TYPES = (3905, 3927, 3907, 3913, 3909, 3911) + + +def register_global_typecasters(): + # This registers a unicode type caster for datatype 'RECORD'. + psycopg.adapters.register_loader( + 2249, TextLoaderpgAdmin) + # This registers a unicode type caster for datatype 'RECORD_ARRAY'. + psycopg.adapters.register_loader( + 2287, TextLoaderpgAdmin) + + for typ in TO_STRING_DATATYPES + TO_STRING_NUMERIC_DATATYPES +\ + PSYCOPG_SUPPORTED_RANGE_TYPES: + psycopg.adapters.register_loader(typ, + TextLoaderpgAdmin) + + # + # # define type caster to convert pg array types of above types into + # # array of string type + # pg_array_types_to_array_of_string_type = \ + # psycopg.extensions.new_array_type( + # TO_ARRAY_OF_STRING_DATATYPES, + # 'TYPECAST_TO_ARRAY_OF_STRING', pg_types_to_string_type + # ) + + for typ in TO_ARRAY_OF_STRING_DATATYPES: + psycopg.adapters.register_loader(typ, TextLoaderpgAdmin) + + psycopg.adapters.register_loader("json", + TextLoaderpgAdmin) + psycopg.adapters.register_loader("jsonb", + TextLoaderpgAdmin) + + # psycopg.types.json.set_json_loads(loads=lambda x: x) + + class JsonDumperpgAdmin(_JsonDumper): + + def dump(self, obj): + return self.dumps(obj).encode() + + psycopg.adapters.register_dumper(dict, JsonDumperpgAdmin) + + +def register_string_typecasters(connection): + # raw_unicode_escape used for SQL ASCII will escape the + # characters. Here we unescape them using unicode_escape + # and send ahead. When insert update is done, the characters + # are escaped again and sent to the DB. + + postgres_encoding, python_encoding, typecast_encoding = \ + get_encoding(connection.info.encoding) + if postgres_encoding != 'UTF-8' and postgres_encoding != 'UTF8': + + # class NonAsciiLoader(Loader): + # def load(self, data): + # if data is None: + # return None + # postgres_encoding, python_encoding, typecast_encoding = \ + # get_encoding(self.connection.info.encoding) + # return data.decode(python_encoding, errors='replace') + + for typ in (19, 18, 25, 1042, 1043, 0): + if connection: + connection.adapters.register_loader(typ, TextLoaderpgAdmin) + # for typ in (1002, 1003, 1009, 1014, 1015, 0): + # if connection: + # connection.adapters.register_loader(typ, + # TextLoaderpgAdmin) + # connection.adapters.register_loader(bytes, NonAsciiLoader) + + +def register_binary_typecasters(connection): + # The new classes can be registered globally, on a connection, on a cursor + + connection.adapters.register_loader(17, + pgAdminByteaLoader) + + connection.adapters.register_loader(1001, + pgAdminByteaLoader) + + +def register_array_to_string_typecasters(connection=None): + type_array = PSYCOPG_SUPPORTED_BUILTIN_ARRAY_DATATYPES +\ + PSYCOPG_SUPPORTED_JSON_ARRAY_TYPES +\ + PSYCOPG_SUPPORTED_IPADDRESS_ARRAY_TYPES +\ + PSYCOPG_SUPPORTED_RANGE_ARRAY_TYPES +\ + TO_ARRAY_OF_STRING_DATATYPES + + for typ in type_array: + if connection: + connection.adapters.register_loader(typ, + TextLoaderpgAdmin) + + +class pgAdminInetLoader(InetLoader): + def load(self, data): + if isinstance(data, memoryview): + data = bytes(data) + + if b"/" in data: + return str(ip_interface(data.decode())) + else: + return str(ip_address(data.decode())) + + +# The new classes can be registered globally, on a connection, on a cursor +psycopg.adapters.register_loader("inet", pgAdminInetLoader) + + +class pgAdminByteaLoader(Loader): + def load(self, data): + return 'binary data' if data is not None else None + + +class TextLoaderpgAdmin(TextLoader): + def load(self, data): + if self._encoding: + if isinstance(data, memoryview): + return bytes(data).decode(self._encoding) + else: + return data.decode(self._encoding, errors='replace') + else: + # SQL_ASCII db + postgres_encoding, python_encoding, typecast_encoding = \ + get_encoding(self.connection.info.encoding) + try: + return data.decode(typecast_encoding) + except Exception: + return data.decode('UTF-8', errors='replace') diff --git a/web/pgadmin/utils/driver/registry.py b/web/pgadmin/utils/driver/registry.py index 1085cac43..6cbcde6d9 100644 --- a/web/pgadmin/utils/driver/registry.py +++ b/web/pgadmin/utils/driver/registry.py @@ -15,7 +15,7 @@ from pgadmin.utils.dynamic_registry import create_registry_metaclass @classmethod def load_modules(cls, app=None): submodules = [] - from . import psycopg2 as module + from . import psycopg3 as module submodules.append(module) from . import abstract as module diff --git a/web/pgadmin/utils/tests/test_encoding.py b/web/pgadmin/utils/tests/test_encoding.py index 80f6d4eb3..c2aebb4d0 100644 --- a/web/pgadmin/utils/tests/test_encoding.py +++ b/web/pgadmin/utils/tests/test_encoding.py @@ -6,7 +6,7 @@ # This software is released under the PostgreSQL Licence # ########################################################################## -from pgadmin.utils.driver.psycopg2.encoding import get_encoding +from pgadmin.utils.driver.psycopg3.encoding import get_encoding from pgadmin.utils.route import BaseTestGenerator @@ -15,208 +15,201 @@ class TestEncoding(BaseTestGenerator): ( 'When the database encoding is SQL_ASCII', dict( - db_encoding='SQL_ASCII', - expected_return_value=['SQL_ASCII', 'raw_unicode_escape', - 'unicode_escape'] - ) - ), ( - 'When the database encoding is MULEINTERNAL', - dict( - db_encoding='MULEINTERNAL', - expected_return_value=['MULEINTERNAL', 'raw_unicode_escape', - 'unicode_escape'] + db_encoding='raw_unicode_escape', + expected_return_value=['SQL_ASCII', 'raw-unicode-escape', + 'unicode-escape'] ) ), ( 'When the database encoding is LATIN1', dict( - db_encoding='LATIN1', - expected_return_value=['LATIN1', 'latin1', 'latin1'] + db_encoding='latin1', + expected_return_value=['LATIN1', 'iso8859-1', 'iso8859-1'] ) ), ( 'When the database encoding is LATIN2', dict( - db_encoding='LATIN2', - expected_return_value=['LATIN2', 'latin2', 'latin2'] + db_encoding='latin2', + expected_return_value=['LATIN2', 'iso8859-2', 'iso8859-2'] ) ), ( 'When the database encoding is LATIN3', dict( - db_encoding='LATIN3', - expected_return_value=['LATIN3', 'latin3', 'latin3'] + db_encoding='latin3', + expected_return_value=['LATIN3', 'iso8859-3', 'iso8859-3'] ) ), ( 'When the database encoding is LATIN4', dict( - db_encoding='LATIN4', - expected_return_value=['LATIN4', 'latin4', 'latin4'] + db_encoding='latin4', + expected_return_value=['LATIN4', 'iso8859-4', 'iso8859-4'] ) ), ( 'When the database encoding is LATIN5', dict( - db_encoding='LATIN5', - expected_return_value=['LATIN5', 'latin5', 'latin5'] + db_encoding='latin5', + expected_return_value=['LATIN5', 'iso8859-9', 'iso8859-9'] ) ), ( 'When the database encoding is LATIN6', dict( - db_encoding='LATIN6', - expected_return_value=['LATIN6', 'latin6', 'latin6'] + db_encoding='latin6', + expected_return_value=['LATIN6', 'iso8859-10', 'iso8859-10'] ) ), ( 'When the database encoding is LATIN7', dict( - db_encoding='LATIN7', - expected_return_value=['LATIN7', 'latin7', 'latin7'] + db_encoding='latin7', + expected_return_value=['LATIN7', 'iso8859-13', 'iso8859-13'] ) ), ( 'When the database encoding is LATIN8', dict( - db_encoding='LATIN8', - expected_return_value=['LATIN8', 'latin8', 'latin8'] + db_encoding='latin8', + expected_return_value=['LATIN8', 'iso8859-14', 'iso8859-14'] ) ), ( 'When the database encoding is LATIN9', dict( - db_encoding='LATIN9', - expected_return_value=['LATIN9', 'latin9', 'latin9'] + db_encoding='latin9', + expected_return_value=['LATIN9', 'iso8859-15', 'iso8859-15'] ) ), ( 'When the database encoding is LATIN10', dict( - db_encoding='LATIN10', - expected_return_value=['LATIN10', 'latin10', 'latin10'] + db_encoding='latin10', + expected_return_value=['LATIN10', 'iso8859-16', 'iso8859-16'] ) ), ( 'When the database encoding is WIN1250', dict( - db_encoding='WIN1250', + db_encoding='cp1250', expected_return_value=['WIN1250', 'cp1250', 'cp1250'] ) ), ( 'When the database encoding is WIN1251', dict( - db_encoding='WIN1251', + db_encoding='cp1251', expected_return_value=['WIN1251', 'cp1251', 'cp1251'] ) ), ( 'When the database encoding is WIN1252', dict( - db_encoding='WIN1252', + db_encoding='cp1252', expected_return_value=['WIN1252', 'cp1252', 'cp1252'] ) ), ( 'When the database encoding is WIN1253', dict( - db_encoding='WIN1253', + db_encoding='cp1253', expected_return_value=['WIN1253', 'cp1253', 'cp1253'] ) ), ( 'When the database encoding is WIN1254', dict( - db_encoding='WIN1254', + db_encoding='cp1254', expected_return_value=['WIN1254', 'cp1254', 'cp1254'] ) ), ( 'When the database encoding is WIN1255', dict( - db_encoding='WIN1255', + db_encoding='cp1255', expected_return_value=['WIN1255', 'cp1255', 'cp1255'] ) ), ( 'When the database encoding is WIN1256', dict( - db_encoding='WIN1256', + db_encoding='cp1256', expected_return_value=['WIN1256', 'cp1256', 'cp1256'] ) ), ( 'When the database encoding is WIN1257', dict( - db_encoding='WIN1257', + db_encoding='cp1257', expected_return_value=['WIN1257', 'cp1257', 'cp1257'] ) ), ( 'When the database encoding is WIN1258', dict( - db_encoding='WIN1258', + db_encoding='cp1258', expected_return_value=['WIN1258', 'cp1258', 'cp1258'] ) ), ( 'When the database encoding is EUC_JIS_2004', dict( - db_encoding='EUC_JIS_2004', - expected_return_value=['EUC_JIS_2004', 'eucjis2004', - 'eucjis2004'] + db_encoding='eucjis2004', + expected_return_value=['EUC_JIS_2004', 'euc_jis_2004', + 'euc_jis_2004'] ) ), ( 'When the database encoding is EUC_CN', dict( - db_encoding='EUC_CN', - expected_return_value=['EUC_CN', 'euc-cn', 'euc-cn'] + db_encoding='euc-cn', + expected_return_value=['EUC_CN', 'gb2312', 'gb2312'] ) ), ( 'When the database encoding is EUC_JP', dict( - db_encoding='EUC_JP', + db_encoding='euc_jp', expected_return_value=['EUC_JP', 'euc_jp', 'euc_jp'] ) ), ( 'When the database encoding is EUC_KR', dict( - db_encoding='EUC_KR', + db_encoding='euc_kr', expected_return_value=['EUC_KR', 'euc_kr', 'euc_kr'] ) ), ( 'When the database encoding is EUC_TW', dict( - db_encoding='EUC_TW', + db_encoding='big5', expected_return_value=['BIG5', 'big5', 'big5'] ) ), ( 'When the database encoding is ISO_8859_5', dict( - db_encoding='ISO_8859_5', - expected_return_value=['ISO_8859_5', 'iso8859_5', 'iso8859_5'] + db_encoding='iso8859_5', + expected_return_value=['ISO_8859_5', 'iso8859-5', 'iso8859-5'] ) ), ( 'When the database encoding is ISO_8859_6', dict( - db_encoding='ISO_8859_6', - expected_return_value=['ISO_8859_6', 'iso8859_6', 'iso8859_6'] + db_encoding='iso8859_6', + expected_return_value=['ISO_8859_6', 'iso8859-6', 'iso8859-6'] ) ), ( 'When the database encoding is ISO_8859_7', dict( - db_encoding='ISO_8859_7', - expected_return_value=['ISO_8859_7', 'iso8859_7', 'iso8859_7'] + db_encoding='iso8859_7', + expected_return_value=['ISO_8859_7', 'iso8859-7', 'iso8859-7'] ) ), ( 'When the database encoding is ISO_8859_8', dict( - db_encoding='ISO_8859_8', - expected_return_value=['ISO_8859_8', 'iso8859_8', 'iso8859_8'] + db_encoding='iso8859_8', + expected_return_value=['ISO_8859_8', 'iso8859-8', 'iso8859-8'] ) ), ( 'When the database encoding is KOI8R', dict( - db_encoding='KOI8R', - expected_return_value=['KOI8R', 'koi8_r', 'koi8_r'] + db_encoding='koi8_r', + expected_return_value=['KOI8R', 'koi8-r', 'koi8-r'] ) ), ( 'When the database encoding is KOI8U', dict( - db_encoding='KOI8U', - expected_return_value=['KOI8U', 'koi8_u', 'koi8_u'] + db_encoding='koi8_u', + expected_return_value=['KOI8U', 'koi8-u', 'koi8-u'] ) ), ( 'When the database encoding is WIN866', dict( - db_encoding='WIN866', + db_encoding='cp866', expected_return_value=['WIN866', 'cp866', 'cp866'] ) ), ( 'When the database encoding is WIN874', dict( - db_encoding='WIN874', + db_encoding='cp874', expected_return_value=['WIN874', 'cp874', 'cp874'] ) ), @@ -224,4 +217,5 @@ class TestEncoding(BaseTestGenerator): def runTest(self): result = get_encoding(self.db_encoding) + print("result===", result) self.assertEqual(result, self.expected_return_value) diff --git a/web/regression/python_test_utils/sql_template_test_base.py b/web/regression/python_test_utils/sql_template_test_base.py index 6bb9d5a51..2a448c90e 100644 --- a/web/regression/python_test_utils/sql_template_test_base.py +++ b/web/regression/python_test_utils/sql_template_test_base.py @@ -31,7 +31,10 @@ class SQLTemplateTestBase(BaseTestGenerator): # To be implemented by child classes pass - def generate_sql(self, version): + def get_server_version(self, connection): + return connection.info.server_version + + def generate_sql(self, connection): # To be implemented by child classes pass @@ -50,7 +53,7 @@ class SQLTemplateTestBase(BaseTestGenerator): cursor = connection.cursor() self.test_setup(connection, cursor) - sql = self.generate_sql(connection.server_version) + sql = self.generate_sql(connection) cursor = connection.cursor() cursor.execute(sql) diff --git a/web/regression/python_test_utils/test_utils.py b/web/regression/python_test_utils/test_utils.py index f94c20ab0..e93f2d3d8 100644 --- a/web/regression/python_test_utils/test_utils.py +++ b/web/regression/python_test_utils/test_utils.py @@ -12,7 +12,6 @@ import traceback import os import sys import uuid -import psycopg2 import sqlite3 import shutil from functools import partial @@ -41,6 +40,8 @@ from pgadmin.utils import set_binary_path from functools import wraps +import psycopg + CURRENT_PATH = os.path.abspath(os.path.join(os.path.dirname( os.path.realpath(__file__)), "../")) @@ -51,8 +52,8 @@ file_name = os.path.realpath(__file__) def get_db_connection(db, username, password, host, port, sslmode="prefer"): """This function returns the connection object of psycopg""" - connection = psycopg2.connect( - database=db, + connection = psycopg.connect( + dbname=db, user=username, password=password, host=host, @@ -62,6 +63,19 @@ def get_db_connection(db, username, password, host, port, sslmode="prefer"): return connection +def get_server_version(connection): + return connection.info.server_version + + +def set_isolation_level(connection, level): + if level == 0: + connection.rollback() + connection.autocommit = True + else: + connection.autocommit = False + connection.isolation_level = level + + def login_tester_account(tester): """ This function login the test client using env variables email and password @@ -141,7 +155,8 @@ def create_database(server, db_name, encoding=None): server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) + connection.autocommit = True pg_cursor = connection.cursor() if encoding is None: pg_cursor.execute( @@ -151,7 +166,8 @@ def create_database(server, db_name, encoding=None): '''CREATE DATABASE "%s" TEMPLATE template0 ENCODING='%s' LC_COLLATE='%s' LC_CTYPE='%s' ''' % (db_name, encoding[0], encoding[1], encoding[1])) - connection.set_isolation_level(old_isolation_level) + connection.autocommit = False + set_isolation_level(connection, old_isolation_level) connection.commit() # Get 'oid' from newly created database @@ -188,7 +204,7 @@ def create_table(server, db_name, table_name, extra_columns=[]): server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) extra_columns_sql = ", " + ", ".join(extra_columns) \ if len(extra_columns) > 0 else '' @@ -210,7 +226,7 @@ def create_table(server, db_name, table_name, extra_columns=[]): VALUES ('Yet-Another-Name', 14, 'cool info')''' % table_name) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() except Exception: @@ -267,10 +283,10 @@ def create_table_with_query(server, db_name, query): server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute(query) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() except Exception: @@ -292,14 +308,14 @@ def create_constraint(server, server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute(''' ALTER TABLE "%s" ADD CONSTRAINT "%s" %s (some_column) ''' % (table_name, constraint_name, constraint_type.upper())) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() except Exception: @@ -329,7 +345,7 @@ def create_type(server, db_name, type_name, type_fields=[]): server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) type_fields_sql = ", ".join(type_fields) @@ -337,7 +353,7 @@ def create_type(server, db_name, type_name, type_fields=[]): pg_cursor.execute( '''CREATE TYPE %s AS (%s)''' % (type_name, type_fields_sql)) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() except Exception: @@ -355,7 +371,7 @@ def create_debug_function(server, db_name, function_name="test_func"): server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() try: pg_cursor.execute('''CREATE EXTENSION pldbgapi;''') @@ -376,7 +392,7 @@ def create_debug_function(server, db_name, function_name="test_func"): END; $function$; ''' % function_name) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() except Exception: @@ -394,12 +410,12 @@ def drop_debug_function(server, db_name, function_name="test_func"): server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute(''' DROP FUNCTION public."%s"(); ''' % function_name) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() except Exception: @@ -438,14 +454,14 @@ def grant_role(server, db_name, role_name="test_role", server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() sql_query = '''GRANT "%s" TO %s;''' % (grant_role, role_name) pg_cursor.execute( sql_query ) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() except Exception: @@ -463,7 +479,7 @@ def create_role(server, db_name, role_name="test_role"): server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() sql_query = ''' CREATE USER "%s" WITH @@ -473,13 +489,13 @@ def create_role(server, db_name, role_name="test_role"): CREATEDB NOCREATEROLE ''' % (role_name) - if connection.server_version > 90100: + if get_server_version(connection) > 90100: sql_query += '\nNOREPLICATION' pg_cursor.execute( sql_query ) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() except Exception: @@ -497,12 +513,12 @@ def drop_role(server, db_name, role_name="test_role"): server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute(''' DROP USER "%s" ''' % role_name) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() except Exception: @@ -513,7 +529,7 @@ def drop_database(connection, database_name): """This function used to drop the database""" if database_name not in ["postgres", "template1", "template0"]: pg_cursor = connection.cursor() - if connection.server_version >= 90100: + if connection.info.server_version >= 90100: pg_cursor.execute( "SELECT pg_terminate_backend(pg_stat_activity.pid) " "FROM pg_stat_activity " @@ -531,9 +547,9 @@ def drop_database(connection, database_name): " db.datname='%s'" % database_name) if pg_cursor.fetchall(): old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor.execute('''DROP DATABASE "%s"''' % database_name) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() @@ -543,7 +559,7 @@ def drop_database_multiple(connection, database_names): for database_name in database_names: if database_name not in ["postgres", "template1", "template0"]: pg_cursor = connection.cursor() - if connection.server_version >= 90100: + if test_utils.get_server_version(connection) >= 90100: pg_cursor.execute( "SELECT pg_terminate_backend(pg_stat_activity.pid) " "FROM pg_stat_activity " @@ -561,9 +577,9 @@ def drop_database_multiple(connection, database_names): " db.datname='%s'" % database_name) if pg_cursor.fetchall(): old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor.execute('''DROP DATABASE "%s"''' % database_name) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() @@ -577,9 +593,9 @@ def drop_tablespace(connection): for table_space in table_spaces: if table_space[0] not in ["pg_default", "pg_global"]: old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor.execute("DROP TABLESPACE %s" % table_space[0]) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() connection.close() @@ -1121,11 +1137,11 @@ def create_schema(server, db_name, schema_name): server['sslmode'] ) old_isolation_level = connection.isolation_level - connection.set_isolation_level(0) + set_isolation_level(connection, 0) pg_cursor = connection.cursor() pg_cursor.execute( '''CREATE SCHEMA "%s"''' % schema_name) - connection.set_isolation_level(old_isolation_level) + set_isolation_level(connection, old_isolation_level) connection.commit() except Exception: @@ -1186,7 +1202,7 @@ def check_binary_path_or_skip_test(cls, utility_name): def get_driver_version(): - version = getattr(psycopg2, '__version__', None) + version = getattr(psycopg, '__version__', None) return version diff --git a/web/regression/re_sql/tests/test_resql.py b/web/regression/re_sql/tests/test_resql.py index cc3dd1474..8b4d3db7b 100644 --- a/web/regression/re_sql/tests/test_resql.py +++ b/web/regression/re_sql/tests/test_resql.py @@ -272,6 +272,10 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator): try: self.assertEqual(response.status_code, 200) except Exception as e: + response = self.tester.post(create_url, + data=json.dumps( + scenario['data']), + content_type='html/json') self.final_test_status = False print(scenario['name'] + "... FAIL") traceback.print_exc() @@ -307,6 +311,11 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator): self.assertEqual(response.status_code, 200) except Exception as e: self.final_test_status = False + alter_url = self.get_url(scenario['endpoint'], object_id) + response = self.tester.put(alter_url, + data=json.dumps( + scenario['data']), + follow_redirects=True) print(scenario['name'] + "... FAIL") traceback.print_exc() continue @@ -495,7 +504,6 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator): try: self.assertEqual(response.status_code, 200) except Exception as e: - self.final_test_status = False traceback.print_exc() return False @@ -524,6 +532,8 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator): try: self.assertEqual(sql, resp_sql) except Exception as e: + print(sql) + print(resp_sql) self.final_test_status = False traceback.print_exc() return False diff --git a/web/regression/runtests.py b/web/regression/runtests.py index a008c3119..80646b48e 100644 --- a/web/regression/runtests.py +++ b/web/regression/runtests.py @@ -489,7 +489,7 @@ def execute_test(test_module_list_passed, server_passed, driver_passed, ) # Add the server version in server information - server_information['server_version'] = connection.server_version + server_information['server_version'] = connection.info.server_version server_information['type'] = server_passed['type'] # Drop the database if already exists.