From e5eaa7f1eb0cb072d02bc18e23b0daaee875b077 Mon Sep 17 00:00:00 2001 From: Erik Gahlin Date: Tue, 12 Nov 2024 15:34:50 +0000 Subject: [PATCH] 8343946: JFR: Wildcard should only work with COUNT for 'jfr view' Reviewed-by: mgronlun --- .../share/classes/jdk/jfr/internal/query/QueryResolver.java | 4 ++-- src/jdk.jfr/share/classes/jdk/jfr/internal/query/view.ini | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/query/QueryResolver.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/query/QueryResolver.java index cd39fb7b6e8ae..781661a427f2e 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/query/QueryResolver.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/query/QueryResolver.java @@ -144,7 +144,7 @@ private void resolveSelect() throws QueryException { field.aggregator = expression.aggregator(); FieldBuilder.configureAggregator(field); expression.alias().ifPresent(alias -> fieldAliases.put(alias, field)); - if (field.name.equals("*") && field.aggregator != Aggregator.COUNT) { + if (expression.name().equals("*") && field.aggregator != Aggregator.COUNT) { throw new QuerySyntaxException("Wildcard ('*') can only be used with aggregator function COUNT"); } } @@ -259,7 +259,7 @@ private List resolveFields(String name, List types) { List fields = new ArrayList<>(); if (name.equals("*")) { - // Used with COUNT(*) and UNIQUE(*) + // Used with COUNT(*) // All events should have a start time name = "startTime"; } diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/query/view.ini b/src/jdk.jfr/share/classes/jdk/jfr/internal/query/view.ini index b21b99e2dad91..51dc2ca11bff9 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/query/view.ini +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/query/view.ini @@ -178,7 +178,7 @@ table = "COLUMN 'StackTrace', 'Count', 'Avg.', 'Max.' [application.contention-by-address] label = "Contention by Monitor Address" table = "COLUMN 'Monitor Address', 'Class', 'Threads', 'Max Duration' - SELECT address, FIRST(monitorClass), UNIQUE(*), MAX(duration) AS M + SELECT address, FIRST(monitorClass), UNIQUE(eventThread), MAX(duration) AS M FROM JavaMonitorEnter GROUP BY monitorClass ORDER BY M"