From 5f6a95848aa587ae3d86233b1999f441df22143a Mon Sep 17 00:00:00 2001
From: Diego Dupin <diego.dupin@mariadb.com>
Date: Tue, 22 Apr 2025 11:55:47 +0200
Subject: [PATCH 1/2] adding benchmark query with lots of rows

---
 benchmark_test.go | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/benchmark_test.go b/benchmark_test.go
index 912e5414..7a6661ae 100644
--- a/benchmark_test.go
+++ b/benchmark_test.go
@@ -113,6 +113,47 @@ 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.StartTimer()
+	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 n := 0; n < b.N; 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()
+	}
+	b.StopTimer()
+}
+
 func BenchmarkExec(b *testing.B) {
 	tb := (*TB)(b)
 	b.StopTimer()

From e22950891d711f23933b7ce8f929a3fda4582163 Mon Sep 17 00:00:00 2001
From: Inada Naoki <songofacandy@gmail.com>
Date: Tue, 22 Apr 2025 20:59:01 +0900
Subject: [PATCH 2/2] Apply suggestions from code review

---
 benchmark_test.go | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/benchmark_test.go b/benchmark_test.go
index 7a6661ae..c31888e4 100644
--- a/benchmark_test.go
+++ b/benchmark_test.go
@@ -129,13 +129,13 @@ func BenchmarkSelect10000rows(b *testing.B) {
 		return
 	}
 
-	b.StartTimer()
+	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 n := 0; n < b.N; n++ {
+	for range b.N {
 		rows, err := stmt.Query()
 		if err != nil {
 			b.Fatalf("Failed to query 10000rows: %v", err)
@@ -151,7 +151,6 @@ func BenchmarkSelect10000rows(b *testing.B) {
 		}
 		rows.Close()
 	}
-	b.StopTimer()
 }
 
 func BenchmarkExec(b *testing.B) {