tidb: github.com/pingcap/tidb/util Index | Files | Directories

package util

import "github.com/pingcap/tidb/util"

Index

Package Files

misc.go prefix_helper.go processinfo.go

Constants

const (
    // DefaultMaxRetries indicates the max retry count.
    DefaultMaxRetries = 30
    // RetryInterval indicates retry interval.
    RetryInterval uint64 = 500
    // GCTimeFormat is the format that gc_worker used to store times.
    GCTimeFormat = "20060102-15:04:05 -0700"
)
const (
    // Country is type name for country.
    Country = "C"
    // Organization is type name for organization.
    Organization = "O"
    // OrganizationalUnit is type name for organizational unit.
    OrganizationalUnit = "OU"
    // Locality is type name for locality.
    Locality = "L"
    // Email is type name for email.
    Email = "emailAddress"
    // CommonName is type name for common name.
    CommonName = "CN"
    // Province is type name for province or state.
    Province = "ST"
)
const (
    // URI indicates uri info in SAN.
    URI = SANType("URI")
    // DNS indicates dns info in SAN.
    DNS = SANType("DNS")
    // IP indicates ip info in SAN.
    IP  = SANType("IP")
)

Variables

var (
    // InformationSchemaName is the `INFORMATION_SCHEMA` database name.
    InformationSchemaName = model.NewCIStr("INFORMATION_SCHEMA")
    // PerformanceSchemaName is the `PERFORMANCE_SCHEMA` database name.
    PerformanceSchemaName = model.NewCIStr("PERFORMANCE_SCHEMA")
    // MetricSchemaName is the `METRICS_SCHEMA` database name.
    MetricSchemaName = model.NewCIStr("METRICS_SCHEMA")
)
var SupportCipher = make(map[string]struct{}, len(tlsCipherString))

SupportCipher maintains cipher supported by TiDB.

func CheckSupportX509NameOneline Uses

func CheckSupportX509NameOneline(oneline string) (err error)

CheckSupportX509NameOneline parses and validate input str is X509_NAME_oneline format and precheck check-item is supported by TiDB https://www.openssl.org/docs/manmaster/man3/X509_NAME_oneline.html

func ColumnToProto Uses

func ColumnToProto(c *model.ColumnInfo) *tipb.ColumnInfo

ColumnToProto converts model.ColumnInfo to tipb.ColumnInfo.

func ColumnsToProto Uses

func ColumnsToProto(columns []*model.ColumnInfo, pkIsHandle bool) []*tipb.ColumnInfo

ColumnsToProto converts a slice of model.ColumnInfo to a slice of tipb.ColumnInfo.

func CompatibleParseGCTime Uses

func CompatibleParseGCTime(value string) (time.Time, error)

CompatibleParseGCTime parses a string with `GCTimeFormat` and returns a time.Time. If `value` can't be parsed as that format, truncate to last space and try again. This function is only useful when loading times that saved by gc_worker. We have changed the format that gc_worker saves time (removed the last field), but when loading times it should be compatible with the old format.

func DelKeyWithPrefix Uses

func DelKeyWithPrefix(rm kv.RetrieverMutator, prefix kv.Key) error

DelKeyWithPrefix deletes keys with prefix.

func GetStack Uses

func GetStack() []byte

GetStack gets the stacktrace.

func InternalHTTPClient Uses

func InternalHTTPClient() *http.Client

InternalHTTPClient is used by TiDB-Server to request other components.

func InternalHTTPSchema Uses

func InternalHTTPSchema() string

InternalHTTPSchema specifies use http or https to request other components.

func IsMemOrSysDB Uses

func IsMemOrSysDB(dbLowerName string) bool

IsMemOrSysDB uses to check whether dbLowerName is memory database or system database.

func IsTLSExpiredError Uses

func IsTLSExpiredError(err error) bool

IsTLSExpiredError checks error is caused by TLS expired.

func LoadTLSCertificates Uses

func LoadTLSCertificates(ca, key, cert string) (tlsConfig *tls.Config, err error)

LoadTLSCertificates loads CA/KEY/CERT for special paths.

func MockPkixAttribute Uses

func MockPkixAttribute(name, value string) pkix.AttributeTypeAndValue

MockPkixAttribute generates mock AttributeTypeAndValue. only used for test.

func ParseAndCheckSAN Uses

func ParseAndCheckSAN(san string) (map[SANType][]string, error)

ParseAndCheckSAN parses and check SAN str.

func Recover Uses

func Recover(metricsLabel, funcInfo string, recoverFn func(), quit bool)

Recover includes operations such as recovering, clearing,and printing information. It will dump current goroutine stack into log if catch any recover result.

metricsLabel: The label of PanicCounter metrics.
funcInfo:     Some information for the panic function.
recoverFn:    Handler will be called after recover and before dump stack, passing `nil` means noop.
quit:         If this value is true, the current program exits after recovery.

func RowKeyPrefixFilter Uses

func RowKeyPrefixFilter(rowKeyPrefix kv.Key) kv.FnKeyCmp

RowKeyPrefixFilter returns a function which checks whether currentKey has decoded rowKeyPrefix as prefix.

func RunWithRetry Uses

func RunWithRetry(retryCnt int, backoff uint64, f func() (bool, error)) (err error)

RunWithRetry will run the f with backoff and retry. retryCnt: Max retry count backoff: When run f failed, it will sleep backoff * triedCount time.Millisecond. Function f should have two return value. The first one is an bool which indicate if the err if retryable. The second is if the f meet any error.

func ScanMetaWithPrefix Uses

func ScanMetaWithPrefix(retriever kv.Retriever, prefix kv.Key, filter func(kv.Key, []byte) bool) error

ScanMetaWithPrefix scans metadata with the prefix.

func SyntaxError Uses

func SyntaxError(err error) error

SyntaxError converts parser error to TiDB's syntax error.

func SyntaxWarn Uses

func SyntaxWarn(err error) error

SyntaxWarn converts parser warn to TiDB's syntax warn.

func TLSCipher2String Uses

func TLSCipher2String(n uint16) string

TLSCipher2String convert tls num to string. Taken from https://testssl.sh/openssl-rfc.mapping.html .

func WithRecovery Uses

func WithRecovery(exec func(), recoverFn func(r interface{}))

WithRecovery wraps goroutine startup call with force recovery. it will dump current goroutine stack into log if catch any recover result.

exec:      execute logic function.
recoverFn: handler will be called after recover and before dump stack, passing `nil` means noop.

func X509NameOnline Uses

func X509NameOnline(n pkix.Name) string

X509NameOnline prints pkix.Name into old X509_NAME_oneline format. https://www.openssl.org/docs/manmaster/man3/X509_NAME_oneline.html

type ProcessInfo Uses

type ProcessInfo struct {
    ID              uint64
    User            string
    Host            string
    DB              string
    Plan            interface{}
    PlanExplainRows [][]string
    Time            time.Time
    Info            string
    CurTxnStartTS   uint64
    StmtCtx         *stmtctx.StatementContext
    StatsInfo       func(interface{}) map[string]uint64
    // MaxExecutionTime is the timeout for select statement, in milliseconds.
    // If the query takes too long, kill it.
    MaxExecutionTime uint64

    State                     uint16
    Command                   byte
    ExceedExpensiveTimeThresh bool
}

ProcessInfo is a struct used for show processlist statement.

func (*ProcessInfo) ToRow Uses

func (pi *ProcessInfo) ToRow(tz *time.Location) []interface{}

ToRow returns []interface{} for the row data of "SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST".

func (*ProcessInfo) ToRowForShow Uses

func (pi *ProcessInfo) ToRowForShow(full bool) []interface{}

ToRowForShow returns []interface{} for the row data of "SHOW [FULL] PROCESSLIST".

type SANType Uses

type SANType string

SANType is enum value for GlobalPrivValue.SANs keys.

type SequenceSchema Uses

type SequenceSchema interface {
    SequenceByName(schema, sequence model.CIStr) (SequenceTable, error)
}

SequenceSchema is implemented by infoSchema and used by sequence function in expression package. Otherwise calling information schema will cause import cycle problem.

type SequenceTable Uses

type SequenceTable interface {
    GetSequenceID() int64
    GetSequenceNextVal(ctx interface{}, dbName, seqName string) (int64, error)
    SetSequenceVal(ctx interface{}, newVal int64, dbName, seqName string) (int64, bool, error)
}

SequenceTable is implemented by tableCommon, and it is specialised in handling sequence operation. Otherwise calling table will cause import cycle problem.

type SessionManager Uses

type SessionManager interface {
    ShowProcessList() map[uint64]*ProcessInfo
    GetProcessInfo(id uint64) (*ProcessInfo, bool)
    Kill(connectionID uint64, query bool)
    UpdateTLSConfig(cfg *tls.Config)
}

SessionManager is an interface for session manage. Show processlist and kill statement rely on this interface.

Directories

PathSynopsis
admin
arena
bitmap
chunk
codec
collate
deadlock
disjointset
disk
domainutil
encrypt
execdetails
expensivequery
fastrand
filesort
format
gcutil
hack
hint
israce
kvcache
localpool
logutil
math
memory
mockPackage mock is just for test only.
mvmap
parser
pdapi
plancodec
printer
profile
ranger
rowcodec
rowDecoder
set
signal
sqlexec
stmtsummary
storeutil
stringutil
sys/linux
sys/storage
systimemon
testkit
testleak
testutil
texttree
timeutil
tracing

Package util imports 27 packages (graph) and is imported by 545 packages. Updated 2020-07-08. Refresh now. Tools for package owners.