Skip to content

Commit bc17c67

Browse files
authored
Add query execution time to status bar (#17942)
1 parent 1b20783 commit bc17c67

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/controllers/queryRunner.ts

+1
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ export default class QueryRunner {
247247
this._uriToQueryPromiseMap.delete(result.ownerUri);
248248
}
249249
this._statusView.executedQuery(result.ownerUri);
250+
this._statusView.setExecutionTime(result.ownerUri, Utils.parseNumAsTimeString(this._totalElapsedMilliseconds));
250251
let hasError = this._batchSets.some(batch => batch.hasError === true);
251252
this.removeRunningQuery();
252253
this.eventEmitter.emit('complete', Utils.parseNumAsTimeString(this._totalElapsedMilliseconds), hasError);

src/views/statusView.ts

+16
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ class FileStatusBar {
3535
// Item for Row Count
3636
public rowCount: vscode.StatusBarItem;
3737

38+
// Item for execution time
39+
public executionTime: vscode.StatusBarItem;
40+
3841
public currentLanguageServiceStatus: string;
3942
}
4043

@@ -62,6 +65,7 @@ export default class StatusView implements vscode.Disposable {
6265
this._statusBars[bar].statusLanguageService.dispose();
6366
this._statusBars[bar].sqlCmdMode.dispose();
6467
this._statusBars[bar].rowCount.dispose();
68+
this._statusBars[bar].executionTime.dispose();
6569
clearInterval(this._statusBars[bar].progressTimerId);
6670
delete this._statusBars[bar];
6771
}
@@ -81,6 +85,7 @@ export default class StatusView implements vscode.Disposable {
8185
bar.statusLanguageService = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right);
8286
bar.sqlCmdMode = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 90);
8387
bar.rowCount = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 80);
88+
bar.executionTime = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 70);
8489
this._statusBars[fileUri] = bar;
8590
}
8691

@@ -108,6 +113,9 @@ export default class StatusView implements vscode.Disposable {
108113
if (bar.rowCount) {
109114
bar.rowCount.dispose();
110115
}
116+
if (bar.executionTime) {
117+
bar.executionTime.dispose();
118+
}
111119

112120
delete this._statusBars[fileUri];
113121
}
@@ -197,6 +205,12 @@ export default class StatusView implements vscode.Disposable {
197205
}, 200);
198206
}
199207

208+
public setExecutionTime(fileUri: string, time: string): void {
209+
let bar = this.getStatusBar(fileUri);
210+
bar.executionTime.text = time;
211+
this.showStatusBarItem(fileUri, bar.executionTime);
212+
}
213+
200214
public cancelingQuery(fileUri: string): void {
201215
let bar = this.getStatusBar(fileUri);
202216
bar.statusQuery.hide();
@@ -302,6 +316,7 @@ export default class StatusView implements vscode.Disposable {
302316
this._lastShownStatusBar.statusLanguageService.hide();
303317
this._lastShownStatusBar.sqlCmdMode.hide();
304318
this._lastShownStatusBar.rowCount.hide();
319+
this._lastShownStatusBar.executionTime.hide();
305320
}
306321
}
307322

@@ -318,6 +333,7 @@ export default class StatusView implements vscode.Disposable {
318333
this.showStatusBarItem(fileUri, bar.statusLanguageService);
319334
this.showStatusBarItem(fileUri, bar.sqlCmdMode);
320335
this.showStatusBarItem(fileUri, bar.rowCount);
336+
this.showStatusBarItem(fileUri, bar.executionTime);
321337
}
322338
}
323339
}

0 commit comments

Comments
 (0)