*
* This assumes that all queries are synchronous (non-overlapping)
*
- * @param string $query Function name or generalized SQL
+ * @param string|GeneralizedSql $query Function name or generalized SQL
* @param float $sTime Starting UNIX wall time
* @param bool $isWrite Whether this is a write query
* @param int $n Number of affected/read rows
if ( $isWrite && $n > $this->expect['maxAffected'] ) {
$this->logger->warning(
- "Query affected $n row(s):\n" . $query . "\n" .
+ "Query affected $n row(s):\n" . self::queryString( $query ) . "\n" .
( new RuntimeException() )->getTraceAsString() );
} elseif ( !$isWrite && $n > $this->expect['readQueryRows'] ) {
$this->logger->warning(
- "Query returned $n row(s):\n" . $query . "\n" .
+ "Query returned $n row(s):\n" . self::queryString( $query ) . "\n" .
( new RuntimeException() )->getTraceAsString() );
}
$trace = '';
foreach ( $this->dbTrxMethodTimes[$name] as $i => $info ) {
list( $query, $sTime, $end ) = $info;
- $trace .= sprintf( "%d\t%.6f\t%s\n", $i, ( $end - $sTime ), $query );
+ $trace .= sprintf(
+ "%d\t%.6f\t%s\n", $i, ( $end - $sTime ), self::queryString( $query ) );
}
$this->logger->warning( "Sub-optimal transaction on DB(s) [{dbs}]: \n{trace}", [
'dbs' => implode( ', ', array_keys( $this->dbTrxHoldingLocks[$name]['conns'] ) ),
/**
* @param string $expect
- * @param string $query
+ * @param string|GeneralizedSql $query
* @param string|float|int $actual
*/
protected function reportExpectationViolated( $expect, $query, $actual ) {
'max' => $this->expect[$expect],
'by' => $this->expectBy[$expect],
'actual' => $actual,
- 'query' => $query
+ 'query' => self::queryString( $query )
]
);
}
+
+ /**
+ * @param GeneralizedSql|string $query
+ * @return string
+ */
+ private static function queryString( $query ) {
+ return $query instanceof GeneralizedSql ? $query->stringify() : $query;
+ }
}