expression

package
v0.6.2 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2020 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ConvertToBinary is a conversion to binary.
	ConvertToBinary = "binary"
	// ConvertToChar is a conversion to char.
	ConvertToChar = "char"
	// ConvertToNChar is a conversion to nchar.
	ConvertToNChar = "nchar"
	// ConvertToDate is a conversion to date.
	ConvertToDate = "date"
	// ConvertToDatetime is a conversion to datetime.
	ConvertToDatetime = "datetime"
	// ConvertToTimestamp is a conversion to timestamp.
	ConvertToTimestamp = "timestamp"
	// ConvertToDecimal is a conversion to decimal.
	ConvertToDecimal = "decimal"
	// ConvertToJSON is a conversion to json.
	ConvertToJSON = "json"
	// ConvertToSigned is a conversion to signed.
	ConvertToSigned = "signed"
	// ConvertToUnsigned is a conversion to unsigned.
	ConvertToUnsigned = "unsigned"
)
View Source
const IsFalseStr = "IS FALSE"
View Source
const IsTrueStr = "IS TRUE"

Variables

View Source
var (
	// ErrUnsupportedInOperand is returned when there is an invalid righthand
	// operand in an IN operator.
	ErrUnsupportedInOperand = errors.NewKind("right operand in IN operation must be tuple, but is %T")
	// ErrInvalidOperandColumns is returned when the columns in the left operand
	// and the elements of the right operand don't match.
	ErrInvalidOperandColumns = errors.NewKind("operand should have %d columns, but has %d")
)
View Source
var ErrConvertExpression = errors.NewKind("expression '%v': couldn't convert to %v")

ErrConvertExpression is returned when a conversion is not possible.

View Source
var ErrIndexOutOfBounds = errors.NewKind("unable to find field with index %d in row of %d columns")

ErrIndexOutOfBounds is returned when the field index is out of the bounds.

View Source
var ErrNilOperand = errors.NewKind("nil operand found in comparison")

ErrNilOperand ir returned if some or both of the comparison's operands is nil.

Functions

func Inspect

func Inspect(expr sql.Expression, f func(sql.Expression) bool)

Inspect traverses the plan in depth-first order: It starts by calling f(expr); expr must not be nil. If f returns true, Inspect invokes f recursively for each of the children of expr, followed by a call of f(nil).

func IsBinary

func IsBinary(e sql.Expression) bool

IsBinary returns whether the expression is binary or not.

func IsUnary

func IsUnary(e sql.Expression) bool

IsUnary returns whether the expression is unary or not.

func JoinAnd

func JoinAnd(exprs ...sql.Expression) sql.Expression

JoinAnd joins several expressions with And.

func NewAnd

func NewAnd(left, right sql.Expression) sql.Expression

NewAnd creates a new And expression.

func NewLike

func NewLike(left, right sql.Expression) sql.Expression

NewLike creates a new LIKE expression.

func NewOr

func NewOr(left, right sql.Expression) sql.Expression

NewOr creates a new Or expression.

func NewSetField

func NewSetField(colName, expr sql.Expression) sql.Expression

NewSetField creates a new SetField expression.

func TransformUp

func TransformUp(e sql.Expression, f sql.TransformExprFunc) (sql.Expression, error)

TransformUp applies a transformation function to the given expression from the bottom up.

func Walk

func Walk(v Visitor, expr sql.Expression)

Walk traverses the plan tree in depth-first order. It starts by calling v.Visit(expr); expr must not be nil. If the visitor returned by v.Visit(expr) is not nil, Walk is invoked recursively with the returned visitor for each children of the expr, followed by a call of v.Visit(nil) to the returned visitor.

Types

type Alias

type Alias struct {
	UnaryExpression
	// contains filtered or unexported fields
}

Alias is a node that gives a name to an expression.

func NewAlias

func NewAlias(child sql.Expression, name string) *Alias

NewAlias returns a new Alias node.

func (*Alias) Eval

func (e *Alias) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*Alias) Name

func (e *Alias) Name() string

Name implements the Nameable interface.

func (*Alias) String

func (e *Alias) String() string

func (*Alias) Type

func (e *Alias) Type() sql.Type

Type returns the type of the expression.

func (*Alias) WithChildren

func (e *Alias) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type And

type And struct {
	BinaryExpression
}

And checks whether two expressions are true.

func (*And) Eval

func (a *And) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*And) String

func (a *And) String() string

func (*And) Type

func (*And) Type() sql.Type

Type implements the Expression interface.

func (*And) WithChildren

func (a *And) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type Arithmetic

type Arithmetic struct {
	BinaryExpression
	Op string
}

Arithmetic expressions (+, -, *, /, ...)

func NewArithmetic

func NewArithmetic(left, right sql.Expression, op string) *Arithmetic

NewArithmetic creates a new Arithmetic sql.Expression.

func NewBitAnd

func NewBitAnd(left, right sql.Expression) *Arithmetic

NewBitAnd creates a new Arithmetic & sql.Expression.

func NewBitOr

func NewBitOr(left, right sql.Expression) *Arithmetic

NewBitOr creates a new Arithmetic | sql.Expression.

func NewBitXor

func NewBitXor(left, right sql.Expression) *Arithmetic

NewBitXor creates a new Arithmetic ^ sql.Expression.

func NewDiv

func NewDiv(left, right sql.Expression) *Arithmetic

NewDiv creates a new Arithmetic / sql.Expression.

func NewIntDiv

func NewIntDiv(left, right sql.Expression) *Arithmetic

NewIntDiv creates a new Arithmetic div sql.Expression.

func NewMinus

func NewMinus(left, right sql.Expression) *Arithmetic

NewMinus creates a new Arithmetic - sql.Expression.

func NewMod

func NewMod(left, right sql.Expression) *Arithmetic

NewMod creates a new Arithmetic % sql.Expression.

func NewMult

func NewMult(left, right sql.Expression) *Arithmetic

NewMult creates a new Arithmetic * sql.Expression.

func NewPlus

func NewPlus(left, right sql.Expression) *Arithmetic

NewPlus creates a new Arithmetic + sql.Expression.

func NewShiftLeft

func NewShiftLeft(left, right sql.Expression) *Arithmetic

NewShiftLeft creates a new Arithmetic << sql.Expression.

func NewShiftRight

func NewShiftRight(left, right sql.Expression) *Arithmetic

NewShiftRight creates a new Arithmetic >> sql.Expression.

func (*Arithmetic) Eval

func (a *Arithmetic) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*Arithmetic) IsNullable

func (a *Arithmetic) IsNullable() bool

IsNullable implements the sql.Expression interface.

func (*Arithmetic) String

func (a *Arithmetic) String() string

func (*Arithmetic) Type

func (a *Arithmetic) Type() sql.Type

Type returns the greatest type for given operation.

func (*Arithmetic) WithChildren

func (a *Arithmetic) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type Between

type Between struct {
	Val   sql.Expression
	Lower sql.Expression
	Upper sql.Expression
}

Between checks a value is between two given values.

func NewBetween

func NewBetween(val, lower, upper sql.Expression) *Between

NewBetween creates a new Between expression.

func (*Between) Children

func (b *Between) Children() []sql.Expression

Children implements the Expression interface.

func (*Between) Eval

func (b *Between) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*Between) IsNullable

func (b *Between) IsNullable() bool

IsNullable implements the Expression interface.

func (*Between) Resolved

func (b *Between) Resolved() bool

Resolved implements the Expression interface.

func (*Between) String

func (b *Between) String() string

func (*Between) Type

func (*Between) Type() sql.Type

Type implements the Expression interface.

func (*Between) WithChildren

func (b *Between) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type BinaryExpression

type BinaryExpression struct {
	Left  sql.Expression
	Right sql.Expression
}

BinaryExpression is an expression that has two children.

func (*BinaryExpression) Children

func (p *BinaryExpression) Children() []sql.Expression

Children implements the Expression interface.

func (*BinaryExpression) IsNullable

func (p *BinaryExpression) IsNullable() bool

IsNullable returns whether the expression can be null.

func (*BinaryExpression) Resolved

func (p *BinaryExpression) Resolved() bool

Resolved implements the Expression interface.

type Case

type Case struct {
	Expr     sql.Expression
	Branches []CaseBranch
	Else     sql.Expression
}

Case is an expression that returns the value of one of its branches when a condition is met.

func NewCase

func NewCase(expr sql.Expression, branches []CaseBranch, elseExpr sql.Expression) *Case

NewCase returns an new Case expression.

func (*Case) Children

func (c *Case) Children() []sql.Expression

Children implements the sql.Expression interface.

func (*Case) Eval

func (c *Case) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the sql.Expression interface.

func (*Case) IsNullable

func (c *Case) IsNullable() bool

IsNullable implements the sql.Expression interface.

func (*Case) Resolved

func (c *Case) Resolved() bool

Resolved implements the sql.Expression interface.

func (*Case) String

func (c *Case) String() string

func (*Case) Type

func (c *Case) Type() sql.Type

Type implements the sql.Expression interface.

func (*Case) WithChildren

func (c *Case) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type CaseBranch

type CaseBranch struct {
	Cond  sql.Expression
	Value sql.Expression
}

CaseBranch is a single branch of a case expression.

type Comparer

type Comparer interface {
	sql.Expression
	Compare(ctx *sql.Context, row sql.Row) (int, error)
	Left() sql.Expression
	Right() sql.Expression
}

Comparer implements a comparison expression.

type Convert

type Convert struct {
	UnaryExpression
	// contains filtered or unexported fields
}

Convert represent a CAST(x AS T) or CONVERT(x, T) operation that casts x expression to type T.

func NewConvert

func NewConvert(expr sql.Expression, castToType string) *Convert

NewConvert creates a new Convert expression.

func (*Convert) Eval

func (c *Convert) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*Convert) IsNullable

func (c *Convert) IsNullable() bool

IsNullable implements the Expression interface.

func (*Convert) String

func (c *Convert) String() string

Name implements the Expression interface.

func (*Convert) Type

func (c *Convert) Type() sql.Type

Type implements the Expression interface.

func (*Convert) WithChildren

func (c *Convert) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type DefaultColumn

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

DefaultColumn is an default expression of a column that is not yet resolved.

func NewDefaultColumn

func NewDefaultColumn(name string) *DefaultColumn

NewDefaultColumn creates a new NewDefaultColumn expression.

func (*DefaultColumn) Children

func (*DefaultColumn) Children() []sql.Expression

Children implements the sql.Expression interface. The function returns always nil

func (*DefaultColumn) Eval

func (*DefaultColumn) Eval(ctx *sql.Context, r sql.Row) (interface{}, error)

Eval implements the sql.Expression interface. The function always panics!

func (*DefaultColumn) IsNullable

func (*DefaultColumn) IsNullable() bool

IsNullable implements the sql.Expression interface. The function always panics!

func (*DefaultColumn) Name

func (c *DefaultColumn) Name() string

Name implements the sql.Nameable interface.

func (*DefaultColumn) Resolved

func (*DefaultColumn) Resolved() bool

Resolved implements the sql.Expression interface. The function returns always false

func (*DefaultColumn) String

func (c *DefaultColumn) String() string

String implements the Stringer The function returns column's name (can be an empty string)

func (*DefaultColumn) Type

func (*DefaultColumn) Type() sql.Type

Type implements the sql.Expression interface. The function always panics!

func (*DefaultColumn) WithChildren

func (c *DefaultColumn) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type Equals

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

Equals is a comparison that checks an expression is equal to another.

func NewEquals

func NewEquals(left sql.Expression, right sql.Expression) *Equals

NewEquals returns a new Equals expression.

func (*Equals) Compare

func (c *Equals) Compare(ctx *sql.Context, row sql.Row) (int, error)

Compare the two given values using the types of the expressions in the comparison. Since both types should be equal, it does not matter which type is used, but for reference, the left type is always used.

func (*Equals) Eval

func (e *Equals) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*Equals) Left

func (c *Equals) Left() sql.Expression

Left implements Comparer interface

func (*Equals) Right

func (c *Equals) Right() sql.Expression

Right implements Comparer interface

func (*Equals) String

func (e *Equals) String() string

func (*Equals) Type

func (*Equals) Type() sql.Type

Type implements the Expression interface.

func (*Equals) WithChildren

func (e *Equals) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type GetField

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

GetField is an expression to get the field of a table.

func NewGetField

func NewGetField(index int, fieldType sql.Type, fieldName string, nullable bool) *GetField

NewGetField creates a GetField expression.

func NewGetFieldWithTable

func NewGetFieldWithTable(index int, fieldType sql.Type, table, fieldName string, nullable bool) *GetField

NewGetFieldWithTable creates a GetField expression with table name.

func (*GetField) Children

func (*GetField) Children() []sql.Expression

Children implements the Expression interface.

func (*GetField) Eval

func (p *GetField) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*GetField) Index

func (p *GetField) Index() int

Index returns the index where the GetField will look for the value from a sql.Row.

func (*GetField) IsNullable

func (p *GetField) IsNullable() bool

IsNullable returns whether the field is nullable or not.

func (*GetField) Name

func (p *GetField) Name() string

Name implements the Nameable interface.

func (*GetField) Resolved

func (p *GetField) Resolved() bool

Resolved implements the Expression interface.

func (*GetField) String

func (p *GetField) String() string

func (*GetField) Table

func (p *GetField) Table() string

Table returns the name of the field table.

func (*GetField) Type

func (p *GetField) Type() sql.Type

Type returns the type of the field.

func (*GetField) WithChildren

func (p *GetField) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

func (*GetField) WithIndex

func (p *GetField) WithIndex(n int) sql.Expression

WithIndex returns this same GetField with a new index.

type GetSessionField

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

GetSessionField is an expression that returns the value of a session configuration.

func NewGetSessionField

func NewGetSessionField(name string, typ sql.Type, value interface{}) *GetSessionField

NewGetSessionField creates a new GetSessionField expression.

func (*GetSessionField) Children

func (f *GetSessionField) Children() []sql.Expression

Children implements the sql.Expression interface.

func (*GetSessionField) Eval

func (f *GetSessionField) Eval(*sql.Context, sql.Row) (interface{}, error)

Eval implements the sql.Expression interface.

func (*GetSessionField) IsNullable

func (f *GetSessionField) IsNullable() bool

IsNullable implements the sql.Expression interface.

func (*GetSessionField) Resolved

func (f *GetSessionField) Resolved() bool

Resolved implements the sql.Expression interface.

func (*GetSessionField) String

func (f *GetSessionField) String() string

String implements the sql.Expression interface.

func (*GetSessionField) Type

func (f *GetSessionField) Type() sql.Type

Type implements the sql.Expression interface.

func (*GetSessionField) WithChildren

func (f *GetSessionField) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type GreaterThan

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

GreaterThan is a comparison that checks an expression is greater than another.

func NewGreaterThan

func NewGreaterThan(left sql.Expression, right sql.Expression) *GreaterThan

NewGreaterThan creates a new GreaterThan expression.

func (*GreaterThan) Compare

func (c *GreaterThan) Compare(ctx *sql.Context, row sql.Row) (int, error)

Compare the two given values using the types of the expressions in the comparison. Since both types should be equal, it does not matter which type is used, but for reference, the left type is always used.

func (*GreaterThan) Eval

func (gt *GreaterThan) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*GreaterThan) Left

func (c *GreaterThan) Left() sql.Expression

Left implements Comparer interface

func (*GreaterThan) Right

func (c *GreaterThan) Right() sql.Expression

Right implements Comparer interface

func (*GreaterThan) String

func (gt *GreaterThan) String() string

func (*GreaterThan) Type

func (*GreaterThan) Type() sql.Type

Type implements the Expression interface.

func (*GreaterThan) WithChildren

func (gt *GreaterThan) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type GreaterThanOrEqual

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

GreaterThanOrEqual is a comparison that checks an expression is greater or equal to another.

func NewGreaterThanOrEqual

func NewGreaterThanOrEqual(left sql.Expression, right sql.Expression) *GreaterThanOrEqual

NewGreaterThanOrEqual creates a new GreaterThanOrEqual

func (*GreaterThanOrEqual) Compare

func (c *GreaterThanOrEqual) Compare(ctx *sql.Context, row sql.Row) (int, error)

Compare the two given values using the types of the expressions in the comparison. Since both types should be equal, it does not matter which type is used, but for reference, the left type is always used.

func (*GreaterThanOrEqual) Eval

func (gte *GreaterThanOrEqual) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*GreaterThanOrEqual) Left

func (c *GreaterThanOrEqual) Left() sql.Expression

Left implements Comparer interface

func (*GreaterThanOrEqual) Right

func (c *GreaterThanOrEqual) Right() sql.Expression

Right implements Comparer interface

func (*GreaterThanOrEqual) String

func (gte *GreaterThanOrEqual) String() string

func (*GreaterThanOrEqual) Type

func (*GreaterThanOrEqual) Type() sql.Type

Type implements the Expression interface.

func (*GreaterThanOrEqual) WithChildren

func (gte *GreaterThanOrEqual) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type In

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

In is a comparison that checks an expression is inside a list of expressions.

func NewIn

func NewIn(left sql.Expression, right sql.Expression) *In

NewIn creates a In expression.

func (*In) Children

func (in *In) Children() []sql.Expression

Children implements the Expression interface.

func (*In) Compare

func (c *In) Compare(ctx *sql.Context, row sql.Row) (int, error)

Compare the two given values using the types of the expressions in the comparison. Since both types should be equal, it does not matter which type is used, but for reference, the left type is always used.

func (*In) Eval

func (in *In) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*In) Left

func (c *In) Left() sql.Expression

Left implements Comparer interface

func (*In) Right

func (c *In) Right() sql.Expression

Right implements Comparer interface

func (*In) String

func (in *In) String() string

func (*In) Type

func (*In) Type() sql.Type

Type implements the Expression interface.

func (*In) WithChildren

func (in *In) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type Interval

type Interval struct {
	UnaryExpression
	Unit string
}

Interval defines a time duration.

func NewInterval

func NewInterval(child sql.Expression, unit string) *Interval

NewInterval creates a new interval expression.

func (*Interval) Eval

func (i *Interval) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the sql.Expression interface.

func (*Interval) EvalDelta

func (i *Interval) EvalDelta(ctx *sql.Context, row sql.Row) (*TimeDelta, error)

EvalDelta evaluates the expression returning a TimeDelta. This method should be used instead of Eval, as this expression returns a TimeDelta, which is not a valid value that can be returned in Eval.

func (*Interval) IsNullable

func (i *Interval) IsNullable() bool

IsNullable implements the sql.Expression interface.

func (*Interval) String

func (i *Interval) String() string

func (*Interval) Type

func (i *Interval) Type() sql.Type

Type implements the sql.Expression interface.

func (*Interval) WithChildren

func (i *Interval) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type IsNull

type IsNull struct {
	UnaryExpression
}

IsNull is an expression that checks if an expression is null.

func NewIsNull

func NewIsNull(child sql.Expression) *IsNull

NewIsNull creates a new IsNull expression.

func (*IsNull) Eval

func (e *IsNull) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*IsNull) IsNullable

func (e *IsNull) IsNullable() bool

IsNullable implements the Expression interface.

func (IsNull) String

func (e IsNull) String() string

func (*IsNull) Type

func (e *IsNull) Type() sql.Type

Type implements the Expression interface.

func (*IsNull) WithChildren

func (e *IsNull) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type IsTrue

type IsTrue struct {
	UnaryExpression
	// contains filtered or unexported fields
}

IsTrue is an expression that checks if an expression is true.

func NewIsFalse

func NewIsFalse(child sql.Expression) *IsTrue

NewIsFalse creates a new IsTrue expression with its boolean sense inverted (IsFalse, effectively).

func NewIsTrue

func NewIsTrue(child sql.Expression) *IsTrue

NewIsTrue creates a new IsTrue expression.

func (*IsTrue) Eval

func (e *IsTrue) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*IsTrue) IsNullable

func (*IsTrue) IsNullable() bool

IsNullable implements the Expression interface.

func (*IsTrue) String

func (e *IsTrue) String() string

func (*IsTrue) Type

func (*IsTrue) Type() sql.Type

Type implements the Expression interface.

func (*IsTrue) WithChildren

func (e *IsTrue) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type LessThan

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

LessThan is a comparison that checks an expression is less than another.

func NewLessThan

func NewLessThan(left sql.Expression, right sql.Expression) *LessThan

NewLessThan creates a new LessThan expression.

func (*LessThan) Compare

func (c *LessThan) Compare(ctx *sql.Context, row sql.Row) (int, error)

Compare the two given values using the types of the expressions in the comparison. Since both types should be equal, it does not matter which type is used, but for reference, the left type is always used.

func (*LessThan) Eval

func (lt *LessThan) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the expression interface.

func (*LessThan) Left

func (c *LessThan) Left() sql.Expression

Left implements Comparer interface

func (*LessThan) Right

func (c *LessThan) Right() sql.Expression

Right implements Comparer interface

func (*LessThan) String

func (lt *LessThan) String() string

func (*LessThan) Type

func (*LessThan) Type() sql.Type

Type implements the Expression interface.

func (*LessThan) WithChildren

func (lt *LessThan) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type LessThanOrEqual

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

LessThanOrEqual is a comparison that checks an expression is equal or lower than another.

func NewLessThanOrEqual

func NewLessThanOrEqual(left sql.Expression, right sql.Expression) *LessThanOrEqual

NewLessThanOrEqual creates a LessThanOrEqual expression.

func (*LessThanOrEqual) Compare

func (c *LessThanOrEqual) Compare(ctx *sql.Context, row sql.Row) (int, error)

Compare the two given values using the types of the expressions in the comparison. Since both types should be equal, it does not matter which type is used, but for reference, the left type is always used.

func (*LessThanOrEqual) Eval

func (lte *LessThanOrEqual) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*LessThanOrEqual) Left

func (c *LessThanOrEqual) Left() sql.Expression

Left implements Comparer interface

func (*LessThanOrEqual) Right

func (c *LessThanOrEqual) Right() sql.Expression

Right implements Comparer interface

func (*LessThanOrEqual) String

func (lte *LessThanOrEqual) String() string

func (*LessThanOrEqual) Type

func (*LessThanOrEqual) Type() sql.Type

Type implements the Expression interface.

func (*LessThanOrEqual) WithChildren

func (lte *LessThanOrEqual) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type Like

type Like struct {
	BinaryExpression
	// contains filtered or unexported fields
}

Like performs pattern matching against two strings.

func (*Like) Eval

func (l *Like) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the sql.Expression interface.

func (*Like) String

func (l *Like) String() string

func (*Like) Type

func (l *Like) Type() sql.Type

Type implements the sql.Expression interface.

func (*Like) WithChildren

func (l *Like) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type Literal

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

Literal represents a literal expression (string, number, bool, ...).

func NewLiteral

func NewLiteral(value interface{}, fieldType sql.Type) *Literal

NewLiteral creates a new Literal expression.

func (*Literal) Children

func (*Literal) Children() []sql.Expression

Children implements the Expression interface.

func (*Literal) Eval

func (p *Literal) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*Literal) IsNullable

func (p *Literal) IsNullable() bool

IsNullable implements the Expression interface.

func (*Literal) Resolved

func (p *Literal) Resolved() bool

Resolved implements the Expression interface.

func (*Literal) String

func (p *Literal) String() string

func (*Literal) Type

func (p *Literal) Type() sql.Type

Type implements the Expression interface.

func (*Literal) Value

func (p *Literal) Value() interface{}

Value returns the literal value.

func (*Literal) WithChildren

func (p *Literal) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type Not

type Not struct {
	UnaryExpression
}

Not is a node that negates an expression.

func NewNot

func NewNot(child sql.Expression) *Not

NewNot returns a new Not node.

func (*Not) Eval

func (e *Not) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*Not) String

func (e *Not) String() string

func (*Not) Type

func (e *Not) Type() sql.Type

Type implements the Expression interface.

func (*Not) WithChildren

func (e *Not) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type NotIn

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

NotIn is a comparison that checks an expression is not inside a list of expressions.

func NewNotIn

func NewNotIn(left sql.Expression, right sql.Expression) *NotIn

NewNotIn creates a In expression.

func (*NotIn) Children

func (in *NotIn) Children() []sql.Expression

Children implements the Expression interface.

func (*NotIn) Compare

func (c *NotIn) Compare(ctx *sql.Context, row sql.Row) (int, error)

Compare the two given values using the types of the expressions in the comparison. Since both types should be equal, it does not matter which type is used, but for reference, the left type is always used.

func (*NotIn) Eval

func (in *NotIn) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*NotIn) Left

func (c *NotIn) Left() sql.Expression

Left implements Comparer interface

func (*NotIn) Right

func (c *NotIn) Right() sql.Expression

Right implements Comparer interface

func (*NotIn) String

func (in *NotIn) String() string

func (*NotIn) Type

func (*NotIn) Type() sql.Type

Type implements the Expression interface.

func (*NotIn) WithChildren

func (in *NotIn) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type Or

type Or struct {
	BinaryExpression
}

Or checks whether one of the two given expressions is true.

func (*Or) Eval

func (o *Or) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*Or) String

func (o *Or) String() string

func (*Or) Type

func (*Or) Type() sql.Type

Type implements the Expression interface.

func (*Or) WithChildren

func (o *Or) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type Regexp

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

Regexp is a comparison that checks an expression matches a regexp.

func NewRegexp

func NewRegexp(left sql.Expression, right sql.Expression) *Regexp

NewRegexp creates a new Regexp expression.

func (*Regexp) Compare

func (c *Regexp) Compare(ctx *sql.Context, row sql.Row) (int, error)

Compare the two given values using the types of the expressions in the comparison. Since both types should be equal, it does not matter which type is used, but for reference, the left type is always used.

func (*Regexp) Eval

func (re *Regexp) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*Regexp) Left

func (c *Regexp) Left() sql.Expression

Left implements Comparer interface

func (*Regexp) Right

func (c *Regexp) Right() sql.Expression

Right implements Comparer interface

func (*Regexp) String

func (re *Regexp) String() string

func (*Regexp) Type

func (*Regexp) Type() sql.Type

Type implements the Expression interface.

func (*Regexp) WithChildren

func (re *Regexp) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type SetField

type SetField struct {
	BinaryExpression
}

SetField updates the value of a field from a row.

func (*SetField) Eval

func (s *SetField) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface. Returns a copy of the given row with an updated value.

func (*SetField) String

func (s *SetField) String() string

func (*SetField) Type

func (s *SetField) Type() sql.Type

Type implements the Expression interface.

func (*SetField) WithChildren

func (s *SetField) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type Star

type Star struct {
	Table string
}

Star represents the selection of all available fields. This is just a placeholder node, it will not actually be evaluated but converted to a series of GetFields when the query is analyzed.

func NewQualifiedStar

func NewQualifiedStar(table string) *Star

NewQualifiedStar returns a new star expression only for a specific table.

func NewStar

func NewStar() *Star

NewStar returns a new Star expression.

func (*Star) Children

func (*Star) Children() []sql.Expression

Children implements the Expression interface.

func (*Star) Eval

func (*Star) Eval(ctx *sql.Context, r sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*Star) IsNullable

func (*Star) IsNullable() bool

IsNullable implements the Expression interface.

func (*Star) Resolved

func (*Star) Resolved() bool

Resolved implements the Expression interface.

func (*Star) String

func (s *Star) String() string

func (*Star) Type

func (*Star) Type() sql.Type

Type implements the Expression interface.

func (*Star) WithChildren

func (s *Star) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type Subquery

type Subquery struct {
	Query sql.Node
	// contains filtered or unexported fields
}

Subquery that is executed as an expression.

func NewSubquery

func NewSubquery(node sql.Node) *Subquery

NewSubquery returns a new subquery node.

func (*Subquery) Children

func (s *Subquery) Children() []sql.Expression

Children implements the Expression interface.

func (*Subquery) Eval

func (s *Subquery) Eval(ctx *sql.Context, _ sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*Subquery) EvalMultiple

func (s *Subquery) EvalMultiple(ctx *sql.Context) ([]interface{}, error)

EvalMultiple returns all rows returned by a subquery.

func (*Subquery) IsNullable

func (s *Subquery) IsNullable() bool

IsNullable implements the Expression interface.

func (*Subquery) Resolved

func (s *Subquery) Resolved() bool

Resolved implements the Expression interface.

func (*Subquery) String

func (s *Subquery) String() string

func (*Subquery) Type

func (s *Subquery) Type() sql.Type

Type implements the Expression interface.

func (*Subquery) WithChildren

func (s *Subquery) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

func (*Subquery) WithQuery

func (s *Subquery) WithQuery(node sql.Node) *Subquery

WithQuery returns the subquery with the query node changed.

type TimeDelta

type TimeDelta struct {
	Years        int64
	Months       int64
	Days         int64
	Hours        int64
	Minutes      int64
	Seconds      int64
	Microseconds int64
}

TimeDelta is the difference between a time and another time.

func (TimeDelta) Add

func (td TimeDelta) Add(t time.Time) time.Time

Add returns the given time plus the time delta.

func (TimeDelta) Sub

func (td TimeDelta) Sub(t time.Time) time.Time

Sub returns the given time minus the time delta.

type Tuple

type Tuple []sql.Expression

Tuple is a fixed-size collection of expressions. A tuple of size 1 is treated as the expression itself.

func NewTuple

func NewTuple(exprs ...sql.Expression) Tuple

NewTuple creates a new Tuple expression.

func (Tuple) Children

func (t Tuple) Children() []sql.Expression

Children implements the Expression interface.

func (Tuple) Eval

func (t Tuple) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (Tuple) IsNullable

func (t Tuple) IsNullable() bool

IsNullable implements the Expression interface.

func (Tuple) Resolved

func (t Tuple) Resolved() bool

Resolved implements the Expression interface.

func (Tuple) String

func (t Tuple) String() string

func (Tuple) Type

func (t Tuple) Type() sql.Type

Type implements the Expression interface.

func (Tuple) WithChildren

func (t Tuple) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type UnaryExpression

type UnaryExpression struct {
	Child sql.Expression
}

UnaryExpression is an expression that has only one children.

func (*UnaryExpression) Children

func (p *UnaryExpression) Children() []sql.Expression

Children implements the Expression interface.

func (*UnaryExpression) IsNullable

func (p *UnaryExpression) IsNullable() bool

IsNullable returns whether the expression can be null.

func (*UnaryExpression) Resolved

func (p *UnaryExpression) Resolved() bool

Resolved implements the Expression interface.

type UnaryMinus

type UnaryMinus struct {
	UnaryExpression
}

UnaryMinus is an unary minus operator.

func NewUnaryMinus

func NewUnaryMinus(child sql.Expression) *UnaryMinus

NewUnaryMinus creates a new UnaryMinus expression node.

func (*UnaryMinus) Eval

func (e *UnaryMinus) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)

Eval implements the sql.Expression interface.

func (*UnaryMinus) String

func (e *UnaryMinus) String() string

func (*UnaryMinus) Type

func (e *UnaryMinus) Type() sql.Type

Type implements the sql.Expression interface.

func (*UnaryMinus) WithChildren

func (e *UnaryMinus) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type UnresolvedColumn

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

UnresolvedColumn is an expression of a column that is not yet resolved. This is a placeholder node, so its methods Type, IsNullable and Eval are not supposed to be called.

func NewUnresolvedColumn

func NewUnresolvedColumn(name string) *UnresolvedColumn

NewUnresolvedColumn creates a new UnresolvedColumn expression.

func NewUnresolvedQualifiedColumn

func NewUnresolvedQualifiedColumn(table, name string) *UnresolvedColumn

NewUnresolvedQualifiedColumn creates a new UnresolvedColumn expression with a table qualifier.

func (*UnresolvedColumn) Children

func (*UnresolvedColumn) Children() []sql.Expression

Children implements the Expression interface.

func (*UnresolvedColumn) Eval

func (*UnresolvedColumn) Eval(ctx *sql.Context, r sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*UnresolvedColumn) IsNullable

func (*UnresolvedColumn) IsNullable() bool

IsNullable implements the Expression interface.

func (*UnresolvedColumn) Name

func (uc *UnresolvedColumn) Name() string

Name implements the Nameable interface.

func (*UnresolvedColumn) Resolved

func (*UnresolvedColumn) Resolved() bool

Resolved implements the Expression interface.

func (*UnresolvedColumn) String

func (uc *UnresolvedColumn) String() string

func (*UnresolvedColumn) Table

func (uc *UnresolvedColumn) Table() string

Table returns the table name.

func (*UnresolvedColumn) Type

func (*UnresolvedColumn) Type() sql.Type

Type implements the Expression interface.

func (*UnresolvedColumn) WithChildren

func (uc *UnresolvedColumn) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type UnresolvedFunction

type UnresolvedFunction struct {

	// IsAggregate or not.
	IsAggregate bool
	// Children of the expression.
	Arguments []sql.Expression
	// contains filtered or unexported fields
}

UnresolvedFunction represents a function that is not yet resolved. This is a placeholder node, so its methods Type, IsNullable and Eval are not supposed to be called.

func NewUnresolvedFunction

func NewUnresolvedFunction(
	name string,
	agg bool,
	arguments ...sql.Expression,
) *UnresolvedFunction

NewUnresolvedFunction creates a new UnresolvedFunction expression.

func (*UnresolvedFunction) Children

func (uf *UnresolvedFunction) Children() []sql.Expression

Children implements the Expression interface.

func (*UnresolvedFunction) Eval

func (*UnresolvedFunction) Eval(ctx *sql.Context, r sql.Row) (interface{}, error)

Eval implements the Expression interface.

func (*UnresolvedFunction) IsNullable

func (*UnresolvedFunction) IsNullable() bool

IsNullable implements the Expression interface.

func (*UnresolvedFunction) Name

func (uf *UnresolvedFunction) Name() string

Name implements the Nameable interface.

func (*UnresolvedFunction) Resolved

func (*UnresolvedFunction) Resolved() bool

Resolved implements the Expression interface.

func (*UnresolvedFunction) String

func (uf *UnresolvedFunction) String() string

func (*UnresolvedFunction) Type

func (*UnresolvedFunction) Type() sql.Type

Type implements the Expression interface.

func (*UnresolvedFunction) WithChildren

func (uf *UnresolvedFunction) WithChildren(children ...sql.Expression) (sql.Expression, error)

WithChildren implements the Expression interface.

type Visitor

type Visitor interface {
	// Visit method is invoked for each expr encountered by Walk.
	// If the result Visitor is not nul, Walk visits each of the children
	// of the expr with that visitor, followed by a call of Visit(nil)
	// to the returned visitor.
	Visit(expr sql.Expression) Visitor
}

Visitor visits exprs in the plan.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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