true, 'agent' => '', 'profiler' => null, 'trxProfiler' => new TransactionProfiler, 'logger' => $logger, 'errorLogger' => $logger, 'deprecationLogger' => $logger, 'dbname' => 'test', 'schema' => '', 'tablePrefix' => '', 'password' => '', 'flags' => 0, 'serverName' => '', ] ); $this->replicationReporter = new ReplicationReporter( $options['topologyRole'] ?? IDatabase::ROLE_STREAMING_MASTER, $logger, $options['srvCache'] ?? new WANObjectCache( [ 'cache' => new HashBagOStuff(), 'logger' => $logger, ] ) ); } protected function open( $server, $user, $password, $db, $schema, $tablePrefix ) { } public function isOpen() { return true; } public function indexInfo( $table, $index, $fname = __METHOD__ ) { throw new \RuntimeException( 'Not implemented' ); } public function strencode( $s ) { return addslashes( $s ); } protected function closeConnection() { } protected function doSingleStatementQuery( string $sql ): QueryStatus { $query = QueryBuilderFromRawSql::buildQuery( $sql, 0 ); if ( $query->isWriteQuery() ) { return new QueryStatus( true, 0, 0, '' ); } else { return new QueryStatus( new FakeResultWrapper( [] ), 0, 0, '' ); } } public function tableExists( $table, $fname = __METHOD__ ) { return true; } protected function lastInsertId() { return $this->nextInsertId++; } public function fieldInfo( $table, $field ) { throw new \RuntimeException( 'Not implemented' ); } public function getType() { return 'mock'; } public function lastErrno() { return 0; } public function lastError() { return ''; } public function getSoftwareLink() { return ''; } public function getServerVersion() { return ''; } }