X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Flibs%2Frdbms%2FTransactionProfiler.php;h=c89820d3abd61fc758ce0d25123ab1a172feee7b;hp=e4dad01dda3fbfb7c7899f7b365f8c446d32d8c2;hb=e0cc49ce3971e19;hpb=9ef78ab4c18ccb352043b87f371cc0a642f0166c diff --git a/includes/libs/rdbms/TransactionProfiler.php b/includes/libs/rdbms/TransactionProfiler.php index e4dad01dda..c89820d3ab 100644 --- a/includes/libs/rdbms/TransactionProfiler.php +++ b/includes/libs/rdbms/TransactionProfiler.php @@ -218,7 +218,7 @@ class TransactionProfiler implements LoggerAwareInterface { * * 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 @@ -229,11 +229,11 @@ class TransactionProfiler implements LoggerAwareInterface { 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() ); } @@ -341,7 +341,8 @@ class TransactionProfiler implements LoggerAwareInterface { $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'] ) ), @@ -354,7 +355,7 @@ class TransactionProfiler implements LoggerAwareInterface { /** * @param string $expect - * @param string $query + * @param string|GeneralizedSql $query * @param string|float|int $actual */ protected function reportExpectationViolated( $expect, $query, $actual ) { @@ -370,8 +371,16 @@ class TransactionProfiler implements LoggerAwareInterface { '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; + } }