PingCAP-QE / go-sqlsmith

go-sqlsmith is a port of sqlsmith
Apache License 2.0
35 stars 16 forks source link

go-sqlsmith

Go version of SQLsmith.

Usage

import (
    sqlsmith_go "github.com/chaos-mesh/go-sqlsmith"
)

func gosmith() {
    ss := sqlsmith_go.New()

    // load schema
    ss.LoadSchema([][5]string{
        // members table
        [5]string{"games", "members", "BASE TABLE", "id", "int(11)"},
        [5]string{"games", "members", "BASE TABLE", "name", "varchar(255)"},
        [5]string{"games", "members", "BASE TABLE", "age", "int(11)"},
        [5]string{"games", "members", "BASE TABLE", "team_id", "int(11)"},
        // teams table
        [5]string{"games", "teams", "BASE TABLE", "id", "int(11)"},
        [5]string{"games", "teams", "BASE TABLE", "team_name", "varchar(255)"},
        [5]string{"games", "teams", "BASE TABLE", "created_at", "timestamp"},
    })

    // use games database
    ss.SetDB("games")

    // generate select statement AST without scema information
    node := ss.SelectStmt(5)

    // fill the tree with selected schema and get SQL string
    sql, err := ss.Walk(node)
}