/** @var string|null */
protected $sslCertPath;
/** @var string|null */
+ protected $sslCAFile;
+ /** @var string|null */
protected $sslCAPath;
/** @var string[]|null */
protected $sslCiphers;
* - useGTIDs : use GTID methods like MASTER_GTID_WAIT() when possible.
* - sslKeyPath : path to key file [default: null]
* - sslCertPath : path to certificate file [default: null]
- * - sslCAPath : parth to certificate authority PEM files [default: null]
+ * - sslCAFile: path to a single certificate authority PEM file [default: null]
+ * - sslCAPath : parth to certificate authority PEM directory [default: null]
* - sslCiphers : array list of allowable ciphers [default: null]
* @param array $params
*/
? $params['lagDetectionOptions']
: [];
$this->useGTIDs = !empty( $params['useGTIDs' ] );
- foreach ( [ 'KeyPath', 'CertPath', 'CAPath', 'Ciphers' ] as $name ) {
+ foreach ( [ 'KeyPath', 'CertPath', 'CAFile', 'CAPath', 'Ciphers' ] as $name ) {
$var = "ssl{$name}";
if ( isset( $params[$var] ) ) {
$this->$var = $params[$var];
}
public function tableExists( $table, $fname = __METHOD__ ) {
- $table = $this->tableName( $table, 'raw' );
- if ( isset( $this->mSessionTempTables[$table] ) ) {
- return true; // already known to exist and won't show in SHOW TABLES anyway
- }
-
// Split database and table into proper variables as Database::tableName() returns
// shared tables prefixed with their database, which do not work in SHOW TABLES statements
- list( $database, $schema, $prefix, $table ) = $this->qualifiedTableComponents( $table );
+ list( $database, , $prefix, $table ) = $this->qualifiedTableComponents( $table );
+ $tableName = "{$prefix}{$table}";
- $table = $prefix . $table;
+ if ( isset( $this->mSessionTempTables[$tableName] ) ) {
+ return true; // already known to exist and won't show in SHOW TABLES anyway
+ }
// We can't use buildLike() here, because it specifies an escape character
// other than the backslash, which is the only one supported by SHOW TABLES
- $encLike = $this->escapeLikeInternal( $table, '\\' );
+ $encLike = $this->escapeLikeInternal( $tableName, '\\' );
- // If the database has been specified (such as for shared tables), add a FROM $database clause
+ // If the database has been specified (such as for shared tables), use "FROM"
if ( $database !== '' ) {
- $database = $this->addIdentifierQuotes( $database );
- $query = "SHOW TABLES FROM $database LIKE '$encLike'";
+ $encDatabase = $this->addIdentifierQuotes( $database );
+ $query = "SHOW TABLES FROM $encDatabase LIKE '$encLike'";
} else {
$query = "SHOW TABLES LIKE '$encLike'";
}
* @see https://www.percona.com/doc/percona-toolkit/2.1/pt-heartbeat.html
*/
protected function getHeartbeatData( array $conds ) {
+ // Query time and trip time are not counted
+ $nowUnix = microtime( true );
// Do not bother starting implicit transactions here
$this->clearFlag( self::DBO_TRX, self::REMEMBER_PRIOR );
try {
$this->restoreFlags();
}
- return [ $row ? $row->ts : null, microtime( true ) ];
+ return [ $row ? $row->ts : null, $nowUnix ];
}
protected function getApproximateLagStatus() {
}
/**
- * @param string $sql
- * @param string $newLine
+ * @param string &$sql
+ * @param string &$newLine
* @return bool
*/
public function streamStatementEnd( &$sql, &$newLine ) {