@@ -13,6 +13,8 @@ import { JobManager } from "../../../config";
1313import { SelfCodeNode , SelfIleStackFrame } from "./nodes" ;
1414import { openExampleCommand } from "../../examples/exampleBrowser" ;
1515import { SQLExample } from "../../examples" ;
16+ import { JobInfo } from "../../../connection/manager" ;
17+ import { JobStatus } from "../../../connection/sqlJob" ;
1618
1719type 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