Skip to content

Commit 8e0d587

Browse files
authored
Merge branch 'codefori:main' into fix/token_tests
2 parents 788111a + 7cc1671 commit 8e0d587

File tree

4 files changed

+67
-3
lines changed

4 files changed

+67
-3
lines changed

package.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,11 @@
363363
"title": "Get Authorities",
364364
"category": "Db2 for i"
365365
},
366+
{
367+
"command": "vscode-db2i.getObjectLocks",
368+
"title": "Get Object Locks",
369+
"category": "Db2 for i"
370+
},
366371
{
367372
"command": "vscode-db2i.clearData",
368373
"title": "Clear...",
@@ -963,6 +968,11 @@
963968
"when": "viewItem == table || viewItem == view || viewItem == alias || viewItem == constraint || viewItem == function || viewItem == variable || viewItem == index || viewItem == procedure || viewItem == sequence || viewItem == package || viewItem == trigger || viewItem == type",
964969
"group": "db2workWith@4"
965970
},
971+
{
972+
"command": "vscode-db2i.getObjectLocks",
973+
"when": "viewItem == table || viewItem == view || viewItem == alias || viewItem == constraint || viewItem == function || viewItem == variable || viewItem == index || viewItem == procedure || viewItem == sequence || viewItem == package || viewItem == trigger || viewItem == type",
974+
"group": "db2workWith@5"
975+
},
966976
{
967977
"command": "vscode-db2i.clearData",
968978
"when": "viewItem == table",

src/views/schemaBrowser/contributes.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@
5454
"title": "Get Authorities",
5555
"category": "Db2 for i"
5656
},
57+
{
58+
"command": "vscode-db2i.getObjectLocks",
59+
"title": "Get Object Locks",
60+
"category": "Db2 for i"
61+
},
5762
{
5863
"command": "vscode-db2i.clearData",
5964
"title": "Clear...",
@@ -167,6 +172,11 @@
167172
"when": "viewItem == table || viewItem == view || viewItem == alias || viewItem == constraint || viewItem == function || viewItem == variable || viewItem == index || viewItem == procedure || viewItem == sequence || viewItem == package || viewItem == trigger || viewItem == type",
168173
"group": "db2workWith@4"
169174
},
175+
{
176+
"command": "vscode-db2i.getObjectLocks",
177+
"when": "viewItem == table || viewItem == view || viewItem == alias || viewItem == function || viewItem == variable || viewItem == index || viewItem == procedure || viewItem == sequence || viewItem == package || viewItem == trigger || viewItem == type",
178+
"group": "db2workWith@5"
179+
},
170180
{
171181
"command": "vscode-db2i.clearData",
172182
"when": "viewItem == table",

src/views/schemaBrowser/index.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Configuration from "../../configuration";
1010
import Types from "../types";
1111
import Statement from "../../database/statement";
1212
import { getCopyUi } from "./copyUI";
13-
import { getAdvisedIndexesStatement, getIndexesStatement, getMTIStatement, getAuthoritiesStatement } from "./statements";
13+
import { getAdvisedIndexesStatement, getIndexesStatement, getMTIStatement, getAuthoritiesStatement, getObjectLocksStatement } from "./statements";
1414

1515
const viewItem = {
1616
"tables": `table`,
@@ -197,7 +197,18 @@ export default class schemaBrowser {
197197
});
198198
}
199199
}),
200-
200+
201+
vscode.commands.registerCommand(`vscode-db2i.getObjectLocks`, async (object: SQLObject) => {
202+
if (object) {
203+
const content = getObjectLocksStatement(object.schema, object.name, object.type.toUpperCase(), object.tableType);
204+
vscode.commands.executeCommand(`vscode-db2i.runEditorStatement`, {
205+
content,
206+
qualifier: `statement`,
207+
open: false,
208+
});
209+
}
210+
}),
211+
201212
vscode.commands.registerCommand(`vscode-db2i.advisedIndexes`, async (object: SQLObject|SchemaItem) => { //table
202213
if (object) {
203214
let content: string|undefined;

src/views/schemaBrowser/statements.ts

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,40 @@ export function getAuthoritiesStatement(schema: string, table: string, objectTyp
264264
if (objectType === 'TABLE' && tableType != 'T') {
265265
sql += ` and object_type = '*FILE'`;
266266
} else {
267-
sql += ` and sql_object_type = '${objectType}'`;
267+
sql += ` and sql_object_type = '${objectType}'`;
268268
}
269269
return sql;
270+
}
271+
272+
export function getObjectLocksStatement(schema: string, table: string, objectType: string, tableType: string): string {
273+
let sql: string = `
274+
select
275+
system_table_member "Member",
276+
member_lock_type "Member Lock Type",
277+
lock_state "Lock State",
278+
lock_status "Lock Status",
279+
lock_scope "Scope",
280+
substr(job_name, locate_in_string(job_name, '/', -1) + 1) "Job Name",
281+
substr(job_name, locate_in_string(job_name, '/', 1) + 1, locate_in_string(job_name, '/', -1) - locate_in_string(job_name, '/', 1) - 1) "Job User",
282+
substr(job_name, 1, locate_in_string(job_name, '/', 1) - 1) "Job Number",
283+
thread_id "Thread",
284+
lock_space_id "Lock Space",
285+
lock_count "Lock Count",
286+
program_library_name "Program Library",
287+
program_name "Program Name",
288+
module_library_name "Module Library",
289+
module_name "Module Name",
290+
procedure_name "Procedure Name",
291+
statement_id "Statement ID",
292+
machine_instruction "Instruction"
293+
from qsys2.object_lock_info
294+
where object_schema = '${schema}'
295+
and object_name = '${table}'
296+
`;
297+
if (objectType === 'TABLE' && tableType != 'T') {
298+
sql += ` and object_type = '*FILE'`;
299+
} else {
300+
sql += ` and sql_object_type = '${objectType.toUpperCase()}'`;
301+
}
302+
return sql;
270303
}

0 commit comments

Comments
 (0)