Skip to content

Commit 1a0b1c2

Browse files
committed
GH-606 add 'Average Time' column for SQL requests
1 parent ae308c5 commit 1a0b1c2

File tree

3 files changed

+35
-13
lines changed

3 files changed

+35
-13
lines changed

visualvm/libs.profiler/lib.profiler.ui/src/org/graalvm/visualvm/lib/ui/jdbc/Bundle.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,14 @@ JDBCView_InvocationsColumnName=Invocations
2727
JDBCView_ColumnCommands=Command Type
2828
JDBCView_ColumnTables=Tables
2929
JDBCView_ColumnStatements=Statement Type
30+
JDBCView_ColumnAverage=Average Time
3031
JDBCView_ColumnToolTip=SQL query and calling methods
3132
JDBCView_TimeColumnToolTip=Time spent in all invocations of the SQL query
3233
JDBCView_InvocationsColumnToolTip=Number of times the SQL query was invoked
3334
JDBCView_ColumnCommandsToolTip=SQL Command Type
3435
JDBCView_ColumnTablesToolTip=Database Tables
3536
JDBCView_ColumnStatementsToolTip=SQL Statement Type
37+
JDBCView_ColumnAverageToolTip=Average time per invocation
3638
JDBCView_OtherCommand=other command
3739
JDBCView_RegularStatement=regular
3840
JDBCView_PreparedStatement=prepared

visualvm/libs.profiler/lib.profiler.ui/src/org/graalvm/visualvm/lib/ui/jdbc/JDBCTreeTableView.java

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ void setData(final JdbcResultsSnapshot newData, final Map<Integer, ClientUtils.S
144144
renderers[1].setMaxValue(__totalObjects);
145145
renderers[0].setDiffMode(diff);
146146
renderers[1].setDiffMode(diff);
147+
timeRenderer.setDiffMode(diff);
147148
treeTableModel.setRoot(PresoObjAllocCCTNode.rootNode(nodes.toArray(new PresoObjAllocCCTNode[0])));
148149

149150
currentData = newData;
@@ -154,6 +155,7 @@ public void resetData() {
154155
renderers[1].setMaxValue(0);
155156
renderers[0].setDiffMode(false);
156157
renderers[1].setDiffMode(false);
158+
timeRenderer.setDiffMode(false);
157159

158160
treeTableModel.setRoot(PresoObjAllocCCTNode.rootNode(new PresoObjAllocCCTNode[0]));
159161

@@ -192,6 +194,7 @@ ExportUtils.ExportProvider[] getExportProviders() {
192194

193195

194196
private HideableBarRenderer[] renderers;
197+
private McsTimeRenderer timeRenderer;
195198

196199
HideableBarRenderer.BarDiffMode barDiffMode() {
197200
return HideableBarRenderer.BarDiffMode.MODE_BAR_DIFF;
@@ -237,6 +240,7 @@ protected void popupHidden() {
237240
renderers[0].setBarDiffMode(barDiffMode);
238241
renderers[1] = new HideableBarRenderer(new NumberRenderer());
239242
renderers[1].setBarDiffMode(barDiffMode);
243+
timeRenderer = new McsTimeRenderer();
240244

241245
long refTime = 123456;
242246
renderers[0].setMaxValue(refTime);
@@ -249,16 +253,18 @@ protected void popupHidden() {
249253
treeTable.setDefaultColumnWidth(1, renderers[0].getOptimalWidth());
250254
treeTable.setDefaultColumnWidth(2, renderers[1].getMaxNoBarWidth());
251255

256+
LabelRenderer tr = new LabelRenderer();
257+
tr.setHorizontalAlignment(LabelRenderer.TRAILING);
258+
tr.setValue("X"+treeTableModel.getColumnName(3)+"X", -1); // NOI18N
259+
treeTable.setColumnRenderer(3, timeRenderer);
260+
treeTable.setDefaultColumnWidth(3, tr.getPreferredSize().width);
261+
treeTable.setColumnVisibility(3, false);
262+
252263
// Debug columns
253264
LabelRenderer lr = new LabelRenderer();
254265
lr.setHorizontalAlignment(LabelRenderer.TRAILING);
255266
lr.setValue("XStatement TypeX", -1);
256267

257-
treeTable.setColumnRenderer(3, lr);
258-
treeTable.setDefaultSortOrder(3, SortOrder.ASCENDING);
259-
treeTable.setDefaultColumnWidth(3, lr.getPreferredSize().width);
260-
treeTable.setColumnVisibility(3, false);
261-
262268
treeTable.setColumnRenderer(4, lr);
263269
treeTable.setDefaultSortOrder(4, SortOrder.ASCENDING);
264270
treeTable.setDefaultColumnWidth(4, lr.getPreferredSize().width);
@@ -269,6 +275,11 @@ protected void popupHidden() {
269275
treeTable.setDefaultColumnWidth(5, lr.getPreferredSize().width);
270276
treeTable.setColumnVisibility(5, false);
271277

278+
treeTable.setColumnRenderer(6, lr);
279+
treeTable.setDefaultSortOrder(6, SortOrder.ASCENDING);
280+
treeTable.setDefaultColumnWidth(6, lr.getPreferredSize().width);
281+
treeTable.setColumnVisibility(6, false);
282+
272283
ProfilerTableContainer tableContainer = new ProfilerTableContainer(treeTable, false, null);
273284

274285
setLayout(new BorderLayout());
@@ -307,7 +318,8 @@ private void setToolTips() {
307318
INVOCATIONS_COLUMN_TOOLTIP,
308319
COMMANDS_COLUMN_TOOLTIP,
309320
TABLES_COLUMN_TOOLTIP,
310-
STATEMENTS_COLUMN_TOOLTIP
321+
STATEMENTS_COLUMN_TOOLTIP,
322+
AVERAGE_COLUMN_TOOLTIP
311323
});
312324
}
313325

@@ -409,11 +421,13 @@ public String getColumnName(int columnIndex) {
409421
return COLUMN_TOTALTIME;
410422
} else if (columnIndex == 2) {
411423
return COLUMN_INVOCATIONS;
412-
} else if (columnIndex == 3) {
413-
return COLUMN_COMMANDS;
424+
} else if (columnIndex == 3) {
425+
return COLUMN_AVEGARE;
414426
} else if (columnIndex == 4) {
415-
return COLUMN_TABLES;
427+
return COLUMN_COMMANDS;
416428
} else if (columnIndex == 5) {
429+
return COLUMN_TABLES;
430+
} else if (columnIndex == 6) {
417431
return COLUMN_STATEMENTS;
418432
}
419433
return null;
@@ -427,17 +441,19 @@ public Class<?> getColumnClass(int columnIndex) {
427441
} else if (columnIndex == 2) {
428442
return Integer.class;
429443
} else if (columnIndex == 3) {
430-
return String.class;
444+
return Long.class;
431445
} else if (columnIndex == 4) {
432446
return String.class;
433447
} else if (columnIndex == 5) {
434448
return String.class;
449+
} else if (columnIndex == 6) {
450+
return String.class;
435451
}
436452
return Long.class;
437453
}
438454

439455
public int getColumnCount() {
440-
return 6;
456+
return 7;
441457
}
442458

443459
public Object getValueAt(TreeNode node, int columnIndex) {
@@ -449,19 +465,21 @@ public Object getValueAt(TreeNode node, int columnIndex) {
449465
} else if (columnIndex == 2) {
450466
return jdbcNode.nCalls;
451467
} else if (columnIndex == 3) {
468+
return jdbcNode.totalObjSize/jdbcNode.nCalls;
469+
} else if (columnIndex == 4) {
452470
if (jdbcNode instanceof SQLQueryNode) {
453471
return commandString(((SQLQueryNode)jdbcNode).getCommandType());
454472
} else {
455473
return "-"; // NOI18N
456474
}
457475

458-
} else if (columnIndex == 4) {
476+
} else if (columnIndex == 5) {
459477
if (jdbcNode instanceof SQLQueryNode) {
460478
return formatTables(((SQLQueryNode)jdbcNode).getTables());
461479
} else {
462480
return "-"; // NOI18N
463481
}
464-
} else if (columnIndex == 5) {
482+
} else if (columnIndex == 6) {
465483
if (jdbcNode instanceof SQLQueryNode) {
466484
switch (((SQLQueryNode)jdbcNode).getStatementType()) {
467485
case JdbcCCTProvider.SQL_PREPARED_STATEMENT: return STATEMENT_PREPARED;

visualvm/libs.profiler/lib.profiler.ui/src/org/graalvm/visualvm/lib/ui/jdbc/JDBCView.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,14 @@ public abstract class JDBCView extends DataView {
4444
static final String COLUMN_COMMANDS = messages.getString("JDBCView_ColumnCommands"); // NOI18N
4545
static final String COLUMN_TABLES = messages.getString("JDBCView_ColumnTables"); // NOI18N
4646
static final String COLUMN_STATEMENTS = messages.getString("JDBCView_ColumnStatements"); // NOI18N
47+
static final String COLUMN_AVEGARE = messages.getString("JDBCView_ColumnAverage"); // NOI18N
4748
static final String NAME_COLUMN_TOOLTIP = messages.getString("JDBCView_ColumnToolTip"); // NOI18N
4849
static final String TOTAL_TIME_COLUMN_TOOLTIP = messages.getString("JDBCView_TimeColumnToolTip"); // NOI18N
4950
static final String INVOCATIONS_COLUMN_TOOLTIP = messages.getString("JDBCView_InvocationsColumnToolTip"); // NOI18N
5051
static final String COMMANDS_COLUMN_TOOLTIP = messages.getString("JDBCView_ColumnCommandsToolTip"); // NOI18N
5152
static final String TABLES_COLUMN_TOOLTIP = messages.getString("JDBCView_ColumnTablesToolTip"); // NOI18N
5253
static final String STATEMENTS_COLUMN_TOOLTIP = messages.getString("JDBCView_ColumnStatementsToolTip"); // NOI18N
54+
static final String AVERAGE_COLUMN_TOOLTIP = messages.getString("JDBCView_ColumnAverageToolTip"); // NOI18N
5355

5456
static final String OTHER_COMMAND = messages.getString("JDBCView_OtherCommand"); // NOI18N
5557

0 commit comments

Comments
 (0)