ranger

package
v0.7.4 Latest Latest
Warning

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

Go to latest
Published: May 12, 2019 License: GPL-3.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CodeUnsupportedType terror.ErrCode = 1
)

Error codes.

Variables

View Source
var (
	ErrUnsupportedType = terror.ClassOptimizer.New(CodeUnsupportedType, "Unsupported type")
)

Error instances.

Functions

func DetachCondsForTableRange

func DetachCondsForTableRange(sctx sessionctx.Context, conds []expression.Expression, col *expression.Column) (accessContditions, otherConditions []expression.Expression)

DetachCondsForTableRange detaches the conditions used for range calculation form other useless conditions for calculating the table range.

func ExtractAccessConditionsForColumn

func ExtractAccessConditionsForColumn(conds []expression.Expression, colName model.CIStr) []expression.Expression

ExtractAccessConditionsForColumn detaches the access conditions used for range calculation.

Types

type Range

type Range struct {
	LowVal  []types.Datum
	HighVal []types.Datum

	LowExclude  bool // Low value is exclusive.
	HighExclude bool // High value is exclusive.
}

Range represents a range generated in physical plan building phase.

func BuildColumnRange

func BuildColumnRange(conds []expression.Expression, sc *stmtctx.StatementContext, tp *types.FieldType) ([]*Range, error)

BuildColumnRange builds the range for sampling histogram to calculate the row count.

func BuildTableRange

func BuildTableRange(accessConditions []expression.Expression, sc *stmtctx.StatementContext, tp *types.FieldType) ([]*Range, error)

BuildTableRange will build range of pk for PhysicalTableScan

func DetachCondAndBuildRangeForIndex

func DetachCondAndBuildRangeForIndex(sctx sessionctx.Context, conditions []expression.Expression, cols []*expression.Column,
	lengths []int) ([]*Range, []expression.Expression, []expression.Expression, int, error)

DetachCondAndBuildRangeForIndex will detach the index filters from table filters. If the top layer is DNF, we return a int slice which is eqAndInCount of every DNF item. Otherwise just one number is returned.

func DetachSimpleCondAndBuildRangeForIndex

func DetachSimpleCondAndBuildRangeForIndex(sctx sessionctx.Context, conditions []expression.Expression,
	cols []*expression.Column, lengths []int) (ranges []*Range, accessConds []expression.Expression, err error)

DetachSimpleCondAndBuildRangeForIndex will detach the index filters from table filters. It will find the point query column firstly and then extract the range query column.

func FullIntRange

func FullIntRange(isUnsigned bool) []*Range

FullIntRange is used for table range. Since table range cannot accept MaxValueDatum as the max value. So we need to set it to MaxInt64.

func FullRange

func FullRange() []*Range

FullRange is (-∞, +∞) for Range.

func (*Range) Clone

func (ran *Range) Clone() *Range

Clone clones a Range.

func (*Range) IsPoint

func (ran *Range) IsPoint(sc *stmtctx.StatementContext) bool

IsPoint returns if the range is a point.

func (*Range) PrefixEqualLen

func (ran *Range) PrefixEqualLen(sc *stmtctx.StatementContext) (int, error)

PrefixEqualLen tells you how long the prefix of the range is a point. e.g. If this range is (1 2 3, 1 2 +inf), then the return value is 2.

func (*Range) String

func (ran *Range) String() string

String implements the Stringer interface.

type RangeType

type RangeType int

RangeType is alias for int.

const (
	IntRangeType RangeType = iota
	ColumnRangeType
	IndexRangeType
)

RangeType constants.

Jump to

Keyboard shortcuts

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