diff --git a/benchmark_test.go b/benchmark_test.go index 912e5414..c31888e4 100644 --- a/benchmark_test.go +++ b/benchmark_test.go @@ -113,6 +113,46 @@ func benchmarkQueryHelper(b *testing.B, compr bool) { } } +func BenchmarkSelect10000rows(b *testing.B) { + db := initDB(b, false) + defer db.Close() + + // Check if we're using MariaDB + var version string + err := db.QueryRow("SELECT @@version").Scan(&version) + if err != nil { + b.Fatalf("Failed to get server version: %v", err) + } + + if !strings.Contains(strings.ToLower(version), "mariadb") { + b.Skip("Skipping benchmark as it requires MariaDB sequence table") + return + } + + b.ResetTimer() + stmt, err := db.Prepare("SELECT * FROM seq_1_to_10000") + if err != nil { + b.Fatalf("Failed to prepare statement: %v", err) + } + defer stmt.Close() + for range b.N { + rows, err := stmt.Query() + if err != nil { + b.Fatalf("Failed to query 10000rows: %v", err) + } + + var id int64 + for rows.Next() { + err = rows.Scan(&id) + if err != nil { + rows.Close() + b.Fatalf("Failed to scan row: %v", err) + } + } + rows.Close() + } +} + func BenchmarkExec(b *testing.B) { tb := (*TB)(b) b.StopTimer()