dbutil

package
v2.1.1+incompatible Latest Latest
Warning

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

Go to latest
Published: Dec 12, 2018 License: Apache-2.0 Imports: 16 Imported by: 0

README

dbutil library

dbutil is a library that contains a collection of auxiliary functions related to MySQL and TiDB.

Documentation

Index

Constants

View Source
const (
	// ImplicitColName is name of implicit column in TiDB
	ImplicitColName = "_tidb_rowid"

	// ImplicitColID is ID implicit column in TiDB
	ImplicitColID = -1
)

Variables

View Source
var (
	// ErrVersionNotFound means can't get the database's version
	ErrVersionNotFound = errors.New("can't get the database's version")
)

Functions

func BuildColumnsAndConstraints

func BuildColumnsAndConstraints(colDefs []*ast.ColumnDef, constraints []*ast.Constraint) ([]*model.ColumnInfo, []*ast.Constraint)

BuildColumnsAndConstraints reference https://github.com/pingcap/tidb/blob/12c87929b8444571b9e84d2c0d5b85303d27da64/ddl/ddl_api.go#L168

func BuildTableInfo

func BuildTableInfo(tableName model.CIStr, columns []*model.ColumnInfo, constraints []*ast.Constraint) (tbInfo *model.TableInfo, err error)

BuildTableInfo builds table infomation using column constraints.

func CloseDB

func CloseDB(db *sql.DB) error

CloseDB closes the mysql fd

func EqualTableInfo

func EqualTableInfo(tableInfo1, tableInfo2 *model.TableInfo) bool

EqualTableInfo returns true if this two table info have same columns and indices

func FindColumnByName

func FindColumnByName(cols []*model.ColumnInfo, name string) *model.ColumnInfo

FindColumnByName finds column by name.

func FindSuitableIndex

func FindSuitableIndex(ctx context.Context, db *sql.DB, schemaName string, tableInfo *model.TableInfo) (*model.ColumnInfo, error)

FindSuitableIndex returns first column of a suitable index. The priority is * primary key * unique key * normal index which has max cardinality

func GetCRC32Checksum

func GetCRC32Checksum(ctx context.Context, db *sql.DB, schemaName, tableName string, tbInfo *model.TableInfo, limitRange string, args []interface{}, ignoreColumns map[string]interface{}) (int64, error)

GetCRC32Checksum returns checksum code of some data by given condition

func GetCreateTableSQL

func GetCreateTableSQL(ctx context.Context, db *sql.DB, schemaName string, tableName string) (string, error)

GetCreateTableSQL returns the create table statement.

func GetDBVersion

func GetDBVersion(ctx context.Context, db *sql.DB) (string, error)

GetDBVersion returns the database's version

func GetRandomValues

func GetRandomValues(ctx context.Context, db *sql.DB, schemaName, table, column string, num int64, min, max interface{}, limitRange string, collation string) ([]interface{}, error)

GetRandomValues returns some random value of a column.

func GetRowCount

func GetRowCount(ctx context.Context, db *sql.DB, schemaName string, tableName string, where string) (int64, error)

GetRowCount returns row count of the table. if not specify where condition, return total row count of the table.

func GetSchemas

func GetSchemas(ctx context.Context, db *sql.DB) ([]string, error)

GetSchemas returns name of all schemas

func GetTableInfo

func GetTableInfo(ctx context.Context, db *sql.DB, schemaName string, tableName string) (*model.TableInfo, error)

GetTableInfo returns table information.

func GetTableInfoBySQL

func GetTableInfoBySQL(createTableSQL string) (table *model.TableInfo, err error)

GetTableInfoBySQL returns table information by given create table sql.

func GetTableInfoWithRowID

func GetTableInfoWithRowID(ctx context.Context, db *sql.DB, schemaName string, tableName string, useRowID bool) (*model.TableInfo, error)

GetTableInfoWithRowID returns table information with _tidb_rowid column if useRowID is true

func GetTables

func GetTables(ctx context.Context, db *sql.DB, schemaName string) (tables []string, err error)

GetTables returns name of all tables in the specified schema

func GetTidbLatestTSO

func GetTidbLatestTSO(ctx context.Context, db *sql.DB) (int64, error)

GetTidbLatestTSO returns tidb's current TSO.

func IsFloatType

func IsFloatType(tp byte) bool

IsFloatType returns true if tp is float type

func IsNumberType

func IsNumberType(tp byte) bool

IsNumberType returns true if tp is number type

func IsTiDB

func IsTiDB(ctx context.Context, db *sql.DB) (bool, error)

IsTiDB returns true if this database is tidb

func OpenDB

func OpenDB(cfg DBConfig) (*sql.DB, error)

OpenDB opens a mysql connection FD

func ScanRow

func ScanRow(rows *sql.Rows) (map[string][]byte, map[string]bool, error)

ScanRow scans rows into a map, and another map specify the value is null or not.

func ScanRowsToInterfaces

func ScanRowsToInterfaces(rows *sql.Rows) ([][]interface{}, error)

ScanRowsToInterfaces scans rows to interface arrary.

func SelectUniqueOrderKey

func SelectUniqueOrderKey(tbInfo *model.TableInfo) ([]string, []*model.ColumnInfo)

SelectUniqueOrderKey returns some columns for order by condition.

func SetSnapshot

func SetSnapshot(ctx context.Context, db *sql.DB, snapshot string) error

SetSnapshot set the snapshot variable for tidb

func ShowBinlogFormat

func ShowBinlogFormat(ctx context.Context, db *sql.DB) (value string, err error)

ShowBinlogFormat queries variable 'binlog_format' and returns its value.

func ShowBinlogRowImage

func ShowBinlogRowImage(ctx context.Context, db *sql.DB) (value string, err error)

ShowBinlogRowImage queries variable 'binlog_row_image' and returns its values.

func ShowGrants

func ShowGrants(ctx context.Context, db *sql.DB, user, host string) ([]string, error)

ShowGrants queries privileges for a mysql user.

func ShowLogBin

func ShowLogBin(ctx context.Context, db *sql.DB) (value string, err error)

ShowLogBin queries variable 'log_bin' and returns its value.

func ShowMySQLVariable

func ShowMySQLVariable(ctx context.Context, db *sql.DB, variable string) (value string, err error)

ShowMySQLVariable queries MySQL variable and returns its value.

func ShowServerID

func ShowServerID(ctx context.Context, db *sql.DB) (serverID uint64, err error)

ShowServerID queries variable 'server_id' and returns its value.

func ShowVersion

func ShowVersion(ctx context.Context, db *sql.DB) (value string, err error)

ShowVersion queries variable 'version' and returns its value.

func TableName

func TableName(schema, table string) string

TableName returns `schema`.`table`

Types

type DBConfig

type DBConfig struct {
	Host string `toml:"host" json:"host"`

	Port int `toml:"port" json:"port"`

	User string `toml:"user" json:"user"`

	Password string `toml:"password" json:"password"`

	Schema string `toml:"schema" json:"schema"`
}

DBConfig is database configuration.

func GetDBConfigFromEnv

func GetDBConfigFromEnv(schema string) DBConfig

GetDBConfigFromEnv returns DBConfig from environment

func (*DBConfig) String

func (c *DBConfig) String() string

String returns native format of database configuration

type IndexInfo

type IndexInfo struct {
	Table       string
	NoneUnique  bool
	KeyName     string
	SeqInIndex  int
	ColumnName  string
	Cardinality int
}

IndexInfo contains information of table index.

func ShowIndex

func ShowIndex(ctx context.Context, db *sql.DB, schemaName string, table string) ([]*IndexInfo, error)

ShowIndex returns result of executing `show index`

Jump to

Keyboard shortcuts

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