util

package
v1.1.0-beta.0...-70f5218 Latest Latest
Warning

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

Go to latest
Published: Nov 28, 2024 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// StatsMetaHistorySourceAnalyze indicates stats history meta source from analyze
	StatsMetaHistorySourceAnalyze = "analyze"
	// StatsMetaHistorySourceLoadStats indicates stats history meta source from load stats
	StatsMetaHistorySourceLoadStats = "load stats"
	// StatsMetaHistorySourceFlushStats indicates stats history meta source from flush stats
	StatsMetaHistorySourceFlushStats = "flush stats"
	// StatsMetaHistorySourceSchemaChange indicates stats history meta source from schema change
	StatsMetaHistorySourceSchemaChange = "schema change"
	// StatsMetaHistorySourceExtendedStats indicates stats history meta source from extended stats
	StatsMetaHistorySourceExtendedStats = "extended stats"

	// TiDBGlobalStats represents the global-stats for a partitioned table.
	TiDBGlobalStats = "global"
)

Variables

View Source
var (
	// UseCurrentSessionOpt to make sure the sql is executed in current session.
	UseCurrentSessionOpt = []sqlexec.OptionFuncAlias{sqlexec.ExecOptionUseCurSession}

	// StatsCtx is used to mark the request is from stats module.
	StatsCtx = kv.WithInternalSourceType(context.Background(), kv.InternalTxnStats)
)
View Source
var (
	// FlagWrapTxn indicates whether to wrap a transaction.
	FlagWrapTxn = 0
)
View Source
var GlobalAutoAnalyzeProcessList = newGlobalAutoAnalyzeProcessList()

GlobalAutoAnalyzeProcessList is used to track the auto analyze process.

Functions

func CallWithSCtx

func CallWithSCtx(pool util.SessionPool, f func(sctx sessionctx.Context) error, flags ...int) (err error)

CallWithSCtx allocates a sctx from the pool and call the f().

func DurationToTS

func DurationToTS(d time.Duration) uint64

DurationToTS converts duration to timestamp.

func Exec

func Exec(sctx sessionctx.Context, sql string, args ...any) (sqlexec.RecordSet, error)

Exec is a helper function to execute sql and return RecordSet.

func ExecRows

func ExecRows(sctx sessionctx.Context, sql string, args ...any) (rows []chunk.Row, fields []*resolve.ResultField, err error)

ExecRows is a helper function to execute sql and return rows and fields.

func ExecRowsWithCtx

func ExecRowsWithCtx(
	ctx context.Context,
	sctx sessionctx.Context,
	sql string,
	args ...any,
) (rows []chunk.Row, fields []*resolve.ResultField, err error)

ExecRowsWithCtx is a helper function to execute sql and return rows and fields.

func ExecWithCtx

func ExecWithCtx(
	ctx context.Context,
	sctx sessionctx.Context,
	sql string,
	args ...any,
) (sqlexec.RecordSet, error)

ExecWithCtx is a helper function to execute sql and return RecordSet.

func ExecWithOpts

func ExecWithOpts(sctx sessionctx.Context, opts []sqlexec.OptionFuncAlias, sql string, args ...any) (rows []chunk.Row, fields []*resolve.ResultField, err error)

ExecWithOpts is a helper function to execute sql and return rows and fields.

func GetCurrentPruneMode

func GetCurrentPruneMode(pool util.SessionPool) (mode string, err error)

GetCurrentPruneMode returns the current latest partitioning table prune mode.

func GetStartTS

func GetStartTS(sctx sessionctx.Context) (uint64, error)

GetStartTS gets the start ts from current transaction.

func IsSpecialGlobalIndex

func IsSpecialGlobalIndex(idx *model.IndexInfo, tblInfo *model.TableInfo) bool

IsSpecialGlobalIndex checks a index is a special global index or not. A special global index is one that is a global index and has virtual generated columns or prefix columns.

func UpdateSCtxVarsForStats

func UpdateSCtxVarsForStats(sctx sessionctx.Context) error

UpdateSCtxVarsForStats updates all necessary variables that may affect the behavior of statistics.

func WrapTxn

func WrapTxn(sctx sessionctx.Context, f func(sctx sessionctx.Context) error) (err error)

WrapTxn uses a transaction here can let different SQLs in this operation have the same data visibility.

Types

type AutoAnalyzeProcIDGenerator

type AutoAnalyzeProcIDGenerator interface {
	// AutoAnalyzeProcID generates an analyze ID.
	AutoAnalyzeProcID() uint64
	ReleaseAutoAnalyzeProcID(uint64)
}

AutoAnalyzeProcIDGenerator is used to generate auto analyze proc ID.

func NewGenerator

func NewGenerator(autoAnalyzeProcIDGetter func() uint64, releaseAutoAnalyzeProcID func(uint64)) AutoAnalyzeProcIDGenerator

NewGenerator creates a new Generator.

type AutoAnalyzeTracker

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

AutoAnalyzeTracker is used to track the auto analyze process.

func NewAutoAnalyzeTracker

func NewAutoAnalyzeTracker(track func(id uint64, ctx sysproctrack.TrackProc) error, untrack func(id uint64)) *AutoAnalyzeTracker

NewAutoAnalyzeTracker creates a new AutoAnalyzeTracker.

func (*AutoAnalyzeTracker) Track

Track is used to track the auto analyze process.

func (*AutoAnalyzeTracker) UnTrack

func (t *AutoAnalyzeTracker) UnTrack(id uint64)

UnTrack is used to untrack the auto analyze process.

type JSONColumn

type JSONColumn struct {
	Histogram *tipb.Histogram `json:"histogram"`
	CMSketch  *tipb.CMSketch  `json:"cm_sketch"`
	FMSketch  *tipb.FMSketch  `json:"fm_sketch"`
	// StatsVer is a pointer here since the old version json file would not contain version information.
	StatsVer          *int64  `json:"stats_ver"`
	NullCount         int64   `json:"null_count"`
	TotColSize        int64   `json:"tot_col_size"`
	LastUpdateVersion uint64  `json:"last_update_version"`
	Correlation       float64 `json:"correlation"`
}

JSONColumn is used for dumping statistics.

func (*JSONColumn) TotalMemoryUsage

func (col *JSONColumn) TotalMemoryUsage() (size int64)

TotalMemoryUsage returns the total memory usage of this column.

type JSONExtendedStats

type JSONExtendedStats struct {
	StatsName  string  `json:"stats_name"`
	StringVals string  `json:"string_vals"`
	ColIDs     []int64 `json:"cols"`
	ScalarVals float64 `json:"scalar_vals"`
	Tp         uint8   `json:"type"`
}

JSONExtendedStats is used for dumping extended statistics.

type JSONPredicateColumn

type JSONPredicateColumn struct {
	LastUsedAt     *string `json:"last_used_at"`
	LastAnalyzedAt *string `json:"last_analyzed_at"`
	ID             int64   `json:"id"`
}

JSONPredicateColumn contains the information of the columns used in the predicate.

type JSONTable

type JSONTable struct {
	Columns           map[string]*JSONColumn `json:"columns"`
	Indices           map[string]*JSONColumn `json:"indices"`
	Partitions        map[string]*JSONTable  `json:"partitions"`
	DatabaseName      string                 `json:"database_name"`
	TableName         string                 `json:"table_name"`
	ExtStats          []*JSONExtendedStats   `json:"ext_stats"`
	PredicateColumns  []*JSONPredicateColumn `json:"predicate_columns"`
	Count             int64                  `json:"count"`
	ModifyCount       int64                  `json:"modify_count"`
	Version           uint64                 `json:"version"`
	IsHistoricalStats bool                   `json:"is_historical_stats"`
}

JSONTable is used for dumping statistics.

func (*JSONTable) Sort

func (j *JSONTable) Sort()

Sort is used to sort the object in the JSONTable. it is used for testing to avoid flaky test.

type LeaseGetter

type LeaseGetter interface {
	// Lease returns the stats lease.
	Lease() time.Duration
	// SetLease sets the stats lease. Only used for test.
	SetLease(lease time.Duration)
}

LeaseGetter is used to get the stats lease.

func NewLeaseGetter

func NewLeaseGetter(lease time.Duration) LeaseGetter

NewLeaseGetter creates a new LeaseGetter.

type Pool

type Pool interface {
	// GPool returns the goroutine pool.
	GPool() *gp.Pool

	// SPool returns the session pool.
	SPool() util.SessionPool

	// Close closes the goroutine pool.
	Close()
}

Pool is used to reuse goroutine and session.

func NewPool

func NewPool(p util.SessionPool) Pool

NewPool creates a new Pool.

type TableInfoGetter

type TableInfoGetter interface {
	// TableInfoByID returns the table info specified by the physicalID.
	// If the physicalID is corresponding to a partition, return its parent table.
	TableInfoByID(is infoschema.InfoSchema, physicalID int64) (table.Table, bool)
}

TableInfoGetter is used to get table meta info.

func NewTableInfoGetter

func NewTableInfoGetter() TableInfoGetter

NewTableInfoGetter creates a TableInfoGetter.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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