Created
May 18, 2022 20:33
-
-
Save andy-wm-arthur/fbd485d0375c000844017a9b8f82fb6a to your computer and use it in GitHub Desktop.
Generates a deep history against a dolt database
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"context" | |
"database/sql" | |
"fmt" | |
"math/rand" | |
"os" | |
_ "github.com/go-sql-driver/mysql" | |
) | |
var ( | |
database = "history_benchmark" | |
user = "root" | |
pass = "" | |
host = "127.0.0.1" | |
port = "3306" | |
) | |
func main() { | |
err := populateHistory(context.Background()) | |
if err != nil { | |
fmt.Println(err.Error()) | |
os.Exit(1) | |
} | |
os.Exit(0) | |
} | |
const ( | |
depth = 5000 | |
) | |
func populateHistory(ctx context.Context) error { | |
connStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", | |
user, pass, host, port, database) | |
db, err := sql.Open("mysql", connStr) | |
if err != nil { | |
return err | |
} | |
conn, err := db.Conn(ctx) | |
if err != nil { | |
return err | |
} | |
if err = createTable(ctx, conn); err != nil { | |
return err | |
} | |
for i := 1; i <= depth; i++ { | |
q := fmt.Sprintf("insert into test values (%d, %d, %d)", i, rand.Int31(), rand.Int31()) | |
_, err = conn.ExecContext(ctx, q) | |
if err != nil { | |
return err | |
} | |
_, err = conn.ExecContext(ctx, "CALL dolt_commit('-am', 'new row')") | |
if err != nil { | |
return err | |
} | |
if i%100 == 0 { | |
fmt.Printf("made %d commits \n", i) | |
} | |
} | |
return nil | |
} | |
func createTable(ctx context.Context, conn *sql.Conn) (err error) { | |
_, err = conn.ExecContext(ctx, "create table test (pk int primary key, c0 int, c1 int)") | |
if err != nil { | |
return | |
} | |
_, err = conn.ExecContext(ctx, "CALL dolt_add('-A')") | |
if err != nil { | |
return | |
} | |
_, err = conn.ExecContext(ctx, "CALL dolt_commit('-m', 'new table')") | |
if err != nil { | |
return | |
} | |
return | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment