# Class SlowQueryReport.QueryStats

java.lang.Object
org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport.QueryStats

Enclosing class:
  `SlowQueryReport`

public static class SlowQueryReport.QueryStats extends Object
Holds timing and invocation statistics for a single SQL query.

## Constructor Summary

Constructors
Constructor
Description
`QueryStats(String query)`
Creates a new QueryStats instance for the given SQL query.

## Method Summary

Modifier and Type
Method
Description
`void`
`add(long invocationTime, long now)`
Records a successful query invocation, updating min/max/total timing statistics.
`boolean`
`equals(Object other)`
`void`
`failure(long invocationTime, long now)`
Records a failed query invocation, updating timing statistics and failure count.
`CompositeDataSupport`
`getCompositeData(CompositeType type)`
Returns the query statistics as JMX CompositeData.
`static String[]`
`getFieldDescriptions()`
Returns the descriptions of the fields in the composite data representation.
`static String[]`
`getFieldNames()`
Returns the names of the fields in the composite data representation.
`static OpenType<?>[]`
`getFieldTypes()`
Returns the JMX OpenType of each field in the composite data representation.
`long`
`getMaxInvocationDate()`
Returns the timestamp when the longest query execution occurred.
`long`
`getMaxInvocationTime()`
Returns the longest time this query took to execute.
`long`
`getMinInvocationDate()`
Returns the timestamp when the shortest query execution occurred.
`long`
`getMinInvocationTime()`
Returns the shortest time this query took to execute.
`int`
`getNrOfInvocations()`
Returns the total number of times this query has been invoked.
`String`
`getQuery()`
Returns the SQL query string for these statistics.
`long`
`getTotalInvocationTime()`
Returns the total time spent executing this query across all invocations.
`int`
`hashCode()`
`boolean`
`isOlderThan(SlowQueryReport.QueryStats other)`
Returns whether this query was last invoked before the given query stats.
`void`
`prepare(long invocationTime)`
Records the time taken to prepare this query.
`String`
`toString()`

### Methods inherited from class Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

## Constructor Details

### QueryStats

public QueryStats(String query)
Creates a new QueryStats instance for the given SQL query.

Parameters:
  `query` - the SQL query string

## Method Details

### getFieldNames

public static String[] getFieldNames()
Returns the names of the fields in the composite data representation.

Returns:
  the field names

### getFieldDescriptions

public static String[] getFieldDescriptions()
Returns the descriptions of the fields in the composite data representation.

Returns:
  the field descriptions

### getFieldTypes

public static OpenType<?>[] getFieldTypes()
Returns the JMX OpenType of each field in the composite data representation.

Returns:
  the field types

### toString

public String toString()

Overrides:
  `toString` in class `Object`

### getCompositeData

public CompositeDataSupport getCompositeData(CompositeType type) throws OpenDataException
Returns the query statistics as JMX CompositeData.

Parameters:
  `type` - the composite type definition
Returns:
  the composite data representation of this query's statistics
Throws:
  `OpenDataException` - if the data cannot be converted

### prepare

public void prepare(long invocationTime)
Records the time taken to prepare this query.

Parameters:
  `invocationTime` - the time in milliseconds to prepare the query

### add

public void add(long invocationTime, long now)
Records a successful query invocation, updating min/max/total timing statistics.

Parameters:
  `invocationTime` - the time in milliseconds the query took
  `now` - the current timestamp in milliseconds

### failure

public void failure(long invocationTime, long now)
Records a failed query invocation, updating timing statistics and failure count.

Parameters:
  `invocationTime` - the time in milliseconds the query took before failing
  `now` - the current timestamp in milliseconds

### getQuery

public String getQuery()
Returns the SQL query string for these statistics.

Returns:
  the SQL query string

### getNrOfInvocations

public int getNrOfInvocations()
Returns the total number of times this query has been invoked.

Returns:
  the number of invocations

### getMaxInvocationTime

public long getMaxInvocationTime()
Returns the longest time this query took to execute.

Returns:
  the maximum invocation time in milliseconds

### getMaxInvocationDate

public long getMaxInvocationDate()
Returns the timestamp when the longest query execution occurred.

Returns:
  the timestamp in milliseconds of the maximum invocation

### getMinInvocationTime

public long getMinInvocationTime()
Returns the shortest time this query took to execute.

Returns:
  the minimum invocation time in milliseconds

### getMinInvocationDate

public long getMinInvocationDate()
Returns the timestamp when the shortest query execution occurred.

Returns:
  the timestamp in milliseconds of the minimum invocation

### getTotalInvocationTime

public long getTotalInvocationTime()
Returns the total time spent executing this query across all invocations.

Returns:
  the total invocation time in milliseconds

### hashCode

public int hashCode()

Overrides:
  `hashCode` in class `Object`

### equals

public boolean equals(Object other)

Overrides:
  `equals` in class `Object`

### isOlderThan

public boolean isOlderThan(SlowQueryReport.QueryStats other)
Returns whether this query was last invoked before the given query stats.

Parameters:
  `other` - the other query statistics to compare against
Returns:
  `true` if this query's last invocation is older