Skip to content

Commit 3fa3311

Browse files
authored
Merge pull request #225 from codefori/fix/self_requests
Fix/self_requests
2 parents 3da0967 + e247e84 commit 3fa3311

File tree

3 files changed

+34
-23
lines changed

3 files changed

+34
-23
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,7 @@
708708
{
709709
"command": "vscode-db2i.self.refresh",
710710
"group": "navigation@1",
711-
"when": "view == vscode-db2i.self.nodes"
711+
"when": "view == vscode-db2i.self.nodes && vscode-db2i:jobManager.hasJob"
712712
},
713713
{
714714
"command": "vscode-db2i.self.enableAutoRefresh",
@@ -723,7 +723,7 @@
723723
{
724724
"command": "vscode-db2i.self.reset",
725725
"group": "navigation@3",
726-
"when": "view == vscode-db2i.self.nodes"
726+
"when": "view == vscode-db2i.self.nodes && vscode-db2i:jobManager.hasJob"
727727
},
728728
{
729729
"command": "vscode-db2i.self.help",

src/views/jobManager/jobManagerView.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,13 +294,14 @@ export class JobManagerView implements TreeDataProvider<any> {
294294
});
295295
}
296296

297-
refresh() {
298-
297+
refresh() {
299298
this._onDidChangeTreeData.fire();
300299
updateStatusBar();
301300

302301
const selectedJob = JobManager.getSelection();
302+
303303
setCancelButtonVisibility(selectedJob && selectedJob.job.getStatus() === JobStatus.Busy);
304+
commands.executeCommand(`setContext`, `vscode-db2i:jobManager.hasJob`, selectedJob !== undefined);
304305
}
305306

306307
getTreeItem(element: vscode.TreeItem) {

src/views/jobManager/selfCodes/selfCodesResultsView.ts

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import { JobManager } from "../../../config";
1313
import { SelfCodeNode, SelfIleStackFrame } from "./nodes";
1414
import { openExampleCommand } from "../../examples/exampleBrowser";
1515
import { SQLExample } from "../../examples";
16+
import { JobInfo } from "../../../connection/manager";
17+
import { JobStatus } from "../../../connection/sqlJob";
1618

1719
type ChangeTreeDataEventType = SelfCodeTreeItem | undefined | null | void;
1820

@@ -65,7 +67,11 @@ export class selfCodesResultsView implements TreeDataProvider<any> {
6567
);
6668
setInterval(async () => {
6769
if (this.autoRefresh) {
68-
this.refresh();
70+
const selected = JobManager.getSelection();
71+
// Don't refresh if the job is busy.
72+
if (selected.job.getStatus() === JobStatus.Ready) {
73+
this.refresh();
74+
}
6975
}
7076
}, 5000);
7177

@@ -80,24 +86,24 @@ export class selfCodesResultsView implements TreeDataProvider<any> {
8086
}
8187
}
8288

83-
async getSelfCodes(): Promise<SelfCodeNode[]> {
84-
const selected = JobManager.getSelection();
85-
if (selected) {
86-
const content = `SELECT
87-
job_name, user_name, reason_code, logged_time, logged_sqlstate, logged_sqlcode, matches, stmttext, message_text, message_second_level_text,
88-
program_library, program_name, program_type, module_name, client_applname, client_programid, initial_stack
89-
FROM qsys2.sql_error_log, lateral (select * from TABLE(SYSTOOLS.SQLCODE_INFO(logged_sqlcode)))
90-
where user_name = current_user
91-
order by logged_time desc`;
92-
93-
const data: SelfCodeNode[] = (await JobManager.runSQL<SelfCodeNode>(content)).map((row) => ({
89+
async getSelfCodes(selected: JobInfo): Promise<SelfCodeNode[]|undefined> {
90+
const content = `SELECT
91+
job_name, user_name, reason_code, logged_time, logged_sqlstate, logged_sqlcode, matches, stmttext, message_text, message_second_level_text,
92+
program_library, program_name, program_type, module_name, client_applname, client_programid, initial_stack
93+
FROM qsys2.sql_error_log, lateral (select * from TABLE(SYSTOOLS.SQLCODE_INFO(logged_sqlcode)))
94+
where user_name = current_user
95+
order by logged_time desc`;
96+
97+
const result = await selected.job.query<SelfCodeNode>(content).run(10000);
98+
if (result.success) {
99+
const data: SelfCodeNode[] = result.data.map((row) => ({
94100
...row,
95101
INITIAL_STACK: JSON.parse(row.INITIAL_STACK as unknown as string)
96102
}));
97103

104+
98105
return data;
99106
}
100-
return;
101107
}
102108

103109
refresh(): void {
@@ -116,13 +122,17 @@ export class selfCodesResultsView implements TreeDataProvider<any> {
116122
return element.getChildren();
117123
}
118124
} else {
119-
const selfCodes = await this.getSelfCodes();
125+
const selected = JobManager.getSelection();
126+
127+
if (selected) {
128+
const selfCodes = await this.getSelfCodes(selected);
120129

121-
if (selfCodes) {
122-
return selfCodes.map((error) => {
123-
const treeItem = new SelfCodeTreeItem(error);
124-
return treeItem;
125-
});
130+
if (selfCodes) {
131+
return selfCodes.map((error) => {
132+
const treeItem = new SelfCodeTreeItem(error);
133+
return treeItem;
134+
});
135+
}
126136
}
127137

128138
return [];

0 commit comments

Comments
 (0)