diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py index 0fdf33572..e2826f638 100644 --- a/web/pgadmin/tools/sqleditor/__init__.py +++ b/web/pgadmin/tools/sqleditor/__init__.py @@ -52,7 +52,8 @@ from pgadmin.tools.sqleditor.utils.macros import get_macros,\ get_user_macros, set_macros from pgadmin.utils.constants import MIMETYPE_APP_JS, \ SERVER_CONNECTION_CLOSED, ERROR_MSG_TRANS_ID_NOT_FOUND, \ - ERROR_FETCHING_DATA, MY_STORAGE, ACCESS_DENIED_MESSAGE + ERROR_FETCHING_DATA, MY_STORAGE, ACCESS_DENIED_MESSAGE, \ + ERROR_MSG_FAIL_TO_PROMOTE_QT from pgadmin.model import Server, ServerGroup from pgadmin.tools.schema_diff.node_registry import SchemaDiffRegistry from pgadmin.settings import get_setting @@ -872,24 +873,11 @@ def start_query_tool(trans_id): ) connect = 'connect' in request.args and request.args['connect'] == '1' - if 'gridData' in session and str(trans_id) in session['gridData']: - data = pickle.loads(session['gridData'][str(trans_id)]['command_obj']) - if data.object_type == 'table': - manager = get_driver(PG_DEFAULT_DRIVER).connection_manager( - data.sid) - default_conn = manager.connection(conn_id=data.conn_id, - did=data.did) - kwargs = { - 'user': default_conn.manager.user, - 'role': default_conn.manager.role, - 'password': default_conn.manager.password, - 'conn_id': data.conn_id - } - is_error, errmsg, conn_id, version = _init_sqleditor( - trans_id, connect, data.sgid, data.sid, data.did, **kwargs) - - if is_error: - return errmsg + is_error, errmsg = check_and_upgrade_to_qt(trans_id, connect) + if is_error: + return make_json_response(success=0, errormsg=errmsg, + info=ERROR_MSG_FAIL_TO_PROMOTE_QT, + status=404) return StartRunningQuery(blueprint, current_app.logger).execute( sql, trans_id, session, connect @@ -1734,6 +1722,29 @@ def get_object_name(trans_id): return make_json_response(data={'status': status, 'result': res}) +def check_and_upgrade_to_qt(trans_id, connect): + is_error = False + errmsg = None + + if 'gridData' in session and str(trans_id) in session['gridData']: + data = pickle.loads(session['gridData'][str(trans_id)]['command_obj']) + if data.object_type == 'table': + manager = get_driver(PG_DEFAULT_DRIVER).connection_manager( + data.sid) + default_conn = manager.connection(conn_id=data.conn_id, + did=data.did) + kwargs = { + 'user': default_conn.manager.user, + 'role': default_conn.manager.role, + 'password': default_conn.manager.password, + 'conn_id': data.conn_id + } + is_error, errmsg, conn_id, version = _init_sqleditor( + trans_id, connect, data.sgid, data.sid, data.did, **kwargs) + + return is_error, errmsg + + @blueprint.route( '/auto_commit/', methods=["PUT", "POST"], endpoint='auto_commit' @@ -1751,6 +1762,14 @@ def set_auto_commit(trans_id): else: auto_commit = request.args or request.form + connect = 'connect' in request.args and request.args['connect'] == '1' + + is_error, errmsg = check_and_upgrade_to_qt(trans_id, connect) + if is_error: + return make_json_response(success=0, errormsg=errmsg, + info=ERROR_MSG_FAIL_TO_PROMOTE_QT, + status=404) + # Check the transaction and connection status status, error_msg, conn, trans_obj, session_obj = \ check_transaction_status(trans_id) @@ -1796,6 +1815,14 @@ def set_auto_rollback(trans_id): else: auto_rollback = request.args or request.form + connect = 'connect' in request.args and request.args['connect'] == '1' + + is_error, errmsg = check_and_upgrade_to_qt(trans_id, connect) + if is_error: + return make_json_response(success=0, errormsg=errmsg, + info=ERROR_MSG_FAIL_TO_PROMOTE_QT, + status=404) + # Check the transaction and connection status status, error_msg, conn, trans_obj, session_obj = \ check_transaction_status(trans_id) @@ -1848,6 +1875,14 @@ def auto_complete(trans_id): full_sql = data[0] text_before_cursor = data[1] + connect = 'connect' in request.args and request.args['connect'] == '1' + + is_error, errmsg = check_and_upgrade_to_qt(trans_id, connect) + if is_error: + return make_json_response(success=0, errormsg=errmsg, + info=ERROR_MSG_FAIL_TO_PROMOTE_QT, + status=404) + # Check the transaction and connection status status, error_msg, conn, trans_obj, session_obj = \ check_transaction_status(trans_id, auto_comp=True) diff --git a/web/pgadmin/tools/sqleditor/static/js/components/sections/MainToolBar.jsx b/web/pgadmin/tools/sqleditor/static/js/components/sections/MainToolBar.jsx index c07556ad3..e9e8ded7b 100644 --- a/web/pgadmin/tools/sqleditor/static/js/components/sections/MainToolBar.jsx +++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/MainToolBar.jsx @@ -275,6 +275,7 @@ export function MainToolBar({containerRef, onFilterClick, onManageMacros}) { eventBus.registerListener(QUERY_TOOL_EVENTS.PROMOTE_TO_QUERY_TOOL, ()=>{ setDisableButton('filter', true); + setHighlightFilter(false); setDisableButton('limit', true); setDisableButton('execute', false); diff --git a/web/pgadmin/utils/constants.py b/web/pgadmin/utils/constants.py index cd3ff8d0f..78de6fe6c 100644 --- a/web/pgadmin/utils/constants.py +++ b/web/pgadmin/utils/constants.py @@ -50,6 +50,9 @@ DATATYPE_TIMESTAMP_WITHOUT_TIMEZONE = 'timestamp without time zone' ERROR_MSG_TRANS_ID_NOT_FOUND = gettext( 'Transaction ID not found in the session.') +ERROR_MSG_FAIL_TO_PROMOTE_QT = gettext('FAIL TO PROMOTE VIEW/EDIT DATA ' + 'TO QUERY TOOL') + # Role module constant ERROR_FETCHING_ROLE_INFORMATION = gettext( 'Error fetching role information from the database server.')