Fixed an issue where Transaction IDs were not found in session in the Query Tool. #5453

This commit is contained in:
Aditya Toshniwal
2022-12-05 10:48:42 +05:30
committed by GitHub
parent 4ab06b4a2a
commit be011a4f3d
3 changed files with 29 additions and 11 deletions

View File

@@ -803,7 +803,9 @@ class ServerNode(PGChildNodeView):
shared=server.shared, shared=server.shared,
user_id=server.user_id, user_id=server.user_id,
user=manager.user_info if connected else None, user=manager.user_info if connected else None,
server_type='pg' # default server type server_type='pg', # default server type
user_name=server.username,
role=server.role,
) )
) )

View File

@@ -321,6 +321,8 @@ def panel(trans_id):
params['server_name'] = underscore_escape(s.name) params['server_name'] = underscore_escape(s.name)
if 'user' not in params: if 'user' not in params:
params['user'] = underscore_escape(s.username) params['user'] = underscore_escape(s.username)
if 'role' not in params and s.role:
params['role'] = underscore_escape(s.role)
params['layout'] = get_setting('SQLEditor/Layout') params['layout'] = get_setting('SQLEditor/Layout')
params['macros'] = get_user_macros() params['macros'] = get_user_macros()
params['is_desktop_mode'] = current_app.PGADMIN_RUNTIME params['is_desktop_mode'] = current_app.PGADMIN_RUNTIME
@@ -371,7 +373,7 @@ def initialize_sqleditor(trans_id, sgid, sid, did=None):
kwargs = { kwargs = {
'user': data['user'] if 'user' in data else None, 'user': data['user'] if 'user' in data else None,
'role': data['role'] if 'role' in data else None, 'role': data['role'] if 'role' in data else None,
'password': None 'password': data['password'] if 'password' in data else None
} }
is_error, errmsg, conn_id, version = _init_sqleditor( is_error, errmsg, conn_id, version = _init_sqleditor(

View File

@@ -89,6 +89,7 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
current_file: null, current_file: null,
obtaining_conn: true, obtaining_conn: true,
connected: false, connected: false,
connected_once: false,
connection_status: null, connection_status: null,
connection_status_msg: '', connection_status_msg: '',
params: { params: {
@@ -125,7 +126,7 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
/* Connection status poller */ /* Connection status poller */
let pollTime = qtState.preferences.sqleditor.connection_status_fetch_time > 0 let pollTime = qtState.preferences.sqleditor.connection_status_fetch_time > 0
&& !qtState.obtaining_conn && qtState.preferences?.sqleditor?.connection_status ? && !qtState.obtaining_conn && qtState.connected_once && qtState.preferences?.sqleditor?.connection_status ?
qtState.preferences.sqleditor.connection_status_fetch_time*1000 : -1; qtState.preferences.sqleditor.connection_status_fetch_time*1000 : -1;
/* No need to poll when the query is executing. Query poller will the txn status */ /* No need to poll when the query is executing. Query poller will the txn status */
if(qtState.connection_status === CONNECTION_STATUS.TRANSACTION_STATUS_ACTIVE && qtState.connected) { if(qtState.connection_status === CONNECTION_STATUS.TRANSACTION_STATUS_ACTIVE && qtState.connected) {
@@ -241,7 +242,7 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
} }
}; };
const initializeQueryTool = ()=>{ const initializeQueryTool = (password)=>{
let selectedConn = _.find(qtState.connection_list, (c)=>c.is_selected); let selectedConn = _.find(qtState.connection_list, (c)=>c.is_selected);
let baseUrl = ''; let baseUrl = '';
if(qtState.params.is_query_tool) { if(qtState.params.is_query_tool) {
@@ -262,18 +263,20 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
api.post(baseUrl, qtState.params.is_query_tool ? { api.post(baseUrl, qtState.params.is_query_tool ? {
user: qtState.params.user, user: qtState.params.user,
role: qtState.params.role, role: qtState.params.role,
password: password
} : JSON.stringify(qtState.params.sql_filter)) } : JSON.stringify(qtState.params.sql_filter))
.then(()=>{ .then(()=>{
setQtState({ setQtState({
connected: true, connected: true,
connected_once: true,
obtaining_conn: false, obtaining_conn: false,
}); });
if(!qtState.params.is_query_tool) { if(!qtState.params.is_query_tool) {
eventBus.current.fireEvent(QUERY_TOOL_EVENTS.TRIGGER_EXECUTION); eventBus.current.fireEvent(QUERY_TOOL_EVENTS.TRIGGER_EXECUTION);
} }
}).catch((err)=>{ }).catch((error)=>{
if(err.response?.request?.responseText?.search('Ticket expired') !== -1) { if(error.response?.request?.responseText?.search('Ticket expired') !== -1) {
Kerberos.fetch_ticket() Kerberos.fetch_ticket()
.then(()=>{ .then(()=>{
initializeQueryTool(); initializeQueryTool();
@@ -285,12 +288,23 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
}); });
eventBus.current.fireEvent(QUERY_TOOL_EVENTS.HANDLE_API_ERROR, kberr); eventBus.current.fireEvent(QUERY_TOOL_EVENTS.HANDLE_API_ERROR, kberr);
}); });
} else if(error?.response?.status == 428) {
connectServerModal(error.response?.data?.result, (passwordData)=>{
initializeQueryTool(passwordData.password);
}, ()=>{
setQtState({
connected: false,
obtaining_conn: false,
connection_status_msg: gettext('Not Connected'),
});
});
} else {
setQtState({
connected: false,
obtaining_conn: false,
});
eventBus.current.fireEvent(QUERY_TOOL_EVENTS.HANDLE_API_ERROR, error);
} }
setQtState({
connected: false,
obtaining_conn: false,
});
eventBus.current.fireEvent(QUERY_TOOL_EVENTS.HANDLE_API_ERROR, err);
}); });
}; };