diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py index 7dd3d5e7..0a26693a 100644 --- a/web/pgadmin/tools/sqleditor/__init__.py +++ b/web/pgadmin/tools/sqleditor/__init__.py @@ -26,14 +26,14 @@ from pgadmin.utils.sqlautocomplete.autocomplete import SQLAutoComplete from pgadmin.misc.file_manager import Filemanager -from config import PG_DEFAULT_DRIVER, SERVER_MODE +from config import PG_DEFAULT_DRIVER MODULE_NAME = 'sqleditor' -# import unquote from urlib for python2.x and python3.x +# import unquote from urllib for python2.x and python3.x try: from urllib import unquote -except Exception as e: +except ImportError: from urllib.parse import unquote # Async Constants @@ -476,8 +476,6 @@ def poll(trans_id): status, result = conn.poll() if status == ASYNC_OK: status = 'Success' - if 'primary_keys' in session_obj: - primary_keys = session_obj['primary_keys'] rows_affected = conn.rows_affected() # if transaction object is instance of QueryToolCommand @@ -500,11 +498,10 @@ def poll(trans_id): status = 'NotConnected' result = error_msg - """ - Procedure/Function output may comes in the form of Notices from the - database server, so we need to append those outputs with the - original result. - """ + # Procedure/Function output may comes in the form of Notices from the + # database server, so we need to append those outputs with the + # original result. + if status == 'Success' and result is None: result = conn.status_message() messages = conn.messages() @@ -549,31 +546,26 @@ def fetch_pg_types(trans_id): status, error_msg, conn, trans_obj, session_obj = check_transaction_status(trans_id) if status and conn is not None \ and trans_obj is not None and session_obj is not None: - - # List of oid for which we need type name from pg_type - oid = '' res = {} if 'columns_info' in session_obj \ and session_obj['columns_info'] is not None: - for col in session_obj['columns_info']: - type_obj = session_obj['columns_info'][col] - oid += str(type_obj['type_code']) + ',' - - # Remove extra comma - oid = oid[:-1] - status, res = conn.execute_dict( - """SELECT oid, format_type(oid,null) as typname FROM pg_type WHERE oid IN ({0}) ORDER BY oid; -""".format(oid)) - - if status: - # iterate through pg_types and update the type name in session object - for record in res['rows']: - for col in session_obj['columns_info']: - type_obj = session_obj['columns_info'][col] - if type_obj['type_code'] == record['oid']: - type_obj['type_name'] = record['typname'] - - update_session_grid_transaction(trans_id, session_obj) + + oid = [session_obj['columns_info'][col]['type_code'] for col in session_obj['columns_info']] + + if oid: + status, res = conn.execute_dict( + u"""SELECT oid, format_type(oid,null) as typname FROM pg_type WHERE oid IN (%s) ORDER BY oid; +""", tuple(oid)) + + if status: + # iterate through pg_types and update the type name in session object + for record in res['rows']: + for col in session_obj['columns_info']: + type_obj = session_obj['columns_info'][col] + if type_obj['type_code'] == record['oid']: + type_obj['type_name'] = record['typname'] + + update_session_grid_transaction(trans_id, session_obj) else: status = False res = error_msg @@ -604,8 +596,10 @@ def save(trans_id): # If there is no primary key found then return from the function. if len(session_obj['primary_keys']) <= 0 or len(changed_data) <= 0: return make_json_response( - data={'status': False, - 'result': gettext('No primary key found for this object, so unable to save records.')} + data={ + 'status': False, + 'result': gettext('No primary key found for this object, so unable to save records.') + } ) status, res, query_res, _rowid = trans_obj.save(changed_data) @@ -615,11 +609,13 @@ def save(trans_id): query_res = None return make_json_response( - data={ 'status': status, - 'result': res, - 'query_result': query_res, - '_rowid': _rowid } - ) + data={ + 'status': status, + 'result': res, + 'query_result': query_res, + '_rowid': _rowid + } + ) @blueprint.route('/filter/get/', methods=["GET"])