diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py index 3fbbe84f4..4123491cf 100644 --- a/web/pgadmin/tools/sqleditor/__init__.py +++ b/web/pgadmin/tools/sqleditor/__init__.py @@ -885,6 +885,9 @@ def poll(trans_id): info='DATAGRID_TRANSACTION_REQUIRED', status=404) + if not conn.async_cursor_initialised(): + return make_json_response(data={'status': 'NotInitialised'}) + if status and conn is not None and session_obj is not None: status, result = conn.poll( formatted_exception_msg=True, no_result=True) 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 b833136db..9331a5c77 100644 --- a/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx +++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx @@ -88,6 +88,10 @@ export class ResultSetUtils { return msg; } + static isCursorInitialised(httpMessage) { + return httpMessage.data.data.status === 'NotInitialised'; + } + static isQueryFinished(httpMessage) { return httpMessage.data.data.status === 'Success'; } @@ -302,7 +306,10 @@ export class ResultSetUtils { if(httpMessage.data.data.notifies) { this.eventBus.fireEvent(QUERY_TOOL_EVENTS.PUSH_NOTICE, httpMessage.data.data.notifies); } - if (ResultSetUtils.isQueryFinished(httpMessage)) { + + if (ResultSetUtils.isCursorInitialised(httpMessage)) { + return Promise.resolve(this.pollForResult(onResultsAvailable, onExplain, onPollError)); + } else if (ResultSetUtils.isQueryFinished(httpMessage)) { this.setEndTime(new Date()); msg = this.queryFinished(httpMessage, onResultsAvailable, onExplain); } else if (ResultSetUtils.isQueryStillRunning(httpMessage)) { @@ -828,8 +835,8 @@ export function ResultSet() { }; const executeAndPoll = async ()=>{ - let goForPoll = await yesCallback(); - if (goForPoll) pollCallback(); + yesCallback(); + pollCallback(); }; if(isDataChanged()) { diff --git a/web/pgadmin/utils/driver/psycopg3/connection.py b/web/pgadmin/utils/driver/psycopg3/connection.py index 9e0a225f5..f758602ee 100644 --- a/web/pgadmin/utils/driver/psycopg3/connection.py +++ b/web/pgadmin/utils/driver/psycopg3/connection.py @@ -1352,6 +1352,11 @@ WHERE db.datname = current_database()""") self.conn = None return False + def async_cursor_initialised(self): + if self.__async_cursor: + return True + return False + def _decrypt_password(self, manager): """ Decrypt password