client

package
v1.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 10, 2024 License: MIT Imports: 23 Imported by: 63

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// MaxIdleTimeoutWithoutPing - If the connection has been idle for more than this time,
	//   then ping will be performed before use to check if it alive
	MaxIdleTimeoutWithoutPing = 10 * time.Second

	// DefaultIdleTimeout - If the connection has been idle for more than this time,
	//   we can close it (but we should remember about Pool.minAlive)
	DefaultIdleTimeout = 30 * time.Second

	// MaxNewConnectionAtOnce - If we need to create new connections,
	//   then we will create no more than this number of connections at a time.
	// This restriction will be ignored on pool initialization.
	MaxNewConnectionAtOnce = 5
)

Functions

func NewClientTLSConfig

func NewClientTLSConfig(caPem, certPem, keyPem []byte, insecureSkipVerify bool, serverName string) *tls.Config

NewClientTLSConfig: generate TLS config for client side if insecureSkipVerify is set to true, serverName will not be validated

Types

type Conn

type Conn struct {
	*packet.Conn
	// contains filtered or unexported fields
}

func Connect

func Connect(addr string, user string, password string, dbName string, options ...func(*Conn)) (*Conn, error)

Connect to a MySQL server, addr can be ip:port, or a unix socket domain like /var/sock. Accepts a series of configuration functions as a variadic argument.

func ConnectWithContext added in v1.8.0

func ConnectWithContext(ctx context.Context, addr string, user string, password string, dbName string, options ...func(*Conn)) (*Conn, error)

ConnectWithContext to a MySQL addr using the provided context.

func ConnectWithDialer added in v1.4.0

func ConnectWithDialer(ctx context.Context, network string, addr string, user string, password string, dbName string, dialer Dialer, options ...func(*Conn)) (*Conn, error)

ConnectWithDialer to a MySQL server using the given Dialer.

func (*Conn) Begin

func (c *Conn) Begin() error

func (*Conn) CapabilityString added in v1.8.0

func (c *Conn) CapabilityString() string

func (*Conn) Close

func (c *Conn) Close() error

func (*Conn) Commit

func (c *Conn) Commit() error

func (*Conn) CompareServerVersion added in v1.8.0

func (c *Conn) CompareServerVersion(v string) (int, error)

func (*Conn) Execute

func (c *Conn) Execute(command string, args ...interface{}) (*Result, error)

func (*Conn) ExecuteMultiple added in v1.5.0

func (c *Conn) ExecuteMultiple(query string, perResultCallback ExecPerResultCallback) (*Result, error)

ExecuteMultiple will call perResultCallback for every result of the multiple queries that are executed.

When ExecuteMultiple is used, the connection should have the SERVER_MORE_RESULTS_EXISTS flag set to signal the server multiple queries are executed. Handling the responses is up to the implementation of perResultCallback.

Example:

queries := "SELECT 1; SELECT NOW();" conn.ExecuteMultiple(queries, func(result *mysql.Result, err error) { // Use the result as you want })

func (*Conn) ExecuteSelectStreaming

func (c *Conn) ExecuteSelectStreaming(command string, result *Result, perRowCallback SelectPerRowCallback, perResultCallback SelectPerResultCallback) error

ExecuteSelectStreaming will call perRowCallback for every row in resultset WITHOUT saving any row data to Result.{Values/RawPkg/RowDatas} fields. When given, perResultCallback will be called once per result

ExecuteSelectStreaming should be used only for SELECT queries with a large response resultset for memory preserving.

Example:

var result mysql.Result conn.ExecuteSelectStreaming(`SELECT ... LIMIT 100500`, &result, func(row []mysql.FieldValue) error { // Use the row as you want. // You must not save FieldValue.AsString() value after this callback is done. Copy it if you need. return nil }, nil)

func (*Conn) FieldList

func (c *Conn) FieldList(table string, wildcard string) ([]*Field, error)

func (*Conn) GetCharset

func (c *Conn) GetCharset() string

func (*Conn) GetCollation added in v1.8.0

func (c *Conn) GetCollation() string

func (*Conn) GetConnectionID

func (c *Conn) GetConnectionID() uint32

func (*Conn) GetDB

func (c *Conn) GetDB() string

func (*Conn) GetServerVersion added in v1.8.0

func (c *Conn) GetServerVersion() string

func (*Conn) HandleErrorPacket

func (c *Conn) HandleErrorPacket(data []byte) error

func (*Conn) HandleOKPacket

func (c *Conn) HandleOKPacket(data []byte) *Result

func (*Conn) IsAutoCommit

func (c *Conn) IsAutoCommit() bool

func (*Conn) IsInTransaction

func (c *Conn) IsInTransaction() bool

func (*Conn) Ping

func (c *Conn) Ping() error

func (*Conn) Prepare

func (c *Conn) Prepare(query string) (*Stmt, error)

func (*Conn) Quit added in v1.8.0

func (c *Conn) Quit() error

func (*Conn) ReadOKPacket

func (c *Conn) ReadOKPacket() (*Result, error)

func (*Conn) Rollback

func (c *Conn) Rollback() error

func (*Conn) SetAttributes added in v1.5.0

func (c *Conn) SetAttributes(attributes map[string]string)

func (*Conn) SetAutoCommit

func (c *Conn) SetAutoCommit() error

func (*Conn) SetCapability added in v1.4.0

func (c *Conn) SetCapability(cap uint32)

SetCapability enables the use of a specific capability

func (*Conn) SetCharset

func (c *Conn) SetCharset(charset string) error

func (*Conn) SetCollation added in v1.8.0

func (c *Conn) SetCollation(collation string) error

func (*Conn) SetTLSConfig

func (c *Conn) SetTLSConfig(config *tls.Config)

SetTLSConfig: use user-specified TLS config pass to options when connect

func (*Conn) StatusString added in v1.8.0

func (c *Conn) StatusString() string

func (*Conn) UnsetCapability added in v1.4.0

func (c *Conn) UnsetCapability(cap uint32)

UnsetCapability disables the use of a specific capability

func (*Conn) UseDB

func (c *Conn) UseDB(dbName string) error

func (*Conn) UseSSL

func (c *Conn) UseSSL(insecureSkipVerify bool)

UseSSL: use default SSL pass to options when connect

type Connection added in v1.3.0

type Connection struct {
	// contains filtered or unexported fields
}

type ConnectionStats added in v1.3.0

type ConnectionStats struct {
	// Uses internally
	TotalCount int

	// Only for stats
	IdleCount    int
	CreatedCount int64
}

type Dialer added in v1.4.0

type Dialer func(ctx context.Context, network, address string) (net.Conn, error)

Dialer connects to the address on the named network using the provided context.

type ExecPerResultCallback added in v1.5.0

type ExecPerResultCallback func(result *Result, err error)

This function will be called once per result from ExecuteMultiple

type LogFunc added in v1.3.0

type LogFunc func(format string, args ...interface{})

type Pool added in v1.3.0

type Pool struct {
	// contains filtered or unexported fields
}

func NewPool deprecated added in v1.3.0

func NewPool(
	logFunc LogFunc,
	minAlive int,
	maxAlive int,
	maxIdle int,
	addr string,
	user string,
	password string,
	dbName string,
	options ...func(conn *Conn),
) *Pool

NewPool initializes new connection pool and uses params: addr, user, password, dbName and options. minAlive specifies the minimum number of open connections that the pool will try to maintain. maxAlive specifies the maximum number of open connections (for internal reasons, may be greater by 1 inside newConnectionProducer). maxIdle specifies the maximum number of idle connections (see DefaultIdleTimeout).

Deprecated: use NewPoolWithOptions

func NewPoolWithOptions added in v1.8.0

func NewPoolWithOptions(
	addr string,
	user string,
	password string,
	dbName string,
	options ...PoolOption,
) (*Pool, error)

NewPoolWithOptions initializes new connection pool and uses params: addr, user, password, dbName and options.

func (*Pool) Close added in v1.8.0

func (pool *Pool) Close()

Close only shutdown idle connections. we couldn't control the connection which not in the pool. So before call Close, Call PutConn to put all connections that in use back to connection pool first.

func (*Pool) DropConn added in v1.3.0

func (pool *Pool) DropConn(conn *Conn)

DropConn closes the connection without any checks

func (*Pool) GetConn added in v1.3.0

func (pool *Pool) GetConn(ctx context.Context) (*Conn, error)

GetConn returns connection from the pool or create new

func (*Pool) GetStats added in v1.3.0

func (pool *Pool) GetStats(stats *ConnectionStats)

func (*Pool) PutConn added in v1.3.0

func (pool *Pool) PutConn(conn *Conn)

PutConn returns working connection back to pool

type PoolOption added in v1.8.0

type PoolOption func(o *poolOptions)

func WithConnOptions added in v1.8.0

func WithConnOptions(options ...func(conn *Conn)) PoolOption

func WithLogFunc added in v1.8.0

func WithLogFunc(f LogFunc) PoolOption

func WithNewPoolPingTimeout added in v1.8.0

func WithNewPoolPingTimeout(timeout time.Duration) PoolOption

WithNewPoolPingTimeout enables connect & ping to DB during the pool initialization

func WithPoolLimits added in v1.8.0

func WithPoolLimits(minAlive, maxAlive, maxIdle int) PoolOption

WithPoolLimits sets pool limits:

  • minAlive specifies the minimum number of open connections that the pool will try to maintain.
  • maxAlive specifies the maximum number of open connections (for internal reasons, may be greater by 1 inside newConnectionProducer).
  • maxIdle specifies the maximum number of idle connections (see DefaultIdleTimeout).

type SelectPerResultCallback added in v1.4.0

type SelectPerResultCallback func(result *Result) error

This function will be called once per result from ExecuteSelectStreaming

type SelectPerRowCallback

type SelectPerRowCallback func(row []FieldValue) error

This function will be called for every row in resultset from ExecuteSelectStreaming.

type Stmt

type Stmt struct {
	// contains filtered or unexported fields
}

func (*Stmt) Close

func (s *Stmt) Close() error

func (*Stmt) ColumnNum

func (s *Stmt) ColumnNum() int

func (*Stmt) Execute

func (s *Stmt) Execute(args ...interface{}) (*Result, error)

func (*Stmt) ExecuteSelectStreaming added in v1.4.0

func (s *Stmt) ExecuteSelectStreaming(result *Result, perRowCb SelectPerRowCallback, perResCb SelectPerResultCallback, args ...interface{}) error

func (*Stmt) ParamNum

func (s *Stmt) ParamNum() int

func (*Stmt) WarningsNum added in v1.4.0

func (s *Stmt) WarningsNum() int

type Timestamp added in v1.3.0

type Timestamp int64

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL