package jsonbench import ( "database/sql" "fmt" "math/rand" ) var ( jsonPattern = "{\"value\": \"%s\"}" ) type Data struct { ID int32 Document string } const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" func RandString(n int) string { b := make([]byte, n) for i := range b { b[i] = letterBytes[rand.Intn(len(letterBytes))] } return string(b) } func InsertDataText(db *sql.DB) { _, err := db.Exec("INSERT INTO data_with_text (document) VALUES (?)", fmt.Sprintf(jsonPattern, RandString(32))) if err != nil { panic("InsertDataText error: " + err.Error()) } } func InsertDataJson(db *sql.DB) { _, err := db.Exec("INSERT INTO data_with_json (document) VALUES (?)", fmt.Sprintf(jsonPattern, RandString(32))) if err != nil { panic("InsertDataText error: " + err.Error()) } } func UpdateDataText(db *sql.DB) { _, err := db.Exec("UPDATE data_with_text SET document = ? WHERE id=1", fmt.Sprintf(jsonPattern, RandString(32))) if err != nil { panic("UpdateDataText error: " + err.Error()) } } func UpdateDataJson(db *sql.DB) { _, err := db.Exec("UPDATE data_with_json SET document = ? WHERE id=1", fmt.Sprintf(jsonPattern, RandString(32))) if err != nil { panic("UpdateDataJson error: " + err.Error()) } } func ReadDataText(db *sql.DB) { _, err := db.Query("SELECT * FROM data_with_text LIMIT 10") if err != nil { panic("ReadDataText error: " + err.Error()) } } func ReadDataJson(db *sql.DB) { _, err := db.Query("SELECT * FROM data_with_json LIMIT 10") if err != nil { panic("ReadDataJson error: " + err.Error()) } }