Documentation ¶
Index ¶
- Constants
- Variables
- func AnalyzeValuesFromBuckets(valueString string, cols []*model.ColumnInfo) ([]string, error)
- func CloseDB(db *sql.DB) error
- func DecodeTimeInBucket(packedStr string) (string, error)
- func DeleteRows(ctx context.Context, db *sql.DB, schemaName string, tableName string, ...) error
- func EqualTableInfo(tableInfo1, tableInfo2 *model.TableInfo) bool
- func ExecSQLWithRetry(ctx context.Context, db *sql.DB, sql string, args ...interface{}) (err error)
- func ExecuteSQLs(ctx context.Context, db *sql.DB, sqls []string, args [][]interface{}) error
- func FindAllColumnWithIndex(tableInfo *model.TableInfo) []*model.ColumnInfo
- func FindAllIndex(tableInfo *model.TableInfo) []*model.IndexInfo
- func FindColumnByName(cols []*model.ColumnInfo, name string) *model.ColumnInfo
- func FindSuitableColumnWithIndex(ctx context.Context, db *sql.DB, schemaName string, tableInfo *model.TableInfo) (*model.ColumnInfo, error)
- func GetBucketsInfo(ctx context.Context, db *sql.DB, schema, table string, ...) (map[string][]Bucket, error)
- func GetCRC32Checksum(ctx context.Context, db *sql.DB, schemaName, tableName string, ...) (int64, error)
- func GetCreateTableSQL(ctx context.Context, db *sql.DB, schemaName string, tableName string) (string, error)
- func GetDBVersion(ctx context.Context, db *sql.DB) (string, error)
- func GetMinMaxValue(ctx context.Context, db *sql.DB, schema, table, column string, ...) (string, string, error)
- func GetParser(sqlModeStr string) (*parser.Parser, error)
- func GetRandomValues(ctx context.Context, db *sql.DB, schemaName, table, column string, num int, ...) ([]string, error)
- func GetRowCount(ctx context.Context, db *sql.DB, schemaName string, tableName string, ...) (int64, error)
- func GetSchemas(ctx context.Context, db *sql.DB) ([]string, error)
- func GetTableInfo(ctx context.Context, db *sql.DB, schemaName string, tableName string, ...) (*model.TableInfo, error)
- func GetTableInfoBySQL(createTableSQL string, sqlMode string) (table *model.TableInfo, err error)
- func GetTables(ctx context.Context, db *sql.DB, schemaName string) (tables []string, err error)
- func GetTidbLatestTSO(ctx context.Context, db *sql.DB) (int64, error)
- func GetViews(ctx context.Context, db *sql.DB, schemaName string) (tables []string, err error)
- func IsFloatType(tp byte) bool
- func IsNumberType(tp byte) bool
- func IsRetryableError(err error) bool
- func IsTiDB(ctx context.Context, db *sql.DB) (bool, error)
- func IsTimeTypeAndNeedDecode(tp byte) bool
- func OpenDB(cfg DBConfig) (*sql.DB, error)
- func ReplacePlaceholder(str string, args []string) string
- func ScanRow(rows *sql.Rows) (map[string]*ColumnData, error)
- func ScanRowsToInterfaces(rows *sql.Rows) ([][]interface{}, error)
- func SelectUniqueOrderKey(tbInfo *model.TableInfo) ([]string, []*model.ColumnInfo)
- func ShowBinlogFormat(ctx context.Context, db *sql.DB) (value string, err error)
- func ShowBinlogRowImage(ctx context.Context, db *sql.DB) (value string, err error)
- func ShowGrants(ctx context.Context, db *sql.DB, user, host string) ([]string, error)
- func ShowLogBin(ctx context.Context, db *sql.DB) (value string, err error)
- func ShowMySQLVariable(ctx context.Context, db *sql.DB, variable string) (value string, err error)
- func ShowServerID(ctx context.Context, db *sql.DB) (serverID uint64, err error)
- func ShowVersion(ctx context.Context, db *sql.DB) (value string, err error)
- func TableName(schema, table string) string
- type Bucket
- type ColumnData
- type DBConfig
- type IndexInfo
Constants ¶
const ( // DefaultRetryTime is the default retry time to execute sql DefaultRetryTime = 10 // DefaultTimeout is the default timeout for execute sql DefaultTimeout time.Duration = 10 * time.Second // SlowWarnLog defines the duration to log warn log of sql when exec time greater than SlowWarnLog = 100 * time.Millisecond // DefaultDeleteRowsNum is the default rows num for delete one time DefaultDeleteRowsNum int64 = 100000 )
Variables ¶
var ( // ErrVersionNotFound means can't get the database's version ErrVersionNotFound = errors.New("can't get the database's version") // ErrNoData means no data in table ErrNoData = errors.New("no data found in table") )
var ( // Retryable1105Msgs list the error messages of some retryable error with `1105` code (`ErrUnknown`). Retryable1105Msgs = []string{ "Information schema is out of date", "Information schema is changed", } )
Functions ¶
func AnalyzeValuesFromBuckets ¶
func AnalyzeValuesFromBuckets(valueString string, cols []*model.ColumnInfo) ([]string, error)
AnalyzeValuesFromBuckets analyze upperBound or lowerBound to string for each column. upperBound and lowerBound are looks like '(123, abc)' for multiple fields, or '123' for one field.
func DecodeTimeInBucket ¶
DecodeTimeInBucket decodes Time from a packed uint64 value.
func DeleteRows ¶
func DeleteRows(ctx context.Context, db *sql.DB, schemaName string, tableName string, where string, args []interface{}) error
DeleteRows delete rows in several times. Only can delete less than 300,000 one time in TiDB.
func EqualTableInfo ¶
EqualTableInfo returns true if this two table info have same columns and indices
func ExecSQLWithRetry ¶
ExecSQLWithRetry executes sql with retry
func ExecuteSQLs ¶
ExecuteSQLs executes some sqls in one transaction
func FindAllColumnWithIndex ¶
func FindAllColumnWithIndex(tableInfo *model.TableInfo) []*model.ColumnInfo
FindAllColumnWithIndex returns columns with index, order is pk, uk and normal index.
func FindAllIndex ¶
FindAllIndex returns all index, order is pk, uk, and normal index.
func FindColumnByName ¶
func FindColumnByName(cols []*model.ColumnInfo, name string) *model.ColumnInfo
FindColumnByName finds column by name.
func FindSuitableColumnWithIndex ¶
func FindSuitableColumnWithIndex(ctx context.Context, db *sql.DB, schemaName string, tableInfo *model.TableInfo) (*model.ColumnInfo, error)
FindSuitableColumnWithIndex returns first column of a suitable index. The priority is * primary key * unique key * normal index which has max cardinality
func GetBucketsInfo ¶
func GetBucketsInfo(ctx context.Context, db *sql.DB, schema, table string, tableInfo *model.TableInfo) (map[string][]Bucket, error)
GetBucketsInfo SHOW STATS_BUCKETS in TiDB.
func GetCRC32Checksum ¶
func GetCRC32Checksum(ctx context.Context, db *sql.DB, schemaName, tableName string, tbInfo *model.TableInfo, limitRange string, args []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 ¶
GetDBVersion returns the database's version
func GetMinMaxValue ¶
func GetMinMaxValue(ctx context.Context, db *sql.DB, schema, table, column string, limitRange string, limitArgs []interface{}, collation string) (string, string, error)
GetMinMaxValue return min and max value of given column by specified limitRange condition.
func GetRandomValues ¶
func GetRandomValues(ctx context.Context, db *sql.DB, schemaName, table, column string, num int, limitRange string, limitArgs []interface{}, collation string) ([]string, error)
GetRandomValues returns some random value. Tips: limitArgs is the value in limitRange.
func GetRowCount ¶
func GetRowCount(ctx context.Context, db *sql.DB, schemaName string, tableName string, where string, args []interface{}) (int64, error)
GetRowCount returns row count of the table. if not specify where condition, return total row count of the table.
func GetSchemas ¶
GetSchemas returns name of all schemas
func GetTableInfo ¶
func GetTableInfo(ctx context.Context, db *sql.DB, schemaName string, tableName string, sqlMode string) (*model.TableInfo, error)
GetTableInfo returns table information.
func GetTableInfoBySQL ¶
GetTableInfoBySQL returns table information by given create table sql.
func GetTidbLatestTSO ¶
GetTidbLatestTSO returns tidb's current TSO.
func IsRetryableError ¶
IsRetryableError checks whether the SQL statement can be retry directly when encountering this error. NOTE: this should be compatible with different TiDB versions. some errors are only retryable in some special cases, then we mark it as un-retryable: - tmysql.ErrTiKVServerTimeout - tmysql.ErrWriteConflictInTiDB - tmysql.ErrTableLocked - tmysql.ErrWriteConflict
some errors are un-retryable: - tmysql.ErrQueryInterrupted
some errors are unknown: - tmysql.ErrRegionUnavailable
func IsTimeTypeAndNeedDecode ¶
IsTimeTypeAndNeedDecode returns true if tp is time type and encoded in tidb buckets.
func ReplacePlaceholder ¶
ReplacePlaceholder will use args to replace '?', used for log. tips: make sure the num of "?" is same with len(args)
func ScanRow ¶
func ScanRow(rows *sql.Rows) (map[string]*ColumnData, error)
ScanRow scans rows into a map.
func ScanRowsToInterfaces ¶
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 ShowBinlogFormat ¶
ShowBinlogFormat queries variable 'binlog_format' and returns its value.
func ShowBinlogRowImage ¶
ShowBinlogRowImage queries variable 'binlog_row_image' and returns its values.
func ShowGrants ¶
ShowGrants queries privileges for a mysql user.
func ShowLogBin ¶
ShowLogBin queries variable 'log_bin' and returns its value.
func ShowMySQLVariable ¶
ShowMySQLVariable queries MySQL variable and returns its value.
func ShowServerID ¶
ShowServerID queries variable 'server_id' and returns its value.
func ShowVersion ¶
ShowVersion queries variable 'version' and returns its value.
Types ¶
type ColumnData ¶
ColumnData saves column's data.
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"` Snapshot string `toml:"snapshot" json:"snapshot"` SQLMode string `toml:"sql-mode" json:"sql-mode"` }
DBConfig is database configuration.
func GetDBConfigFromEnv ¶
GetDBConfigFromEnv returns DBConfig from environment