diff --git a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryOptionsImpl.java b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryOptionsImpl.java index b96e128c4b..cafb8efe1e 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/internal/QueryOptionsImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/internal/QueryOptionsImpl.java @@ -102,11 +102,6 @@ public class QueryOptionsImpl implements MutableQueryOptions, AppliedGraph { return limit; } - @Override - public boolean hasQueryExecutionToBeAddedToStatistics() { - return true; - } - @Override public LockOptions getLockOptions() { return lockOptions; diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryOptions.java b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryOptions.java index 8d70fadaed..b17f58d8ee 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/QueryOptions.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/QueryOptions.java @@ -161,15 +161,6 @@ public interface QueryOptions { return explicit != null ? explicit : Limit.NONE; } - /** - * Determine if the query execution has to be considered by the {@link org.hibernate.stat.Statistics}. - * - * @return true if the query execution has to be added to the {@link org.hibernate.stat.Statistics}, false otherwise. - */ - default boolean hasQueryExecutionToBeAddedToStatistics() { - return false; - } - /** * Did the application explicitly request paging limits? * diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/QuerySqmImpl.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/QuerySqmImpl.java index 6139e75781..a4ed8fdb16 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/QuerySqmImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/internal/QuerySqmImpl.java @@ -858,4 +858,10 @@ public class QuerySqmImpl getHints() ); } + + @Override + public boolean hasQueryExecutionToBeAddedToStatistics() { + return !CRITERIA_HQL_STRING.equals( hqlString ); + } + } diff --git a/hibernate-core/src/main/java/org/hibernate/sql/exec/internal/JdbcSelectExecutorStandardImpl.java b/hibernate-core/src/main/java/org/hibernate/sql/exec/internal/JdbcSelectExecutorStandardImpl.java index 6cf7d1f81b..962ec39216 100644 --- a/hibernate-core/src/main/java/org/hibernate/sql/exec/internal/JdbcSelectExecutorStandardImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/sql/exec/internal/JdbcSelectExecutorStandardImpl.java @@ -184,7 +184,7 @@ public class JdbcSelectExecutorStandardImpl implements JdbcSelectExecutor { final boolean stats; long startTime = 0; final StatisticsImplementor statistics = executionContext.getSession().getFactory().getStatistics(); - if ( executionContext.getQueryOptions().hasQueryExecutionToBeAddedToStatistics() + if ( executionContext.hasQueryExecutionToBeAddedToStatistics() && jdbcValues instanceof JdbcValuesResultSetImpl ) { stats = statistics.isStatisticsEnabled(); if ( stats ) { diff --git a/hibernate-core/src/main/java/org/hibernate/sql/exec/spi/ExecutionContext.java b/hibernate-core/src/main/java/org/hibernate/sql/exec/spi/ExecutionContext.java index 9ff2bec687..80a0ae233b 100644 --- a/hibernate-core/src/main/java/org/hibernate/sql/exec/spi/ExecutionContext.java +++ b/hibernate-core/src/main/java/org/hibernate/sql/exec/spi/ExecutionContext.java @@ -74,4 +74,14 @@ public interface ExecutionContext { default void afterStatement(LogicalConnectionImplementor logicalConnection) { logicalConnection.afterStatement(); } + + /** + * Determine if the query execution has to be considered by the {@link org.hibernate.stat.Statistics}. + * + * @return true if the query execution has to be added to the {@link org.hibernate.stat.Statistics}, false otherwise. + */ + default boolean hasQueryExecutionToBeAddedToStatistics() { + return false; + } + }