getDB( DB_PRIMARY ); $dbw->dropTable( 'benchmark_perm_test', $fname ); $permTable = $dbw->tableName( 'benchmark_perm_test', 'raw' ); $dbw->duplicateTableStructure( $dbw->tableName( 'page', 'raw' ), $permTable, false, $fname ); $dbw->dropTable( 'benchmark_temp_test', $fname ); $tempTable = $dbw->tableName( 'benchmark_temp_test', 'raw' ); $dbw->duplicateTableStructure( $dbw->tableName( 'page', 'raw' ), $tempTable, true, $fname ); $this->bench( [ 'perm truncate' => static function () use ( $dbw, $fname, $permTable ) { $dbw->query( "TRUNCATE $permTable", $fname ); }, 'perm delete' => static function () use ( $dbw, $fname, $permTable ) { $dbw->query( "DELETE FROM $permTable", $fname ); }, 'temp truncate' => static function () use ( $dbw, $fname, $tempTable ) { // Use a raw query not truncate() to avoid the "pristine" check. // The other cases also use query() so that they will have comparable overhead. $dbw->query( "TRUNCATE $tempTable", $fname ); }, 'temp delete' => static function () use ( $dbw, $fname, $tempTable ) { $dbw->query( "DELETE FROM $tempTable", $fname ); } ] ); $dbw->dropTable( 'benchmark_perm_test', $fname ); $dbw->dropTable( 'benchmark_temp_test', $fname ); } } // @codeCoverageIgnoreStart $maintClass = BenchmarkTruncate::class; require_once RUN_MAINTENANCE_IF_MAIN; // @codeCoverageIgnoreEnd