Version: v2.0.5+incompatible Latest Latest

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

Go to latest
Published: Jul 6, 2018 License: Apache-2.0 Imports: 17 Imported by: 0




View Source
const (
	CodeUnsupportedType terror.ErrCode = 1

Error codes.


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

Error instances.


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.


type IntColumnRange

type IntColumnRange struct {
	LowVal  int64
	HighVal int64

IntColumnRange represents a range for a integer column, both low and high are inclusive.

func FullIntRange

func FullIntRange() []IntColumnRange

FullIntRange is (-∞, +∞) for IntColumnRange.

func (*IntColumnRange) IsPoint

func (tr *IntColumnRange) IsPoint() bool

IsPoint returns if the table range is a point.

func (IntColumnRange) String

func (tr IntColumnRange) String() string

type NewRange

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

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

NewRange represents a range generated in physical plan building phase.

func BuildColumnRange

func BuildColumnRange(conds []expression.Expression, sc *stmtctx.StatementContext, tp *types.FieldType) ([]*NewRange, 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) ([]*NewRange, error)

BuildTableRange will build range of pk for PhysicalTableScan

func DetachCondAndBuildRangeForIndex

func DetachCondAndBuildRangeForIndex(sctx sessionctx.Context, conditions []expression.Expression, cols []*expression.Column,
	lengths []int) ([]*NewRange, []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 []*NewRange, 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 FullIntNewRange

func FullIntNewRange(isUnsigned bool) []*NewRange

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

func FullNewRange

func FullNewRange() []*NewRange

FullNewRange is (-∞, +∞) for NewRange.

func (*NewRange) Clone

func (ran *NewRange) Clone() *NewRange

Clone clones a NewRange.

func (*NewRange) IsPoint

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

IsPoint returns if the range is a point.

func (*NewRange) PrefixEqualLen

func (ran *NewRange) 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 (*NewRange) String

func (ran *NewRange) String() string

Convert2NewRange implements the Convert2NewRange interface.

type RangeType

type RangeType int

RangeType is alias for int.

const (
	IntRangeType RangeType = iota

RangeType constants.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL