/mysql-go

Make mysql cancelation a breeze

Primary LanguageGoOtherNOASSERTION

Canceling MySQL in Go GoDoc Go Report Card

This package will properly implement context cancelation for MySQL. Without this package, context cancelation does not actually cancel a MySQL query.

See Article for details of the behind-the-scenes magic.

The API is designed to resemble the standard library. It is fully compatible with the dbq package which allows for zero boilerplate database operations in Go.

the project to show your appreciation.

Dependencies

Installation

go get -u github.com/rocketlaunchr/mysql-go

QuickStart

import (
   sql "github.com/rocketlaunchr/mysql-go"
)

pool, _ := sql.Open("user:password@tcp(localhost:3306)/db")

Read Query

// Obtain an exclusive connection
conn, err := pool.Conn(ctx)
defer conn.Close() // Return the connection back to the pool

// Perform your read operation.
rows, err := conn.QueryContext(ctx, stmt)
if err != nil {
   return err
}

Write Query

// Obtain an exclusive connection
conn, err := pool.Conn(ctx)
defer conn.Close() // Return the connection back to the pool

// Perform the write operation
tx, err := conn.BeginTx(ctx, nil)

_, err = tx.ExecContext(ctx, stmt)
if err != nil {
   return tx.Rollback()
}

tx.Commit()

Cancel Query

Cancel the context. This will send a KILL signal to MySQL automatically.

It is highly recommended you set a KillerPool when you instantiate the DB object.

The KillerPool is used to call the KILL signal.

Reverse Proxy Support

Checkout the proxy-protection branch if your database is behind a reverse proxy in order to better guarantee that you are killing the correct query.

Other useful packages

  • dataframe-go - Statistics and data manipulation
  • dbq - Zero boilerplate database operations for Go
  • igo - A Go transpiler with cool new syntax such as fordefer (defer for for-loops)
  • react - Build front end applications using Go
  • remember-go - Cache slow database queries

Legal Information

The license is a modified MIT license. Refer to LICENSE file for more details.

© 2018-19 PJ Engineering and Business Solutions Pty. Ltd.

Final Notes

Feel free to enhance features by issuing pull-requests.