A library for computing MySQL query digests, matching the one in MySQL's Performance Schema.
It reimplements MySQL's sql lexer to accurately normalize queries.
go get github.com/rashiq/mysql-digestgo install github.com/rashiq/mysql-digest/cmd/mysql-digest@latestpackage main
import (
"fmt"
"log"
digest "github.com/rashiq/mysql-digest"
)
func main() {
result, _ := digest.Compute("SELECT * FROM users WHERE id = 123")
fmt.Println(result.Hash) // SHA-256 hash
fmt.Println(result.Text) // SELECT * FROM `users` WHERE `id` = ?
// With options
result, _ = digest.Compute("SELECT * FROM users WHERE id = 123", digest.Options{
Version: digest.MySQL57, // Produces MD5 hash
SQLMode: digest.MODE_ANSI_QUOTES,
})
d := digest.NewDigester(digest.Options{Version: digest.MySQL84})
d.Digest("SELECT * FROM t WHERE id = 1")
}mysql-digest "SELECT * FROM users WHERE id = 123"
# From file
mysql-digest -f query.sql
# From stdin
echo "SELECT * FROM users WHERE id = 123" | mysql-digest
# Output formats
mysql-digest "SELECT 1" --json
mysql-digest "SELECT 1" --hash-only
mysql-digest "SELECT 1" --text-onlyExample output:
DIGEST: 840a880ebd1642e8a0c4926cfbaf7d4da9616b03025a080fafd43a732800fab5
DIGEST_TEXT: SELECT * FROM `users` WHERE `id` = ?
MIT License - see LICENSE file.