Documentation
¶
Index ¶
- Constants
- Variables
- func AreComparable(types ...Type) bool
- func CastSQLError(err error) (*mysql.SQLError, error, bool)
- func ConvertToBool(v interface{}) (bool, error)
- func DBTableIter(ctx *Context, db Database, cb func(Table) (cont bool, err error)) error
- func DebugString(nodeOrExpression interface{}) string
- func DeepCopyJson(v interface{}) interface{}
- func Dispose(i interface{})
- func ErrIfMismatchedColumns(t1, t2 Type) error
- func ErrIfMismatchedColumnsInTuple(t1, t2 Type) error
- func EvaluateCondition(ctx *Context, cond Expression, row Row) (interface{}, error)
- func FormatRow(row Row) string
- func GetRangeCutKey(c RangeCut) interface{}
- func GetTableNameInsensitive(tblName string, tableNames []string) (string, bool)
- func GetTmpdirSessionVar() string
- func HasAvailableMemory(r Reporter) bool
- func HasDefaultValue(ctx *Context, s Session, key string) (bool, interface{})
- func HashOf(v Row) (uint64, error)
- func InitSystemVariables()
- func Inspect(expr Expression, f func(expr Expression) bool)
- func IsArray(t Type) bool
- func IsBlob(t Type) bool
- func IsDecimal(t Type) bool
- func IsDeferredType(t Type) bool
- func IsDualTable(t Table) bool
- func IsFalse(val interface{}) bool
- func IsFloat(t Type) bool
- func IsInteger(t Type) bool
- func IsJSON(t Type) bool
- func IsKeyless(s Schema) bool
- func IsNull(ex Expression) bool
- func IsNumber(t Type) bool
- func IsOkResult(row Row) bool
- func IsOkResultSchema(schema Schema) bool
- func IsSigned(t Type) bool
- func IsText(t Type) bool
- func IsTextBlob(t Type) bool
- func IsTextOnly(t Type) bool
- func IsTime(t Type) bool
- func IsTrue(val interface{}) bool
- func IsTuple(t Type) bool
- func IsUnsigned(t Type) bool
- func MustConvert(val interface{}, err error) interface{}
- func NewMapCache() mapCache
- func NewUniqueKeyErr(keyStr string, isPK bool, existing Row) error
- func NumColumns(t Type) int
- func NumericUnaryValue(t Type) interface{}
- func OrderedCuts(l, r RangeCut, typ Type) (RangeCut, RangeCut, error)
- func ParseEWKBHeader(buf []byte) (srid uint32, bigEndian bool, typ uint32, err error)
- func RangeCutIsBinding(c RangeCut) bool
- func RunWithNowFunc(nowFunc func() time.Time, fn func() error) error
- func TypesEqual(a, b Type) bool
- func ValidateTime(t time.Time) interface{}
- func Walk(v Visitor, expr Expression)
- func WalkWithNode(v NodeVisitor, n Node, expr Expression)
- type Above
- type AboveAll
- type Aggregation
- type AggregationBuffer
- type AlterableTable
- type AutoIncrementSetter
- type AutoIncrementTable
- type BackgroundThreads
- type BaseSession
- func (s *BaseSession) AddLock(lockName string) error
- func (s *BaseSession) Address() string
- func (s *BaseSession) ClearWarnings()
- func (s *BaseSession) Client() Client
- func (s *BaseSession) CommitTransaction(*Context, string, Transaction) error
- func (s *BaseSession) DelLock(lockName string) error
- func (s *BaseSession) GetAllSessionVariables() map[string]interface{}
- func (s *BaseSession) GetCurrentDatabase() string
- func (s *BaseSession) GetIgnoreAutoCommit() bool
- func (s *BaseSession) GetIndexRegistry() *IndexRegistry
- func (s *BaseSession) GetLastQueryInfo(key string) int64
- func (s *BaseSession) GetLogger() *logrus.Entry
- func (s *BaseSession) GetQueriedDatabase() string
- func (s *BaseSession) GetSessionVariable(ctx *Context, sysVarName string) (interface{}, error)
- func (s *BaseSession) GetTransaction() Transaction
- func (s *BaseSession) GetUserVariable(ctx *Context, varName string) (Type, interface{}, error)
- func (s *BaseSession) GetViewRegistry() *ViewRegistry
- func (s *BaseSession) ID() uint32
- func (s *BaseSession) IterLocks(cb func(name string) error) error
- func (s *BaseSession) SetClient(c Client)
- func (s *BaseSession) SetConnectionId(id uint32)
- func (s *BaseSession) SetCurrentDatabase(dbName string)
- func (s *BaseSession) SetIgnoreAutoCommit(ignore bool)
- func (s *BaseSession) SetIndexRegistry(reg *IndexRegistry)
- func (s *BaseSession) SetLastQueryInfo(key string, value int64)
- func (s *BaseSession) SetLogger(logger *logrus.Entry)
- func (s *BaseSession) SetQueriedDatabase(dbName string)
- func (s *BaseSession) SetSessionVariable(ctx *Context, sysVarName string, value interface{}) error
- func (s *BaseSession) SetTransaction(tx Transaction)
- func (s *BaseSession) SetUserVariable(ctx *Context, varName string, value interface{}) error
- func (s *BaseSession) SetViewRegistry(reg *ViewRegistry)
- func (s *BaseSession) Warn(warn *Warning)
- func (s *BaseSession) WarningCount() uint16
- func (s *BaseSession) Warnings() []*Warning
- type Below
- type BelowAll
- type BinaryNode
- type BitType
- type Catalog
- type CharacterSet
- type CheckAlterableTable
- type CheckConstraint
- type CheckConstraints
- type CheckDefinition
- type CheckTable
- type Checksumable
- type Client
- type Closer
- type Collation
- func (c Collation) CharacterSet() CharacterSet
- func (c Collation) Equals(other Collation) bool
- func (c Collation) ID() int64
- func (c Collation) IsCompiled() string
- func (c Collation) IsDefault() string
- func (c Collation) PadSpace() string
- func (c Collation) SortLen() int64
- func (c Collation) String() string
- func (c Collation) WorksWithCharacterSet(cs CharacterSet) bool
- type Column
- type ColumnDefaultValue
- func MustNewNullDefault(expr Expression, outType Type, representsLiteral bool, mayReturnNil bool) *ColumnDefaultValue
- func NewColumnDefaultValue(expr Expression, outType Type, representsLiteral bool, mayReturnNil bool) (*ColumnDefaultValue, error)
- func NewUnresolvedColumnDefaultValue(expr string) *ColumnDefaultValue
- func (e *ColumnDefaultValue) CheckType(ctx *Context) error
- func (e *ColumnDefaultValue) Children() []Expression
- func (e *ColumnDefaultValue) DebugString() string
- func (e *ColumnDefaultValue) Eval(ctx *Context, r Row) (interface{}, error)
- func (e *ColumnDefaultValue) IsLiteral() bool
- func (e *ColumnDefaultValue) IsNullable() bool
- func (e *ColumnDefaultValue) Resolved() bool
- func (e *ColumnDefaultValue) String() string
- func (e *ColumnDefaultValue) Type() Type
- func (e *ColumnDefaultValue) WithChildren(children ...Expression) (Expression, error)
- type ColumnExpressionType
- type ColumnOrder
- type CommentedNode
- type Context
- func (c *Context) ApplyOpts(opts ...ContextOption)
- func (c *Context) Error(code int, msg string, args ...interface{})
- func (c *Context) KillConnection(connID uint32) error
- func (c *Context) LoadInfile(filename string) (io.ReadCloser, error)
- func (c *Context) NewCtxWithClient(client Client) *Context
- func (c *Context) NewErrgroup() (*errgroup.Group, *Context)
- func (c *Context) NewSubContext() (*Context, context.CancelFunc)
- func (c *Context) Pid() uint64
- func (c *Context) Query() string
- func (c *Context) QueryTime() time.Time
- func (c *Context) RootSpan() opentracing.Span
- func (c *Context) Span(opName string, opts ...opentracing.StartSpanOption) (opentracing.Span, *Context)
- func (c *Context) Warn(code int, msg string, args ...interface{})
- func (c *Context) WithContext(ctx context.Context) *Context
- func (c *Context) WithCurrentDB(db string) *Context
- func (c Context) WithQuery(q string) *Context
- type ContextOption
- func WithMemoryManager(m *MemoryManager) ContextOption
- func WithPid(pid uint64) ContextOption
- func WithProcessList(p ProcessList) ContextOption
- func WithQuery(q string) ContextOption
- func WithRootSpan(s opentracing.Span) ContextOption
- func WithServices(services Services) ContextOption
- func WithSession(s Session) ContextOption
- func WithTracer(t opentracing.Tracer) ContextOption
- type CreateFunc0Args
- type CreateFunc1Args
- type CreateFunc2Args
- type CreateFunc3Args
- type CreateFunc4Args
- type CreateFunc5Args
- type CreateFunc6Args
- type CreateFunc7Args
- type CreateFuncNArgs
- type Database
- type DatabaseProvider
- type Databaseable
- type Databaser
- type DatetimeType
- type DebugStringer
- type DecimalType
- type DeferredType
- type DeletableTable
- type Disposable
- type DisposeFunc
- type DriverIndex
- type DriverIndexLookup
- type DriverIndexableTable
- type EmptyProcessList
- func (e EmptyProcessList) AddPartitionProgress(pid uint64, tableName, partitionName string, total int64)
- func (e EmptyProcessList) AddProcess(ctx *Context, query string) (*Context, error)
- func (e EmptyProcessList) AddTableProgress(pid uint64, name string, total int64)
- func (e EmptyProcessList) Done(pid uint64)
- func (e EmptyProcessList) Kill(connID uint32)
- func (e EmptyProcessList) Processes() []Process
- func (e EmptyProcessList) RemovePartitionProgress(pid uint64, tableName, partitionName string)
- func (e EmptyProcessList) RemoveTableProgress(pid uint64, name string)
- func (e EmptyProcessList) UpdatePartitionProgress(pid uint64, tableName, partitionName string, delta int64)
- func (e EmptyProcessList) UpdateTableProgress(pid uint64, name string, delta int64)
- type Engine
- type EnumType
- type ErrInsertIgnore
- type Expression
- type Expression2
- type Expressioner
- type ExternalStoredProcedureDatabase
- type ExternalStoredProcedureDetails
- type FilteredIndex
- type FilteredTable
- type ForeignKeyConstraint
- type ForeignKeyReferentialAction
- type ForeignKeyTable
- type ForeignKeyUpdater
- type Freeable
- type Function
- type Function0
- type Function1
- type Function2
- type Function3
- type Function4
- type Function5
- type Function6
- type Function7
- type FunctionExpression
- type FunctionN
- type FunctionProvider
- type Generator
- type GeometryType
- func (t GeometryType) Compare(a any, b any) (int, error)
- func (t GeometryType) Convert(v interface{}) (interface{}, error)
- func (t GeometryType) Equals(otherType Type) (ok bool)
- func (t GeometryType) GetSpatialTypeSRID() (uint32, bool)
- func (t GeometryType) MatchSRID(v interface{}) error
- func (t GeometryType) Promote() Type
- func (t GeometryType) SQL(dest []byte, v interface{}) (sqltypes.Value, error)
- func (t GeometryType) SetSRID(v uint32) Type
- func (t GeometryType) String() string
- func (t GeometryType) Type() query.Type
- func (t GeometryType) ValueType() reflect.Type
- func (t GeometryType) Zero() interface{}
- type GeometryValue
- type Index
- type IndexAddressable
- type IndexAddressableTable
- type IndexAlterableTable
- type IndexBuilder
- func (b *IndexBuilder) Build(ctx *Context) (IndexLookup, error)
- func (b *IndexBuilder) Equals(ctx *Context, colExpr string, keys ...interface{}) *IndexBuilder
- func (b *IndexBuilder) GreaterOrEqual(ctx *Context, colExpr string, key interface{}) *IndexBuilder
- func (b *IndexBuilder) GreaterThan(ctx *Context, colExpr string, key interface{}) *IndexBuilder
- func (b *IndexBuilder) IsNotNull(ctx *Context, colExpr string) *IndexBuilder
- func (b *IndexBuilder) IsNull(ctx *Context, colExpr string) *IndexBuilder
- func (b *IndexBuilder) LessOrEqual(ctx *Context, colExpr string, key interface{}) *IndexBuilder
- func (b *IndexBuilder) LessThan(ctx *Context, colExpr string, key interface{}) *IndexBuilder
- func (b *IndexBuilder) NotEquals(ctx *Context, colExpr string, key interface{}) *IndexBuilder
- func (b *IndexBuilder) Ranges(ctx *Context) RangeCollection
- type IndexColumn
- type IndexConstraint
- type IndexDriver
- type IndexKeyValueIter
- type IndexLookup
- type IndexOrder
- type IndexRegistry
- func (r *IndexRegistry) AddIndex(idx DriverIndex) (created chan<- struct{}, ready <-chan struct{}, err error)
- func (r *IndexRegistry) CanRemoveIndex(idx Index) bool
- func (r *IndexRegistry) CanUseIndex(idx Index) bool
- func (r *IndexRegistry) DefaultIndexDriver() IndexDriver
- func (r *IndexRegistry) DeleteIndex(db, id string, force bool) (<-chan struct{}, error)
- func (r *IndexRegistry) ExpressionsWithIndexes(db string, exprs ...Expression) [][]Expression
- func (r *IndexRegistry) HasIndexes() bool
- func (r *IndexRegistry) Index(db, id string) DriverIndex
- func (r *IndexRegistry) IndexDriver(id string) IndexDriver
- func (r *IndexRegistry) IndexesByTable(db, table string) []DriverIndex
- func (r *IndexRegistry) LoadIndexes(ctx *Context, dbs []Database) error
- func (r *IndexRegistry) MarkOutdated(idx Index)
- func (r *IndexRegistry) MatchingIndex(ctx *Context, db string, expr ...Expression) (index Index, prefixCount int, err error)
- func (r *IndexRegistry) RegisterIndexDriver(driver IndexDriver)
- func (r *IndexRegistry) ReleaseIndex(idx Index)
- type IndexStatus
- type IndexUsing
- type IndexValueIter
- type IndexedTable
- type InsertableTable
- type JSONDocument
- func (doc JSONDocument) Compare(ctx *Context, v JSONValue) (int, error)
- func (doc JSONDocument) Contains(ctx *Context, candidate JSONValue) (val interface{}, err error)
- func (doc JSONDocument) Extract(ctx *Context, path string) (JSONValue, error)
- func (doc JSONDocument) Keys(ctx *Context, path string) (val JSONValue, err error)
- func (doc JSONDocument) Overlaps(ctx *Context, val SearchableJSONValue) (ok bool, err error)
- func (doc JSONDocument) Search(ctx *Context) (path string, err error)
- func (doc JSONDocument) ToString(_ *Context) (string, error)
- func (doc JSONDocument) Unmarshall(_ *Context) (JSONDocument, error)
- type JSONValue
- type JsonType
- type KeyValueCache
- type LikeMatcher
- type LineString
- type LineStringType
- func (t LineStringType) Compare(a interface{}, b interface{}) (int, error)
- func (t LineStringType) Convert(v interface{}) (interface{}, error)
- func (t LineStringType) Equals(otherType Type) bool
- func (t LineStringType) GetSpatialTypeSRID() (uint32, bool)
- func (t LineStringType) MatchSRID(v interface{}) error
- func (t LineStringType) Promote() Type
- func (t LineStringType) SQL(dest []byte, v interface{}) (sqltypes.Value, error)
- func (t LineStringType) SetSRID(v uint32) Type
- func (t LineStringType) String() string
- func (t LineStringType) Type() query.Type
- func (t LineStringType) ValueType() reflect.Type
- func (t LineStringType) Zero() interface{}
- type LockState
- type LockSubsystem
- type Lockable
- type MemoryManager
- func (m *MemoryManager) Free()
- func (m *MemoryManager) HasAvailable() bool
- func (m *MemoryManager) NewHistoryCache() (KeyValueCache, DisposeFunc)
- func (m *MemoryManager) NewLRUCache(size uint) (KeyValueCache, DisposeFunc)
- func (m *MemoryManager) NewRows2Cache() (Rows2Cache, DisposeFunc)
- func (m *MemoryManager) NewRowsCache() (RowsCache, DisposeFunc)
- func (m *MemoryManager) NumCaches() int
- type MultiDatabaser
- type MutableDatabaseProvider
- type Nameable
- type Node
- type Node2
- type NodeVisitor
- type NonDeterministicExpression
- type NullBound
- type NullOrdering
- type NullType
- type NumberType
- type OkResult
- type OpaqueNode
- type OrderedIndex
- type ParallelizedIndexAddressableTable
- type Partition
- type PartitionCounter
- type PartitionIndexKeyValueIter
- type PartitionIter
- type PartitionProgress
- type PersistableSession
- type Point
- type PointType
- func (t PointType) Compare(a interface{}, b interface{}) (int, error)
- func (t PointType) Convert(v interface{}) (interface{}, error)
- func (t PointType) Equals(otherType Type) bool
- func (t PointType) GetSpatialTypeSRID() (uint32, bool)
- func (t PointType) MatchSRID(v interface{}) error
- func (t PointType) Promote() Type
- func (t PointType) SQL(dest []byte, v interface{}) (sqltypes.Value, error)
- func (t PointType) SetSRID(v uint32) Type
- func (t PointType) String() string
- func (t PointType) Type() query.Type
- func (t PointType) ValueType() reflect.Type
- func (t PointType) Zero() interface{}
- type Polygon
- type PolygonType
- func (t PolygonType) Compare(a interface{}, b interface{}) (int, error)
- func (t PolygonType) Convert(v interface{}) (interface{}, error)
- func (t PolygonType) Equals(otherType Type) bool
- func (t PolygonType) GetSpatialTypeSRID() (uint32, bool)
- func (t PolygonType) MatchSRID(v interface{}) error
- func (t PolygonType) Promote() Type
- func (t PolygonType) SQL(dest []byte, v interface{}) (sqltypes.Value, error)
- func (t PolygonType) SetSRID(v uint32) Type
- func (t PolygonType) String() string
- func (t PolygonType) Type() query.Type
- func (t PolygonType) ValueType() reflect.Type
- func (t PolygonType) Zero() interface{}
- type PrimaryKeyAlterableTable
- type PrimaryKeySchema
- type PrimaryKeySchemaTarget
- type PrimaryKeyTable
- type PrivilegeType
- type PrivilegedOperation
- type PrivilegedOperationChecker
- type Process
- type ProcessList
- type Progress
- type ProjectedTable
- type Range
- func (rang Range) AsEmpty() Range
- func (rang Range) Compare(otherRange Range) (int, error)
- func (rang Range) Copy() Range
- func (rang Range) DebugString() string
- func (rang Range) Equals(otherRange Range) (bool, error)
- func (rang Range) ExpressionByColumnName(idx Index, colExpr string) (RangeColumnExpr, bool)
- func (rang Range) Intersect(otherRange Range) (Range, error)
- func (rang Range) IsConnected(otherRange Range) (bool, error)
- func (rang Range) IsSubsetOf(otherRange Range) (bool, error)
- func (rang Range) IsSupersetOf(otherRange Range) (bool, error)
- func (rang Range) Overlaps(otherRange Range) (bool, error)
- func (rang Range) RemoveOverlap(otherRange Range) (RangeCollection, bool, error)
- func (rang Range) String() string
- func (rang Range) TryMerge(otherRange Range) (Range, bool, error)
- type RangeBoundType
- type RangeCollection
- type RangeColumnExpr
- func AllRangeColumnExpr(typ Type) RangeColumnExpr
- func ClosedRangeColumnExpr(lower, upper interface{}, typ Type) RangeColumnExpr
- func CustomRangeColumnExpr(lower, upper interface{}, lowerBound, upperBound RangeBoundType, typ Type) RangeColumnExpr
- func EmptyRangeColumnExpr(typ Type) RangeColumnExpr
- func GreaterOrEqualRangeColumnExpr(lower interface{}, typ Type) RangeColumnExpr
- func GreaterThanRangeColumnExpr(lower interface{}, typ Type) RangeColumnExpr
- func LessOrEqualRangeColumnExpr(upper interface{}, typ Type) RangeColumnExpr
- func LessThanRangeColumnExpr(upper interface{}, typ Type) RangeColumnExpr
- func NotNullRangeColumnExpr(typ Type) RangeColumnExpr
- func NullRangeColumnExpr() RangeColumnExpr
- func OpenRangeColumnExpr(lower, upper interface{}, typ Type) RangeColumnExpr
- func SimplifyRangeColumn(rces ...RangeColumnExpr) ([]RangeColumnExpr, error)
- func (r RangeColumnExpr) DebugString() string
- func (r RangeColumnExpr) Equals(other RangeColumnExpr) (bool, error)
- func (r RangeColumnExpr) HasLowerBound() bool
- func (r RangeColumnExpr) HasUpperBound() bool
- func (r RangeColumnExpr) IsConnected(other RangeColumnExpr) (bool, error)
- func (r RangeColumnExpr) IsEmpty() (bool, error)
- func (r RangeColumnExpr) IsSubsetOf(other RangeColumnExpr) (bool, error)
- func (r RangeColumnExpr) IsSupersetOf(other RangeColumnExpr) (bool, error)
- func (r RangeColumnExpr) Overlaps(other RangeColumnExpr) (RangeColumnExpr, bool, error)
- func (r RangeColumnExpr) RepresentsEquals() (bool, error)
- func (r RangeColumnExpr) String() string
- func (r RangeColumnExpr) Subtract(other RangeColumnExpr) ([]RangeColumnExpr, error)
- func (r RangeColumnExpr) TryIntersect(other RangeColumnExpr) (RangeColumnExpr, bool, error)
- func (r RangeColumnExpr) TryUnion(other RangeColumnExpr) (RangeColumnExpr, bool, error)
- func (r RangeColumnExpr) Type() RangeType
- type RangeColumnExprTree
- func (tree *RangeColumnExprTree) FindConnections(rang Range, colExprIdx int) (RangeCollection, error)
- func (tree *RangeColumnExprTree) GetRangeCollection() (RangeCollection, error)
- func (tree *RangeColumnExprTree) Insert(rang Range) error
- func (tree *RangeColumnExprTree) Iterator() *rangeTreeIter
- func (tree *RangeColumnExprTree) Remove(rang Range) error
- func (tree *RangeColumnExprTree) String() string
- type RangeCut
- type RangeType
- type ReadOnlyDatabase
- type ReplaceableTable
- type Reporter
- type Resolvable
- type RewritableTable
- type Row
- type Row2
- type RowDeleter
- type RowFrame
- type RowInserter
- type RowIter
- type RowIter2
- type RowIterTypeSelector
- type RowReplacer
- type RowUpdater
- type Rows2Cache
- type RowsCache
- type Schema
- func (s Schema) CheckRow(row Row) error
- func (s Schema) Contains(column string, source string) bool
- func (s Schema) Copy() Schema
- func (s Schema) Equals(s2 Schema) bool
- func (s Schema) HasAutoIncrement() bool
- func (s Schema) IndexOf(column, source string) int
- func (s Schema) IndexOfColName(column string) int
- type SchemaTarget
- type SearchableJSONValue
- type Services
- type Session
- type SetType
- type SortField
- type SortFields
- type SortOrder
- type SpatialColumnType
- type StatisticsTable
- type StoredProcedureDatabase
- type StoredProcedureDetails
- type StringType
- func CreateBinary(baseType query.Type, lengthHint int64) (StringType, error)
- func CreateLongText(collation Collation) StringType
- func CreateMediumText(collation Collation) StringType
- func CreateString(baseType query.Type, length int64, collation Collation) (StringType, error)
- func CreateStringWithDefaults(baseType query.Type, length int64) (StringType, error)
- func CreateText(collation Collation) StringType
- func CreateTinyText(collation Collation) StringType
- func MustCreateBinary(baseType query.Type, lengthHint int64) StringType
- func MustCreateString(baseType query.Type, length int64, collation Collation) StringType
- func MustCreateStringWithDefaults(baseType query.Type, length int64) StringType
- type SystemVariable
- type SystemVariableScope
- type SystemVariableType
- func NewSystemBoolType(varName string) SystemVariableType
- func NewSystemDoubleType(varName string, lowerbound, upperbound float64) SystemVariableType
- func NewSystemEnumType(varName string, values ...string) SystemVariableType
- func NewSystemIntType(varName string, lowerbound, upperbound int64, negativeOne bool) SystemVariableType
- func NewSystemSetType(varName string, values ...string) SystemVariableType
- func NewSystemStringType(varName string) SystemVariableType
- func NewSystemUintType(varName string, lowerbound, upperbound uint64) SystemVariableType
- type Table
- type Table2
- type TableCopierDatabase
- type TableCreator
- type TableDropper
- type TableEditor
- type TableFunction
- type TableFunctionProvider
- type TableProgress
- type TableRenamer
- type TableRowIter
- type TableWrapper
- type Tableable
- type TemporaryTable
- type TemporaryTableCreator
- type TemporaryTableDatabase
- type TimeType
- type Timespan
- func (t Timespan) Add(other Timespan) Timespan
- func (t Timespan) AsMicroseconds() int64
- func (t Timespan) AsTimeDuration() time.Duration
- func (t Timespan) Compare(other Timespan) int
- func (t Timespan) Equals(other Timespan) bool
- func (t Timespan) Negate() Timespan
- func (t Timespan) String() string
- func (t Timespan) Subtract(other Timespan) Timespan
- type Transaction
- type TransactionCharacteristic
- type TransactionDatabase
- type TreePrinter
- type TriggerDatabase
- type TriggerDefinition
- type TruncateableTable
- type TupleType
- func (t TupleType) Compare(a, b interface{}) (int, error)
- func (t TupleType) Convert(v interface{}) (interface{}, error)
- func (t TupleType) Equals(otherType Type) bool
- func (t TupleType) MustConvert(v interface{}) interface{}
- func (t TupleType) Promote() Type
- func (t TupleType) SQL([]byte, interface{}) (sqltypes.Value, error)
- func (t TupleType) String() string
- func (t TupleType) Type() query.Type
- func (t TupleType) ValueType() reflect.Type
- func (t TupleType) Zero() interface{}
- type Type
- func ApproximateTypeFromValue(val interface{}) Type
- func ColumnTypeToType(ct *sqlparser.ColumnType) (Type, error)
- func CreateArray(underlying Type) Type
- func CreateTuple(types ...Type) Type
- func GetColExprTypes(ranges []Range) []Type
- func NewDeferredType(name string) Type
- func UnderlyingType(t Type) Type
- type Type2
- type TypedValue
- type UnaryNode
- type UniqueKeyError
- type UnresolvedColumnDefault
- func (u UnresolvedColumnDefault) Children() []Expression
- func (u UnresolvedColumnDefault) Eval(ctx *Context, row Row) (interface{}, error)
- func (u UnresolvedColumnDefault) IsNullable() bool
- func (u UnresolvedColumnDefault) Resolved() bool
- func (u UnresolvedColumnDefault) String() string
- func (u UnresolvedColumnDefault) Type() Type
- func (u UnresolvedColumnDefault) WithChildren(children ...Expression) (Expression, error)
- type UnresolvedDatabase
- type UnresolvedTable
- type UnsupportedFunctionStub
- type UpdatableTable
- type Value
- type ValueBytes
- type VersionedDatabase
- type View
- type ViewDatabase
- type ViewDefinition
- type ViewKey
- type ViewRegistry
- func (r *ViewRegistry) Delete(databaseName, viewName string) error
- func (r *ViewRegistry) Exists(databaseName, viewName string) bool
- func (r *ViewRegistry) Register(database string, view *View) error
- func (r *ViewRegistry) View(databaseName, viewName string) (*View, error)
- func (r *ViewRegistry) ViewsInDatabase(databaseName string) (views []*View)
- type Visitor
- type Warning
- type WindowAdaptableExpression
- type WindowAggregation
- type WindowBuffer
- type WindowDefinition
- type WindowFrame
- type WindowFramer
- type WindowFunction
- type WindowInterval
- type WrappedInsertError
- type YearType
Constants ¶
const ( // BitTypeMinBits returns the minimum number of bits for Bit. BitTypeMinBits = 1 // BitTypeMaxBits returns the maximum number of bits for Bit. BitTypeMaxBits = 64 )
const ( Y = "Yes" N = "No" NoPad = "NO PAD" PadSpace = "PAD SPACE" )
const ( // DateLayout is the layout of the MySQL date format in the representation // Go understands. DateLayout = "2006-01-02" // TimestampDatetimeLayout is the formatting string with the layout of the timestamp // using the format of Go "time" package. TimestampDatetimeLayout = "2006-01-02 15:04:05.999999" )
const ( // DecimalTypeMaxPrecision returns the maximum precision allowed for the Decimal type. DecimalTypeMaxPrecision = 65 // DecimalTypeMaxScale returns the maximum scale allowed for the Decimal type, assuming the // maximum precision is used. For a maximum scale that is relative to the precision of a given // decimal type, use its MaximumScale function. DecimalTypeMaxScale = 30 )
const ( // EnumTypeMinElements returns the minimum number of enumerations for the Enum type. EnumTypeMinElements = 1 // EnumTypeMaxElements returns the maximum number of enumerations for the Enum type. EnumTypeMaxElements = 65535 )
const ( CartesianSRID = uint32(0) GeoSpatialSRID = uint32(4326) )
const ( SRIDSize = 4 EndianSize = 1 TypeSize = 4 EWKBHeaderSize = SRIDSize + EndianSize + TypeSize PointSize = 16 CountSize = 4 )
const ( WKBUnknown = iota WKBPointID WKBLineID WKBPolyID )
Type IDs
const ( ConnectionIdLogField = "connectionID" ConnectionDbLogField = "connectionDb" ConnectTimeLogKey = "connectTime" )
const ( // Numeric representation of False as defined by MySQL. False = int8(0) // Numeric representation of True as defined by MySQL. True = int8(1) )
const ( RangeType_Invalid = iota // This range is invalid, which should not be possible. Please create a GitHub issue if this is ever returned. RangeType_Empty // This range represents the empty set of values. RangeType_All // This range represents every possible value. RangeType_GreaterThan // This range is equivalent to checking for all values greater than the lowerbound. RangeType_GreaterOrEqual // This range is equivalent to checking for all values greater than or equal to the lowerbound. RangeType_LessThan // This range is equivalent to checking for all values less than the upperbound. RangeType_LessOrEqual // This range is equivalent to checking for all values less than or equal to the upperbound. RangeType_ClosedClosed // This range covers a finite set of values with the lower and upperbounds inclusive. RangeType_OpenOpen // This range covers a finite set of values with the lower and upperbounds exclusive. RangeType_OpenClosed // This range covers a finite set of values with the lowerbound exclusive and upperbound inclusive. RangeType_ClosedOpen // This range covers a finite set of values with the lowerbound inclusive and upperbound exclusive. RangeType_Null // This range covers the set of NULL values. )
const ( CurrentDBSessionVar = "current_database" AutoCommitSessionVar = "autocommit" )
const ( RowCount = "row_count" FoundRows = "found_rows" LastInsertId = "last_insert_id" )
const ChecksumKey = "checksum"
ChecksumKey is the key in an index config to store the checksum.
const DualTableName = "dual"
const IndexBatchSize = uint64(10000)
IndexBatchSize is the number of rows to save at a time when creating indexes.
const OkResultColumnName = "__ok_result__"
OkResultColumnName should be used as the schema column name for Nodes that return an OkResult
const ( // QueryKey to access query in the context. QueryKey key = iota )
const (
// SetTypeMaxElements returns the maximum number of elements for the Set type.
SetTypeMaxElements = 64
)
Variables ¶
var ( // case sensitive colations Collation_binary = newCSCollation("binary", CharacterSet_binary) // case insensitive collations Collation_armscii8_general_ci = newCollation("armscii8_general_ci", CharacterSet_armscii8) Collation_armscii8_bin = newCollation("armscii8_bin", CharacterSet_armscii8) Collation_ascii_general_ci = newCollation("ascii_general_ci", CharacterSet_ascii) Collation_ascii_bin = newCollation("ascii_bin", CharacterSet_ascii) Collation_big5_chinese_ci = newCollation("big5_chinese_ci", CharacterSet_big5) Collation_big5_bin = newCollation("big5_bin", CharacterSet_big5) Collation_cp1250_general_ci = newCollation("cp1250_general_ci", CharacterSet_cp1250) Collation_cp1250_czech_cs = newCollation("cp1250_czech_cs", CharacterSet_cp1250) Collation_cp1250_croatian_ci = newCollation("cp1250_croatian_ci", CharacterSet_cp1250) Collation_cp1250_bin = newCollation("cp1250_bin", CharacterSet_cp1250) Collation_cp1250_polish_ci = newCollation("cp1250_polish_ci", CharacterSet_cp1250) Collation_cp1251_bulgarian_ci = newCollation("cp1251_bulgarian_ci", CharacterSet_cp1251) Collation_cp1251_ukrainian_ci = newCollation("cp1251_ukrainian_ci", CharacterSet_cp1251) Collation_cp1251_bin = newCollation("cp1251_bin", CharacterSet_cp1251) Collation_cp1251_general_ci = newCollation("cp1251_general_ci", CharacterSet_cp1251) Collation_cp1251_general_cs = newCollation("cp1251_general_cs", CharacterSet_cp1251) Collation_cp1256_general_ci = newCollation("cp1256_general_ci", CharacterSet_cp1256) Collation_cp1256_bin = newCollation("cp1256_bin", CharacterSet_cp1256) Collation_cp1257_lithuanian_ci = newCollation("cp1257_lithuanian_ci", CharacterSet_cp1257) Collation_cp1257_bin = newCollation("cp1257_bin", CharacterSet_cp1257) Collation_cp1257_general_ci = newCollation("cp1257_general_ci", CharacterSet_cp1257) Collation_cp850_general_ci = newCollation("cp850_general_ci", CharacterSet_cp850) Collation_cp850_bin = newCollation("cp850_bin", CharacterSet_cp850) Collation_cp852_general_ci = newCollation("cp852_general_ci", CharacterSet_cp852) Collation_cp852_bin = newCollation("cp852_bin", CharacterSet_cp852) Collation_cp866_general_ci = newCollation("cp866_general_ci", CharacterSet_cp866) Collation_cp866_bin = newCollation("cp866_bin", CharacterSet_cp866) Collation_cp932_japanese_ci = newCollation("cp932_japanese_ci", CharacterSet_cp932) Collation_cp932_bin = newCollation("cp932_bin", CharacterSet_cp932) Collation_dec8_swedish_ci = newCollation("dec8_swedish_ci", CharacterSet_dec8) Collation_dec8_bin = newCollation("dec8_bin", CharacterSet_dec8) Collation_eucjpms_japanese_ci = newCollation("eucjpms_japanese_ci", CharacterSet_eucjpms) Collation_eucjpms_bin = newCollation("eucjpms_bin", CharacterSet_eucjpms) Collation_euckr_korean_ci = newCollation("euckr_korean_ci", CharacterSet_euckr) Collation_euckr_bin = newCollation("euckr_bin", CharacterSet_euckr) Collation_gb18030_chinese_ci = newCollation("gb18030_chinese_ci", CharacterSet_gb18030) Collation_gb18030_bin = newCollation("gb18030_bin", CharacterSet_gb18030) Collation_gb18030_unicode_520_ci = newCollation("gb18030_unicode_520_ci", CharacterSet_gb18030) Collation_gb2312_chinese_ci = newCollation("gb2312_chinese_ci", CharacterSet_gb2312) Collation_gb2312_bin = newCollation("gb2312_bin", CharacterSet_gb2312) Collation_gbk_chinese_ci = newCollation("gbk_chinese_ci", CharacterSet_gbk) Collation_gbk_bin = newCollation("gbk_bin", CharacterSet_gbk) Collation_geostd8_general_ci = newCollation("geostd8_general_ci", CharacterSet_geostd8) Collation_geostd8_bin = newCollation("geostd8_bin", CharacterSet_geostd8) Collation_greek_general_ci = newCollation("greek_general_ci", CharacterSet_greek) Collation_greek_bin = newCollation("greek_bin", CharacterSet_greek) Collation_hebrew_general_ci = newCollation("hebrew_general_ci", CharacterSet_hebrew) Collation_hebrew_bin = newCollation("hebrew_bin", CharacterSet_hebrew) Collation_hp8_english_ci = newCollation("hp8_english_ci", CharacterSet_hp8) Collation_hp8_bin = newCollation("hp8_bin", CharacterSet_hp8) Collation_keybcs2_general_ci = newCollation("keybcs2_general_ci", CharacterSet_keybcs2) Collation_keybcs2_bin = newCollation("keybcs2_bin", CharacterSet_keybcs2) Collation_koi8r_general_ci = newCollation("koi8r_general_ci", CharacterSet_koi8r) Collation_koi8r_bin = newCollation("koi8r_bin", CharacterSet_koi8r) Collation_koi8u_general_ci = newCollation("koi8u_general_ci", CharacterSet_koi8u) Collation_koi8u_bin = newCollation("koi8u_bin", CharacterSet_koi8u) Collation_latin1_german1_ci = newCollation("latin1_german1_ci", CharacterSet_latin1) Collation_latin1_swedish_ci = newCollation("latin1_swedish_ci", CharacterSet_latin1) Collation_latin1_danish_ci = newCollation("latin1_danish_ci", CharacterSet_latin1) Collation_latin1_german2_ci = newCollation("latin1_german2_ci", CharacterSet_latin1) Collation_latin1_bin = newCollation("latin1_bin", CharacterSet_latin1) Collation_latin1_general_ci = newCollation("latin1_general_ci", CharacterSet_latin1) Collation_latin1_general_cs = newCollation("latin1_general_cs", CharacterSet_latin1) Collation_latin1_spanish_ci = newCollation("latin1_spanish_ci", CharacterSet_latin1) Collation_latin2_czech_cs = newCollation("latin2_czech_cs", CharacterSet_latin2) Collation_latin2_general_ci = newCollation("latin2_general_ci", CharacterSet_latin2) Collation_latin2_hungarian_ci = newCollation("latin2_hungarian_ci", CharacterSet_latin2) Collation_latin2_croatian_ci = newCollation("latin2_croatian_ci", CharacterSet_latin2) Collation_latin2_bin = newCollation("latin2_bin", CharacterSet_latin2) Collation_latin5_turkish_ci = newCollation("latin5_turkish_ci", CharacterSet_latin5) Collation_latin5_bin = newCollation("latin5_bin", CharacterSet_latin5) Collation_latin7_estonian_cs = newCollation("latin7_estonian_cs", CharacterSet_latin7) Collation_latin7_general_ci = newCollation("latin7_general_ci", CharacterSet_latin7) Collation_latin7_general_cs = newCollation("latin7_general_cs", CharacterSet_latin7) Collation_latin7_bin = newCollation("latin7_bin", CharacterSet_latin7) Collation_macce_general_ci = newCollation("macce_general_ci", CharacterSet_macce) Collation_macce_bin = newCollation("macce_bin", CharacterSet_macce) Collation_macroman_general_ci = newCollation("macroman_general_ci", CharacterSet_macroman) Collation_macroman_bin = newCollation("macroman_bin", CharacterSet_macroman) Collation_sjis_japanese_ci = newCollation("sjis_japanese_ci", CharacterSet_sjis) Collation_sjis_bin = newCollation("sjis_bin", CharacterSet_sjis) Collation_swe7_swedish_ci = newCollation("swe7_swedish_ci", CharacterSet_swe7) Collation_swe7_bin = newCollation("swe7_bin", CharacterSet_swe7) Collation_tis620_thai_ci = newCollation("tis620_thai_ci", CharacterSet_tis620) Collation_tis620_bin = newCollation("tis620_bin", CharacterSet_tis620) Collation_ucs2_general_ci = newCollation("ucs2_general_ci", CharacterSet_ucs2) Collation_ucs2_bin = newCollation("ucs2_bin", CharacterSet_ucs2) Collation_ucs2_unicode_ci = newCollation("ucs2_unicode_ci", CharacterSet_ucs2) Collation_ucs2_icelandic_ci = newCollation("ucs2_icelandic_ci", CharacterSet_ucs2) Collation_ucs2_latvian_ci = newCollation("ucs2_latvian_ci", CharacterSet_ucs2) Collation_ucs2_romanian_ci = newCollation("ucs2_romanian_ci", CharacterSet_ucs2) Collation_ucs2_slovenian_ci = newCollation("ucs2_slovenian_ci", CharacterSet_ucs2) Collation_ucs2_polish_ci = newCollation("ucs2_polish_ci", CharacterSet_ucs2) Collation_ucs2_estonian_ci = newCollation("ucs2_estonian_ci", CharacterSet_ucs2) Collation_ucs2_spanish_ci = newCollation("ucs2_spanish_ci", CharacterSet_ucs2) Collation_ucs2_swedish_ci = newCollation("ucs2_swedish_ci", CharacterSet_ucs2) Collation_ucs2_turkish_ci = newCollation("ucs2_turkish_ci", CharacterSet_ucs2) Collation_ucs2_czech_ci = newCollation("ucs2_czech_ci", CharacterSet_ucs2) Collation_ucs2_danish_ci = newCollation("ucs2_danish_ci", CharacterSet_ucs2) Collation_ucs2_lithuanian_ci = newCollation("ucs2_lithuanian_ci", CharacterSet_ucs2) Collation_ucs2_slovak_ci = newCollation("ucs2_slovak_ci", CharacterSet_ucs2) Collation_ucs2_spanish2_ci = newCollation("ucs2_spanish2_ci", CharacterSet_ucs2) Collation_ucs2_roman_ci = newCollation("ucs2_roman_ci", CharacterSet_ucs2) Collation_ucs2_persian_ci = newCollation("ucs2_persian_ci", CharacterSet_ucs2) Collation_ucs2_esperanto_ci = newCollation("ucs2_esperanto_ci", CharacterSet_ucs2) Collation_ucs2_hungarian_ci = newCollation("ucs2_hungarian_ci", CharacterSet_ucs2) Collation_ucs2_sinhala_ci = newCollation("ucs2_sinhala_ci", CharacterSet_ucs2) Collation_ucs2_german2_ci = newCollation("ucs2_german2_ci", CharacterSet_ucs2) Collation_ucs2_croatian_ci = newCollation("ucs2_croatian_ci", CharacterSet_ucs2) Collation_ucs2_unicode_520_ci = newCollation("ucs2_unicode_520_ci", CharacterSet_ucs2) Collation_ucs2_vietnamese_ci = newCollation("ucs2_vietnamese_ci", CharacterSet_ucs2) Collation_ucs2_general_mysql500_ci = newCollation("ucs2_general_mysql500_ci", CharacterSet_ucs2) Collation_ujis_japanese_ci = newCollation("ujis_japanese_ci", CharacterSet_ujis) Collation_ujis_bin = newCollation("ujis_bin", CharacterSet_ujis) Collation_utf16_general_ci = newCollation("utf16_general_ci", CharacterSet_utf16) Collation_utf16_bin = newCollation("utf16_bin", CharacterSet_utf16) Collation_utf16_unicode_ci = newCollation("utf16_unicode_ci", CharacterSet_utf16) Collation_utf16_icelandic_ci = newCollation("utf16_icelandic_ci", CharacterSet_utf16) Collation_utf16_latvian_ci = newCollation("utf16_latvian_ci", CharacterSet_utf16) Collation_utf16_romanian_ci = newCollation("utf16_romanian_ci", CharacterSet_utf16) Collation_utf16_slovenian_ci = newCollation("utf16_slovenian_ci", CharacterSet_utf16) Collation_utf16_polish_ci = newCollation("utf16_polish_ci", CharacterSet_utf16) Collation_utf16_estonian_ci = newCollation("utf16_estonian_ci", CharacterSet_utf16) Collation_utf16_spanish_ci = newCollation("utf16_spanish_ci", CharacterSet_utf16) Collation_utf16_swedish_ci = newCollation("utf16_swedish_ci", CharacterSet_utf16) Collation_utf16_turkish_ci = newCollation("utf16_turkish_ci", CharacterSet_utf16) Collation_utf16_czech_ci = newCollation("utf16_czech_ci", CharacterSet_utf16) Collation_utf16_danish_ci = newCollation("utf16_danish_ci", CharacterSet_utf16) Collation_utf16_lithuanian_ci = newCollation("utf16_lithuanian_ci", CharacterSet_utf16) Collation_utf16_slovak_ci = newCollation("utf16_slovak_ci", CharacterSet_utf16) Collation_utf16_spanish2_ci = newCollation("utf16_spanish2_ci", CharacterSet_utf16) Collation_utf16_roman_ci = newCollation("utf16_roman_ci", CharacterSet_utf16) Collation_utf16_persian_ci = newCollation("utf16_persian_ci", CharacterSet_utf16) Collation_utf16_esperanto_ci = newCollation("utf16_esperanto_ci", CharacterSet_utf16) Collation_utf16_hungarian_ci = newCollation("utf16_hungarian_ci", CharacterSet_utf16) Collation_utf16_sinhala_ci = newCollation("utf16_sinhala_ci", CharacterSet_utf16) Collation_utf16_german2_ci = newCollation("utf16_german2_ci", CharacterSet_utf16) Collation_utf16_croatian_ci = newCollation("utf16_croatian_ci", CharacterSet_utf16) Collation_utf16_unicode_520_ci = newCollation("utf16_unicode_520_ci", CharacterSet_utf16) Collation_utf16_vietnamese_ci = newCollation("utf16_vietnamese_ci", CharacterSet_utf16) Collation_utf16le_general_ci = newCollation("utf16le_general_ci", CharacterSet_utf16le) Collation_utf16le_bin = newCollation("utf16le_bin", CharacterSet_utf16le) Collation_utf32_general_ci = newCollation("utf32_general_ci", CharacterSet_utf32) Collation_utf32_bin = newCollation("utf32_bin", CharacterSet_utf32) Collation_utf32_unicode_ci = newCollation("utf32_unicode_ci", CharacterSet_utf32) Collation_utf32_icelandic_ci = newCollation("utf32_icelandic_ci", CharacterSet_utf32) Collation_utf32_latvian_ci = newCollation("utf32_latvian_ci", CharacterSet_utf32) Collation_utf32_romanian_ci = newCollation("utf32_romanian_ci", CharacterSet_utf32) Collation_utf32_slovenian_ci = newCollation("utf32_slovenian_ci", CharacterSet_utf32) Collation_utf32_polish_ci = newCollation("utf32_polish_ci", CharacterSet_utf32) Collation_utf32_estonian_ci = newCollation("utf32_estonian_ci", CharacterSet_utf32) Collation_utf32_spanish_ci = newCollation("utf32_spanish_ci", CharacterSet_utf32) Collation_utf32_swedish_ci = newCollation("utf32_swedish_ci", CharacterSet_utf32) Collation_utf32_turkish_ci = newCollation("utf32_turkish_ci", CharacterSet_utf32) Collation_utf32_czech_ci = newCollation("utf32_czech_ci", CharacterSet_utf32) Collation_utf32_danish_ci = newCollation("utf32_danish_ci", CharacterSet_utf32) Collation_utf32_lithuanian_ci = newCollation("utf32_lithuanian_ci", CharacterSet_utf32) Collation_utf32_slovak_ci = newCollation("utf32_slovak_ci", CharacterSet_utf32) Collation_utf32_spanish2_ci = newCollation("utf32_spanish2_ci", CharacterSet_utf32) Collation_utf32_roman_ci = newCollation("utf32_roman_ci", CharacterSet_utf32) Collation_utf32_persian_ci = newCollation("utf32_persian_ci", CharacterSet_utf32) Collation_utf32_esperanto_ci = newCollation("utf32_esperanto_ci", CharacterSet_utf32) Collation_utf32_hungarian_ci = newCollation("utf32_hungarian_ci", CharacterSet_utf32) Collation_utf32_sinhala_ci = newCollation("utf32_sinhala_ci", CharacterSet_utf32) Collation_utf32_german2_ci = newCollation("utf32_german2_ci", CharacterSet_utf32) Collation_utf32_croatian_ci = newCollation("utf32_croatian_ci", CharacterSet_utf32) Collation_utf32_unicode_520_ci = newCollation("utf32_unicode_520_ci", CharacterSet_utf32) Collation_utf32_vietnamese_ci = newCollation("utf32_vietnamese_ci", CharacterSet_utf32) Collation_utf8mb3_general_ci = newCollation("utf8mb3_general_ci", CharacterSet_utf8mb3) Collation_utf8mb3_tolower_ci = newCollation("utf8mb3_tolower_ci", CharacterSet_utf8mb3) Collation_utf8mb3_bin = newCollation("utf8mb3_bin", CharacterSet_utf8mb3) Collation_utf8mb3_unicode_ci = newCollation("utf8mb3_unicode_ci", CharacterSet_utf8mb3) Collation_utf8mb3_icelandic_ci = newCollation("utf8mb3_icelandic_ci", CharacterSet_utf8mb3) Collation_utf8mb3_latvian_ci = newCollation("utf8mb3_latvian_ci", CharacterSet_utf8mb3) Collation_utf8mb3_romanian_ci = newCollation("utf8mb3_romanian_ci", CharacterSet_utf8mb3) Collation_utf8mb3_slovenian_ci = newCollation("utf8mb3_slovenian_ci", CharacterSet_utf8mb3) Collation_utf8mb3_polish_ci = newCollation("utf8mb3_polish_ci", CharacterSet_utf8mb3) Collation_utf8mb3_estonian_ci = newCollation("utf8mb3_estonian_ci", CharacterSet_utf8mb3) Collation_utf8mb3_spanish_ci = newCollation("utf8mb3_spanish_ci", CharacterSet_utf8mb3) Collation_utf8mb3_swedish_ci = newCollation("utf8mb3_swedish_ci", CharacterSet_utf8mb3) Collation_utf8mb3_turkish_ci = newCollation("utf8mb3_turkish_ci", CharacterSet_utf8mb3) Collation_utf8mb3_czech_ci = newCollation("utf8mb3_czech_ci", CharacterSet_utf8mb3) Collation_utf8mb3_danish_ci = newCollation("utf8mb3_danish_ci", CharacterSet_utf8mb3) Collation_utf8mb3_lithuanian_ci = newCollation("utf8mb3_lithuanian_ci", CharacterSet_utf8mb3) Collation_utf8mb3_slovak_ci = newCollation("utf8mb3_slovak_ci", CharacterSet_utf8mb3) Collation_utf8mb3_spanish2_ci = newCollation("utf8mb3_spanish2_ci", CharacterSet_utf8mb3) Collation_utf8mb3_roman_ci = newCollation("utf8mb3_roman_ci", CharacterSet_utf8mb3) Collation_utf8mb3_persian_ci = newCollation("utf8mb3_persian_ci", CharacterSet_utf8mb3) Collation_utf8mb3_esperanto_ci = newCollation("utf8mb3_esperanto_ci", CharacterSet_utf8mb3) Collation_utf8mb3_hungarian_ci = newCollation("utf8mb3_hungarian_ci", CharacterSet_utf8mb3) Collation_utf8mb3_sinhala_ci = newCollation("utf8mb3_sinhala_ci", CharacterSet_utf8mb3) Collation_utf8mb3_german2_ci = newCollation("utf8mb3_german2_ci", CharacterSet_utf8mb3) Collation_utf8mb3_croatian_ci = newCollation("utf8mb3_croatian_ci", CharacterSet_utf8mb3) Collation_utf8mb3_unicode_520_ci = newCollation("utf8mb3_unicode_520_ci", CharacterSet_utf8mb3) Collation_utf8mb3_vietnamese_ci = newCollation("utf8mb3_vietnamese_ci", CharacterSet_utf8mb3) Collation_utf8mb3_general_mysql500_ci = newCollation("utf8mb3_general_mysql500_ci", CharacterSet_utf8mb3) Collation_utf8mb4_general_ci = newCollation("utf8mb4_general_ci", CharacterSet_utf8mb4) Collation_utf8mb4_bin = newCollation("utf8mb4_bin", CharacterSet_utf8mb4) Collation_utf8mb4_unicode_ci = newCollation("utf8mb4_unicode_ci", CharacterSet_utf8mb4) Collation_utf8mb4_icelandic_ci = newCollation("utf8mb4_icelandic_ci", CharacterSet_utf8mb4) Collation_utf8mb4_latvian_ci = newCollation("utf8mb4_latvian_ci", CharacterSet_utf8mb4) Collation_utf8mb4_romanian_ci = newCollation("utf8mb4_romanian_ci", CharacterSet_utf8mb4) Collation_utf8mb4_slovenian_ci = newCollation("utf8mb4_slovenian_ci", CharacterSet_utf8mb4) Collation_utf8mb4_polish_ci = newCollation("utf8mb4_polish_ci", CharacterSet_utf8mb4) Collation_utf8mb4_estonian_ci = newCollation("utf8mb4_estonian_ci", CharacterSet_utf8mb4) Collation_utf8mb4_spanish_ci = newCollation("utf8mb4_spanish_ci", CharacterSet_utf8mb4) Collation_utf8mb4_swedish_ci = newCollation("utf8mb4_swedish_ci", CharacterSet_utf8mb4) Collation_utf8mb4_turkish_ci = newCollation("utf8mb4_turkish_ci", CharacterSet_utf8mb4) Collation_utf8mb4_czech_ci = newCollation("utf8mb4_czech_ci", CharacterSet_utf8mb4) Collation_utf8mb4_danish_ci = newCollation("utf8mb4_danish_ci", CharacterSet_utf8mb4) Collation_utf8mb4_lithuanian_ci = newCollation("utf8mb4_lithuanian_ci", CharacterSet_utf8mb4) Collation_utf8mb4_slovak_ci = newCollation("utf8mb4_slovak_ci", CharacterSet_utf8mb4) Collation_utf8mb4_spanish2_ci = newCollation("utf8mb4_spanish2_ci", CharacterSet_utf8mb4) Collation_utf8mb4_roman_ci = newCollation("utf8mb4_roman_ci", CharacterSet_utf8mb4) Collation_utf8mb4_persian_ci = newCollation("utf8mb4_persian_ci", CharacterSet_utf8mb4) Collation_utf8mb4_esperanto_ci = newCollation("utf8mb4_esperanto_ci", CharacterSet_utf8mb4) Collation_utf8mb4_hungarian_ci = newCollation("utf8mb4_hungarian_ci", CharacterSet_utf8mb4) Collation_utf8mb4_sinhala_ci = newCollation("utf8mb4_sinhala_ci", CharacterSet_utf8mb4) Collation_utf8mb4_german2_ci = newCollation("utf8mb4_german2_ci", CharacterSet_utf8mb4) Collation_utf8mb4_croatian_ci = newCollation("utf8mb4_croatian_ci", CharacterSet_utf8mb4) Collation_utf8mb4_unicode_520_ci = newCollation("utf8mb4_unicode_520_ci", CharacterSet_utf8mb4) Collation_utf8mb4_vietnamese_ci = newCollation("utf8mb4_vietnamese_ci", CharacterSet_utf8mb4) Collation_utf8mb4_0900_ai_ci = newCollation("utf8mb4_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_de_pb_0900_ai_ci = newCollation("utf8mb4_de_pb_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_is_0900_ai_ci = newCollation("utf8mb4_is_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_lv_0900_ai_ci = newCollation("utf8mb4_lv_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_ro_0900_ai_ci = newCollation("utf8mb4_ro_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_sl_0900_ai_ci = newCollation("utf8mb4_sl_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_pl_0900_ai_ci = newCollation("utf8mb4_pl_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_et_0900_ai_ci = newCollation("utf8mb4_et_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_es_0900_ai_ci = newCollation("utf8mb4_es_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_sv_0900_ai_ci = newCollation("utf8mb4_sv_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_tr_0900_ai_ci = newCollation("utf8mb4_tr_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_cs_0900_ai_ci = newCollation("utf8mb4_cs_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_da_0900_ai_ci = newCollation("utf8mb4_da_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_lt_0900_ai_ci = newCollation("utf8mb4_lt_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_sk_0900_ai_ci = newCollation("utf8mb4_sk_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_es_trad_0900_ai_ci = newCollation("utf8mb4_es_trad_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_la_0900_ai_ci = newCollation("utf8mb4_la_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_eo_0900_ai_ci = newCollation("utf8mb4_eo_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_hu_0900_ai_ci = newCollation("utf8mb4_hu_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_hr_0900_ai_ci = newCollation("utf8mb4_hr_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_vi_0900_ai_ci = newCollation("utf8mb4_vi_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_0900_as_cs = newCollation("utf8mb4_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_de_pb_0900_as_cs = newCollation("utf8mb4_de_pb_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_is_0900_as_cs = newCollation("utf8mb4_is_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_lv_0900_as_cs = newCollation("utf8mb4_lv_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_ro_0900_as_cs = newCollation("utf8mb4_ro_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_sl_0900_as_cs = newCollation("utf8mb4_sl_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_pl_0900_as_cs = newCollation("utf8mb4_pl_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_et_0900_as_cs = newCollation("utf8mb4_et_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_es_0900_as_cs = newCollation("utf8mb4_es_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_sv_0900_as_cs = newCollation("utf8mb4_sv_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_tr_0900_as_cs = newCollation("utf8mb4_tr_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_cs_0900_as_cs = newCollation("utf8mb4_cs_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_da_0900_as_cs = newCollation("utf8mb4_da_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_lt_0900_as_cs = newCollation("utf8mb4_lt_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_sk_0900_as_cs = newCollation("utf8mb4_sk_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_es_trad_0900_as_cs = newCollation("utf8mb4_es_trad_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_la_0900_as_cs = newCollation("utf8mb4_la_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_eo_0900_as_cs = newCollation("utf8mb4_eo_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_hu_0900_as_cs = newCollation("utf8mb4_hu_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_hr_0900_as_cs = newCollation("utf8mb4_hr_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_vi_0900_as_cs = newCollation("utf8mb4_vi_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_ja_0900_as_cs = newCollation("utf8mb4_ja_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_ja_0900_as_cs_ks = newCollation("utf8mb4_ja_0900_as_cs_ks", CharacterSet_utf8mb4) Collation_utf8mb4_0900_as_ci = newCollation("utf8mb4_0900_as_ci", CharacterSet_utf8mb4) Collation_utf8mb4_ru_0900_ai_ci = newCollation("utf8mb4_ru_0900_ai_ci", CharacterSet_utf8mb4) Collation_utf8mb4_ru_0900_as_cs = newCollation("utf8mb4_ru_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_zh_0900_as_cs = newCollation("utf8mb4_zh_0900_as_cs", CharacterSet_utf8mb4) Collation_utf8mb4_0900_bin = newCollation("utf8mb4_0900_bin", CharacterSet_utf8mb4) Collation_utf8_general_ci = Collation_utf8mb3_general_ci Collation_utf8_tolower_ci = Collation_utf8mb3_tolower_ci Collation_utf8_bin = Collation_utf8mb3_bin Collation_utf8_unicode_ci = Collation_utf8mb3_unicode_ci Collation_utf8_icelandic_ci = Collation_utf8mb3_icelandic_ci Collation_utf8_latvian_ci = Collation_utf8mb3_latvian_ci Collation_utf8_romanian_ci = Collation_utf8mb3_romanian_ci Collation_utf8_slovenian_ci = Collation_utf8mb3_slovenian_ci Collation_utf8_polish_ci = Collation_utf8mb3_polish_ci Collation_utf8_estonian_ci = Collation_utf8mb3_estonian_ci Collation_utf8_spanish_ci = Collation_utf8mb3_spanish_ci Collation_utf8_swedish_ci = Collation_utf8mb3_swedish_ci Collation_utf8_turkish_ci = Collation_utf8mb3_turkish_ci Collation_utf8_czech_ci = Collation_utf8mb3_czech_ci Collation_utf8_danish_ci = Collation_utf8mb3_danish_ci Collation_utf8_lithuanian_ci = Collation_utf8mb3_lithuanian_ci Collation_utf8_slovak_ci = Collation_utf8mb3_slovak_ci Collation_utf8_spanish2_ci = Collation_utf8mb3_spanish2_ci Collation_utf8_roman_ci = Collation_utf8mb3_roman_ci Collation_utf8_persian_ci = Collation_utf8mb3_persian_ci Collation_utf8_esperanto_ci = Collation_utf8mb3_esperanto_ci Collation_utf8_hungarian_ci = Collation_utf8mb3_hungarian_ci Collation_utf8_sinhala_ci = Collation_utf8mb3_sinhala_ci Collation_utf8_german2_ci = Collation_utf8mb3_german2_ci Collation_utf8_croatian_ci = Collation_utf8mb3_croatian_ci Collation_utf8_unicode_520_ci = Collation_utf8mb3_unicode_520_ci Collation_utf8_vietnamese_ci = Collation_utf8mb3_vietnamese_ci Collation_utf8_general_mysql500_ci = Collation_utf8mb3_general_mysql500_ci Collation_Default = Collation_utf8mb4_0900_bin )
var ( // ErrConvertingToTime is thrown when a value cannot be converted to a Time ErrConvertingToTime = errors.NewKind("Incorrect datetime value: '%s'") ErrConvertingToTimeOutOfRange = errors.NewKind("value %q is outside of %v range") // TimestampDatetimeLayouts hold extra timestamps allowed for parsing. It does // not have all the layouts supported by mysql. Missing are two digit year // versions of common cases and dates that use non common separators. // // https://github.com/MariaDB/server/blob/mysql-5.5.36/sql-common/my_time.c#L124 TimestampDatetimeLayouts = []string{ "2006-01-02 15:4", "2006-01-02 15:04", "2006-01-02 15:04:", "2006-01-02 15:04:.", "2006-01-02 15:04:05.", "2006-01-02 15:04:05.999999", "2006-01-02", "2006-1-2", "2006-1-2 15:4:5.999999", time.RFC3339, time.RFC3339Nano, "2006-01-02T15:04:05", "20060102150405", "20060102", "2006/01/02", "2006-01-02 15:04:05.999999999 -0700 MST", } // Date is a date with day, month and year. Date = MustCreateDatetimeType(sqltypes.Date) // Datetime is a date and a time Datetime = MustCreateDatetimeType(sqltypes.Datetime) // Timestamp is an UNIX timestamp. Timestamp = MustCreateDatetimeType(sqltypes.Timestamp) )
var ( ErrConvertingToDecimal = errors.NewKind("value %v is not a valid Decimal") ErrConvertToDecimalLimit = errors.NewKind("value of Decimal is too large for type") ErrMarshalNullDecimal = errors.NewKind("Decimal cannot marshal a null value") )
var ( ErrConvertingToEnum = errors.NewKind("value %v is not valid for this Enum") ErrUnmarshallingEnum = errors.NewKind("value %v is not a marshalled value for this Enum") )
var ( // ErrSyntaxError is returned when a syntax error in vitess is encountered. ErrSyntaxError = errors.NewKind("%s") // ErrUnsupportedFeature is thrown when a feature is not already supported ErrUnsupportedFeature = errors.NewKind("unsupported feature: %s") // ErrNotAuthorized is returned when the engine has been set to Read Only but a write operation was attempted. ErrNotAuthorized = errors.NewKind("not authorized") // ErrInvalidSystemVariableValue is returned when a system variable is assigned a value that it does not accept. ErrInvalidSystemVariableValue = errors.NewKind("Variable '%s' can't be set to the value of '%v'") // ErrSystemVariableCodeFail is returned when failing to encode/decode a system variable. ErrSystemVariableCodeFail = errors.NewKind("unable to encode/decode value '%v' for '%s'") // ErrInvalidType is thrown when there is an unexpected type at some part of // the execution tree. ErrInvalidType = errors.NewKind("invalid type: %s") // ErrTableAlreadyExists is thrown when someone tries to create a // table with a name of an existing one ErrTableAlreadyExists = errors.NewKind("table with name %s already exists") // ErrTableNotFound is returned when the table is not available from the // current scope. ErrTableNotFound = errors.NewKind("table not found: %s") // ErrTableColumnNotFound is thrown when a column named cannot be found in scope ErrTableColumnNotFound = errors.NewKind("table %q does not have column %q") // ErrColumnNotFound is returned when the column does not exist in any // table in scope. ErrColumnNotFound = errors.NewKind("column %q could not be found in any table in scope") // ErrAmbiguousColumnName is returned when there is a column reference that // is present in more than one table. ErrAmbiguousColumnName = errors.NewKind("ambiguous column name %q, it's present in all these tables: %v") // ErrAmbiguousColumnInOrderBy is returned when an order by column is ambiguous ErrAmbiguousColumnInOrderBy = errors.NewKind("Column %q in order clause is ambiguous") // ErrColumnExists is returned when an ALTER TABLE statement would create a duplicate column ErrColumnExists = errors.NewKind("Column %q already exists") // ErrCreateTableNotSupported is thrown when the database doesn't support table creation ErrCreateTableNotSupported = errors.NewKind("tables cannot be created on database %s") // ErrDropTableNotSupported is thrown when the database doesn't support dropping tables ErrDropTableNotSupported = errors.NewKind("tables cannot be dropped on database %s") // ErrRenameTableNotSupported is thrown when the database doesn't support renaming tables ErrRenameTableNotSupported = errors.NewKind("tables cannot be renamed on database %s") // ErrTableCreatedNotFound is thrown when a table is created from CREATE TABLE but cannot be found immediately afterward ErrTableCreatedNotFound = errors.NewKind("table was created but could not be found") // ErrUnexpectedRowLength is thrown when the obtained row has more columns than the schema ErrUnexpectedRowLength = errors.NewKind("expected %d values, got %d") // ErrInvalidChildrenNumber is returned when the WithChildren method of a // node or expression is called with an invalid number of arguments. ErrInvalidChildrenNumber = errors.NewKind("%T: invalid children number, got %d, expected %d") // ErrInvalidExpressionNumber is returned when the WithExpression method of a node // is called with an invalid number of arguments. ErrInvalidExpressionNumber = errors.NewKind("%T: invalid expression number, got %d, expected %d") // ErrInvalidChildType is returned when the WithChildren method of a // node or expression is called with an invalid child type. This error is indicative of a bug. ErrInvalidChildType = errors.NewKind("%T: invalid child type, got %T, expected %T") // ErrInvalidJSONText is returned when a JSON string cannot be parsed or unmarshalled ErrInvalidJSONText = errors.NewKind("Invalid JSON text: %s") // ErrDeleteRowNotFound ErrDeleteRowNotFound = errors.NewKind("row was not found when attempting to delete") // ErrDuplicateAlias should be returned when a query contains a duplicate alias / table name. ErrDuplicateAliasOrTable = errors.NewKind("Not unique table/alias: %s") // ErrPrimaryKeyViolation is returned when a primary key constraint is violated // This is meant to wrap a sql.UniqueKey error, which provides the key string ErrPrimaryKeyViolation = errors.NewKind("duplicate primary key given") // ErrUniqueKeyViolation is returned when a unique key constraint is violated // This is meant to wrap a sql.UniqueKey error, which provides the key string ErrUniqueKeyViolation = errors.NewKind("duplicate unique key given") // ErrMisusedAlias is returned when a alias is defined and used in the same projection. ErrMisusedAlias = errors.NewKind("column %q does not exist in scope, but there is an alias defined in" + " this projection with that name. Aliases cannot be used in the same projection they're defined in") // ErrInvalidAsOfExpression is returned when an expression for AS OF cannot be used ErrInvalidAsOfExpression = errors.NewKind("expression %s cannot be used in AS OF") // ErrIncompatibleDefaultType is returned when a provided default cannot be coerced into the type of the column ErrIncompatibleDefaultType = errors.NewKind("incompatible type for default value") // ErrInvalidTextBlobColumnDefault is returned when a column of type text/blob (or related) has a literal default set. ErrInvalidTextBlobColumnDefault = errors.NewKind("text/blob types may only have expression default values") // ErrInvalidColumnDefaultFunction is returned when an invalid function is used in a default value. ErrInvalidColumnDefaultFunction = errors.NewKind("function `%s` on column `%s` is not valid for usage in a default value") // ErrColumnDefaultDatetimeOnlyFunc is returned when a non datetime/timestamp column attempts to declare now/current_timestamp as a default value literal. ErrColumnDefaultDatetimeOnlyFunc = errors.NewKind("only datetime/timestamp may declare default values of now()/current_timestamp() without surrounding parentheses") // ErrColumnDefaultSubquery is returned when a default value contains a subquery. ErrColumnDefaultSubquery = errors.NewKind("default value on column `%s` may not contain subqueries") // ErrInvalidDefaultValueOrder is returned when a default value references a column that comes after it and contains a default expression. ErrInvalidDefaultValueOrder = errors.NewKind(`default value of column "%s" cannot refer to a column defined after it if those columns have an expression default value`) // ErrColumnDefaultReturnedNull is returned when a default expression evaluates to nil but the column is non-nullable. ErrColumnDefaultReturnedNull = errors.NewKind(`default value attempted to return null but column is non-nullable`) // ErrDropColumnReferencedInDefault is returned when a column cannot be dropped as it is referenced by another column's default value. ErrDropColumnReferencedInDefault = errors.NewKind(`cannot drop column "%s" as default value of column "%s" references it`) // ErrTriggersNotSupported is returned when attempting to create a trigger on a database that doesn't support them ErrTriggersNotSupported = errors.NewKind(`database "%s" doesn't support triggers`) // ErrTriggerCreateStatementInvalid is returned when a TriggerDatabase returns a CREATE TRIGGER statement that is invalid ErrTriggerCreateStatementInvalid = errors.NewKind(`Invalid CREATE TRIGGER statement: %s`) // ErrTriggerDoesNotExist is returned when a trigger does not exist. ErrTriggerDoesNotExist = errors.NewKind(`trigger "%s" does not exist`) // ErrTriggerTableInUse is returned when trigger execution calls for a table that invoked a trigger being updated by it ErrTriggerTableInUse = errors.NewKind("Can't update table %s in stored function/trigger because it is already used by statement which invoked this stored function/trigger") // ErrTriggerCannotBeDropped is returned when dropping a trigger would cause another trigger to reference a non-existent trigger. ErrTriggerCannotBeDropped = errors.NewKind(`trigger "%s" cannot be dropped as it is referenced by trigger "%s"`) // ErrStoredProceduresNotSupported is returned when attempting to create a stored procedure on a database that doesn't support them. ErrStoredProceduresNotSupported = errors.NewKind(`database "%s" doesn't support stored procedures`) // ErrTriggerDoesNotExist is returned when a stored procedure does not exist. ErrStoredProcedureAlreadyExists = errors.NewKind(`stored procedure "%s" already exists`) // ErrTriggerDoesNotExist is returned when a stored procedure does not exist. ErrStoredProcedureDoesNotExist = errors.NewKind(`stored procedure "%s" does not exist`) // ErrProcedureCreateStatementInvalid is returned when a StoredProcedureDatabase returns a CREATE PROCEDURE statement that is invalid. ErrProcedureCreateStatementInvalid = errors.NewKind(`Invalid CREATE PROCEDURE statement: %s`) // ErrProcedureDuplicateParameterName is returned when a stored procedure has two (or more) parameters with the same name. ErrProcedureDuplicateParameterName = errors.NewKind("duplicate parameter name `%s` on stored procedure `%s`") // ErrProcedureRecursiveCall is returned when a stored procedure has a CALL statement that refers to itself. ErrProcedureRecursiveCall = errors.NewKind("recursive CALL on stored procedure `%s`") // ErrProcedureInvalidBodyStatement is returned when a stored procedure has a statement that is invalid inside of procedures. ErrProcedureInvalidBodyStatement = errors.NewKind("`%s` statements are invalid inside of stored procedures") // ErrExternalProcedureAmbiguousOverload is returned when an external stored procedure is overloaded and has two // functions with the same number of parameters. ErrExternalProcedureAmbiguousOverload = errors.NewKind("overloaded stored procedure `%s` may only have a single variant with `%d` parameters") // ErrExternalProcedureNonFunction is returned when an external stored procedure is given something other than the // expected function type. ErrExternalProcedureNonFunction = errors.NewKind("received `%T` in place of a function for an external stored procedure") // ErrExternalProcedureMissingContextParam is returned when an external stored procedure's first parameter is not // the context. ErrExternalProcedureMissingContextParam = errors.NewKind("external stored procedures require the first parameter to be the context") // ErrExternalProcedurePointerVariadic is returned when an external stored procedure's variadic parameter has a pointer type. ErrExternalProcedurePointerVariadic = errors.NewKind("an external stored procedures's variadiac parameter may not have a pointer type") // ErrExternalProcedureReturnTypes is returned when an external stored procedure's return types are incorrect. ErrExternalProcedureReturnTypes = errors.NewKind("external stored procedures must return a RowIter and error") // ErrExternalProcedureFirstReturn is returned when an external stored procedure's first return type is incorrect. ErrExternalProcedureFirstReturn = errors.NewKind("external stored procedures require the first return value to be the RowIter") // ErrExternalProcedureSecondReturn is returned when an external stored procedure's second return type is incorrect. ErrExternalProcedureSecondReturn = errors.NewKind("external stored procedures require the second return value to be the error") // ErrExternalProcedureInvalidParamType is returned when one of an external stored procedure's parameters have an // invalid type. ErrExternalProcedureInvalidParamType = errors.NewKind("external stored procedures do not support parameters with type `%s`") // ErrCallIncorrectParameterCount is returned when a CALL statement has the incorrect number of parameters. ErrCallIncorrectParameterCount = errors.NewKind("`%s` expected `%d` parameters but got `%d`") // ErrUnknownSystemVariable is returned when a query references a system variable that doesn't exist ErrUnknownSystemVariable = errors.NewKind(`Unknown system variable '%s'`) // ErrSystemVariableReadOnly is returned when attempting to set a value to a non-Dynamic system variable. ErrSystemVariableReadOnly = errors.NewKind(`Variable '%s' is a read only variable`) // ErrSystemVariableSessionOnly is returned when attempting to set a SESSION-only variable using SET GLOBAL. ErrSystemVariableSessionOnly = errors.NewKind(`Variable '%s' is a SESSION variable and can't be used with SET GLOBAL`) // ErrSystemVariableGlobalOnly is returned when attempting to set a GLOBAL-only variable using SET SESSION. ErrSystemVariableGlobalOnly = errors.NewKind(`Variable '%s' is a GLOBAL variable and should be set with SET GLOBAL`) // ErrUserVariableNoDefault is returned when attempting to set the default value on a user variable. ErrUserVariableNoDefault = errors.NewKind(`User variable '%s' does not have a default value`) // ErrInvalidUseOfOldNew is returned when a trigger attempts to make use of OLD or NEW references when they don't exist ErrInvalidUseOfOldNew = errors.NewKind("There is no %s row in on %s trigger") // ErrInvalidUpdateOfOldRow is returned when a trigger attempts to assign to an old row's value with SET ErrInvalidUpdateOfOldRow = errors.NewKind("Updating of old row is not allowed in trigger") // ErrInvalidUpdateInAfterTrigger is returned when a trigger attempts to assign to a new row in an AFTER trigger ErrInvalidUpdateInAfterTrigger = errors.NewKind("Updating of new row is not allowed in after trigger") // ErrUnknownColumn is returned when the given column is not found in referenced table ErrUnknownColumn = errors.NewKind("Unknown column '%s' in '%s'") // ErrUnboundPreparedStatementVariable is returned when a query is executed without a binding for one its variables. ErrUnboundPreparedStatementVariable = errors.NewKind(`unbound variable "%s" in query`) // ErrTruncateReferencedFromForeignKey is returned when a table is referenced in a foreign key and TRUNCATE is called on it. ErrTruncateReferencedFromForeignKey = errors.NewKind("cannot truncate table %s as it is referenced in foreign key %s on table %s") // ErrInvalidColTypeDefinition is returned when a column type-definition has argument violations. ErrInvalidColTypeDefinition = errors.NewKind("column %s type definition is invalid: %s") // ErrDatabaseExists is returned when CREATE DATABASE attempts to create a database that already exists. ErrDatabaseExists = errors.NewKind("can't create database %s; database exists") // ErrInvalidConstraintFunctionNotSupported is returned when a CONSTRAINT CHECK is called with an unsupported function expression. ErrInvalidConstraintFunctionNotSupported = errors.NewKind("Invalid constraint expression, function not supported: %s") // ErrInvalidConstraintSubqueryNotSupported is returned when a CONSTRAINT CHECK is called with a sub-query expression. ErrInvalidConstraintSubqueryNotSupported = errors.NewKind("Invalid constraint expression, sub-queries not supported: %s") // ErrCheckConstraintViolated is returned when a CONSTRAINT CHECK is called with a sub-query expression. ErrCheckConstraintViolated = errors.NewKind("Check constraint %q violated") // ErrCheckConstraintInvalidatedByColumnAlter is returned when an alter column statement would invalidate a check constraint. ErrCheckConstraintInvalidatedByColumnAlter = errors.NewKind("can't alter column %q because it would invalidate check constraint %q") // ErrColumnCountMismatch is returned when a view, derived table or common table expression has a declared column // list with a different number of columns than the schema of the table. ErrColumnCountMismatch = errors.NewKind("In definition of view, derived table or common table expression, SELECT list and column names list have different column counts") // ErrUuidUnableToParse is returned when a UUID is unable to be parsed. ErrUuidUnableToParse = errors.NewKind("unable to parse '%s' to UUID: %s") // ErrLoadDataCannotOpen is returned when a LOAD DATA operation is unable to open the file specified. ErrLoadDataCannotOpen = errors.NewKind("LOAD DATA is unable to open file: %s") // ErrLoadDataCharacterLength is returned when a symbol is of the wrong character length for a LOAD DATA operation. ErrLoadDataCharacterLength = errors.NewKind("%s must be 1 character long") // ErrJSONObjectAggNullKey is returned when JSON_OBJECTAGG is run on a table with NULL keys ErrJSONObjectAggNullKey = errors.NewKind("JSON documents may not contain NULL member names") // ErrDeclareOrderInvalid is returned when a DECLARE statement is at an invalid location. ErrDeclareOrderInvalid = errors.NewKind("DECLARE may only exist at the beginning of a BEGIN/END block") // ErrDeclareConditionNotFound is returned when SIGNAL/RESIGNAL references a non-existent DECLARE CONDITION. ErrDeclareConditionNotFound = errors.NewKind("condition %s does not exist") // ErrDeclareConditionDuplicate is returned when a DECLARE CONDITION statement with the same name was declared in the current scope. ErrDeclareConditionDuplicate = errors.NewKind("duplicate condition '%s'") // ErrSignalOnlySqlState is returned when SIGNAL/RESIGNAL references a DECLARE CONDITION for a MySQL error code. ErrSignalOnlySqlState = errors.NewKind("SIGNAL/RESIGNAL can only use a condition defined with SQLSTATE") // ErrExpectedSingleRow is returned when a subquery executed in normal queries or aggregation function returns // more than 1 row without an attached IN clause. ErrExpectedSingleRow = errors.NewKind("the subquery returned more than 1 row") // ErrUnknownConstraint is returned when a DROP CONSTRAINT statement refers to a constraint that doesn't exist ErrUnknownConstraint = errors.NewKind("Constraint %q does not exist") // ErrInsertIntoNonNullableDefaultNullColumn is returned when an INSERT excludes a field which is non-nullable and has no default/autoincrement. ErrInsertIntoNonNullableDefaultNullColumn = errors.NewKind("Field '%s' doesn't have a default value") // ErrAlterTableNotSupported is thrown when the table doesn't support ALTER TABLE statements ErrAlterTableNotSupported = errors.NewKind("table %s cannot be altered") // ErrPartitionNotFound is thrown when a partition key on a table is not found ErrPartitionNotFound = errors.NewKind("partition not found %q") // ErrInsertIntoNonNullableProvidedNull is called when a null value is inserted into a non-nullable column ErrInsertIntoNonNullableProvidedNull = errors.NewKind("column name '%v' is non-nullable but attempted to set a value of null") // ErrForeignKeyChildViolation is called when a rows is added but there is no parent row, and a foreign key constraint fails. Add the parent row first. ErrForeignKeyChildViolation = errors.NewKind("cannot add or update a child row - Foreign key violation on fk: `%s`, table: `%s`, referenced table: `%s`, key: `%s`") // ErrForeignKeyParentViolation is called when a parent row that is deleted has children, and a foreign key constraint fails. Delete the children first. ErrForeignKeyParentViolation = errors.NewKind("cannot delete or update a parent row - Foreign key violation on fk: `%s`, table: `%s`, referenced table: `%s`, key: `%s`") // ErrForeignKeyColumnCountMismatch is called when the declared column and referenced column counts do not match. ErrForeignKeyColumnCountMismatch = errors.NewKind("the foreign key must reference an equivalent number of columns") // ErrForeignKeyColumnTypeMismatch is returned when the declared column's type and referenced column's type do not match. ErrForeignKeyColumnTypeMismatch = errors.NewKind("column type mismatch on `%s` and `%s`") // ErrForeignKeyNotResolved is called when an add or update is attempted on a foreign key that has not been resolved yet. ErrForeignKeyNotResolved = errors.NewKind("cannot add or update a child row: a foreign key constraint fails (`%s`.`%s`, CONSTRAINT `%s` FOREIGN KEY (`%s`) REFERENCES `%s` (`%s`))") // ErrNoForeignKeySupport is returned when the table does not support FOREIGN KEY operations. ErrNoForeignKeySupport = errors.NewKind("the table does not support foreign key operations: %s") // ErrForeignKeyMissingColumns is returned when an ALTER TABLE ADD FOREIGN KEY statement does not provide any columns ErrForeignKeyMissingColumns = errors.NewKind("cannot create a foreign key without columns") // ErrForeignKeyDropColumn is returned when attempting to drop a column used in a foreign key ErrForeignKeyDropColumn = errors.NewKind("cannot drop column `%s` as it is used in foreign key `%s`") // ErrForeignKeyDropTable is returned when attempting to drop a table used in a foreign key ErrForeignKeyDropTable = errors.NewKind("cannot drop table `%s` as it is referenced in foreign key `%s`") // ErrForeignKeyDropIndex is returned when attempting to drop an index used in a foreign key when there are no other // indexes which may be used in its place. ErrForeignKeyDropIndex = errors.NewKind("cannot drop index: `%s` is used by foreign key `%s`") // ErrForeignKeyDuplicateName is returned when a foreign key already exists with the given name. ErrForeignKeyDuplicateName = errors.NewKind("duplicate foreign key constraint name `%s`") // ErrAddForeignKeyDuplicateColumn is returned when an ALTER TABLE ADD FOREIGN KEY statement has the same column multiple times ErrAddForeignKeyDuplicateColumn = errors.NewKind("cannot have duplicates of columns in a foreign key: `%v`") // ErrTemporaryTablesForeignKeySupport is returned when a user tries to create a temporary table with a foreign key ErrTemporaryTablesForeignKeySupport = errors.NewKind("temporary tables do not support foreign keys") // ErrForeignKeyNotFound is returned when a foreign key was not found. ErrForeignKeyNotFound = errors.NewKind("foreign key `%s` was not found on the table `%s`") // ErrForeignKeySetDefault is returned when attempting to set a referential action as SET DEFAULT. ErrForeignKeySetDefault = errors.NewKind(`"SET DEFAULT" is not supported`) // ErrForeignKeySetNullNonNullable is returned when attempting to set a referential action as SET NULL when the // column is non-nullable. ErrForeignKeySetNullNonNullable = errors.NewKind("cannot use SET NULL as column `%s` is non-nullable") // ErrForeignKeyTypeChangeSetNull is returned when attempting to change a column's type to disallow NULL values when // a foreign key referential action is SET NULL. ErrForeignKeyTypeChangeSetNull = errors.NewKind("column `%s` must allow NULL values as foreign key `%s` has SET NULL") // ErrForeignKeyMissingReferenceIndex is returned when the referenced columns in a foreign key do not have an index. ErrForeignKeyMissingReferenceIndex = errors.NewKind("missing index for foreign key `%s` on the referenced table `%s`") // ErrForeignKeyTextBlob is returned when a TEXT or BLOB column is used in a foreign key, which are not valid types. ErrForeignKeyTextBlob = errors.NewKind("TEXT/BLOB are not valid types for foreign keys") // ErrForeignKeyTypeChange is returned when attempting to change the type of some column used in a foreign key. ErrForeignKeyTypeChange = errors.NewKind("unable to change type of column `%s` as it is used by foreign keys") // ErrDuplicateEntry is returns when a duplicate entry is placed on an index such as a UNIQUE or a Primary Key. ErrDuplicateEntry = errors.NewKind("Duplicate entry for key '%s'") // ErrInvalidArgument is returned when an argument to a function is invalid. ErrInvalidArgument = errors.NewKind("Invalid argument to %s") // ErrInvalidArgumentDetails is returned when the argument is invalid with details of a specific function ErrInvalidArgumentDetails = errors.NewKind("Invalid argument to %s: %s") // ErrSavepointDoesNotExist is returned when a RELEASE SAVEPOINT or ROLLBACK TO SAVEPOINT statement references a // non-existent savepoint identifier ErrSavepointDoesNotExist = errors.NewKind("SAVEPOINT %s does not exist") // ErrTemporaryTableNotSupported is thrown when an integrator attempts to create a temporary tables without temporary table // support. ErrTemporaryTableNotSupported = errors.NewKind("database does not support temporary tables") // ErrInvalidSyntax is returned for syntax errors that aren't picked up by the parser, e.g. the wrong type of // expression used in part of statement. ErrInvalidSyntax = errors.NewKind("Invalid syntax: %s") // ErrTableCopyingNotSupported is returned when a table invokes the TableCopierDatabase interface's // CopyTableData method without supporting the interface ErrTableCopyingNotSupported = errors.NewKind("error: Table copying not supported") // ErrMultiplePrimaryKeysDefined is returned when a table invokes CreatePrimaryKey with a primary key already // defined. ErrMultiplePrimaryKeysDefined = errors.NewKind("error: Multiple primary keys defined") // ErrWrongAutoKey is returned when a table invokes DropPrimaryKey without first removing the auto increment property // (if it exists) on it. ErrWrongAutoKey = errors.NewKind("error: incorrect table definition: there can be only one auto column and it must be defined as a key") // ErrKeyColumnDoesNotExist is returned when a table invoked CreatePrimaryKey with a non-existent column. ErrKeyColumnDoesNotExist = errors.NewKind("error: key column '%s' doesn't exist in table") // ErrCantDropFieldOrKey is returned when a table invokes DropPrimaryKey on a keyless table. ErrCantDropFieldOrKey = errors.NewKind("error: can't drop '%s'; check that column/key exists") // ErrCantDropIndex is return when a table can't drop an index due to a foreign key relationship. ErrCantDropIndex = errors.NewKind("error: can't drop index '%s': needed in a foreign key constraint") // ErrImmutableDatabaseProvider is returned when attempting to edit an immutable database databaseProvider. ErrImmutableDatabaseProvider = errors.NewKind("error: can't modify database databaseProvider") // ErrInvalidValue is returned when a given value does not match what is expected. ErrInvalidValue = errors.NewKind(`error: '%v' is not a valid value for '%v'`) // ErrInvalidValueType is returned when a given value's type does not match what is expected. ErrInvalidValueType = errors.NewKind(`error: '%T' is not a valid value type for '%v'`) // ErrFunctionNotFound is thrown when a function is not found ErrFunctionNotFound = errors.NewKind("function: '%s' not found") // ErrTableFunctionNotFound is thrown when a table function is not found ErrTableFunctionNotFound = errors.NewKind("table function: '%s' not found") // ErrInvalidArgumentNumber is returned when the number of arguments to call a // function is different from the function arity. ErrInvalidArgumentNumber = errors.NewKind("function '%s' expected %v arguments, %v received") // ErrDatabaseNotFound is thrown when a database is not found ErrDatabaseNotFound = errors.NewKind("database not found: %s") // ErrNoDatabaseSelected is thrown when a database is not selected and the query requires one ErrNoDatabaseSelected = errors.NewKind("no database selected") // ErrAsOfNotSupported is thrown when an AS OF query is run on a database that can't support it ErrAsOfNotSupported = errors.NewKind("AS OF not supported for database %s") // ErrIncompatibleAsOf is thrown when an AS OF clause is used in an incompatible manner, such as when using an AS OF // expression with a view when the view definition has its own AS OF expressions. ErrIncompatibleAsOf = errors.NewKind("incompatible use of AS OF: %s") // ErrPidAlreadyUsed is returned when the pid is already registered. ErrPidAlreadyUsed = errors.NewKind("pid %d is already in use") // ErrInvalidOperandColumns is returned when the columns in the left // operand and the elements of the right operand don't match. Also // returned for invalid number of columns in projections, filters, // joins, etc. ErrInvalidOperandColumns = errors.NewKind("operand should have %d columns, but has %d") // ErrReadOnlyTransaction is returned when a write query is executed in a READ ONLY transaction. ErrReadOnlyTransaction = errors.NewKind("cannot execute statement in a READ ONLY transaction") // ErrExistingView is returned when a CREATE VIEW statement uses a name that already exists ErrExistingView = errors.NewKind("the view %s.%s already exists") // ErrViewDoesNotExist is returned when a DROP VIEW statement drops a view that does not exist ErrViewDoesNotExist = errors.NewKind("the view %s.%s does not exist") // ErrSessionDoesNotSupportPersistence is thrown when a feature is not already supported ErrSessionDoesNotSupportPersistence = errors.NewKind("session does not support persistence") // ErrInvalidGISData is thrown when a "ST_<spatial_type>FromText" function receives a malformed string ErrInvalidGISData = errors.NewKind("invalid GIS data provided to function %s") // ErrIllegalGISValue is thrown when a spatial type constructor receives a non-geometric when one should be provided ErrIllegalGISValue = errors.NewKind("illegal non geometric '%v' value found during parsing") // ErrUnsupportedSyntax is returned when syntax that parses correctly is not supported ErrUnsupportedSyntax = errors.NewKind("unsupported syntax: %s") // ErrInvalidSQLValType is returned when a SQL value is of the incorrect type during parsing ErrInvalidSQLValType = errors.NewKind("invalid SQLVal of type: %d") // ErrInvalidIndexPrefix is returned when an index prefix is outside the accepted range ErrInvalidIndexPrefix = errors.NewKind("invalid index prefix: %v") // ErrUnknownIndexColumn is returned when a column in an index is not in the table ErrUnknownIndexColumn = errors.NewKind("unknown column: '%s' in index '%s'") // ErrInvalidAutoIncCols is returned when an auto_increment column cannot be applied ErrInvalidAutoIncCols = errors.NewKind("there can be only one auto_increment column and it must be defined as a key") // ErrUnknownConstraintDefinition is returned when an unknown constraint type is used ErrUnknownConstraintDefinition = errors.NewKind("unknown constraint definition: %s, %T") // ErrInvalidCheckConstraint is returned when a check constraint is defined incorrectly ErrInvalidCheckConstraint = errors.NewKind("invalid constraint definition: %s") // ErrUserCreationFailure is returned when attempting to create a user and it fails for any reason. ErrUserCreationFailure = errors.NewKind("Operation CREATE USER failed for %s") // ErrRoleCreationFailure is returned when attempting to create a role and it fails for any reason. ErrRoleCreationFailure = errors.NewKind("Operation CREATE ROLE failed for %s") // ErrUserDeletionFailure is returned when attempting to create a user and it fails for any reason. ErrUserDeletionFailure = errors.NewKind("Operation DROP USER failed for %s") // ErrRoleDeletionFailure is returned when attempting to create a role and it fails for any reason. ErrRoleDeletionFailure = errors.NewKind("Operation DROP ROLE failed for %s") // ErrDatabaseAccessDeniedForUser is returned when attempting to access a database that the user does not have // permission for, regardless of whether that database actually exists. ErrDatabaseAccessDeniedForUser = errors.NewKind("Access denied for user %s to database '%s'") // ErrTableAccessDeniedForUser is returned when attempting to access a table that the user does not have permission // for, regardless of whether that table actually exists. ErrTableAccessDeniedForUser = errors.NewKind("Access denied for user %s to table '%s'") // ErrPrivilegeCheckFailed is returned when a user does not have the correct privileges to perform an operation. ErrPrivilegeCheckFailed = errors.NewKind("command denied to user %s") // ErrGrantUserDoesNotExist is returned when a user does not exist when attempting to grant them privileges. ErrGrantUserDoesNotExist = errors.NewKind("You are not allowed to create a user with GRANT") // ErrRevokeUserDoesNotExist is returned when a user does not exist when attempting to revoke privileges from them. ErrRevokeUserDoesNotExist = errors.NewKind("There is no such grant defined for user '%s' on host '%s'") // ErrGrantRevokeRoleDoesNotExist is returned when a user or role does not exist when attempting to grant or revoke roles. ErrGrantRevokeRoleDoesNotExist = errors.NewKind("Unknown authorization ID %s") // ErrShowGrantsUserDoesNotExist is returned when a user does not exist when attempting to show their grants. ErrShowGrantsUserDoesNotExist = errors.NewKind("There is no such grant defined for user '%s' on host '%s'") // ErrInvalidRecursiveCteUnion is returned when a recursive CTE is not a UNION or UNION ALL node. ErrInvalidRecursiveCteUnion = errors.NewKind("recursive cte top-level query must be a union; found: %v") // ErrInvalidRecursiveCteInitialQuery is returned when the recursive CTE base clause is not supported. ErrInvalidRecursiveCteInitialQuery = errors.NewKind("recursive cte initial query must be non-recursive projection; found: %v") // ErrInvalidRecursiveCteRecursiveQuery is returned when the recursive CTE recursion clause is not supported. ErrInvalidRecursiveCteRecursiveQuery = errors.NewKind("recursive cte recursive query must be a recursive projection; found: %v") // ErrCteRecursionLimitExceeded is returned when a recursive CTE's execution stack depth exceeds the static limit. ErrCteRecursionLimitExceeded = errors.NewKind("WITH RECURSIVE iteration limit exceeded") // ErrGrantRevokeIllegalPrivilege is returned when a GRANT or REVOKE statement is malformed, or attempts to use privilege incorrectly. ErrGrantRevokeIllegalPrivilege = errors.NewKind("Illegal GRANT/REVOKE command") // ErrInvalidWindowInheritance is returned when a window and its dependency contains conflicting partitioning, ordering, or framing clauses ErrInvalidWindowInheritance = errors.NewKind("window '%s' cannot inherit '%s' since %s") // ErrCircularWindowInheritance is returned when a WINDOW clause has a circular dependency ErrCircularWindowInheritance = errors.NewKind("there is a circularity in the window dependency graph") // ErrCannotCopyWindowFrame is returned when we inherit a window frame with a frame clause (replacement without parenthesis is OK) ErrCannotCopyWindowFrame = errors.NewKind("cannot copy window '%s' because it has a frame clause") // ErrUnknownWindowName is returned when an over by clause references an unknown window definition ErrUnknownWindowName = errors.NewKind("named window not found: '%s'") // ErrUnexpectedNilRow is returned when an invalid operation is applied to an empty row ErrUnexpectedNilRow = errors.NewKind("unexpected nil row") // ErrMoreThanOneRow is returned when the result consists of multiple rows, when only one row is expected ErrMoreThanOneRow = errors.NewKind("Result consisted of more than one row") // ErrColumnNumberDoesNotMatch is returned when the number of columns in result does not match expected number of variables ErrColumnNumberDoesNotMatch = errors.NewKind("The used SELECT statements have a different number of columns") // ErrUnsupportedJoinFactorCount is returned for a query with more commutable join tables than we support ErrUnsupportedJoinFactorCount = errors.NewKind("unsupported join factor count: expected fewer than %d tables, found %d") // ErrNotMatchingSRID is returned for SRID values not matching ErrNotMatchingSRID = errors.NewKind("The SRID of the geometry is %v, but the SRID of the column is %v. Consider changing the SRID of the geometry or the SRID property of the column.") // ErrNotMatchingSRIDWithColName is returned for error of SRID values not matching with column name detail ErrNotMatchingSRIDWithColName = errors.NewKind("The SRID of the geometry does not match the SRID of the column '%s'. %v") // ErrSpatialTypeConversion is returned when one spatial type cannot be converted to the other spatial type ErrSpatialTypeConversion = errors.NewKind("Cannot get geometry object from data you send to the GEOMETRY field") )
var ( ErrInvalidColExpr = errors.NewKind("the expression `%s` could not be found from the index `%s`") ErrRangeSimplification = errors.NewKind("attempting to simplify ranges has removed all ranges") ErrInvalidRangeType = errors.NewKind("encountered the RangeType_Invalid") )
var ( // ErrIndexIDAlreadyRegistered is the error returned when there is already // an index with the same ID. ErrIndexIDAlreadyRegistered = errors.NewKind("an index with id %q has already been registered") // ErrIndexExpressionAlreadyRegistered is the error returned when there is // already an index with the same expression. ErrIndexExpressionAlreadyRegistered = errors.NewKind("there is already an index registered for the expressions: %s") // ErrIndexNotFound is returned when the index could not be found. ErrIndexNotFound = errors.NewKind("index %q was not found") // ErrIndexDeleteInvalidStatus is returned when the index trying to delete // does not have a ready or outdated state. ErrIndexDeleteInvalidStatus = errors.NewKind("can't delete index %q because it's not ready for removal") )
var ( ErrOutOfRange = errors.NewKind("%v out of range for %v") // Boolean is a synonym for TINYINT Boolean = Int8 // Int8 is an integer of 8 bits Int8 = MustCreateNumberType(sqltypes.Int8) // Uint8 is an unsigned integer of 8 bits Uint8 = MustCreateNumberType(sqltypes.Uint8) // Int16 is an integer of 16 bits Int16 = MustCreateNumberType(sqltypes.Int16) // Uint16 is an unsigned integer of 16 bits Uint16 = MustCreateNumberType(sqltypes.Uint16) // Int24 is an integer of 24 bits. Int24 = MustCreateNumberType(sqltypes.Int24) // Uint24 is an unsigned integer of 24 bits. Uint24 = MustCreateNumberType(sqltypes.Uint24) // Int32 is an integer of 32 bits. Int32 = MustCreateNumberType(sqltypes.Int32) // Uint32 is an unsigned integer of 32 bits. Uint32 = MustCreateNumberType(sqltypes.Uint32) // Int64 is an integer of 64 bytes. Int64 = MustCreateNumberType(sqltypes.Int64) // Uint64 is an unsigned integer of 64 bits. Uint64 = MustCreateNumberType(sqltypes.Uint64) // Float32 is a floating point number of 32 bits. Float32 = MustCreateNumberType(sqltypes.Float32) // Float64 is a floating point number of 64 bits. Float64 = MustCreateNumberType(sqltypes.Float64) )
var ( ErrConvertingToSet = errors.NewKind("value %v is not valid for this set") ErrDuplicateEntrySet = errors.NewKind("duplicate entry: %v") ErrInvalidSetValue = errors.NewKind("value %v was not found in the set") ErrTooLargeForSet = errors.NewKind(`value "%v" is too large for this set`) )
var ( // ErrLengthTooLarge is thrown when a string's length is too large given the other parameters. ErrLengthTooLarge = errors.NewKind("length is %v but max allowed is %v") ErrLengthBeyondLimit = errors.NewKind("string '%v' is too large for column '%v'") ErrBinaryCollation = errors.NewKind("binary types must have the binary collation") TinyText = MustCreateStringWithDefaults(sqltypes.Text, tinyTextBlobMax/Collation_Default.CharacterSet().MaxLength()) Text = MustCreateStringWithDefaults(sqltypes.Text, textBlobMax/Collation_Default.CharacterSet().MaxLength()) MediumText = MustCreateStringWithDefaults(sqltypes.Text, mediumTextBlobMax/Collation_Default.CharacterSet().MaxLength()) LongText = MustCreateStringWithDefaults(sqltypes.Text, longTextBlobMax) TinyBlob = MustCreateBinary(sqltypes.Blob, tinyTextBlobMax) Blob = MustCreateBinary(sqltypes.Blob, textBlobMax) MediumBlob = MustCreateBinary(sqltypes.Blob, mediumTextBlobMax) LongBlob = MustCreateBinary(sqltypes.Blob, longTextBlobMax) )
var ( // ErrNodeNotWritten is returned when the children are printed before the node. ErrNodeNotWritten = errors.New("treeprinter: a child was written before the node") // ErrNodeAlreadyWritten is returned when the node has already been written. ErrNodeAlreadyWritten = errors.New("treeprinter: node already written") // ErrChildrenAlreadyWritten is returned when the children have already been written. ErrChildrenAlreadyWritten = errors.New("treeprinter: children already written") )
var ( // ErrNotTuple is returned when the value is not a tuple. ErrNotTuple = errors.NewKind("value of type %T is not a tuple") // ErrInvalidColumnNumber is returned when a tuple has an invalid number of // arguments. ErrInvalidColumnNumber = errors.NewKind("tuple should contain %d column(s), but has %d") ErrInvalidBaseType = errors.NewKind("%v is not a valid %v base type") // ErrNotArray is returned when the value is not an array. ErrNotArray = errors.NewKind("value of type %T is not an array") // ErrConvertToSQL is returned when Convert failed. // It makes an error less verbose comparing to what spf13/cast returns. ErrConvertToSQL = errors.NewKind("incompatible conversion to SQL type: %s") )
var CollationToMySQLVals = map[string]mysqlCollationRow{}/* 272 elements not displayed */
var Collations = map[string]Collation{}
var DualTableSchema = NewPrimaryKeySchema(Schema{ {Name: "dummy", Source: DualTableName, Type: LongText, Nullable: false}, })
var ErrCannotAddToClosedBackgroundThreads = errors.New("cannot add to a close background threads instance")
var ErrCharacterSetNotSupported = errors.NewKind("Unknown character set: %v")
var ErrCollationNotSupported = errors.NewKind("Unknown collation: %v")
var (
ErrConvertingToJSON = errors.NewKind("value %v is not valid JSON")
)
var ErrKeyNotFound = errors.NewKind("memory: key %d not found in cache")
ErrKeyNotFound is returned when the key could not be found in the cache.
var ErrLockDoesNotExist = errors.NewKind("Lock '%s' does not exist.")
ErrLockDoesNotExist is the kind of error returned when a named lock does not exist and the operation does not created it
var ErrLockNotOwned = errors.NewKind("Operation '%s' failed as the lock '%s' has a different owner.")
ErrLockNotOwned is the kind of error returned when attempting an operation against a lock that the given context does not own.
var ErrLockTimeout = errors.NewKind("Timeout acquiring lock '%s'.")
ErrLockTimeout is the kind of error returned when acquiring a lock takes longer than the user specified timeout
var ErrNoAutoIncrementCol = fmt.Errorf("this table has no AUTO_INCREMENT columns")
var ErrNoMemoryAvailable = errors.NewKind("no memory available")
ErrNoMemoryAvailable is returned when there is no more available memory.
var ErrNotGenerator = errors.NewKind("cannot convert value of type %T to a generator")
ErrNotGenerator is returned when the value cannot be converted to a generator.
var (
ErrNotGeometry = errors.NewKind("Value of type %T is not a geometry")
)
var (
ErrNotLineString = errors.NewKind("value of type %T is not a linestring")
)
var (
ErrNotPoint = errors.NewKind("value of type %T is not a point")
)
var (
ErrNotPolygon = errors.NewKind("value of type %T is not a polygon")
)
var ErrUnableSort = errors.NewKind("unable to sort")
ErrUnableSort is thrown when something happens on sorting
var (
// ErrUnexpectedType is thrown when a received type is not the expected
ErrUnexpectedType = errors.NewKind("value at %d has unexpected type: %s")
)
var OkResultColumnType = Int64
OkResultColumnType should be used as the schema column type for Nodes that return an OkResult
var OkResultSchema = Schema{ { Name: OkResultColumnName, Type: OkResultColumnType, }, }
OkResultSchema should be used as the schema of Nodes that return an OkResult
var SupportedCharsets = []CharacterSet{ CharacterSet_utf8mb4, }
var SupportedEngines = []Engine{ {Name: "InnoDB", /* contains filtered or unexported fields */}, }
var SystemVariables = &globalSystemVariables{&sync.RWMutex{}, make(map[string]interface{})}
SystemVariables is the collection of system variables for this process.
Functions ¶
func AreComparable ¶
AreComparable returns whether the given types are either the same or similar enough that values can meaningfully be compared across all permutations. Int8 and Int64 are comparable types, where as VarChar and Int64 are not. In the case of the latter example, not all possible values of a VarChar are comparable to an Int64, while this is true for the former example.
func ConvertToBool ¶
func DBTableIter ¶
DBTableIter iterates over all tables returned by db.GetTableNames() calling cb for each one until all tables have been processed, or an error is returned from the callback, or the cont flag is false when returned from the callback.
func DebugString ¶
func DebugString(nodeOrExpression interface{}) string
DebugString returns a debug string for the Node or Expression given.
func DeepCopyJson ¶ added in v0.12.0
func DeepCopyJson(v interface{}) interface{}
DeepCopyJson implements deep copy of JSON document
func ErrIfMismatchedColumns ¶ added in v0.11.0
ErrIfMismatchedColumns returns an operand error if the number of columns in t1 is not equal to the number of columns in t2. If the number of columns is equal, and both types are tuple types, it recurses into each subtype, asserting that those subtypes are structurally identical as well.
func ErrIfMismatchedColumnsInTuple ¶ added in v0.11.0
ErrIfMismatchedColumnsInTuple returns an operand error is t2 is not a tuple type whose subtypes are structurally identical to t1.
func EvaluateCondition ¶
func EvaluateCondition(ctx *Context, cond Expression, row Row) (interface{}, error)
EvaluateCondition evaluates a condition, which is an expression whose value will be nil or coerced boolean.
func GetRangeCutKey ¶ added in v0.12.0
func GetRangeCutKey(c RangeCut) interface{}
GetRangeCutKey returns the inner value from the given RangeCut.
func GetTableNameInsensitive ¶
GetTableNameInsensitive implements a case insensitive search of a slice of table names. It looks for exact matches first. If no exact matches are found then any table matching the name case insensitively should be returned. If there is more than one table that matches a case insensitive comparison the resolution strategy is not defined.
func GetTmpdirSessionVar ¶ added in v0.9.0
func GetTmpdirSessionVar() string
cc: https://dev.mysql.com/doc/refman/8.0/en/temporary-files.html
func HasAvailableMemory ¶
HasAvailableMemory reports whether more memory is available to the program if it hasn't reached the max memory limit.
func HasDefaultValue ¶
HasDefaultValue checks if session variable value is the default one.
func InitSystemVariables ¶ added in v0.12.0
func InitSystemVariables()
InitSystemVariables resets the systemVars singleton
func Inspect ¶
func Inspect(expr Expression, f func(expr 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 IsDeferredType ¶ added in v0.12.0
func IsDualTable ¶ added in v0.12.0
IsDualTable returns whether the given table is the "dual" table.
func IsFalse ¶ added in v0.10.0
func IsFalse(val interface{}) bool
IsFalse coerces EvaluateCondition interface{} response to boolean
func IsNull ¶
func IsNull(ex Expression) bool
IsNull returns true if expression is nil or is Null Type, otherwise false.
func IsOkResult ¶ added in v0.9.0
IsOkResult returns whether the given row represents an OkResult.
func IsOkResultSchema ¶ added in v0.11.0
func IsTextOnly ¶
IsTextOnly checks if t is CHAR, VARCHAR, or one of the TEXTs.
func IsTrue ¶ added in v0.10.0
func IsTrue(val interface{}) bool
IsTrue coerces EvaluateCondition interface{} response to boolean
func IsTuple ¶
IsTuple checks if t is a tuple type. Note that TupleType instances with just 1 value are not considered as a tuple, but a parenthesized value.
func MustConvert ¶ added in v0.9.0
func MustConvert(val interface{}, err error) interface{}
func NewMapCache ¶
func NewMapCache() mapCache
func NewUniqueKeyErr ¶ added in v0.10.0
func NumColumns ¶
NumColumns returns the number of columns in a type. This is one for all types, except tuples.
func NumericUnaryValue ¶
func NumericUnaryValue(t Type) interface{}
func OrderedCuts ¶ added in v0.12.0
OrderedCuts returns the given Cuts in order from lowest-touched values to highest-touched values.
func ParseEWKBHeader ¶ added in v0.12.0
TODO: maybe move read_geometry.go and write_geometry.go from dolt to here ParseEWKBHeader parses the header portion of a byte array in WKB format to extract endianness and type
func RangeCutIsBinding ¶ added in v0.12.0
func TypesEqual ¶
TypesEqual compares two Types and returns whether they are equivalent.
func ValidateTime ¶
ValidateTime receives a time and returns either that time or nil if it's not a valid time.
func Walk ¶
func Walk(v Visitor, expr Expression)
Walk traverses the expression 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.
func WalkWithNode ¶
func WalkWithNode(v NodeVisitor, n Node, expr Expression)
WalkWithNode traverses the expression tree in depth-first order. It starts by calling v.Visit(node, expr); expr must not be nil. If the visitor returned by v.Visit(node, 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, nil) to the returned visitor.
Types ¶
type Above ¶ added in v0.12.0
type Above struct {
// contains filtered or unexported fields
}
Above represents the position immediately above the contained key.
func (Above) TypeAsLowerBound ¶ added in v0.12.0
func (Above) TypeAsLowerBound() RangeBoundType
TypeAsLowerBound implements RangeCut.
func (Above) TypeAsUpperBound ¶ added in v0.12.0
func (Above) TypeAsUpperBound() RangeBoundType
TypeAsUpperBound implements RangeCut.
type AboveAll ¶ added in v0.12.0
type AboveAll struct{}
AboveAll represents the position beyond the maximum possible value.
func (AboveAll) TypeAsLowerBound ¶ added in v0.12.0
func (AboveAll) TypeAsLowerBound() RangeBoundType
TypeAsLowerBound implements RangeCut.
func (AboveAll) TypeAsUpperBound ¶ added in v0.12.0
func (AboveAll) TypeAsUpperBound() RangeBoundType
TypeAsUpperBound implements RangeCut.
type Aggregation ¶
type Aggregation interface { WindowAdaptableExpression // NewBuffer creates a new aggregation buffer and returns it as a Row. NewBuffer() (AggregationBuffer, error) // WithWindow returns a version of this aggregation with the WindowDefinition given WithWindow(window *WindowDefinition) (Aggregation, error) // Window returns this expression's window Window() *WindowDefinition }
Aggregation implements an aggregation expression, where an aggregation buffer is created for each grouping (NewBuffer). Rows for the grouping should be fed to the buffer with |Update| and the buffer should be eval'd with |Eval|. Calling |Eval| directly on an Aggregation expression is typically an error.
type AggregationBuffer ¶ added in v0.11.0
type AlterableTable ¶
type AlterableTable interface { Table UpdatableTable // AddColumn adds a column to this table as given. If non-nil, order specifies where in the schema to add the column. AddColumn(ctx *Context, column *Column, order *ColumnOrder) error // DropColumn drops the column with the name given. DropColumn(ctx *Context, columnName string) error // ModifyColumn modifies the column with the name given, replacing with the new column definition provided (which may // include a name change). If non-nil, order specifies where in the schema to move the column. ModifyColumn(ctx *Context, columnName string, column *Column, order *ColumnOrder) error }
AlterableTable should be implemented by tables that can receive ALTER TABLE statements to modify their schemas.
type AutoIncrementSetter ¶
type AutoIncrementSetter interface { // SetAutoIncrementValue sets a new AUTO_INCREMENT value. SetAutoIncrementValue(*Context, uint64) error // Close finalizes the set operation, persisting the result. Closer }
AutoIncrementSetter provides support for altering a table's AUTO_INCREMENT sequence, eg 'ALTER TABLE t AUTO_INCREMENT = 10;'
type AutoIncrementTable ¶
type AutoIncrementTable interface { Table // GetNextAutoIncrementValue gets the next AUTO_INCREMENT value. In the case that a table with an autoincrement // column is passed in a row with the autoinc column failed, the next auto increment value must // update its internal state accordingly and use the insert val at runtime. // Implementations are responsible for updating their state to provide the correct values. GetNextAutoIncrementValue(ctx *Context, insertVal interface{}) (uint64, error) // AutoIncrementSetter returns an AutoIncrementSetter. AutoIncrementSetter(*Context) AutoIncrementSetter }
AutoIncrementTable is a table that supports AUTO_INCREMENT. Getter and Setter methods access the table's AUTO_INCREMENT sequence. These methods should only be used for tables with and AUTO_INCREMENT column in their schema.
type BackgroundThreads ¶ added in v0.12.0
type BackgroundThreads struct {
// contains filtered or unexported fields
}
func NewBackgroundThreads ¶ added in v0.12.0
func NewBackgroundThreads() *BackgroundThreads
func (*BackgroundThreads) Add ¶ added in v0.12.0
func (bt *BackgroundThreads) Add(name string, f func(ctx context.Context)) error
Add starts a background goroutine wrapped by a top-level sync.WaitGroup. [f] must return when its [ctx] argument is cancelled, otherwise Shutdown will hang.
func (*BackgroundThreads) Shutdown ¶ added in v0.12.0
func (bt *BackgroundThreads) Shutdown() error
Shutdown cancels the parent context for every async thread, and waits for each goroutine to drain and return before exiting.
type BaseSession ¶
type BaseSession struct {
// contains filtered or unexported fields
}
BaseSession is the basic session type.
func NewBaseSession ¶
func NewBaseSession() *BaseSession
NewBaseSession creates a new empty session.
func NewBaseSessionWithClientServer ¶ added in v0.12.0
func NewBaseSessionWithClientServer(server string, client Client, id uint32) *BaseSession
NewBaseSessionWithClientServer creates a new session with data.
func (*BaseSession) AddLock ¶
func (s *BaseSession) AddLock(lockName string) error
AddLock adds a lock to the set of locks owned by this user which will need to be released if this session terminates
func (*BaseSession) Address ¶
func (s *BaseSession) Address() string
Address returns the server address.
func (*BaseSession) ClearWarnings ¶
func (s *BaseSession) ClearWarnings()
ClearWarnings cleans up session warnings
func (*BaseSession) Client ¶
func (s *BaseSession) Client() Client
Client returns session's client information.
func (*BaseSession) CommitTransaction ¶
func (s *BaseSession) CommitTransaction(*Context, string, Transaction) error
CommitTransaction commits the current transaction for the current database.
func (*BaseSession) DelLock ¶
func (s *BaseSession) DelLock(lockName string) error
DelLock removes a lock from the set of locks owned by this user
func (*BaseSession) GetAllSessionVariables ¶ added in v0.10.0
func (s *BaseSession) GetAllSessionVariables() map[string]interface{}
GetAllSessionVariables implements the Session interface.
func (*BaseSession) GetCurrentDatabase ¶
func (s *BaseSession) GetCurrentDatabase() string
GetCurrentDatabase gets the current database for this session
func (*BaseSession) GetIgnoreAutoCommit ¶ added in v0.10.0
func (s *BaseSession) GetIgnoreAutoCommit() bool
func (*BaseSession) GetIndexRegistry ¶ added in v0.11.0
func (s *BaseSession) GetIndexRegistry() *IndexRegistry
func (*BaseSession) GetLastQueryInfo ¶ added in v0.9.0
func (s *BaseSession) GetLastQueryInfo(key string) int64
func (*BaseSession) GetLogger ¶ added in v0.11.0
func (s *BaseSession) GetLogger() *logrus.Entry
func (*BaseSession) GetQueriedDatabase ¶ added in v0.9.0
func (s *BaseSession) GetQueriedDatabase() string
GetQueriedDatabase implements the Session interface.
func (*BaseSession) GetSessionVariable ¶ added in v0.10.0
func (s *BaseSession) GetSessionVariable(ctx *Context, sysVarName string) (interface{}, error)
GetSessionVariable implements the Session interface.
func (*BaseSession) GetTransaction ¶ added in v0.10.0
func (s *BaseSession) GetTransaction() Transaction
func (*BaseSession) GetUserVariable ¶ added in v0.10.0
func (s *BaseSession) GetUserVariable(ctx *Context, varName string) (Type, interface{}, error)
GetUserVariable implements the Session interface.
func (*BaseSession) GetViewRegistry ¶ added in v0.11.0
func (s *BaseSession) GetViewRegistry() *ViewRegistry
func (*BaseSession) IterLocks ¶
func (s *BaseSession) IterLocks(cb func(name string) error) error
IterLocks iterates through all locks owned by this user
func (*BaseSession) SetClient ¶ added in v0.12.0
func (s *BaseSession) SetClient(c Client)
WithClient implements Session.
func (*BaseSession) SetConnectionId ¶ added in v0.12.0
func (s *BaseSession) SetConnectionId(id uint32)
SetConnectionId sets the [id] for this session
func (*BaseSession) SetCurrentDatabase ¶
func (s *BaseSession) SetCurrentDatabase(dbName string)
SetCurrentDatabase sets the current database for this session
func (*BaseSession) SetIgnoreAutoCommit ¶ added in v0.10.0
func (s *BaseSession) SetIgnoreAutoCommit(ignore bool)
func (*BaseSession) SetIndexRegistry ¶ added in v0.11.0
func (s *BaseSession) SetIndexRegistry(reg *IndexRegistry)
func (*BaseSession) SetLastQueryInfo ¶ added in v0.9.0
func (s *BaseSession) SetLastQueryInfo(key string, value int64)
func (*BaseSession) SetLogger ¶ added in v0.11.0
func (s *BaseSession) SetLogger(logger *logrus.Entry)
func (*BaseSession) SetQueriedDatabase ¶ added in v0.9.0
func (s *BaseSession) SetQueriedDatabase(dbName string)
SetQueriedDatabase implements the Session interface.
func (*BaseSession) SetSessionVariable ¶ added in v0.10.0
func (s *BaseSession) SetSessionVariable(ctx *Context, sysVarName string, value interface{}) error
SetSessionVariable implements the Session interface.
func (*BaseSession) SetTransaction ¶ added in v0.10.0
func (s *BaseSession) SetTransaction(tx Transaction)
func (*BaseSession) SetUserVariable ¶ added in v0.10.0
func (s *BaseSession) SetUserVariable(ctx *Context, varName string, value interface{}) error
SetUserVariable implements the Session interface.
func (*BaseSession) SetViewRegistry ¶ added in v0.11.0
func (s *BaseSession) SetViewRegistry(reg *ViewRegistry)
func (*BaseSession) Warn ¶
func (s *BaseSession) Warn(warn *Warning)
Warn stores the warning in the session.
func (*BaseSession) WarningCount ¶
func (s *BaseSession) WarningCount() uint16
WarningCount returns a number of session warnings
func (*BaseSession) Warnings ¶
func (s *BaseSession) Warnings() []*Warning
Warnings returns a copy of session warnings (from the most recent - the last one) The function implements sql.Session interface
type Below ¶ added in v0.12.0
type Below struct {
// contains filtered or unexported fields
}
Below represents the position immediately below the contained key.
func (Below) TypeAsLowerBound ¶ added in v0.12.0
func (Below) TypeAsLowerBound() RangeBoundType
TypeAsLowerBound implements RangeCut.
func (Below) TypeAsUpperBound ¶ added in v0.12.0
func (Below) TypeAsUpperBound() RangeBoundType
TypeAsUpperBound implements RangeCut.
type BelowAll ¶ added in v0.12.0
type BelowAll struct{}
BelowAll represents the position beyond the minimum possible value.
func (BelowAll) TypeAsLowerBound ¶ added in v0.12.0
func (BelowAll) TypeAsLowerBound() RangeBoundType
TypeAsLowerBound implements RangeCut.
func (BelowAll) TypeAsUpperBound ¶ added in v0.12.0
func (BelowAll) TypeAsUpperBound() RangeBoundType
TypeAsUpperBound implements RangeCut.
type BinaryNode ¶ added in v0.12.0
BinaryNode has two children
type BitType ¶
BitType represents the BIT type. https://dev.mysql.com/doc/refman/8.0/en/bit-type.html The type of the returned value is uint64.
func CreateBitType ¶
CreateBitType creates a BitType.
func MustCreateBitType ¶
MustCreateBitType is the same as CreateBitType except it panics on errors.
type Catalog ¶
type Catalog interface { // AllDatabases returns all databases known to this catalog AllDatabases(ctx *Context) []Database // HasDB returns whether a db with the name given exists, case-insensitive HasDB(ctx *Context, db string) bool // Database returns the database with the name given, case-insensitive, or an error if it doesn't exist Database(ctx *Context, db string) (Database, error) // CreateDatabase creates a new database, or returns an error if the operation isn't supported or fails. CreateDatabase(ctx *Context, dbName string) error // RemoveDatabase removes the database named, or returns an error if the operation isn't supported or fails. RemoveDatabase(ctx *Context, dbName string) error // Table returns the table with the name given in the db with the name given Table(ctx *Context, dbName, tableName string) (Table, Database, error) // TableAsOf returns the table with the name given in the db with the name given, as of the given marker TableAsOf(ctx *Context, dbName, tableName string, asOf interface{}) (Table, Database, error) // Function returns the function with the name given, or sql.ErrFunctionNotFound if it doesn't exist Function(ctx *Context, name string) (Function, error) // RegisterFunction registers the functions given, adding them to the built-in functions. // Integrators with custom functions should typically use the FunctionProvider interface to register their functions. RegisterFunction(ctx *Context, fns ...Function) // LockTable locks the table named LockTable(ctx *Context, table string) // UnlockTables unlocks all tables locked by the session id given UnlockTables(ctx *Context, id uint32) error }
type CharacterSet ¶
type CharacterSet string
CharacterSet represents the character set of a string.
const ( CharacterSet_armscii8 CharacterSet = "armscii8" CharacterSet_ascii CharacterSet = "ascii" CharacterSet_big5 CharacterSet = "big5" CharacterSet_binary CharacterSet = "binary" CharacterSet_cp1250 CharacterSet = "cp1250" CharacterSet_cp1251 CharacterSet = "cp1251" CharacterSet_cp1256 CharacterSet = "cp1256" CharacterSet_cp1257 CharacterSet = "cp1257" CharacterSet_cp850 CharacterSet = "cp850" CharacterSet_cp852 CharacterSet = "cp852" CharacterSet_cp866 CharacterSet = "cp866" CharacterSet_cp932 CharacterSet = "cp932" CharacterSet_dec8 CharacterSet = "dec8" CharacterSet_eucjpms CharacterSet = "eucjpms" CharacterSet_euckr CharacterSet = "euckr" CharacterSet_gb18030 CharacterSet = "gb18030" CharacterSet_gb2312 CharacterSet = "gb2312" CharacterSet_gbk CharacterSet = "gbk" CharacterSet_geostd8 CharacterSet = "geostd8" CharacterSet_greek CharacterSet = "greek" CharacterSet_hebrew CharacterSet = "hebrew" CharacterSet_hp8 CharacterSet = "hp8" CharacterSet_keybcs2 CharacterSet = "keybcs2" CharacterSet_koi8r CharacterSet = "koi8r" CharacterSet_koi8u CharacterSet = "koi8u" CharacterSet_latin1 CharacterSet = "latin1" CharacterSet_latin2 CharacterSet = "latin2" CharacterSet_latin5 CharacterSet = "latin5" CharacterSet_latin7 CharacterSet = "latin7" CharacterSet_macce CharacterSet = "macce" CharacterSet_macroman CharacterSet = "macroman" CharacterSet_sjis CharacterSet = "sjis" CharacterSet_swe7 CharacterSet = "swe7" CharacterSet_tis620 CharacterSet = "tis620" CharacterSet_ucs2 CharacterSet = "ucs2" CharacterSet_ujis CharacterSet = "ujis" CharacterSet_utf16 CharacterSet = "utf16" CharacterSet_utf16le CharacterSet = "utf16le" CharacterSet_utf32 CharacterSet = "utf32" CharacterSet_utf8 = CharacterSet_utf8mb3 CharacterSet_utf8mb3 CharacterSet = "utf8mb3" CharacterSet_utf8mb4 CharacterSet = "utf8mb4" )
Character sets and collations were obtained from a fresh install of MySQL 8.0.17. The character sets were obtained by running `SHOW CHARACTER SET;`. The collations were obtained by running `SHOW COLLATION;`. utf8mb3 is not listed from the above commands, and was obtained from: https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html
func ParseCharacterSet ¶
func ParseCharacterSet(str string) (CharacterSet, error)
ParseCharacterSet takes in a string representing a CharacterSet and returns the result if a match is found, or an error if not.
func (CharacterSet) BinaryCollation ¶
func (cs CharacterSet) BinaryCollation() Collation
func (CharacterSet) DefaultCollation ¶
func (cs CharacterSet) DefaultCollation() Collation
DefaultCollation returns the default Collation for this CharacterSet.
func (CharacterSet) Description ¶
func (cs CharacterSet) Description() string
Description returns the plain-English description for the CharacterSet.
func (CharacterSet) MaxLength ¶
func (cs CharacterSet) MaxLength() int64
MaxLength returns the maximum size of a single character in the CharacterSet.
func (CharacterSet) String ¶
func (cs CharacterSet) String() string
String returns the string representation of the CharacterSet.
type CheckAlterableTable ¶ added in v0.9.0
type CheckAlterableTable interface { Table // CreateCheck creates an check constraint for this table, using the provided parameters. // Returns an error if the constraint name already exists. CreateCheck(ctx *Context, check *CheckDefinition) error // DropCheck removes a check constraint from the database. DropCheck(ctx *Context, chName string) error }
CheckAlterableTable represents a table that supports check constraints.
type CheckConstraint ¶ added in v0.9.0
type CheckConstraint struct { Name string Expr Expression Enforced bool }
CheckConstraint declares a boolean-eval constraint.
func (CheckConstraint) DebugString ¶ added in v0.10.0
func (c CheckConstraint) DebugString() string
type CheckConstraints ¶ added in v0.10.0
type CheckConstraints []*CheckConstraint
func (CheckConstraints) FromExpressions ¶ added in v0.10.0
func (checks CheckConstraints) FromExpressions(exprs []Expression) (CheckConstraints, error)
FromExpressions takes a slice of sql.Expression in the same order as these constraints, and returns a new slice of constraints with the expressions given, holding names and other properties constant.
func (CheckConstraints) ToExpressions ¶ added in v0.10.0
func (checks CheckConstraints) ToExpressions() []Expression
ToExpressions returns the check expressions in these constrains as a slice of sql.Expression
type CheckDefinition ¶ added in v0.9.0
type CheckDefinition struct { Name string // The name of this check. Check names in a database are unique. CheckExpression string // String serialization of the check expression Enforced bool // Whether this constraint is enforced }
CheckDefinition defines a trigger. Integrators are not expected to parse or understand the trigger definitions, but must store and return them when asked.
type CheckTable ¶ added in v0.9.0
type CheckTable interface { Table // GetChecks returns the check constraints on this table. GetChecks(ctx *Context) ([]CheckDefinition, error) }
CheckTable is a table that can declare its check constraints.
type Checksumable ¶
type Checksumable interface { // Checksum returns a checksum and an error if there was any problem // computing or obtaining the checksum. Checksum() (string, error) }
Checksumable provides the checksum of some data.
type Client ¶
type Client struct { // User of the session. User string // Address of the client. Address string // Capabilities of the client Capabilities uint32 }
Client holds session user information.
type Collation ¶
type Collation struct { Name string CharSet CharacterSet // contains filtered or unexported fields }
Collation represents the collation of a string.
func ParseCollation ¶
func ParseCollation(characterSetStr *string, collationStr *string, binaryAttribute bool) (Collation, error)
ParseCollation takes in an optional character set and collation, along with the binary attribute if present, and returns a valid collation or error. A nil character set and collation will return the default collation.
func (Collation) CharacterSet ¶
func (c Collation) CharacterSet() CharacterSet
CharacterSet returns the CharacterSet belonging to this Collation.
func (Collation) Equals ¶ added in v0.11.0
Equals returns true if two collations are equal, false otherwise
func (Collation) IsCompiled ¶
IsCompiled returns string specifying id collation is compiled.
func (Collation) WorksWithCharacterSet ¶
func (c Collation) WorksWithCharacterSet(cs CharacterSet) bool
WorksWithCharacterSet returns whether the Collation is valid for the given CharacterSet.
type Column ¶
type Column struct { // Name is the name of the column. Name string // Type is the data type of the column. Type Type // Default contains the default value of the column or nil if it was not explicitly defined. A nil instance is valid, thus calls do not error. Default *ColumnDefaultValue // AutoIncrement is true if the column auto-increments. AutoIncrement bool // Nullable is true if the column can contain NULL values, or false // otherwise. Nullable bool // Source is the name of the table this column came from. Source string // PrimaryKey is true if the column is part of the primary key for its table. PrimaryKey bool // Comment contains the string comment for this column. Comment string // Extra contains any additional information to put in the `extra` column under `information_schema.columns`. Extra string }
Column is the definition of a table column. As SQL:2016 puts it:
A column is a named component of a table. It has a data type, a default, and a nullability characteristic.
func (*Column) DebugString ¶ added in v0.10.0
type ColumnDefaultValue ¶
type ColumnDefaultValue struct { Expression // the expression representing this default value // contains filtered or unexported fields }
ColumnDefaultValue is an expression representing the default value of a column. May represent both a default literal and a default expression. A nil pointer of this type represents an implicit default value and is thus valid, so all method calls will return without error.
func MustNewNullDefault ¶ added in v0.12.0
func MustNewNullDefault(expr Expression, outType Type, representsLiteral bool, mayReturnNil bool) *ColumnDefaultValue
func NewColumnDefaultValue ¶
func NewColumnDefaultValue(expr Expression, outType Type, representsLiteral bool, mayReturnNil bool) (*ColumnDefaultValue, error)
NewColumnDefaultValue returns a new ColumnDefaultValue expression.
func NewUnresolvedColumnDefaultValue ¶ added in v0.12.0
func NewUnresolvedColumnDefaultValue(expr string) *ColumnDefaultValue
NewUnresolvedColumnDefaultValue returns a column default
func (*ColumnDefaultValue) CheckType ¶ added in v0.12.0
func (e *ColumnDefaultValue) CheckType(ctx *Context) error
CheckType validates that the ColumnDefaultValue has the correct type.
func (*ColumnDefaultValue) Children ¶
func (e *ColumnDefaultValue) Children() []Expression
Children implements sql.Expression
func (*ColumnDefaultValue) DebugString ¶ added in v0.12.0
func (e *ColumnDefaultValue) DebugString() string
func (*ColumnDefaultValue) Eval ¶
func (e *ColumnDefaultValue) Eval(ctx *Context, r Row) (interface{}, error)
Eval implements sql.Expression
func (*ColumnDefaultValue) IsLiteral ¶
func (e *ColumnDefaultValue) IsLiteral() bool
IsLiteral returns whether this expression represents a literal default value (otherwise it's an expression default value).
func (*ColumnDefaultValue) IsNullable ¶
func (e *ColumnDefaultValue) IsNullable() bool
IsNullable implements sql.Expression
func (*ColumnDefaultValue) Resolved ¶
func (e *ColumnDefaultValue) Resolved() bool
Resolved implements sql.Expression
func (*ColumnDefaultValue) String ¶
func (e *ColumnDefaultValue) String() string
String implements sql.Expression
func (*ColumnDefaultValue) Type ¶
func (e *ColumnDefaultValue) Type() Type
Type implements sql.Expression
func (*ColumnDefaultValue) WithChildren ¶
func (e *ColumnDefaultValue) WithChildren(children ...Expression) (Expression, error)
WithChildren implements sql.Expression
type ColumnExpressionType ¶ added in v0.12.0
ColumnExpressionType returns a column expression along with its Type.
type ColumnOrder ¶
type ColumnOrder struct { First bool // True if this column should come first AfterColumn string // Set to the name of the column after which this column should appear }
ColumnOrder is used in ALTER TABLE statements to change the order of inserted / modified columns.
type CommentedNode ¶ added in v0.9.0
CommentedNode allows comments to be set and retrieved on it
type Context ¶
type Context struct { context.Context Session Memory *MemoryManager ProcessList ProcessList // contains filtered or unexported fields }
Context of the query execution.
func NewContext ¶
func NewContext( ctx context.Context, opts ...ContextOption, ) *Context
NewContext creates a new query context. Options can be passed to configure the context. If some aspect of the context is not configure, the default value will be used. By default, the context will have an empty base session, a noop tracer and a memory manager using the process reporter.
func NewEmptyContext ¶
func NewEmptyContext() *Context
NewEmptyContext returns a default context with default values.
func (*Context) ApplyOpts ¶
func (c *Context) ApplyOpts(opts ...ContextOption)
Applys the options given to the context. Mostly for tests, not safe for use after construction of the context.
func (*Context) KillConnection ¶ added in v0.12.0
Terminate the connection associated with |connID|.
func (*Context) LoadInfile ¶ added in v0.12.0
func (c *Context) LoadInfile(filename string) (io.ReadCloser, error)
Load the remote file |filename| from the client. Returns a |ReadCloser| for the file's contents. Returns an error if this functionality is not supported.
func (*Context) NewCtxWithClient ¶ added in v0.12.0
NewCtxWithClient returns a new Context with the given [client]
func (*Context) NewErrgroup ¶ added in v0.11.0
func (*Context) NewSubContext ¶
func (c *Context) NewSubContext() (*Context, context.CancelFunc)
NewSubContext creates a new sub-context with the current context as parent. Returns the resulting context.CancelFunc as well as the new *sql.Context, which be used to cancel the new context before the parent is finished.
func (*Context) QueryTime ¶
QueryTime returns the time.Time when the context associated with this query was created
func (*Context) RootSpan ¶
func (c *Context) RootSpan() opentracing.Span
RootSpan returns the root span, if any.
func (*Context) Span ¶
func (c *Context) Span( opName string, opts ...opentracing.StartSpanOption, ) (opentracing.Span, *Context)
Span creates a new tracing span with the given context. It will return the span and a new context that should be passed to all children of this span.
func (*Context) WithContext ¶
WithContext returns a new context with the given underlying context.
func (*Context) WithCurrentDB ¶
type ContextOption ¶
type ContextOption func(*Context)
ContextOption is a function to configure the context.
func WithMemoryManager ¶
func WithMemoryManager(m *MemoryManager) ContextOption
WithMemoryManager adds the given memory manager to the context.
func WithProcessList ¶ added in v0.11.0
func WithProcessList(p ProcessList) ContextOption
func WithQuery ¶
func WithQuery(q string) ContextOption
WithQuery adds the given query to the context.
func WithRootSpan ¶
func WithRootSpan(s opentracing.Span) ContextOption
WithRootSpan sets the root span of the context.
func WithServices ¶ added in v0.12.0
func WithServices(services Services) ContextOption
WithServices sets the services for the Context
func WithSession ¶
func WithSession(s Session) ContextOption
WithSession adds the given session to the context.
func WithTracer ¶
func WithTracer(t opentracing.Tracer) ContextOption
WithTracer adds the given tracer to the context.
type CreateFunc0Args ¶
type CreateFunc0Args func() Expression
type CreateFunc1Args ¶
type CreateFunc1Args func(e1 Expression) Expression
type CreateFunc2Args ¶
type CreateFunc2Args func(e1, e2 Expression) Expression
type CreateFunc3Args ¶
type CreateFunc3Args func(e1, e2, e3 Expression) Expression
type CreateFunc4Args ¶
type CreateFunc4Args func(e1, e2, e3, e4 Expression) Expression
type CreateFunc5Args ¶
type CreateFunc5Args func(e1, e2, e3, e4, e5 Expression) Expression
type CreateFunc6Args ¶
type CreateFunc6Args func(e1, e2, e3, e4, e5, e6 Expression) Expression
type CreateFunc7Args ¶
type CreateFunc7Args func(e1, e2, e3, e4, e5, e6, e7 Expression) Expression
type CreateFuncNArgs ¶
type CreateFuncNArgs func(args ...Expression) (Expression, error)
type Database ¶
type Database interface { Nameable // GetTableInsensitive retrieves a table by its case insensitive name. Implementations should look for exact // (case-sensitive matches) first. If no exact matches are found then any table matching the name case insensitively // should be returned. If there is more than one table that matches a case insensitive comparison the resolution // strategy is not defined. GetTableInsensitive(ctx *Context, tblName string) (Table, bool, error) // GetTableNames returns the table names of every table in the database. It does not return the names of temporary // tables GetTableNames(ctx *Context) ([]string, error) }
Database represents the database.
type DatabaseProvider ¶ added in v0.11.0
type DatabaseProvider interface { // Database gets a Database from the provider. Database(ctx *Context, name string) (Database, error) // HasDatabase checks if the Database exists in the provider. HasDatabase(ctx *Context, name string) bool // AllDatabases returns a slice of all Databases in the provider. AllDatabases(ctx *Context) []Database }
DatabaseProvider is a collection of Database.
func NewDatabaseProvider ¶ added in v0.11.0
func NewDatabaseProvider(dbs ...Database) DatabaseProvider
type Databaseable ¶ added in v0.12.0
type Databaseable interface {
Database() string
}
Databaseable is a node with a string reference to a database
type Databaser ¶
type Databaser interface { // Database the current database. Database() Database // WithDatabase returns a new node instance with the database replaced with // the one given as parameter. WithDatabase(Database) (Node, error) }
Databaser is a node that contains a reference to a database.
type DatetimeType ¶
type DatetimeType interface { Type ConvertWithoutRangeCheck(v interface{}) (time.Time, error) MaximumTime() time.Time MinimumTime() time.Time }
DatetimeType represents DATE, DATETIME, and TIMESTAMP. https://dev.mysql.com/doc/refman/8.0/en/datetime.html The type of the returned value is time.Time.
func CreateDatetimeType ¶
func CreateDatetimeType(baseType query.Type) (DatetimeType, error)
CreateDatetimeType creates a Type dealing with all temporal types that are not TIME nor YEAR.
func MustCreateDatetimeType ¶
func MustCreateDatetimeType(baseType query.Type) DatetimeType
MustCreateDatetimeType is the same as CreateDatetimeType except it panics on errors.
type DebugStringer ¶
type DebugStringer interface { // DebugString prints a debug string of the node in question. DebugString() string }
DebugStringer is shared by implementors of Node and Expression, and is used for debugging the analyzer. It allows a node or expression to be printed in greater detail than its default String() representation.
type DecimalType ¶
type DecimalType interface { Type // ConvertToNullDecimal converts the given value to a decimal.NullDecimal if it has a compatible type. It is worth // noting that Convert() returns a nil value for nil inputs, and also returns decimal.Decimal rather than // decimal.NullDecimal. ConvertToNullDecimal(v interface{}) (decimal.NullDecimal, error) // ExclusiveUpperBound returns the exclusive upper bound for this Decimal. // For example, DECIMAL(5,2) would return 1000, as 999.99 is the max represented. ExclusiveUpperBound() decimal.Decimal // MaximumScale returns the maximum scale allowed for the current precision. MaximumScale() uint8 // Precision returns the base-10 precision of the type, which is the total number of digits. For example, a // precision of 3 means that 999, 99.9, 9.99, and .999 are all valid maximums (depending on the scale). Precision() uint8 // Scale returns the scale, or number of digits after the decimal, that may be held. // This will always be less than or equal to the precision. Scale() uint8 }
DecimalType represents the DECIMAL type. https://dev.mysql.com/doc/refman/8.0/en/fixed-point-types.html The type of the returned value is decimal.Decimal.
var InternalDecimalType DecimalType = decimalType{ // contains filtered or unexported fields }
InternalDecimalType is a special DecimalType that is used internally for Decimal comparisons. Not intended for usage from integrators.
func CreateDecimalType ¶
func CreateDecimalType(precision uint8, scale uint8) (DecimalType, error)
CreateDecimalType creates a DecimalType.
func MustCreateDecimalType ¶
func MustCreateDecimalType(precision uint8, scale uint8) DecimalType
MustCreateDecimalType is the same as CreateDecimalType except it panics on errors.
type DeferredType ¶ added in v0.12.0
DeferredType is a placeholder for prepared statements that is replaced by the BindVar type on re-analysis.
type DeletableTable ¶
type DeletableTable interface { Table // Deleter returns a RowDeleter for this table. The RowDeleter will get one call to Delete for each row to be deleted, // and will end with a call to Close() to finalize the delete operation. Deleter(*Context) RowDeleter }
DeleteableTable is a table that can process the deletion of rows
type Disposable ¶
type Disposable interface {
// Dispose the contents.
Dispose()
}
Disposable objects can erase all their content when they're no longer in use. Expressions and Nodes that implement Disposable will have Dispose called on them as a final stage of query execution. This can be used to clean up cached memory that wouldn't get caught via the normal garbage collection process.
type DisposeFunc ¶
type DisposeFunc func()
DisposeFunc is a function to completely erase a cache and remove it from the manager.
type DriverIndex ¶
An indexed managed by a driver, as opposed to natively by a DB table.
type DriverIndexLookup ¶
type DriverIndexLookup interface { IndexLookup // Values returns the values in the subset of the index. These are used to populate the index via the driver. Values(Partition) (IndexValueIter, error) // Indexes returns the IDs of all indexes involved in this lookup. Indexes() []string }
DriverIndexLookup is a subset of an index. More specific interfaces can be implemented to grant more capabilities to the index lookup.
type DriverIndexableTable ¶
type DriverIndexableTable interface { IndexAddressableTable // IndexKeyValues returns an iterator over partitions and ultimately the rows of the table to compute the value of an // index for every row in this table. Used when creating an index for access through an IndexDriver. IndexKeyValues(*Context, []string) (PartitionIndexKeyValueIter, error) }
DriverIndexableTable represents a table that supports being indexed and receiving indexes to be able to speed up its execution.
type EmptyProcessList ¶ added in v0.11.0
type EmptyProcessList struct{}
EmptyProcessList is a no-op implementation of ProcessList suitable for use in tests or other installations that don't require a process list
func (EmptyProcessList) AddPartitionProgress ¶ added in v0.11.0
func (e EmptyProcessList) AddPartitionProgress(pid uint64, tableName, partitionName string, total int64)
func (EmptyProcessList) AddProcess ¶ added in v0.11.0
func (e EmptyProcessList) AddProcess(ctx *Context, query string) (*Context, error)
func (EmptyProcessList) AddTableProgress ¶ added in v0.11.0
func (e EmptyProcessList) AddTableProgress(pid uint64, name string, total int64)
func (EmptyProcessList) Done ¶ added in v0.11.0
func (e EmptyProcessList) Done(pid uint64)
func (EmptyProcessList) Kill ¶ added in v0.11.0
func (e EmptyProcessList) Kill(connID uint32)
func (EmptyProcessList) Processes ¶ added in v0.11.0
func (e EmptyProcessList) Processes() []Process
func (EmptyProcessList) RemovePartitionProgress ¶ added in v0.11.0
func (e EmptyProcessList) RemovePartitionProgress(pid uint64, tableName, partitionName string)
func (EmptyProcessList) RemoveTableProgress ¶ added in v0.11.0
func (e EmptyProcessList) RemoveTableProgress(pid uint64, name string)
func (EmptyProcessList) UpdatePartitionProgress ¶ added in v0.11.0
func (e EmptyProcessList) UpdatePartitionProgress(pid uint64, tableName, partitionName string, delta int64)
func (EmptyProcessList) UpdateTableProgress ¶ added in v0.11.0
func (e EmptyProcessList) UpdateTableProgress(pid uint64, name string, delta int64)
type Engine ¶ added in v0.9.0
type Engine struct { Name string // contains filtered or unexported fields }
Engine represents a sql engine.
func (Engine) Savepoints ¶ added in v0.9.0
Savepoints returns whether the storage engine supports savepoints.
func (Engine) Support ¶ added in v0.9.0
Support returns the server's level of support for the storage engine,
func (Engine) Transactions ¶ added in v0.9.0
Transactions returns whether the storage engine supports transactions.
type EnumType ¶
type EnumType interface { Type // At returns the string at the given index, as well if the string was found. At(index int) (string, bool) CharacterSet() CharacterSet Collation() Collation // IndexOf returns the index of the given string. If the string was not found, then this returns -1. IndexOf(v string) int // NumberOfElements returns the number of enumerations. NumberOfElements() uint16 // Values returns the elements, in order, of every enumeration. Values() []string }
EnumType represents the ENUM type. https://dev.mysql.com/doc/refman/8.0/en/enum.html The type of the returned value is uint16.
func CreateEnumType ¶
CreateEnumType creates a EnumType.
func MustCreateEnumType ¶
MustCreateEnumType is the same as CreateEnumType except it panics on errors.
type ErrInsertIgnore ¶ added in v0.12.0
type ErrInsertIgnore struct {
OffendingRow Row
}
func NewErrInsertIgnore ¶ added in v0.12.0
func NewErrInsertIgnore(row Row) ErrInsertIgnore
func (ErrInsertIgnore) Error ¶ added in v0.12.0
func (e ErrInsertIgnore) Error() string
type Expression ¶
type Expression interface { Resolvable fmt.Stringer // Type returns the expression type. Type() Type // IsNullable returns whether the expression can be null. IsNullable() bool // Eval evaluates the given row and returns a result. Eval(ctx *Context, row Row) (interface{}, error) // Children returns the children expressions of this expression. Children() []Expression // WithChildren returns a copy of the expression with children replaced. // It will return an error if the number of children is different than // the current number of children. They must be given in the same order // as they are returned by Children. WithChildren(children ...Expression) (Expression, error) }
Expression is a combination of one or more SQL expressions.
func NillaryWithChildren ¶ added in v0.9.0
func NillaryWithChildren(expr Expression, children ...Expression) (Expression, error)
NillaryWithChildren is a common implementation of expression.WithChildren for expressions with no children.
type Expression2 ¶ added in v0.12.0
type Expressioner ¶
type Expressioner interface { // Expressions returns the list of expressions contained by the node. Expressions() []Expression // WithExpressions returns a copy of the node with expressions replaced. // It will return an error if the number of expressions is different than // the current number of expressions. They must be given in the same order // as they are returned by Expressions. WithExpressions(...Expression) (Node, error) }
Expressioner is a node that contains expressions.
type ExternalStoredProcedureDatabase ¶ added in v0.12.0
type ExternalStoredProcedureDatabase interface { StoredProcedureDatabase // GetExternalStoredProcedures returns all ExternalStoredProcedureDetails for the database. GetExternalStoredProcedures(ctx *Context) ([]ExternalStoredProcedureDetails, error) }
ExternalStoredProcedureDatabase is a database that implements its own stored procedures as a function, rather than as a SQL statement. The returned stored procedures are treated as "built-in", in that they cannot be modified nor deleted.
type ExternalStoredProcedureDetails ¶ added in v0.12.0
type ExternalStoredProcedureDetails struct { // Name is the name of the external stored procedure. If two external stored procedures share a name, then they're // considered overloaded. Standard stored procedures do not support overloading. Name string // Schema describes the row layout of the RowIter returned from Function. Schema Schema // Function is the implementation of the external stored procedure. All functions should have the following definition: // `func(*Context, <PARAMETERS>) (RowIter, error)`. The <PARAMETERS> may be any of the following types: `bool`, // `string`, `[]byte`, `int8`-`int64`, `uint8`-`uint64`, `float32`, `float64`, `time.Time`, or `Decimal` // (shopspring/decimal). The architecture-dependent types `int` and `uint` (without a number) are also supported. // It is valid to return a nil RowIter if there are no rows to be returned. // // Each parameter, by default, is an IN parameter. If the parameter type is a pointer, e.g. `*int32`, then it // becomes an INOUT parameter. There is no way to set a parameter as an OUT parameter. // // Values are converted to their nearest type before being passed in, following the conversion rules of their // related SQL types. The exceptions are `time.Time` (treated as a `DATETIME`), string (treated as a `LONGTEXT` with // the default collation) and Decimal (treated with a larger precision and scale). Take extra care when using decimal // for an INOUT parameter, to ensure that the returned value fits the original's precision and scale, else an error // will occur. // // As functions support overloading, each variant must have a completely unique function signature to prevent // ambiguity. Uniqueness is determined by the number of parameters. If two functions are returned that have the same // name and same number of parameters, then an error is thrown. If the last parameter is variadic, then the stored // procedure functions as though it has the integer-max number of parameters. When an exact match is not found for // overloaded functions, the largest function is used (which in this case will be the variadic function). Also, due // to the usage of the integer-max for the parameter count, only one variadic function is allowed per function name. // The type of the variadic parameter may not have a pointer type. Function interface{} }
ExternalStoredProcedureDetails are the details of an external stored procedure. Compared to standard stored procedures, external ones are considered "built-in", in that they're not created by the user, and may not be modified or deleted by a user. In addition, they're implemented as a function taking standard parameters, compared to stored procedures being implemented as expressions.
func (ExternalStoredProcedureDetails) Comment ¶ added in v0.12.0
func (espd ExternalStoredProcedureDetails) Comment(dbName string) string
Comment returns a comment stating that this is an external stored procedure, which is defined by the given database.
func (ExternalStoredProcedureDetails) FakeCreateProcedureStmt ¶ added in v0.12.0
func (espd ExternalStoredProcedureDetails) FakeCreateProcedureStmt(dbName string) string
FakeCreateProcedureStmt returns a parseable CREATE PROCEDURE statement for this external stored procedure, as some tools (such as Java's JDBC connector) require a valid statement in some situations.
type FilteredIndex ¶ added in v0.12.0
type FilteredIndex interface { Index // HandledFilters returns a subset of |filters| that are satisfied // by index lookups to this index. HandledFilters(filters []Expression) (handled []Expression) }
FilteredIndex is an extension of |Index| that allows an index to declare certain filter predicates handled, allowing them to be removed from the overall plan for greater execution efficiency
type FilteredTable ¶
type FilteredTable interface { Table HandledFilters(filters []Expression) []Expression WithFilters(ctx *Context, filters []Expression) Table }
FilteredTable is a table that can produce a specific RowIter that's more optimized given the filters.
type ForeignKeyConstraint ¶
type ForeignKeyConstraint struct { Name string Database string Table string Columns []string ParentDatabase string ParentTable string ParentColumns []string OnUpdate ForeignKeyReferentialAction OnDelete ForeignKeyReferentialAction IsResolved bool }
ForeignKeyConstraint declares a constraint between the columns of two tables.
func (*ForeignKeyConstraint) DebugString ¶ added in v0.10.0
func (f *ForeignKeyConstraint) DebugString() string
func (ForeignKeyConstraint) IsSelfReferential ¶ added in v0.12.0
func (f ForeignKeyConstraint) IsSelfReferential() bool
IsSelfReferential returns whether this foreign key represents a self-referential foreign key.
type ForeignKeyReferentialAction ¶ added in v0.12.0
type ForeignKeyReferentialAction string
ForeignKeyReferentialAction is the behavior for this foreign key with the relevant action is performed on the foreign table.
const ( ForeignKeyReferentialAction_DefaultAction ForeignKeyReferentialAction = "DEFAULT" // No explicit action was specified ForeignKeyReferentialAction_Restrict ForeignKeyReferentialAction = "RESTRICT" ForeignKeyReferentialAction_Cascade ForeignKeyReferentialAction = "CASCADE" ForeignKeyReferentialAction_NoAction ForeignKeyReferentialAction = "NO ACTION" ForeignKeyReferentialAction_SetNull ForeignKeyReferentialAction = "SET NULL" ForeignKeyReferentialAction_SetDefault ForeignKeyReferentialAction = "SET DEFAULT" )
type ForeignKeyTable ¶
type ForeignKeyTable interface { IndexedTable // CreateIndexForForeignKey creates an index for this table, using the provided parameters. Indexes created through // this function are specifically ones generated for use with a foreign key. Returns an error if the index name // already exists, or an index on the same columns already exists. CreateIndexForForeignKey(ctx *Context, indexName string, using IndexUsing, constraint IndexConstraint, columns []IndexColumn) error // GetDeclaredForeignKeys returns the foreign key constraints that are declared by this table. GetDeclaredForeignKeys(ctx *Context) ([]ForeignKeyConstraint, error) // GetReferencedForeignKeys returns the foreign key constraints that are referenced by this table. GetReferencedForeignKeys(ctx *Context) ([]ForeignKeyConstraint, error) // AddForeignKey adds the given foreign key constraint to the table. Returns an error if the foreign key name // already exists on any other table within the database. AddForeignKey(ctx *Context, fk ForeignKeyConstraint) error // DropForeignKey removes a foreign key from the table. DropForeignKey(ctx *Context, fkName string) error // UpdateForeignKey updates the given foreign key constraint. May range from updated table names to setting the // IsResolved boolean. UpdateForeignKey(ctx *Context, fkName string, fk ForeignKeyConstraint) error // GetForeignKeyUpdater returns a ForeignKeyUpdater for this table. GetForeignKeyUpdater(ctx *Context) ForeignKeyUpdater }
ForeignKeyTable is a table that can declare its foreign key constraints, as well as be referenced.
type ForeignKeyUpdater ¶ added in v0.12.0
type ForeignKeyUpdater interface { RowInserter RowUpdater RowDeleter IndexAddressable }
ForeignKeyUpdater is a TableEditor that is addressable via IndexLookup.
type Freeable ¶
type Freeable interface {
// Free the memory.
Free()
}
Freeable objects can free their memory.
type Function ¶
type Function interface { // NewInstance returns a new instance of the function to evaluate against rows NewInstance([]Expression) (Expression, error) // FunctionName returns the name of this function FunctionName() string // contains filtered or unexported methods }
Function is a function defined by the user that can be applied in a SQL query.
type Function0 ¶
type Function0 struct { Name string Fn CreateFunc0Args }
Function0 is a function with 0 arguments.
func NewFunction0 ¶
func NewFunction0(name string, fn func() Expression) Function0
func (Function0) FunctionName ¶ added in v0.11.0
func (Function0) NewInstance ¶ added in v0.9.0
func (fn Function0) NewInstance(args []Expression) (Expression, error)
type Function1 ¶
type Function1 struct { Name string Fn CreateFunc1Args }
Function1 is a function with 1 argument.
func (Function1) FunctionName ¶ added in v0.11.0
func (Function1) NewInstance ¶ added in v0.9.0
func (fn Function1) NewInstance(args []Expression) (Expression, error)
type Function2 ¶
type Function2 struct { Name string Fn CreateFunc2Args }
Function2 is a function with 2 arguments.
func (Function2) FunctionName ¶ added in v0.11.0
func (Function2) NewInstance ¶ added in v0.9.0
func (fn Function2) NewInstance(args []Expression) (Expression, error)
type Function3 ¶
type Function3 struct { Name string Fn CreateFunc3Args }
Function3 is a function with 3 arguments.
func (Function3) FunctionName ¶ added in v0.11.0
func (Function3) NewInstance ¶ added in v0.9.0
func (fn Function3) NewInstance(args []Expression) (Expression, error)
type Function4 ¶
type Function4 struct { Name string Fn CreateFunc4Args }
Function4 is a function with 4 arguments.
func (Function4) FunctionName ¶ added in v0.11.0
func (Function4) NewInstance ¶ added in v0.9.0
func (fn Function4) NewInstance(args []Expression) (Expression, error)
type Function5 ¶
type Function5 struct { Name string Fn CreateFunc5Args }
Function5 is a function with 5 arguments.
func (Function5) FunctionName ¶ added in v0.11.0
func (Function5) NewInstance ¶ added in v0.9.0
func (fn Function5) NewInstance(args []Expression) (Expression, error)
type Function6 ¶
type Function6 struct { Name string Fn CreateFunc6Args }
Function6 is a function with 6 arguments.
func (Function6) FunctionName ¶ added in v0.11.0
func (Function6) NewInstance ¶ added in v0.9.0
func (fn Function6) NewInstance(args []Expression) (Expression, error)
type Function7 ¶
type Function7 struct { Name string Fn CreateFunc7Args }
Function7 is a function with 7 arguments.
func (Function7) FunctionName ¶ added in v0.11.0
func (Function7) NewInstance ¶ added in v0.9.0
func (fn Function7) NewInstance(args []Expression) (Expression, error)
type FunctionExpression ¶
type FunctionExpression interface { Expression FunctionName() string Description() string }
FunctionExpression is an Expression that represents a function.
type FunctionN ¶
type FunctionN struct { Name string Fn CreateFuncNArgs }
FunctionN is a function with variable number of arguments. This function is expected to return ErrInvalidArgumentNumber if the arity does not match, since the check has to be done in the implementation.
func (FunctionN) FunctionName ¶ added in v0.11.0
func (FunctionN) NewInstance ¶ added in v0.9.0
func (fn FunctionN) NewInstance(args []Expression) (Expression, error)
type FunctionProvider ¶ added in v0.11.0
type FunctionProvider interface { // Function returns the function with the name provided, case-insensitive Function(ctx *Context, name string) (Function, error) }
FunctionProvider is an extension of DatabaseProvider that allows custom functions to be provided
type Generator ¶
type Generator interface { // Next value in the generator. Next() (interface{}, error) // Close the generator and dispose resources. Close() error }
Generator will generate a set of values for a given row.
func NewArrayGenerator ¶
func NewArrayGenerator(array []interface{}) Generator
NewArrayGenerator creates a generator for a given array.
func ToGenerator ¶
ToGenerator converts a value to a generator if possible.
type GeometryType ¶ added in v0.12.0
GeometryType represents the GEOMETRY type. https://dev.mysql.com/doc/refman/8.0/en/gis-class-geometry.html The type of the returned value is one of the following (each implements GeometryValue): Point, Polygon, LineString.
func (GeometryType) Compare ¶ added in v0.12.0
func (t GeometryType) Compare(a any, b any) (int, error)
Compare implements Type interface.
func (GeometryType) Convert ¶ added in v0.12.0
func (t GeometryType) Convert(v interface{}) (interface{}, error)
Convert implements Type interface.
func (GeometryType) Equals ¶ added in v0.12.0
func (t GeometryType) Equals(otherType Type) (ok bool)
Equals implements the Type interface.
func (GeometryType) GetSpatialTypeSRID ¶ added in v0.12.0
func (t GeometryType) GetSpatialTypeSRID() (uint32, bool)
GetSpatialTypeSRID implements SpatialColumnType interface.
func (GeometryType) MatchSRID ¶ added in v0.12.0
func (t GeometryType) MatchSRID(v interface{}) error
MatchSRID implements SpatialColumnType interface
func (GeometryType) Promote ¶ added in v0.12.0
func (t GeometryType) Promote() Type
Promote implements the Type interface.
func (GeometryType) SQL ¶ added in v0.12.0
func (t GeometryType) SQL(dest []byte, v interface{}) (sqltypes.Value, error)
SQL implements Type interface.
func (GeometryType) SetSRID ¶ added in v0.12.0
func (t GeometryType) SetSRID(v uint32) Type
SetSRID implements SpatialColumnType interface.
func (GeometryType) String ¶ added in v0.12.0
func (t GeometryType) String() string
String implements Type interface.
func (GeometryType) Type ¶ added in v0.12.0
func (t GeometryType) Type() query.Type
Type implements Type interface.
func (GeometryType) ValueType ¶ added in v0.12.0
func (t GeometryType) ValueType() reflect.Type
ValueType implements Type interface.
func (GeometryType) Zero ¶ added in v0.12.0
func (t GeometryType) Zero() interface{}
Zero implements Type interface.
type GeometryValue ¶ added in v0.12.0
type GeometryValue interface {
// contains filtered or unexported methods
}
GeometryValue is the value type returned from GeometryType, which is an interface over the following types: Point, Polygon, LineString.
type Index ¶
type Index interface { // ID returns the identifier of the index. ID() string // Database returns the database name this index belongs to. Database() string // Table returns the table name this index belongs to. Table() string // Expressions returns the indexed expressions. If the result is more than // one expression, it means the index has multiple columns indexed. If it's // just one, it means it may be an expression or a column. Expressions() []string // IsUnique returns whether this index is unique IsUnique() bool // Comment returns the comment for this index Comment() string // IndexType returns the type of this index, e.g. BTREE IndexType() string // IsGenerated returns whether this index was generated. Generated indexes // are used for index access, but are not displayed (such as with SHOW INDEXES). IsGenerated() bool // NewLookup returns a new IndexLookup for the ranges given. Ranges represent filters over columns. Each Range // is ordered by the column expressions (as returned by Expressions) with the RangeColumnExpr representing the // searchable area for each column expression. Each Range given will not overlap with any other ranges. Additionally, // all ranges will have the same length, and may represent a partial index (matching a prefix rather than the entire // index). If an integrator is unable to process the given ranges, then a nil may be returned. An error should be // returned only in the event that an error occurred. NewLookup(ctx *Context, ranges ...Range) (IndexLookup, error) // ColumnExpressionTypes returns each expression and its associated Type. Each expression string should exactly // match the string returned from Index.Expressions(). ColumnExpressionTypes(ctx *Context) []ColumnExpressionType }
Index is the representation of an index, and also creates an IndexLookup when given a collection of ranges.
type IndexAddressable ¶ added in v0.12.0
type IndexAddressable interface { // WithIndexLookup returns a version of the table that will return only the rows specified by the given IndexLookup, // which was in turn created by a call to Index.Get() for a set of keys for this table. WithIndexLookup(IndexLookup) Table }
IndexAddressable provides a Table that has its row iteration restricted to only the rows that match the given index lookup.
type IndexAddressableTable ¶
type IndexAddressableTable interface { Table IndexAddressable }
IndexAddressableTable is a table that can restrict its row iteration to only the rows that match the given index lookup.
type IndexAlterableTable ¶
type IndexAlterableTable interface { Table // CreateIndex creates an index for this table, using the provided parameters. // Returns an error if the index name already exists, or an index with the same columns already exists. CreateIndex(ctx *Context, indexName string, using IndexUsing, constraint IndexConstraint, columns []IndexColumn, comment string) error // DropIndex removes an index from this table, if it exists. // Returns an error if the removal failed or the index does not exist. DropIndex(ctx *Context, indexName string) error // RenameIndex renames an existing index to another name that is not already taken by another index on this table. RenameIndex(ctx *Context, fromIndexName string, toIndexName string) error }
IndexAlterableTable represents a table that supports index modification operations.
type IndexBuilder ¶ added in v0.12.0
type IndexBuilder struct {
// contains filtered or unexported fields
}
IndexBuilder builds ranges based on the combination of calls made for the given index, and then relies on the Index to return an IndexLookup from the created ranges.
func NewIndexBuilder ¶ added in v0.12.0
func NewIndexBuilder(ctx *Context, idx Index) *IndexBuilder
NewIndexBuilder returns a new IndexBuilder. Used internally to construct a range that will later be passed to integrators through the Index function NewLookup.
func (*IndexBuilder) Build ¶ added in v0.12.0
func (b *IndexBuilder) Build(ctx *Context) (IndexLookup, error)
Build constructs a new IndexLookup based on the ranges that have been built internally by this builder.
func (*IndexBuilder) Equals ¶ added in v0.12.0
func (b *IndexBuilder) Equals(ctx *Context, colExpr string, keys ...interface{}) *IndexBuilder
Equals represents colExpr = key. For IN expressions, pass all of them in the same Equals call.
func (*IndexBuilder) GreaterOrEqual ¶ added in v0.12.0
func (b *IndexBuilder) GreaterOrEqual(ctx *Context, colExpr string, key interface{}) *IndexBuilder
GreaterOrEqual represents colExpr >= key.
func (*IndexBuilder) GreaterThan ¶ added in v0.12.0
func (b *IndexBuilder) GreaterThan(ctx *Context, colExpr string, key interface{}) *IndexBuilder
GreaterThan represents colExpr > key.
func (*IndexBuilder) IsNotNull ¶ added in v0.12.0
func (b *IndexBuilder) IsNotNull(ctx *Context, colExpr string) *IndexBuilder
IsNotNull represents colExpr != nil
func (*IndexBuilder) IsNull ¶ added in v0.12.0
func (b *IndexBuilder) IsNull(ctx *Context, colExpr string) *IndexBuilder
IsNull represents colExpr = nil
func (*IndexBuilder) LessOrEqual ¶ added in v0.12.0
func (b *IndexBuilder) LessOrEqual(ctx *Context, colExpr string, key interface{}) *IndexBuilder
LessOrEqual represents colExpr <= key.
func (*IndexBuilder) LessThan ¶ added in v0.12.0
func (b *IndexBuilder) LessThan(ctx *Context, colExpr string, key interface{}) *IndexBuilder
LessThan represents colExpr < key.
func (*IndexBuilder) NotEquals ¶ added in v0.12.0
func (b *IndexBuilder) NotEquals(ctx *Context, colExpr string, key interface{}) *IndexBuilder
NotEquals represents colExpr <> key.
func (*IndexBuilder) Ranges ¶ added in v0.12.0
func (b *IndexBuilder) Ranges(ctx *Context) RangeCollection
Ranges returns all ranges for this index builder. If the builder is in an error state then this returns nil.
type IndexColumn ¶
type IndexColumn struct { Name string // Length represents the index prefix length. If zero, then no length was specified. Length int64 }
IndexColumn is the column by which to add to an index.
type IndexConstraint ¶
type IndexConstraint byte
IndexConstraint represents any constraints that should be applied to the index.
const ( IndexConstraint_None IndexConstraint = iota IndexConstraint_Unique IndexConstraint_Fulltext IndexConstraint_Spatial IndexConstraint_Primary )
type IndexDriver ¶
type IndexDriver interface { // ID returns the unique name of the driver. ID() string // Create a new index. If exprs is more than one expression, it means the // index has multiple columns indexed. If it's just one, it means it may // be an expression or a column. Create(db, table, id string, expressions []Expression, config map[string]string) (DriverIndex, error) // LoadAll loads all indexes for given db and table. LoadAll(ctx *Context, db, table string) ([]DriverIndex, error) // Save the given index for all partitions. Save(*Context, DriverIndex, PartitionIndexKeyValueIter) error // Delete the given index for all partitions in the iterator. Delete(DriverIndex, PartitionIter) error }
IndexDriver manages the coordination between the indexes and their representation on disk.
type IndexKeyValueIter ¶
type IndexKeyValueIter interface { // Next returns the next tuple of index key values. The length of the // returned slice will be the same as the number of columns used to // create this iterator. The second returned parameter is a repo's location. Next(*Context) ([]interface{}, []byte, error) Closer }
IndexKeyValueIter is an iterator of index key values, that is, a tuple of the values that will be index keys.
type IndexLookup ¶
type IndexLookup interface { fmt.Stringer // Index returns the index that created this IndexLookup. Index() Index // Ranges returns each Range that created this IndexLookup. Ranges() RangeCollection }
IndexLookup is the implementation-specific definition of an index lookup. The IndexLookup must contain all necessary information to retrieve exactly the rows in the table as specified by the ranges given to their parent index. Implementors are responsible for all semantics of correctly returning rows that match an index lookup.
type IndexOrder ¶ added in v0.12.0
type IndexOrder byte
const ( IndexOrderNone IndexOrder = iota IndexOrderAsc IndexOrderDesc )
type IndexRegistry ¶
type IndexRegistry struct { // Root path where all the data of the indexes is stored on disk. Root string // contains filtered or unexported fields }
IndexRegistry keeps track of all driver-provided indexes in the engine.
func NewIndexRegistry ¶
func NewIndexRegistry() *IndexRegistry
NewIndexRegistry returns a new Index Registry.
func (*IndexRegistry) AddIndex ¶
func (r *IndexRegistry) AddIndex( idx DriverIndex, ) (created chan<- struct{}, ready <-chan struct{}, err error)
AddIndex adds the given index to the registry. The added index will be marked as creating, so nobody can register two indexes with the same expression or id while the other is still being created. When something is sent through the returned channel, it means the index has finished its creation and will be marked as ready. Another channel is returned to notify the user when the index is ready.
func (*IndexRegistry) CanRemoveIndex ¶
func (r *IndexRegistry) CanRemoveIndex(idx Index) bool
CanRemoveIndex returns whether the given index is ready to be removed.
func (*IndexRegistry) CanUseIndex ¶
func (r *IndexRegistry) CanUseIndex(idx Index) bool
CanUseIndex returns whether the given index is ready to use or not.
func (*IndexRegistry) DefaultIndexDriver ¶
func (r *IndexRegistry) DefaultIndexDriver() IndexDriver
DefaultIndexDriver returns the default index driver, which is the only driver when there is 1 driver in the registry. If there are more than 1 drivers in the registry, this will return the empty string, as there is no clear default driver.
func (*IndexRegistry) DeleteIndex ¶
func (r *IndexRegistry) DeleteIndex(db, id string, force bool) (<-chan struct{}, error)
DeleteIndex deletes an index from the registry by its id. First, it marks the index for deletion but does not remove it, so queries that are using it may still do so. The returned channel will send a message when the index can be deleted from disk. If force is true, it will delete the index even if it's not ready for usage. Only use that parameter if you know what you're doing.
func (*IndexRegistry) ExpressionsWithIndexes ¶
func (r *IndexRegistry) ExpressionsWithIndexes( db string, exprs ...Expression, ) [][]Expression
ExpressionsWithIndexes finds all the combinations of expressions with matching indexes. This only matches multi-column indexes.
func (*IndexRegistry) HasIndexes ¶
func (r *IndexRegistry) HasIndexes() bool
HasIndexes returns whether the index registry has any registered indexes. Not thread safe, so the answer is approximate in the face of drivers and indexes being added and removed.
func (*IndexRegistry) Index ¶
func (r *IndexRegistry) Index(db, id string) DriverIndex
Index returns the index with the given id. It may return nil if the index is not found.
func (*IndexRegistry) IndexDriver ¶
func (r *IndexRegistry) IndexDriver(id string) IndexDriver
IndexDriver returns the IndexDriver with the given ID.
func (*IndexRegistry) IndexesByTable ¶
func (r *IndexRegistry) IndexesByTable(db, table string) []DriverIndex
IndexesByTable returns a slice of all the indexes existing on the given table.
func (*IndexRegistry) LoadIndexes ¶
func (r *IndexRegistry) LoadIndexes(ctx *Context, dbs []Database) error
LoadIndexes creates load functions for all indexes for all dbs, tables and drivers. These functions are called as needed by the query
func (*IndexRegistry) MarkOutdated ¶
func (r *IndexRegistry) MarkOutdated(idx Index)
MarkOutdated sets the index status as outdated. This method is not thread safe and should not be used directly except for testing.
func (*IndexRegistry) MatchingIndex ¶ added in v0.12.0
func (r *IndexRegistry) MatchingIndex(ctx *Context, db string, expr ...Expression) (index Index, prefixCount int, err error)
MatchingIndex returns the index that best fits the given expressions. See analyzer.MatchingIndexes for the rules regarding which index is considered the best. If no index matches then returns nil.
func (*IndexRegistry) RegisterIndexDriver ¶
func (r *IndexRegistry) RegisterIndexDriver(driver IndexDriver)
RegisterIndexDriver registers a new index driver.
func (*IndexRegistry) ReleaseIndex ¶
func (r *IndexRegistry) ReleaseIndex(idx Index)
ReleaseIndex releases an index after it's been used.
type IndexStatus ¶
type IndexStatus byte
IndexStatus represents the current status in which the index is.
const ( // IndexNotReady means the index is not ready to be used. IndexNotReady IndexStatus = iota // IndexReady means the index can be used. IndexReady // IndexOutdated means the index is loaded but will not be used because the // contents in it are outdated. IndexOutdated )
func (IndexStatus) IsUsable ¶
func (s IndexStatus) IsUsable() bool
IsUsable returns whether the index can be used or not based on the status.
func (IndexStatus) String ¶
func (s IndexStatus) String() string
type IndexUsing ¶
type IndexUsing byte
IndexUsing is the desired storage type.
const ( IndexUsing_Default IndexUsing = iota IndexUsing_BTree IndexUsing_Hash )
type IndexValueIter ¶
type IndexValueIter interface { // Next returns the next value (repo's location) - see IndexKeyValueIter. Next(*Context) ([]byte, error) Closer }
IndexValueIter is an iterator of index values.
type IndexedTable ¶
type IndexedTable interface { IndexAddressableTable // GetIndexes returns all indexes on this table. GetIndexes(ctx *Context) ([]Index, error) }
IndexedTable represents a table that has one or more native indexes on its columns, and can use those indexes to speed up execution of queries that reference those columns. Unlike DriverIndexableTable, IndexedTable doesn't need a separate index driver to function.
type InsertableTable ¶
type InsertableTable interface { Table // Inserter returns an Inserter for this table. The Inserter will get one call to Insert() for each row to be // inserted, and will end with a call to Close() to finalize the insert operation. Inserter(*Context) RowInserter }
InsertableTable is a table that can process insertion of new rows.
type JSONDocument ¶ added in v0.9.0
type JSONDocument struct {
Val interface{}
}
func MustJSON ¶ added in v0.9.0
func MustJSON(s string) JSONDocument
func (JSONDocument) Compare ¶ added in v0.9.0
func (doc JSONDocument) Compare(ctx *Context, v JSONValue) (int, error)
func (JSONDocument) Contains ¶ added in v0.9.0
func (doc JSONDocument) Contains(ctx *Context, candidate JSONValue) (val interface{}, err error)
Contains returns nil in case of a nil value for either the doc.Val or candidate. Otherwise it returns a bool
func (JSONDocument) Extract ¶ added in v0.9.0
func (doc JSONDocument) Extract(ctx *Context, path string) (JSONValue, error)
func (JSONDocument) Keys ¶ added in v0.9.0
func (doc JSONDocument) Keys(ctx *Context, path string) (val JSONValue, err error)
func (JSONDocument) Overlaps ¶ added in v0.9.0
func (doc JSONDocument) Overlaps(ctx *Context, val SearchableJSONValue) (ok bool, err error)
func (JSONDocument) Search ¶ added in v0.9.0
func (doc JSONDocument) Search(ctx *Context) (path string, err error)
func (JSONDocument) ToString ¶ added in v0.9.0
func (doc JSONDocument) ToString(_ *Context) (string, error)
func (JSONDocument) Unmarshall ¶ added in v0.9.0
func (doc JSONDocument) Unmarshall(_ *Context) (JSONDocument, error)
type JSONValue ¶ added in v0.9.0
type JSONValue interface { // Unmarshall converts a JSONValue to a JSONDocument Unmarshall(ctx *Context) (val JSONDocument, err error) // Compare compares two JSONValues. It maintains the same return value // semantics as Type.Compare() Compare(ctx *Context, v JSONValue) (cmp int, err error) // ToString marshalls a JSONValue to a valid JSON-encoded string. ToString(ctx *Context) (string, error) }
JSONValue is an integrator specific implementation of a JSON field value.
type JsonType ¶
type JsonType interface { Type }
JsonType represents the JSON type. https://dev.mysql.com/doc/refman/8.0/en/json.html The type of the returned value is JSONValue.
var JSON JsonType = jsonType{}
type KeyValueCache ¶
type KeyValueCache interface { // Put a new value in the cache. Put(uint64, interface{}) error // Get the value with the given key. Get(uint64) (interface{}, error) // Size returns the number of elements in the cache. Size() int }
KeyValueCache is a cache of key value pairs.
type LikeMatcher ¶ added in v0.11.0
type LikeMatcher interface {
CreateMatcher(likeStr string) (regex.DisposableMatcher, error)
}
type LineString ¶ added in v0.12.0
LineString is the value type returned from LineStringType. Implements GeometryValue.
type LineStringType ¶ added in v0.12.0
LineStringType represents the LINESTRING type. https://dev.mysql.com/doc/refman/8.0/en/gis-class-linestring.html The type of the returned value is LineString.
func (LineStringType) Compare ¶ added in v0.12.0
func (t LineStringType) Compare(a interface{}, b interface{}) (int, error)
Compare implements Type interface.
func (LineStringType) Convert ¶ added in v0.12.0
func (t LineStringType) Convert(v interface{}) (interface{}, error)
Convert implements Type interface.
func (LineStringType) Equals ¶ added in v0.12.0
func (t LineStringType) Equals(otherType Type) bool
Equals implements the Type interface.
func (LineStringType) GetSpatialTypeSRID ¶ added in v0.12.0
func (t LineStringType) GetSpatialTypeSRID() (uint32, bool)
GetSpatialTypeSRID implements SpatialColumnType interface.
func (LineStringType) MatchSRID ¶ added in v0.12.0
func (t LineStringType) MatchSRID(v interface{}) error
MatchSRID implements SpatialColumnType interface
func (LineStringType) Promote ¶ added in v0.12.0
func (t LineStringType) Promote() Type
Promote implements the Type interface.
func (LineStringType) SQL ¶ added in v0.12.0
func (t LineStringType) SQL(dest []byte, v interface{}) (sqltypes.Value, error)
SQL implements Type interface.
func (LineStringType) SetSRID ¶ added in v0.12.0
func (t LineStringType) SetSRID(v uint32) Type
SetSRID implements SpatialColumnType interface.
func (LineStringType) String ¶ added in v0.12.0
func (t LineStringType) String() string
String implements Type interface.
func (LineStringType) Type ¶ added in v0.12.0
func (t LineStringType) Type() query.Type
Type implements Type interface.
func (LineStringType) ValueType ¶ added in v0.12.0
func (t LineStringType) ValueType() reflect.Type
ValueType implements Type interface.
func (LineStringType) Zero ¶ added in v0.12.0
func (t LineStringType) Zero() interface{}
Zero implements Type interface.
type LockSubsystem ¶
type LockSubsystem struct {
// contains filtered or unexported fields
}
LockSubsystem manages reentrant named locks
func NewLockSubsystem ¶
func NewLockSubsystem() *LockSubsystem
NewLockSubsystem creates a LockSubsystem object
func (*LockSubsystem) GetLockState ¶
func (ls *LockSubsystem) GetLockState(name string) (state LockState, owner uint32)
GetLockState returns the LockState and owner ID for a lock with a given name.
func (*LockSubsystem) Lock ¶
Lock attempts to acquire a lock with a given name for the Id associated with the given ctx.Session within the given timeout
func (*LockSubsystem) ReleaseAll ¶
func (ls *LockSubsystem) ReleaseAll(ctx *Context) (int, error)
ReleaseAll releases all locks the ID associated with the given ctx.Session, and returns the number of locks that were succeessfully released.
type Lockable ¶
type Lockable interface { Nameable // Lock locks the table either for reads or writes. Any session clients can // read while the table is locked for read, but not write. // When the table is locked for write, nobody can write except for the // session client that requested the lock. Lock(ctx *Context, write bool) error // Unlock releases the lock for the current session client. It blocks until // all reads or writes started during the lock are finished. // Context may be nil if the unlock it's because the connection was closed. // The id will always be provided, since in some cases context is not // available. Unlock(ctx *Context, id uint32) error }
Lockable should be implemented by tables that can be locked and unlocked.
type MemoryManager ¶
type MemoryManager struct {
// contains filtered or unexported fields
}
MemoryManager is in charge of keeping track and managing all the components that operate in memory. There should only be one instance of a memory manager running at the same time in each process.
func NewMemoryManager ¶
func NewMemoryManager(r Reporter) *MemoryManager
NewMemoryManager creates a new manager with the given memory reporter. If nil is given, then the Process reporter will be used by default.
func (*MemoryManager) HasAvailable ¶
func (m *MemoryManager) HasAvailable() bool
HasAvailable reports whether the memory manager has any available memory.
func (*MemoryManager) NewHistoryCache ¶
func (m *MemoryManager) NewHistoryCache() (KeyValueCache, DisposeFunc)
NewHistoryCache returns an empty history cache and a function to dispose it when it's no longer needed.
func (*MemoryManager) NewLRUCache ¶
func (m *MemoryManager) NewLRUCache(size uint) (KeyValueCache, DisposeFunc)
NewLRUCache returns an empty LRU cache and a function to dispose it when it's no longer needed.
func (*MemoryManager) NewRows2Cache ¶ added in v0.12.0
func (m *MemoryManager) NewRows2Cache() (Rows2Cache, DisposeFunc)
NewRowsCache returns an empty rows cache and a function to dispose it when it's no longer needed.
func (*MemoryManager) NewRowsCache ¶
func (m *MemoryManager) NewRowsCache() (RowsCache, DisposeFunc)
NewRowsCache returns an empty rows cache and a function to dispose it when it's no longer needed.
func (*MemoryManager) NumCaches ¶ added in v0.11.0
func (m *MemoryManager) NumCaches() int
type MultiDatabaser ¶ added in v0.12.0
type MultiDatabaser interface { // DatabaseProvider returns the current DatabaseProvider. DatabaseProvider() DatabaseProvider // WithDatabaseProvider returns a new node instance with the database provider replaced with the one given as parameter. WithDatabaseProvider(DatabaseProvider) (Node, error) }
MultiDatabaser is a node that contains a reference to a database provider. This interface is intended for very specific nodes that must resolve databases during execution time rather than during analysis, such as block statements where the execution of a nested statement in the block may affect future statements within that same block.
type MutableDatabaseProvider ¶ added in v0.11.0
type Nameable ¶
type Nameable interface { // Name returns the name. Name() string }
Nameable is something that has a name.
type Node ¶
type Node interface { Resolvable fmt.Stringer // Schema of the node. Schema() Schema // Children nodes. Children() []Node // RowIter produces a row iterator from this node. The current row being evaluated is provided, as well the context // of the query. RowIter(ctx *Context, row Row) (RowIter, error) // WithChildren returns a copy of the node with children replaced. // It will return an error if the number of children is different than // the current number of children. They must be given in the same order // as they are returned by Children. WithChildren(children ...Node) (Node, error) // CheckPrivileges passes the operations representative of this Node to the PrivilegedOperationChecker to determine // whether a user (contained in the context, along with their active roles) has the necessary privileges to execute // this node (and its children). CheckPrivileges(ctx *Context, opChecker PrivilegedOperationChecker) bool }
Node is a node in the execution plan tree.
type NodeVisitor ¶
type NodeVisitor interface { // Visit method is invoked for each expr encountered by Walk. If the result Visitor is not nil, Walk visits each of // the children of the expr with that visitor, followed by a call of Visit(nil, nil) to the returned visitor. Visit(node Node, expression Expression) NodeVisitor }
NodeVisitor visits expressions in an expression tree. Like Visitor, but with the added context of the node in which an expression is embedded. See WalkExpressionsWithNode in the plan package.
type NonDeterministicExpression ¶
type NonDeterministicExpression interface { Expression // IsNonDeterministic returns whether this expression returns a non-deterministic result. An expression is // non-deterministic if it can return different results on subsequent evaluations. IsNonDeterministic() bool }
NonDeterministicExpression allows a way for expressions to declare that they are non-deterministic, which will signal the engine to not cache their results when this would otherwise appear to be safe.
type NullBound ¶ added in v0.12.0
type NullBound struct{}
NullBound represents the set of null fields
func (NullBound) TypeAsLowerBound ¶ added in v0.12.0
func (NullBound) TypeAsLowerBound() RangeBoundType
TypeAsLowerBound implements RangeCut.
func (NullBound) TypeAsUpperBound ¶ added in v0.12.0
func (NullBound) TypeAsUpperBound() RangeBoundType
TypeAsUpperBound implements RangeCut.
type NullOrdering ¶ added in v0.9.0
type NullOrdering byte
NullOrdering represents how to order based on null values.
const ( // NullsFirst puts the null values before any other values. NullsFirst NullOrdering = iota // NullsLast puts the null values after all other values. NullsLast NullOrdering = 2 )
type NullType ¶
type NullType interface { Type }
var ( Null NullType = nullType{} // ErrValueNotNil is thrown when a value that was expected to be nil, is not ErrValueNotNil = errors.NewKind("value not nil: %#v") )
type NumberType ¶
NumberType represents all integer and floating point types. https://dev.mysql.com/doc/refman/8.0/en/integer-types.html https://dev.mysql.com/doc/refman/8.0/en/floating-point-types.html The type of the returned value is one of the following: int8, int16, int32, int64, uint8, uint16, uint32, uint64, float32, float64.
func CreateNumberType ¶
func CreateNumberType(baseType query.Type) (NumberType, error)
CreateNumberType creates a NumberType.
func MustCreateNumberType ¶
func MustCreateNumberType(baseType query.Type) NumberType
MustCreateNumberType is the same as CreateNumberType except it panics on errors.
type OkResult ¶
type OkResult struct { RowsAffected uint64 // Number of rows affected by this operation InsertID uint64 // Inserted ID, if any, or -1 if not Info fmt.Stringer // Human-readable status string for extra status info, echoed verbatim to clients. }
OkResult is a representation of the OK packet MySQL sends for non-select queries such as UPDATE, INSERT, etc. It can be returned as the only element in the row for a Node that doesn't select anything. See https://dev.mysql.com/doc/internals/en/packet-OK_Packet.html
func GetOkResult ¶ added in v0.9.0
GetOkResult extracts the OkResult from the row given
func NewOkResult ¶
NewOkResult returns a new OkResult with the given number of rows affected.
type OpaqueNode ¶
type OpaqueNode interface { Node // Opaque reports whether the node is opaque or not. Opaque() bool }
OpaqueNode is a node that doesn't allow transformations to its children and acts a a black box.
type OrderedIndex ¶ added in v0.12.0
type OrderedIndex interface { Index // Order returns the order of results for reads from this index Order() IndexOrder }
OrderedIndex is an extension of |Index| that allows indexes to declare their return order. The query engine can optimize certain queries if the order of an index is guaranteed, e.g. removing a sort operation.
type ParallelizedIndexAddressableTable ¶ added in v0.12.0
type ParallelizedIndexAddressableTable interface { IndexAddressableTable ShouldParallelizeAccess() bool }
type Partition ¶
type Partition interface {
Key() []byte
}
Partition represents a partition from a SQL table.
type PartitionCounter ¶
type PartitionCounter interface { // PartitionCount returns the number of partitions. PartitionCount(*Context) (int64, error) }
PartitionCounter can return the number of partitions.
type PartitionIndexKeyValueIter ¶
type PartitionIndexKeyValueIter interface { // Next returns the next partition and the IndexKeyValueIter for that // partition. Next(*Context) (Partition, IndexKeyValueIter, error) Closer }
PartitionIndexKeyValueIter is an iterator of partitions that will return the partition and the IndexKeyValueIter of that partition.
type PartitionIter ¶
PartitionIter is an iterator that retrieves partitions.
func PartitionsToPartitionIter ¶ added in v0.12.0
func PartitionsToPartitionIter(partitions ...Partition) PartitionIter
PartitionsToPartitionIter creates a PartitionIter that iterates over the given partitions.
type PartitionProgress ¶
type PartitionProgress struct {
Progress
}
PartitionProgress keeps track of a partition progress
func (PartitionProgress) String ¶
func (p PartitionProgress) String() string
type PersistableSession ¶ added in v0.12.0
type PersistableSession interface { Session // PersistGlobal writes to the persisted global system variables file PersistGlobal(sysVarName string, value interface{}) error // RemovePersisted deletes a variable from the persisted globals file RemovePersistedGlobal(sysVarName string) error // RemoveAllPersisted clears the contents of the persisted globals file RemoveAllPersistedGlobals() error // GetPersistedValue GetPersistedValue(k string) (interface{}, error) }
PersistableSession supports serializing/deserializing global system variables/
type Point ¶ added in v0.12.0
Point is the value type returned from PointType. Implements GeometryValue.
type PointType ¶ added in v0.12.0
PointType represents the POINT type. https://dev.mysql.com/doc/refman/8.0/en/gis-class-point.html The type of the returned value is Point.
func (PointType) GetSpatialTypeSRID ¶ added in v0.12.0
GetSpatialTypeSRID implements SpatialColumnType interface.
type Polygon ¶ added in v0.12.0
type Polygon struct { SRID uint32 Lines []LineString }
Polygon is the value type returned from PolygonType. Implements GeometryValue.
type PolygonType ¶ added in v0.12.0
PolygonType represents the POLYGON type. https://dev.mysql.com/doc/refman/8.0/en/gis-class-polygon.html The type of the returned value is Polygon.
func (PolygonType) Compare ¶ added in v0.12.0
func (t PolygonType) Compare(a interface{}, b interface{}) (int, error)
Compare implements Type interface.
func (PolygonType) Convert ¶ added in v0.12.0
func (t PolygonType) Convert(v interface{}) (interface{}, error)
Convert implements Type interface.
func (PolygonType) Equals ¶ added in v0.12.0
func (t PolygonType) Equals(otherType Type) bool
Equals implements the Type interface.
func (PolygonType) GetSpatialTypeSRID ¶ added in v0.12.0
func (t PolygonType) GetSpatialTypeSRID() (uint32, bool)
GetSpatialTypeSRID implements SpatialColumnType interface.
func (PolygonType) MatchSRID ¶ added in v0.12.0
func (t PolygonType) MatchSRID(v interface{}) error
MatchSRID implements SpatialColumnType interface
func (PolygonType) Promote ¶ added in v0.12.0
func (t PolygonType) Promote() Type
Promote implements the Type interface.
func (PolygonType) SQL ¶ added in v0.12.0
func (t PolygonType) SQL(dest []byte, v interface{}) (sqltypes.Value, error)
SQL implements Type interface.
func (PolygonType) SetSRID ¶ added in v0.12.0
func (t PolygonType) SetSRID(v uint32) Type
SetSRID implements SpatialColumnType interface.
func (PolygonType) String ¶ added in v0.12.0
func (t PolygonType) String() string
String implements Type interface.
func (PolygonType) Type ¶ added in v0.12.0
func (t PolygonType) Type() query.Type
Type implements Type interface.
func (PolygonType) ValueType ¶ added in v0.12.0
func (t PolygonType) ValueType() reflect.Type
ValueType implements Type interface.
func (PolygonType) Zero ¶ added in v0.12.0
func (t PolygonType) Zero() interface{}
Zero implements Type interface.
type PrimaryKeyAlterableTable ¶ added in v0.11.0
type PrimaryKeyAlterableTable interface { Table // CreatePrimaryKey creates a primary key for this table, using the provided parameters. // Returns an error if the new primary key set is not compatible with the current table data. CreatePrimaryKey(ctx *Context, columns []IndexColumn) error // DropPrimaryKey drops a primary key on a table. Returns an error if that table does not have a key. DropPrimaryKey(ctx *Context) error }
PrimaryKeyAlterableTable represents a table that supports primary key changes.
type PrimaryKeySchema ¶ added in v0.12.0
PrimaryKeySchema defines table metadata for columns and primary key ordering
func NewPrimaryKeySchema ¶ added in v0.12.0
func NewPrimaryKeySchema(s Schema, pkOrds ...int) PrimaryKeySchema
NewPrimaryKeySchema constructs a new PrimaryKeySchema. PK ordinals default to the in-order set read from the Schema.
func SchemaToPrimaryKeySchema ¶ added in v0.12.0
func SchemaToPrimaryKeySchema(table Table, sch Schema) PrimaryKeySchema
SchemaToPrimaryKeySchema adapts the schema given to a PrimaryKey schema using the primary keys of the table given, if present. The resulting PrimaryKeySchema may have an empty key set if the table has no primary keys. Matching for ordinals is performed by column name.
type PrimaryKeySchemaTarget ¶ added in v0.12.0
type PrimaryKeySchemaTarget interface { SchemaTarget WithPrimaryKeySchema(schema PrimaryKeySchema) (Node, error) }
PrimaryKeySchemaTarget is a node that has a primary key target schema that can be set
type PrimaryKeyTable ¶ added in v0.12.0
type PrimaryKeyTable interface { // PrimaryKeySchema returns this table's PrimaryKeySchema PrimaryKeySchema() PrimaryKeySchema }
type PrivilegeType ¶ added in v0.12.0
type PrivilegeType int
PrivilegeType represents a privilege.
const ( PrivilegeType_Select PrivilegeType = iota PrivilegeType_Insert PrivilegeType_Update PrivilegeType_Delete PrivilegeType_Create PrivilegeType_Drop PrivilegeType_Reload PrivilegeType_Shutdown PrivilegeType_Process PrivilegeType_File PrivilegeType_Grant PrivilegeType_References PrivilegeType_Index PrivilegeType_Alter PrivilegeType_ShowDB PrivilegeType_Super PrivilegeType_CreateTempTable PrivilegeType_LockTables PrivilegeType_Execute PrivilegeType_ReplicationSlave PrivilegeType_ReplicationClient PrivilegeType_CreateView PrivilegeType_ShowView PrivilegeType_CreateRoutine PrivilegeType_AlterRoutine PrivilegeType_CreateUser PrivilegeType_Event PrivilegeType_Trigger PrivilegeType_CreateTablespace PrivilegeType_CreateRole PrivilegeType_DropRole )
func PrivilegeTypeFromString ¶ added in v0.12.0
func PrivilegeTypeFromString(privilegeType string) (PrivilegeType, bool)
PrivilegeTypeFromString returns the matching PrivilegeType for the given string. If there is no match, returns false.
func (PrivilegeType) String ¶ added in v0.12.0
func (pt PrivilegeType) String() string
String returns the sql.PrivilegeType as a string, for display in places such as "SHOW GRANTS".
type PrivilegedOperation ¶ added in v0.12.0
type PrivilegedOperation struct { Database string Table string Column string Privileges []PrivilegeType }
PrivilegedOperation represents an operation that requires privileges to execute.
func NewPrivilegedOperation ¶ added in v0.12.0
func NewPrivilegedOperation(dbName string, tblName string, colName string, privs ...PrivilegeType) PrivilegedOperation
NewPrivilegedOperation returns a new PrivilegedOperation with the given parameters.
type PrivilegedOperationChecker ¶ added in v0.12.0
type PrivilegedOperationChecker interface { // UserHasPrivileges fetches the User, and returns whether they have the desired privileges necessary to perform the // privileged operation(s). This takes into account the active roles, which are set in the context, therefore both // the user and the active roles are pulled from the context. UserHasPrivileges(ctx *Context, operations ...PrivilegedOperation) bool }
PrivilegedOperationChecker contains the necessary data to check whether the operation should succeed based on the privileges contained by the user. The user is retrieved from the context, along with their active roles.
type Process ¶
type Process struct { Pid uint64 Connection uint32 User string Query string Progress map[string]TableProgress StartedAt time.Time Kill context.CancelFunc }
Process represents a process in the SQL server.
type ProcessList ¶
type ProcessList interface { // Processes returns the list of current running processes Processes() []Process // AddProcess adds a new process to the list and returns a new context that can be used to cancel it AddProcess(ctx *Context, query string) (*Context, error) // Kill terminates all queries for a given connection id Kill(connID uint32) // Done removes the finished process with the given pid from the process list Done(pid uint64) // UpdateTableProgress updates the progress of the table with the given name for the // process with the given pid. UpdateTableProgress(pid uint64, name string, delta int64) // UpdatePartitionProgress updates the progress of the table partition with the // given name for the process with the given pid. UpdatePartitionProgress(pid uint64, tableName, partitionName string, delta int64) // AddTableProgress adds a new item to track progress from to the process with // the given pid. If the pid does not exist, it will do nothing. AddTableProgress(pid uint64, name string, total int64) // AddPartitionProgress adds a new item to track progress from to the process with // the given pid. If the pid or the table does not exist, it will do nothing. AddPartitionProgress(pid uint64, tableName, partitionName string, total int64) // RemoveTableProgress removes an existing item tracking progress from the // process with the given pid, if it exists. RemoveTableProgress(pid uint64, name string) // RemovePartitionProgress removes an existing partition tracking progress from the // process with the given pid, if it exists. RemovePartitionProgress(pid uint64, tableName, partitionName string) }
type ProjectedTable ¶
type ProjectedTable interface { Table WithProjections(colNames []string) Table Projections() []string }
ProjectedTable is a table that can produce a specific RowIter that's more optimized given the columns that are projected.
type Range ¶ added in v0.12.0
type Range []RangeColumnExpr
Range is a collection of RangeColumns that are ordered by the column expressions as returned by their parent index. A single range represents a set of values intended for iteration by an integrator's index.
func IntersectRanges ¶ added in v0.12.0
IntersectRanges intersects each Range for each column expression. If a RangeColumnExpr ends up with no valid ranges then a nil is returned.
func SortRanges ¶ added in v0.12.0
SortRanges sorts the given ranges, returning a new slice of ranges.
func (Range) AsEmpty ¶ added in v0.12.0
AsEmpty returns a Range full of empty RangeColumns with the same types as the calling Range.
func (Range) Compare ¶ added in v0.12.0
Compare returns an integer stating the relative position of the calling Range to the given Range.
func (Range) DebugString ¶ added in v0.12.0
DebugString returns this Range as a string for debugging purposes.
func (Range) Equals ¶ added in v0.12.0
Equals evaluates whether the calling Range is equivalent to the given Range.
func (Range) ExpressionByColumnName ¶ added in v0.12.0
func (rang Range) ExpressionByColumnName(idx Index, colExpr string) (RangeColumnExpr, bool)
ExpressionByColumnName returns the RangeColumnExpr that belongs to the given column expression. If an index does not contain the column expression then false is returned.
func (Range) Intersect ¶ added in v0.12.0
Intersect intersects the given Range with the calling Range.
func (Range) IsConnected ¶ added in v0.12.0
IsConnected returns whether the calling Range and given Range have overlapping values, which would result in the same values being returned from some subset of both ranges.
func (Range) IsSubsetOf ¶ added in v0.12.0
IsSubsetOf evaluates whether the calling Range is fully encompassed by the given Range.
func (Range) IsSupersetOf ¶ added in v0.12.0
IsSupersetOf evaluates whether the calling Range fully encompasses the given Range.
func (Range) Overlaps ¶ added in v0.12.0
Overlaps returns whether the calling Range and given Range have overlapping values, which would result in the same values being returned from some subset of both ranges.
func (Range) RemoveOverlap ¶ added in v0.12.0
func (rang Range) RemoveOverlap(otherRange Range) (RangeCollection, bool, error)
RemoveOverlap removes any overlap that the given Range may have with the calling Range. If the two ranges do not overlap and are not mergeable then they're both returned. If one is a subset of the other or is mergeable then only one Range is returned. Otherwise, this returns a collection of ranges that do not overlap with each other, and covers the entirety of the original ranges (and nothing more). If the two ranges do not overlap and are not mergeable then false is returned, otherwise returns true.
func (Range) TryMerge ¶ added in v0.12.0
TryMerge attempts to merge the given Range with the calling Range. This can only do a merge if one Range is a subset of the other, or if all columns except for one are equivalent, upon which a union is attempted on that column. Returns true if the merge was successful.
type RangeBoundType ¶ added in v0.12.0
type RangeBoundType int
RangeBoundType is the bound of the RangeCut.
const ( // Open bounds represent exclusion. Open RangeBoundType = iota // Closed bounds represent inclusion. Closed )
func (RangeBoundType) Inclusive ¶ added in v0.12.0
func (bt RangeBoundType) Inclusive() bool
Inclusive returns whether the bound represents inclusion.
type RangeCollection ¶ added in v0.12.0
type RangeCollection []Range
RangeCollection is a collection of ranges that represent different (non-overlapping) filter expressions.
func RemoveOverlappingRanges ¶ added in v0.12.0
func RemoveOverlappingRanges(ranges ...Range) (RangeCollection, error)
RemoveOverlappingRanges removes all overlap between all ranges.
func (RangeCollection) DebugString ¶ added in v0.12.0
func (ranges RangeCollection) DebugString() string
DebugString returns this RangeCollection as a string for debugging purposes.
func (RangeCollection) Equals ¶ added in v0.12.0
func (ranges RangeCollection) Equals(otherCollection RangeCollection) (bool, error)
Equals returns whether the given RangeCollection matches the calling RangeCollection. The order of each Range is important, therefore it is recommended to sort two collections beforehand.
func (RangeCollection) Intersect ¶ added in v0.12.0
func (ranges RangeCollection) Intersect(otherRanges RangeCollection) (RangeCollection, error)
Intersect attempts to intersect the given RangeCollection with the calling RangeCollection. This ensures that each Range belonging to the same collection is treated as a union with respect to that same collection, rather than attempting to intersect ranges that are a part of the same collection.
func (RangeCollection) String ¶ added in v0.12.0
func (ranges RangeCollection) String() string
String returns this RangeCollection as a string for display purposes.
type RangeColumnExpr ¶ added in v0.12.0
RangeColumnExpr represents the contiguous set of values on a specific column.
func AllRangeColumnExpr ¶ added in v0.12.0
func AllRangeColumnExpr(typ Type) RangeColumnExpr
AllRangeColumnExpr returns a RangeColumnExpr representing all values.
func ClosedRangeColumnExpr ¶ added in v0.12.0
func ClosedRangeColumnExpr(lower, upper interface{}, typ Type) RangeColumnExpr
ClosedRangeColumnExpr returns a RangeColumnExpr representing {l <= x <= u}.
func CustomRangeColumnExpr ¶ added in v0.12.0
func CustomRangeColumnExpr(lower, upper interface{}, lowerBound, upperBound RangeBoundType, typ Type) RangeColumnExpr
CustomRangeColumnExpr returns a RangeColumnExpr defined by the bounds given.
func EmptyRangeColumnExpr ¶ added in v0.12.0
func EmptyRangeColumnExpr(typ Type) RangeColumnExpr
EmptyRangeColumnExpr returns the empty RangeColumnExpr for the given type.
func GreaterOrEqualRangeColumnExpr ¶ added in v0.12.0
func GreaterOrEqualRangeColumnExpr(lower interface{}, typ Type) RangeColumnExpr
GreaterOrEqualRangeColumnExpr returns a RangeColumnExpr representing {x >= l}.
func GreaterThanRangeColumnExpr ¶ added in v0.12.0
func GreaterThanRangeColumnExpr(lower interface{}, typ Type) RangeColumnExpr
GreaterThanRangeColumnExpr returns a RangeColumnExpr representing {x > l}.
func LessOrEqualRangeColumnExpr ¶ added in v0.12.0
func LessOrEqualRangeColumnExpr(upper interface{}, typ Type) RangeColumnExpr
LessOrEqualRangeColumnExpr returns a RangeColumnExpr representing {x <= u}.
func LessThanRangeColumnExpr ¶ added in v0.12.0
func LessThanRangeColumnExpr(upper interface{}, typ Type) RangeColumnExpr
LessThanRangeColumnExpr returns a RangeColumnExpr representing {x < u}.
func NotNullRangeColumnExpr ¶ added in v0.12.0
func NotNullRangeColumnExpr(typ Type) RangeColumnExpr
NotNullRangeColumnExpr returns the not null RangeColumnExpr for the given type.
func NullRangeColumnExpr ¶ added in v0.12.0
func NullRangeColumnExpr() RangeColumnExpr
NullRangeColumnExpr returns the null RangeColumnExpr for the given type.
func OpenRangeColumnExpr ¶ added in v0.12.0
func OpenRangeColumnExpr(lower, upper interface{}, typ Type) RangeColumnExpr
OpenRangeColumnExpr returns a RangeColumnExpr representing {l < x < u}.
func SimplifyRangeColumn ¶ added in v0.12.0
func SimplifyRangeColumn(rces ...RangeColumnExpr) ([]RangeColumnExpr, error)
SimplifyRangeColumn combines all RangeColumnExprs that are connected and returns a new slice.
func (RangeColumnExpr) DebugString ¶ added in v0.12.0
func (r RangeColumnExpr) DebugString() string
DebugString returns this RangeColumnExpr as a string for debugging purposes.
func (RangeColumnExpr) Equals ¶ added in v0.12.0
func (r RangeColumnExpr) Equals(other RangeColumnExpr) (bool, error)
Equals checks for equality with the given RangeColumnExpr.
func (RangeColumnExpr) HasLowerBound ¶ added in v0.12.0
func (r RangeColumnExpr) HasLowerBound() bool
HasLowerBound returns whether this RangeColumnExpr has a value for the lower bound.
func (RangeColumnExpr) HasUpperBound ¶ added in v0.12.0
func (r RangeColumnExpr) HasUpperBound() bool
HasUpperBound returns whether this RangeColumnExpr has a value for the upper bound.
func (RangeColumnExpr) IsConnected ¶ added in v0.12.0
func (r RangeColumnExpr) IsConnected(other RangeColumnExpr) (bool, error)
IsConnected evaluates whether the given RangeColumnExpr overlaps or is adjacent to the calling RangeColumnExpr.
func (RangeColumnExpr) IsEmpty ¶ added in v0.12.0
func (r RangeColumnExpr) IsEmpty() (bool, error)
IsEmpty returns whether this RangeColumnExpr is empty.
func (RangeColumnExpr) IsSubsetOf ¶ added in v0.12.0
func (r RangeColumnExpr) IsSubsetOf(other RangeColumnExpr) (bool, error)
IsSubsetOf evaluates whether the calling RangeColumnExpr is fully encompassed by the given RangeColumnExpr.
func (RangeColumnExpr) IsSupersetOf ¶ added in v0.12.0
func (r RangeColumnExpr) IsSupersetOf(other RangeColumnExpr) (bool, error)
IsSupersetOf evaluates whether the calling RangeColumnExpr fully encompasses the given RangeColumnExpr.
func (RangeColumnExpr) Overlaps ¶ added in v0.12.0
func (r RangeColumnExpr) Overlaps(other RangeColumnExpr) (RangeColumnExpr, bool, error)
Overlaps evaluates whether the given RangeColumnExpr overlaps the calling RangeColumnExpr. If they do, returns the overlapping region as a RangeColumnExpr.
func (RangeColumnExpr) RepresentsEquals ¶ added in v0.12.0
func (r RangeColumnExpr) RepresentsEquals() (bool, error)
RepresentsEquals returns whether this RangeColumnExpr represents an "equals". An "equals" is a special kind of RangeType_ClosedClosed that iterates over a single value (or the specific prefix of some value).
func (RangeColumnExpr) String ¶ added in v0.12.0
func (r RangeColumnExpr) String() string
String returns this RangeColumnExpr as a string for display purposes.
func (RangeColumnExpr) Subtract ¶ added in v0.12.0
func (r RangeColumnExpr) Subtract(other RangeColumnExpr) ([]RangeColumnExpr, error)
Subtract removes the given RangeColumnExpr from the calling RangeColumnExpr. In the event that the given RangeColumnExpr is a strict subset of the calling RangeColumnExpr, two RangeColumnExprs will be returned. If the given RangeColumnExpr does not overlap the calling RangeColumnExpr, then the calling RangeColumnExpr is returned. If the calling RangeColumnExpr is a strict subset (or equivalent) of the given RangeColumnExpr, then an empty slice is returned. In all other cases, a slice with a single RangeColumnExpr will be returned.
func (RangeColumnExpr) TryIntersect ¶ added in v0.12.0
func (r RangeColumnExpr) TryIntersect(other RangeColumnExpr) (RangeColumnExpr, bool, error)
TryIntersect attempts to intersect the given RangeColumnExpr with the calling RangeColumnExpr. Returns true if the intersection result is not the empty RangeColumnExpr, however a valid RangeColumnExpr is always returned if the error is nil.
func (RangeColumnExpr) TryUnion ¶ added in v0.12.0
func (r RangeColumnExpr) TryUnion(other RangeColumnExpr) (RangeColumnExpr, bool, error)
TryUnion attempts to combine the given RangeColumnExpr with the calling RangeColumnExpr. Returns true if the union was a success.
func (RangeColumnExpr) Type ¶ added in v0.12.0
func (r RangeColumnExpr) Type() RangeType
Type returns this RangeColumnExpr's RangeType.
type RangeColumnExprTree ¶ added in v0.12.0
type RangeColumnExprTree struct {
// contains filtered or unexported fields
}
RangeColumnExprTree represents a red-black tree over a range column expression. To represent an entire range, each node has both an upper bound and lower bound that represents a single column expression. If the Range has another dimension, then the node will have an inner tree representing the nested dimension ad infinitum. This implicitly means that all column expressions on the lower dimension share the same column expression in the higher dimensions. This way, a Range is deconstructed and sorted by its column expressions, but may easily be retrieved by walking down a tree and all of its inner trees.
func NewRangeColumnExprTree ¶ added in v0.12.0
func NewRangeColumnExprTree(initialRange Range, columnExprTypes []Type) (*RangeColumnExprTree, error)
NewRangeColumnExprTree creates a new RangeColumnExprTree constructed from an initial range. As the initial Range may contain column expressions that have a NULL type, the expected non-NULL type for each column expression is given separately. If all column expressions for a specific column will be NULL, then it is valid to use the NULL type. Returns an error if the number of column expressions do not equal the number of types, or if the Range has a length of zero.
func (*RangeColumnExprTree) FindConnections ¶ added in v0.12.0
func (tree *RangeColumnExprTree) FindConnections(rang Range, colExprIdx int) (RangeCollection, error)
FindConnections returns all connecting Ranges found in the tree. They may or may not be mergeable or overlap.
func (*RangeColumnExprTree) GetRangeCollection ¶ added in v0.12.0
func (tree *RangeColumnExprTree) GetRangeCollection() (RangeCollection, error)
GetRangeCollection returns every Range that this tree contains.
func (*RangeColumnExprTree) Insert ¶ added in v0.12.0
func (tree *RangeColumnExprTree) Insert(rang Range) error
Insert adds the given Range into the tree.
func (*RangeColumnExprTree) Iterator ¶ added in v0.12.0
func (tree *RangeColumnExprTree) Iterator() *rangeTreeIter
Iterator returns an iterator over the calling tree. Does not handle any inner trees.
func (*RangeColumnExprTree) Remove ¶ added in v0.12.0
func (tree *RangeColumnExprTree) Remove(rang Range) error
Remove removes the given Range from the tree (and subtrees if applicable).
func (*RangeColumnExprTree) String ¶ added in v0.12.0
func (tree *RangeColumnExprTree) String() string
String returns the tree as a formatted string. Does not display the inner trees.
type RangeCut ¶ added in v0.12.0
type RangeCut interface { // Compare returns an integer stating the relative position of the calling RangeCut to the given RangeCut. Compare(RangeCut, Type) (int, error) // String returns the RangeCut as a string for display purposes. String() string // TypeAsLowerBound returns the bound type if the calling RangeCut is the lower bound of a range. TypeAsLowerBound() RangeBoundType // TypeAsUpperBound returns the bound type if the calling RangeCut is the upper bound of a range. TypeAsUpperBound() RangeBoundType }
RangeCut represents a position on the line of all possible values.
func GetRangeCutMax ¶ added in v0.12.0
GetRangeCutMax returns the RangeCut with the highest value.
type RangeType ¶ added in v0.12.0
type RangeType int
RangeType returns what a RangeColumnExpr represents, such as a GreaterThan on some column, or a column set between two bounds.
type ReadOnlyDatabase ¶ added in v0.11.0
type ReplaceableTable ¶
type ReplaceableTable interface { Table // Replacer returns a RowReplacer for this table. The RowReplacer will have Insert and optionally Delete called once // for each row, followed by a call to Close() when all rows have been processed. Replacer(ctx *Context) RowReplacer }
ReplaceableTable allows rows to be replaced through a Delete (if applicable) then Insert.
type Reporter ¶
type Reporter interface { // MaxMemory returns the maximum number of memory allowed in bytes. MaxMemory() uint64 // UsedMemory returns the memory in use in bytes. UsedMemory() uint64 }
Reporter is a component that gives information about the memory usage.
type Resolvable ¶
type Resolvable interface { // Resolved returns whether the node is resolved. Resolved() bool }
Resolvable is something that can be resolved or not.
type RewritableTable ¶ added in v0.12.0
type RewritableTable interface { Table AlterableTable // ShouldRewriteTable returns whether this table should be rewritten because of a schema change. The old and new // versions of the schema and modified column are provided. For some operations, one or both of |oldColumn| or // |newColumn| may be nil. // The engine may decide to rewrite tables regardless in some cases, such as when a new non-nullable column is added. ShouldRewriteTable(ctx *Context, oldSchema, newSchema PrimaryKeySchema, oldColumn, newColumn *Column) bool // RewriteInserter returns a RowInserter for the new schema. Rows from the current table, with the old schema, will // be streamed from the table and passed to this RowInserter. Implementor tables must still return rows in the // current schema until the rewrite operation completes. |Close| will be called on RowInserter when all rows have // been inserted. RewriteInserter(ctx *Context, oldSchema, newSchema PrimaryKeySchema, oldColumn, newColumn *Column) (RowInserter, error) }
RewritableTable is an extension to Table that makes it simpler for integrators to adapt to schema changes that must rewrite every row of the table. In this case, rows are streamed from the existing table in the old schema, transformed / updated appropriately, and written with the new format.
type Row ¶
type Row []interface{}
Row is a tuple of values.
func NodeToRows ¶
NodeToRows converts a node to a slice of rows.
func RowIter2ToRows ¶ added in v0.12.0
func RowIterToRows ¶
RowIterToRows converts a row iterator to a slice of rows.
type Row2 ¶ added in v0.12.0
type Row2 []Value
Row2 is a slice of values
type RowDeleter ¶
type RowDeleter interface { TableEditor // Delete deletes the given row. Returns ErrDeleteRowNotFound if the row was not found. Delete will be called once for // each row to process for the delete operation, which may involve many rows. After all rows have been processed, // Close is called. Delete(*Context, Row) error // Close finalizes the delete operation, persisting the result. Closer }
RowDeleter is a delete cursor that can delete one or more rows from a table.
type RowFrame ¶ added in v0.12.0
type RowFrame struct { Types []querypb.Type // Values are the values this row. Values []ValueBytes // contains filtered or unexported fields }
func NewRowFrame ¶ added in v0.12.0
func (*RowFrame) AppendMany ¶ added in v0.12.0
func (f *RowFrame) AppendMany(types []querypb.Type, vals []ValueBytes)
AppendMany appends the types and values given, as two parallel arrays, into this frame.
func (*RowFrame) Clear ¶ added in v0.12.0
func (f *RowFrame) Clear()
Clear clears this row frame for reuse. The underlying byte arrays are not zeroed out or discarded, but will be overwritten by future calls to Append.
func (*RowFrame) Recycle ¶ added in v0.12.0
func (f *RowFrame) Recycle()
Recycle returns this row frame to the shared pool. Further use will result in concurrency errors. All RowFrames should be recycled when they are no longer being used to prevent resource leaks.
type RowInserter ¶
type RowInserter interface { TableEditor // Insert inserts the row given, returning an error if it cannot. Insert will be called once for each row to process // for the insert operation, which may involve many rows. After all rows in an operation have been processed, Close // is called. Insert(*Context, Row) error // Close finalizes the insert operation, persisting its result. Closer }
RowInserter is an insert cursor that can insert one or more values to a table.
type RowIter ¶
type RowIter interface { // Next retrieves the next row. It will return io.EOF if it's the last row. // After retrieving the last row, Close will be automatically closed. Next(ctx *Context) (Row, error) Closer }
RowIter is an iterator that produces rows.
func NewSpanIter ¶
func NewSpanIter(span opentracing.Span, iter RowIter) RowIter
NewSpanIter creates a RowIter executed in the given span. Currently inactive, returns the iter returned unaltered.
func RowsToRowIter ¶
RowsToRowIter creates a RowIter that iterates over the given rows.
type RowIter2 ¶ added in v0.12.0
type RowIter2 interface { RowIter // Next2 produces the next row, and stores it in the RowFrame provided. // It will return io.EOF if it's the last row. After retrieving the // last row, Close will be automatically called. Next2(ctx *Context, frame *RowFrame) error }
RowIter2 is an iterator that fills a row frame buffer with rows from its source
type RowIterTypeSelector ¶ added in v0.12.0
RowIterTypeSelector is implemented by top-level type-switch nodes that return either a Node or Node2 implementation.
type RowReplacer ¶
type RowReplacer interface { TableEditor // Insert inserts the row given, returning an error if it cannot. Insert will be called once for each row to process // for the replace operation, which may involve many rows. After all rows in an operation have been processed, Close // is called. Insert(*Context, Row) error // Delete deletes the given row. Returns ErrDeleteRowNotFound if the row was not found. Delete will be called once for // each row to process for the delete operation, which may involve many rows. After all rows have been processed, // Close is called. Delete(*Context, Row) error // Closer finalizes the replace operation, persisting the result. Closer }
RowReplacer is a combination of RowDeleter and RowInserter. TODO: We can't embed those interfaces because go 1.13 doesn't allow for overlapping interfaces (they both declare
Close). Go 1.14 fixes this problem, but we aren't ready to drop support for 1.13 yet.
type RowUpdater ¶
type RowUpdater interface { TableEditor // Update the given row. Provides both the old and new rows. Update(ctx *Context, old Row, new Row) error // Closer finalizes the update operation, persisting the result. Closer }
RowUpdater is an update cursor that can update one or more rows in a table.
type Rows2Cache ¶ added in v0.12.0
type Rows2Cache interface { RowsCache // Add2 a new row to the cache. If there is no memory available, it will try to // free some memory. If after that there is still no memory available, it // will return an error and erase all the content of the cache. Add2(Row2) error // Get2 gets all rows. Get2() []Row2 }
Rows2Cache is a cache of Row2s.
type RowsCache ¶
type RowsCache interface { // Add a new row to the cache. If there is no memory available, it will try to // free some memory. If after that there is still no memory available, it // will return an error and erase all the content of the cache. Add(Row) error // Get returns all rows. Get() []Row }
RowsCache is a cache of rows.
type Schema ¶
type Schema []*Column
Schema is the definition of a table.
func (Schema) Copy ¶ added in v0.12.0
Copy returns a deep copy of this schema, making a copy of all columns
func (Schema) HasAutoIncrement ¶ added in v0.11.0
HasAutoIncrement returns true if the schema has an auto increment column.
func (Schema) IndexOf ¶
IndexOf returns the index of the given column in the schema or -1 if it's not present.
func (Schema) IndexOfColName ¶ added in v0.12.0
IndexOfColName returns the index of the given column in the schema or -1 if it's not present. Only safe for schemas corresponding to a single table, where the source of the column is irrelevant.
type SchemaTarget ¶ added in v0.12.0
type SchemaTarget interface { // WithTargetSchema returns a copy of this node with the target schema set WithTargetSchema(Schema) (Node, error) // TargetSchema returns the target schema for this node TargetSchema() Schema }
SchemaTarget is a node that has a target schema that can be set during analysis. This is necessary because some schema objects (things that involve expressions, column references, etc.) can only be reified during analysis. The target schema is the schema of a table under a DDL operation, not the schema of rows returned by this node.
type SearchableJSONValue ¶ added in v0.9.0
type SearchableJSONValue interface { JSONValue // Contains is value-specific implementation of JSON_Contains() Contains(ctx *Context, candidate JSONValue) (val interface{}, err error) // Extract is value-specific implementation of JSON_Extract() Extract(ctx *Context, path string) (val JSONValue, err error) // Keys is value-specific implementation of JSON_Keys() Keys(ctx *Context, path string) (val JSONValue, err error) // Overlaps is value-specific implementation of JSON_Overlaps() Overlaps(ctx *Context, val SearchableJSONValue) (ok bool, err error) // Search is value-specific implementation of JSON_Search() Search(ctx *Context) (path string, err error) }
SearchableJSONValue is JSONValue supporting in-place access operations. The query engine can utilize these optimized access methods improve performance by minimizing the need to unmarshall a JSONValue into a JSONDocument.
type Services ¶ added in v0.12.0
type Services struct { KillConnection func(connID uint32) error LoadInfile func(filename string) (io.ReadCloser, error) }
Services are handles to optional or plugin functionality that can be used by the SQL implementation in certain situations. An integrator can set methods on Services for a given *Context and different parts of go-mysql-server will inspect it in order to fulfill their implementations. Currently, the KillConnection service is available. Set these with |WithServices|; the implementation will access them through the corresponding methods on *Context, such as |KillConnection|.
type Session ¶
type Session interface { // Address of the server. Address() string // Client returns the user of the session. Client() Client // SetClient returns a new session with the given client. SetClient(Client) // SetSessionVariable sets the given system variable to the value given for this session. SetSessionVariable(ctx *Context, sysVarName string, value interface{}) error // SetUserVariable sets the given user variable to the value given for this session, or creates it for this session. SetUserVariable(ctx *Context, varName string, value interface{}) error // GetSessionVariable returns this session's value of the system variable with the given name. GetSessionVariable(ctx *Context, sysVarName string) (interface{}, error) // GetUserVariable returns this session's value of the user variable with the given name, along with its most // appropriate type. GetUserVariable(ctx *Context, varName string) (Type, interface{}, error) // GetAllSessionVariables returns a copy of all session variable values. GetAllSessionVariables() map[string]interface{} // GetCurrentDatabase gets the current database for this session GetCurrentDatabase() string // SetCurrentDatabase sets the current database for this session SetCurrentDatabase(dbName string) // CommitTransaction commits the current transaction for this session for the current database CommitTransaction(ctx *Context, dbName string, transaction Transaction) error // ID returns the unique ID of the connection. ID() uint32 // Warn stores the warning in the session. Warn(warn *Warning) // Warnings returns a copy of session warnings (from the most recent). Warnings() []*Warning // ClearWarnings cleans up session warnings. ClearWarnings() // WarningCount returns a number of session warnings WarningCount() uint16 // AddLock adds a lock to the set of locks owned by this user which will need to be released if this session terminates AddLock(lockName string) error // DelLock removes a lock from the set of locks owned by this user DelLock(lockName string) error // IterLocks iterates through all locks owned by this user IterLocks(cb func(name string) error) error // SetLastQueryInfo sets session-level query info for the key given, applying to the query just executed. SetLastQueryInfo(key string, value int64) // GetLastQueryInfo returns the session-level query info for the key given, for the query most recently executed. GetLastQueryInfo(key string) int64 // GetTransaction returns the active transaction, if any GetTransaction() Transaction // SetTransaction sets the session's transaction SetTransaction(tx Transaction) // SetIgnoreAutoCommit instructs the session to ignore the value of the @@autocommit variable, or consider it again SetIgnoreAutoCommit(ignore bool) // GetIgnoreAutoCommit returns whether this session should ignore the @@autocommit variable GetIgnoreAutoCommit() bool // GetLogger returns the logger for this session, useful if clients want to log messages with the same format / output // as the running server. Clients should instantiate their own global logger with formatting options, and session // implementations should return the logger to be used for the running server. GetLogger() *logrus.Entry // SetLogger sets the logger to use for this session, which will always be an extension of the one returned by // GetLogger, extended with session information SetLogger(*logrus.Entry) // GetIndexRegistry returns the index registry for this session GetIndexRegistry() *IndexRegistry // GetViewRegistry returns the view registry for this session GetViewRegistry() *ViewRegistry // SetIndexRegistry sets the index registry for this session. Integrators should set an index registry in the event // they are using an index driver. SetIndexRegistry(*IndexRegistry) // SetViewRegistry sets the view registry for this session. Integrators should set a view registry if their database // doesn't implement ViewDatabase and they want views created to persist across sessions. SetViewRegistry(*ViewRegistry) // WithConnectionId sets this sessions unique ID SetConnectionId(connId uint32) }
Session holds the session data.
type SetType ¶
type SetType interface { Type CharacterSet() CharacterSet Collation() Collation // NumberOfElements returns the number of elements in this set. NumberOfElements() uint16 // BitsToString takes a previously-converted value and returns it as a string. BitsToString(bits uint64) (string, error) // Values returns all of the set's values in ascending order according to their corresponding bit value. Values() []string }
SetType represents the SET type. https://dev.mysql.com/doc/refman/8.0/en/set.html The type of the returned value is uint64.
func CreateSetType ¶
CreateSetType creates a SetType.
func MustCreateSetType ¶
MustCreateSetType is the same as CreateSetType except it panics on errors.
type SortField ¶ added in v0.9.0
type SortField struct { // Column to order by. Column Expression // Column Expression2 to order by. This is always the same value as Column, but avoids a type cast Column2 Expression2 // Order type. Order SortOrder // NullOrdering defining how nulls will be ordered. NullOrdering NullOrdering }
SortField is a field by which a query will be sorted.
func (SortField) DebugString ¶ added in v0.9.0
type SortFields ¶ added in v0.9.0
type SortFields []SortField
func (SortFields) FromExpressions ¶ added in v0.9.0
func (sf SortFields) FromExpressions(exprs ...Expression) SortFields
func (SortFields) ToExpressions ¶ added in v0.9.0
func (sf SortFields) ToExpressions() []Expression
type SortOrder ¶ added in v0.9.0
type SortOrder byte
SortOrder represents the order of the sort (ascending or descending).
type SpatialColumnType ¶ added in v0.12.0
type SpatialColumnType interface { // GetSpatialTypeSRID returns the SRID value for spatial types. GetSpatialTypeSRID() (uint32, bool) // SetSRID sets SRID value for spatial types. SetSRID(uint32) Type // MatchSRID returns nil if column type SRID matches given value SRID otherwise returns error. MatchSRID(interface{}) error }
SpatialColumnType is a node that contains a reference to all spatial types.
type StatisticsTable ¶
type StatisticsTable interface { Table // NumRows returns the unfiltered count of rows contained in the table NumRows(*Context) (uint64, error) // DataLength returns the length of the data file (varies by engine). DataLength(ctx *Context) (uint64, error) }
StatisticsTable is a table that can provide information about its number of rows and other facts to improve query planning performance.
type StoredProcedureDatabase ¶ added in v0.9.0
type StoredProcedureDatabase interface { Database // GetStoredProcedures returns all StoredProcedureDetails for the database. GetStoredProcedures(ctx *Context) ([]StoredProcedureDetails, error) // SaveStoredProcedure stores the given StoredProcedureDetails to the database. The integrator should verify that // the name of the new stored procedure is unique amongst existing stored procedures. SaveStoredProcedure(ctx *Context, spd StoredProcedureDetails) error // DropStoredProcedure removes the StoredProcedureDetails with the matching name from the database. DropStoredProcedure(ctx *Context, name string) error }
StoredProcedureDatabase is a database that supports the creation and execution of stored procedures. The engine will handle all parsing and execution logic for stored procedures. Integrators only need to store and retrieve StoredProcedureDetails, while verifying that all stored procedures have a unique name without regard to case-sensitivity.
type StoredProcedureDetails ¶ added in v0.9.0
type StoredProcedureDetails struct { Name string // The name of this stored procedure. Names must be unique within a database. CreateStatement string // The CREATE statement for this stored procedure. CreatedAt time.Time // The time that the stored procedure was created. ModifiedAt time.Time // The time of the last modification to the stored procedure. }
StoredProcedureDetails are the details of the stored procedure. Integrators only need to store and retrieve the given details for a stored procedure, as the engine handles all parsing and processing.
type StringType ¶
type StringType interface { Type CharacterSet() CharacterSet Collation() Collation MaxCharacterLength() int64 MaxByteLength() int64 }
StringType represents all string types, including VARCHAR and BLOB. https://dev.mysql.com/doc/refman/8.0/en/char.html https://dev.mysql.com/doc/refman/8.0/en/binary-varbinary.html https://dev.mysql.com/doc/refman/8.0/en/blob.html The type of the returned value is string.
func CreateBinary ¶
func CreateBinary(baseType query.Type, lengthHint int64) (StringType, error)
CreateBinary creates a StringType with a binary collation and character set of the given size.
func CreateLongText ¶
func CreateLongText(collation Collation) StringType
CreateLongText creates a LONGTEXT with the given collation.
func CreateMediumText ¶
func CreateMediumText(collation Collation) StringType
CreateMediumText creates a MEDIUMTEXT with the given collation.
func CreateString ¶
CreateString creates a StringType.
func CreateStringWithDefaults ¶
func CreateStringWithDefaults(baseType query.Type, length int64) (StringType, error)
CreateStringWithDefaults creates a StringType with the default character set and collation of the given size.
func CreateText ¶
func CreateText(collation Collation) StringType
CreateText creates a TEXT with the given collation.
func CreateTinyText ¶
func CreateTinyText(collation Collation) StringType
CreateTinyText creates a TINYTEXT with the given collation.
func MustCreateBinary ¶
func MustCreateBinary(baseType query.Type, lengthHint int64) StringType
MustCreateBinary is the same as CreateBinary except it panics on errors.
func MustCreateString ¶
func MustCreateString(baseType query.Type, length int64, collation Collation) StringType
MustCreateString is the same as CreateString except it panics on errors.
func MustCreateStringWithDefaults ¶
func MustCreateStringWithDefaults(baseType query.Type, length int64) StringType
MustCreateStringWithDefaults creates a StringType with the default CharacterSet and Collation.
type SystemVariable ¶ added in v0.10.0
type SystemVariable struct { // Name is the name of the system variable. Name string // Scope defines the scope of the system variable, which is either Global, Session, or Both. Scope SystemVariableScope // Dynamic defines whether the variable may be written to during runtime. Variables with this set to `false` will // return an error if a user attempts to set a value. Dynamic bool // SetVarHintApplies defines if the variable may be set for a single query using SET_VAR(). // https://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html#optimizer-hints-set-var SetVarHintApplies bool // Type defines the type of the system variable. This may be a special type not accessible to standard MySQL operations. Type Type // Default defines the default value of the system variable. Default interface{} }
SystemVariable represents a system variable.
type SystemVariableScope ¶ added in v0.10.0
type SystemVariableScope byte
SystemVariableScope represents the scope of a system variable.
const ( // SystemVariableScope_Global is set when the system variable exists only in the global context. SystemVariableScope_Global SystemVariableScope = iota // SystemVariableScope_Session is set when the system variable exists only in the session context. SystemVariableScope_Session // SystemVariableScope_Both is set when the system variable exists in both the global and session contexts. SystemVariableScope_Both // SystemVariableScope_Persist is set when the system variable is global and persisted. SystemVariableScope_Persist // SystemVariableScope_PersistOnly is set when the system variable is persisted outside of server context. SystemVariableScope_PersistOnly // SystemVariableScope_ResetPersist is used to remove a persisted variable SystemVariableScope_ResetPersist )
func (SystemVariableScope) String ¶ added in v0.10.0
func (s SystemVariableScope) String() string
String returns the scope as an uppercase string.
type SystemVariableType ¶ added in v0.10.0
type SystemVariableType interface { Type // EncodeValue returns the given value as a string for storage. EncodeValue(interface{}) (string, error) // DecodeValue returns the original value given to EncodeValue from the given string. This is different from `Convert`, // as the encoded value may technically be an "illegal" value according to the type rules. DecodeValue(string) (interface{}, error) }
SystemVariableType represents a SQL type specifically (and only) used in system variables. Assigning any non-system variables a SystemVariableType will cause errors.
func NewSystemBoolType ¶ added in v0.10.0
func NewSystemBoolType(varName string) SystemVariableType
NewSystemBoolType returns a new systemBoolType.
func NewSystemDoubleType ¶ added in v0.10.0
func NewSystemDoubleType(varName string, lowerbound, upperbound float64) SystemVariableType
NewSystemDoubleType returns a new systemDoubleType.
func NewSystemEnumType ¶ added in v0.10.0
func NewSystemEnumType(varName string, values ...string) SystemVariableType
NewSystemEnumType returns a new systemEnumType.
func NewSystemIntType ¶ added in v0.10.0
func NewSystemIntType(varName string, lowerbound, upperbound int64, negativeOne bool) SystemVariableType
NewSystemIntType returns a new systemIntType.
func NewSystemSetType ¶ added in v0.10.0
func NewSystemSetType(varName string, values ...string) SystemVariableType
NewSystemSetType returns a new systemSetType.
func NewSystemStringType ¶ added in v0.10.0
func NewSystemStringType(varName string) SystemVariableType
NewSystemStringType returns a new systemStringType.
func NewSystemUintType ¶ added in v0.10.0
func NewSystemUintType(varName string, lowerbound, upperbound uint64) SystemVariableType
NewSystemUintType returns a new systemUintType.
type Table ¶
type Table interface { Nameable String() string Schema() Schema Partitions(*Context) (PartitionIter, error) PartitionRows(*Context, Partition) (RowIter, error) }
Table represents the backend of a SQL table.
func GetTableInsensitive ¶
GetTableInsensitive implements a case insensitive map lookup for tables keyed off of the table name. Looks for exact matches first. If no exact matches are found then any table matching the name case insensitively should be returned. If there is more than one table that matches a case insensitive comparison the resolution strategy is not defined.
type TableCopierDatabase ¶ added in v0.11.0
type TableCopierDatabase interface { // CopyTableData copies the sourceTable data to the destinationTable and returns the number of rows copied. CopyTableData(ctx *Context, sourceTable string, destinationTable string) (uint64, error) }
TableCopierDatabase is a database that can copy a source table's data (without preserving indexed, fks, etc.) into another destination table.
type TableCreator ¶
type TableCreator interface { // CreateTable creates the table with the given name and schema. If a table with that name already exists, must return // sql.ErrTableAlreadyExists. CreateTable(ctx *Context, name string, schema PrimaryKeySchema) error }
TableCreator should be implemented by databases that can create new tables.
type TableDropper ¶
TableDropper should be implemented by databases that can drop tables.
type TableEditor ¶ added in v0.10.0
type TableEditor interface { // StatementBegin is called before the first operation of a statement. Integrators should mark the state of the data // in some way that it may be returned to in the case of an error. StatementBegin(ctx *Context) // DiscardChanges is called if a statement encounters an error, and all current changes since the statement beginning // should be discarded. DiscardChanges(ctx *Context, errorEncountered error) error // StatementComplete is called after the last operation of the statement, indicating that it has successfully completed. // The mark set in StatementBegin may be removed, and a new one should be created on the next StatementBegin. StatementComplete(ctx *Context) error }
TableEditor is the base interface for sub interfaces that can update rows in a table during an INSERT, REPLACE, UPDATE, or DELETE statement.
type TableFunction ¶ added in v0.12.0
type TableFunction interface { Node Expressioner Databaser // NewInstance returns a new instance of the table function NewInstance(ctx *Context, db Database, expressions []Expression) (Node, error) // FunctionName returns the name of this table function FunctionName() string }
TableFunction is a node that is generated by a function
type TableFunctionProvider ¶ added in v0.12.0
type TableFunctionProvider interface { // TableFunction returns the table function with the name provided, case-insensitive TableFunction(ctx *Context, name string) (TableFunction, error) }
TableFunctionProvider is an extension of DatabaseProvider that allows custom table functions to be provided
type TableProgress ¶
type TableProgress struct { Progress PartitionsProgress map[string]PartitionProgress }
TableProgress keeps track of a table progress, and for each of its partitions
func NewTableProgress ¶
func NewTableProgress(name string, total int64) TableProgress
func (TableProgress) String ¶
func (p TableProgress) String() string
type TableRenamer ¶
type TableRenamer interface { // RenameTable renames a table from oldName to newName as given. If a table with newName already exists, must return // sql.ErrTableAlreadyExists. RenameTable(ctx *Context, oldName, newName string) error }
TableRenamer should be implemented by databases that can rename tables.
type TableRowIter ¶
type TableRowIter struct {
// contains filtered or unexported fields
}
TableRowIter is an iterator over the partitions in a table.
func NewTableRowIter ¶
func NewTableRowIter(ctx *Context, table Table, partitions PartitionIter) *TableRowIter
NewTableRowIter returns a new iterator over the rows in the partitions of the table given.
func (*TableRowIter) Close ¶
func (i *TableRowIter) Close(ctx *Context) error
type TableWrapper ¶
type TableWrapper interface { // Underlying returns the underlying table. Underlying() Table }
TableWrapper is a node that wraps the real table. This is needed because wrappers cannot implement some methods the table may implement.
type Tableable ¶
type Tableable interface { // Table returns the table name. Table() string }
Tableable is something that has a table.
type TemporaryTable ¶ added in v0.11.0
type TemporaryTable interface {
IsTemporary() bool
}
type TemporaryTableCreator ¶ added in v0.11.0
type TemporaryTableCreator interface { Database // CreateTemporaryTable creates the table with the given name and schema. If a temporary table with that name already exists, must // return sql.ErrTableAlreadyExists CreateTemporaryTable(ctx *Context, name string, schema PrimaryKeySchema) error }
TemporaryTableCreator is a database that can create temporary tables that persist only as long as the session. Note that temporary tables with the same name as persisted tables take precedence in most SQL operations.
type TemporaryTableDatabase ¶ added in v0.11.0
TemporaryTableDatabase is a database that can query the session (which manages the temporary table state) to retrieve the name of all temporary tables.
type TimeType ¶
type TimeType interface { Type // ConvertToTimespan returns a Timespan from the given interface. Follows the same conversion rules as // Convert(), in that this will process the value based on its base-10 visual representation (for example, Convert() // will interpret the value `1234` as 12 minutes and 34 seconds). Returns an error for nil values. ConvertToTimespan(v interface{}) (Timespan, error) // ConvertToTimeDuration returns a time.Duration from the given interface. Follows the same conversion rules as // Convert(), in that this will process the value based on its base-10 visual representation (for example, Convert() // will interpret the value `1234` as 12 minutes and 34 seconds). Returns an error for nil values. ConvertToTimeDuration(v interface{}) (time.Duration, error) // MicrosecondsToTimespan returns a Timespan from the given number of microseconds. This differs from Convert(), as // that will process the value based on its base-10 visual representation (for example, Convert() will interpret // the value `1234` as 12 minutes and 34 seconds). This clamps the given microseconds to the allowed range. MicrosecondsToTimespan(v int64) Timespan }
TimeType represents the TIME type. https://dev.mysql.com/doc/refman/8.0/en/time.html TIME is implemented as TIME(6). The type of the returned value is Timespan. TODO: implement parameters on the TIME type
var ( Time TimeType = timespanType{} ErrConvertingToTimeType = errors.NewKind("value %v is not a valid Time") )
type Timespan ¶ added in v0.12.0
type Timespan int64
Timespan is the value type returned by TimeType.Convert().
func (Timespan) Add ¶ added in v0.12.0
Add returns a new Timespan that is the sum of the calling Timespan and given Timespan. The resulting Timespan is clamped to the allowed range.
func (Timespan) AsMicroseconds ¶ added in v0.12.0
AsMicroseconds returns the Timespan in microseconds.
func (Timespan) AsTimeDuration ¶ added in v0.12.0
AsTimeDuration returns the Timespan as a time.Duration.
func (Timespan) Compare ¶ added in v0.12.0
Compare returns an integer comparing two values. The result will be 0 if t==other, -1 if t < other, and +1 if t > other.
func (Timespan) Equals ¶ added in v0.12.0
Equals returns whether the calling Timespan and given Timespan are equivalent.
type Transaction ¶ added in v0.10.0
Transaction is an opaque type implemented by an integrator to record necessary information at the start of a transaction. Active transactions will be recorded in the session.
type TransactionCharacteristic ¶ added in v0.11.0
type TransactionCharacteristic int
const ( ReadWrite TransactionCharacteristic = iota ReadOnly )
type TransactionDatabase ¶ added in v0.10.0
type TransactionDatabase interface { Database // StartTransaction starts a new transaction and returns it StartTransaction(ctx *Context, tCharacteristic TransactionCharacteristic) (Transaction, error) // CommitTransaction commits the transaction given CommitTransaction(ctx *Context, tx Transaction) error // Rollback restores the database to the state recorded in the transaction given Rollback(ctx *Context, transaction Transaction) error // CreateSavepoint records a savepoint for the transaction given with the name given. If the name is already in use // for this transaction, the new savepoint replaces the old one. CreateSavepoint(ctx *Context, transaction Transaction, name string) error // RollbackToSavepoint restores the database to the state named by the savepoint RollbackToSavepoint(ctx *Context, transaction Transaction, name string) error // ReleaseSavepoint removes the savepoint named from the transaction given ReleaseSavepoint(ctx *Context, transaction Transaction, name string) error }
TransactionDatabase is a Database that can BEGIN, ROLLBACK and COMMIT transactions, as well as create SAVEPOINTS and restore to them.
type TreePrinter ¶
type TreePrinter struct {
// contains filtered or unexported fields
}
TreePrinter is a printer for tree nodes.
func (*TreePrinter) String ¶
func (p *TreePrinter) String() string
String returns the output of the printed tree.
func (*TreePrinter) WriteChildren ¶
func (p *TreePrinter) WriteChildren(children ...string) error
WriteChildren writes a children of the tree.
func (*TreePrinter) WriteNode ¶
func (p *TreePrinter) WriteNode(format string, args ...interface{}) error
WriteNode writes the main node.
type TriggerDatabase ¶
type TriggerDatabase interface { Database // GetTriggers returns all trigger definitions for the database GetTriggers(ctx *Context) ([]TriggerDefinition, error) // CreateTrigger is called when an integrator is asked to create a trigger. The create trigger statement string is // provided to store, along with the name of the trigger. CreateTrigger(ctx *Context, definition TriggerDefinition) error // DropTrigger is called when a trigger should no longer be stored. The name has already been validated. // Returns ErrTriggerDoesNotExist if the trigger was not found. DropTrigger(ctx *Context, name string) error }
TriggerDatabase is a Database that supports the creation and execution of triggers. The engine handles all parsing and execution logic for triggers. Integrators are not expected to parse or understand the trigger definitions, but must store and return them when asked.
type TriggerDefinition ¶
type TriggerDefinition struct { Name string // The name of this trigger. Trigger names in a database are unique. CreateStatement string // The text of the statement to create this trigger. CreatedAt time.Time // The time that the trigger was created. }
TriggerDefinition defines a trigger. Integrators are not expected to parse or understand the trigger definitions, but must store and return them when asked.
type TruncateableTable ¶
type TruncateableTable interface { Table // Truncate removes all rows from the table. If the table also implements DeletableTable and it is determined that // truncate would be equivalent to a DELETE which spans the entire table, then this function will be called instead. // Returns the number of rows that were removed. Truncate(*Context) (int, error) }
TruncateableTable is a table that can process the deletion of all rows.
type TupleType ¶ added in v0.12.0
type TupleType []Type
func (TupleType) MustConvert ¶ added in v0.12.0
func (t TupleType) MustConvert(v interface{}) interface{}
type Type ¶
type Type interface { // Compare returns an integer comparing two values. // The result will be 0 if a==b, -1 if a < b, and +1 if a > b. Compare(interface{}, interface{}) (int, error) // Convert a value of a compatible type to a most accurate type. Convert(interface{}) (interface{}, error) // Equals returns whether the given type is equivalent to the calling type. All parameters are included in the // comparison, so ENUM("a", "b") is not equivalent to ENUM("a", "b", "c"). Equals(otherType Type) bool // Promote will promote the current type to the largest representing type of the same kind, such as Int8 to Int64. Promote() Type // SQL returns the sqltypes.Value for the given value. // Implementations can optionally use |dest| to append // serialized data, but should not mutate existing data. SQL(dest []byte, v interface{}) (sqltypes.Value, error) // Type returns the query.Type for the given Type. Type() query.Type // ValueType returns the Go type of the value returned by Convert(). ValueType() reflect.Type // Zero returns the golang zero value for this type Zero() interface{} fmt.Stringer }
Type represents a SQL type.
func ApproximateTypeFromValue ¶ added in v0.10.0
func ApproximateTypeFromValue(val interface{}) Type
ApproximateTypeFromValue returns the closest matching type to the given value. For example, an int16 will return SMALLINT.
func ColumnTypeToType ¶
func ColumnTypeToType(ct *sqlparser.ColumnType) (Type, error)
ColumnTypeToType gets the column type using the column definition.
func CreateArray ¶
CreateArray returns a new CreateArray type of the given underlying type.
func CreateTuple ¶
CreateTuple returns a new tuple type with the given element types.
func GetColExprTypes ¶ added in v0.12.0
GetColExprTypes returns a list of RangeColumnExpr type fields, defaulting to Null types if all columns expressions are Null.
func NewDeferredType ¶ added in v0.12.0
func UnderlyingType ¶
UnderlyingType returns the underlying type of an array if the type is an array, or the type itself in any other case.
type Type2 ¶ added in v0.12.0
type Type2 interface { Type // Compare2 returns an integer comparing two Values. Compare2(Value, Value) (int, error) // Convert2 converts a value of a compatible type. Convert2(Value) (Value, error) // Zero2 returns the zero Value for this type. Zero2() Value // SQL2 returns the sqltypes.Value for the given value SQL2(Value) (sqltypes.Value, error) }
type TypedValue ¶
type TypedValue struct { Typ Type Value interface{} }
TypedValue is a value along with its type.
type UniqueKeyError ¶ added in v0.10.0
func (UniqueKeyError) Error ¶ added in v0.10.0
func (ue UniqueKeyError) Error() string
type UnresolvedColumnDefault ¶ added in v0.12.0
type UnresolvedColumnDefault struct {
// contains filtered or unexported fields
}
func (UnresolvedColumnDefault) Children ¶ added in v0.12.0
func (u UnresolvedColumnDefault) Children() []Expression
func (UnresolvedColumnDefault) Eval ¶ added in v0.12.0
func (u UnresolvedColumnDefault) Eval(ctx *Context, row Row) (interface{}, error)
func (UnresolvedColumnDefault) IsNullable ¶ added in v0.12.0
func (u UnresolvedColumnDefault) IsNullable() bool
func (UnresolvedColumnDefault) Resolved ¶ added in v0.12.0
func (u UnresolvedColumnDefault) Resolved() bool
func (UnresolvedColumnDefault) String ¶ added in v0.12.0
func (u UnresolvedColumnDefault) String() string
func (UnresolvedColumnDefault) Type ¶ added in v0.12.0
func (u UnresolvedColumnDefault) Type() Type
func (UnresolvedColumnDefault) WithChildren ¶ added in v0.12.0
func (u UnresolvedColumnDefault) WithChildren(children ...Expression) (Expression, error)
type UnresolvedDatabase ¶
type UnresolvedDatabase string
UnresolvedDatabase is a database which has not been resolved yet.
func (UnresolvedDatabase) GetTableInsensitive ¶
func (UnresolvedDatabase) GetTableNames ¶
func (UnresolvedDatabase) GetTableNames(ctx *Context) ([]string, error)
func (UnresolvedDatabase) Name ¶
func (d UnresolvedDatabase) Name() string
Name returns the database name.
func (UnresolvedDatabase) Tables ¶
func (UnresolvedDatabase) Tables() map[string]Table
Tables returns the tables in the database.
type UnresolvedTable ¶ added in v0.12.0
type UnresolvedTable interface { Nameable // Database returns the database name Database() string // WithAsOf returns a copy of this versioned table with its AsOf // field set to the given value. Analogous to WithChildren. WithAsOf(asOf Expression) (Node, error) //AsOf returns this table's asof expression. AsOf() Expression }
UnresolvedTable is a Table that is either unresolved or deferred for until an asOf resolution
type UnsupportedFunctionStub ¶ added in v0.12.0
type UnsupportedFunctionStub interface {
IsUnsupported() bool
}
UnsupportedFunctionStub is a marker interface for function stubs that are unsupported
type UpdatableTable ¶
type UpdatableTable interface { Table // Updater returns a RowUpdater for this table. The RowUpdater will have Update called once for each row to be // updated, followed by a call to Close() when all rows have been processed. Updater(ctx *Context) RowUpdater }
UpdatableTable is a table that can process updates of existing rows via update statements.
type Value ¶ added in v0.12.0
type Value struct { Typ querypb.Type Val ValueBytes }
Value is a logical index into a Row2. For efficiency reasons, use sparingly.
func ConvertToValue ¶ added in v0.12.0
ConvertToValue converts the interface to a sql value.
type ValueBytes ¶ added in v0.12.0
type ValueBytes []byte
type VersionedDatabase ¶
type VersionedDatabase interface { Database // GetTableInsensitiveAsOf retrieves a table by its case-insensitive name with the same semantics as // Database.GetTableInsensitive, but at a particular revision of the database. Implementors must choose which types // of expressions to accept as revision names. GetTableInsensitiveAsOf(ctx *Context, tblName string, asOf interface{}) (Table, bool, error) // GetTableNamesAsOf returns the table names of every table in the database as of the revision given. Implementors // must choose which types of expressions to accept as revision names. GetTableNamesAsOf(ctx *Context, asOf interface{}) ([]string, error) }
VersionedDatabase is a Database that can return tables as they existed at different points in time. The engine supports queries on historical table data via the AS OF construct introduced in SQL 2011.
type View ¶
type View struct {
// contains filtered or unexported fields
}
View is the parsed version of ViewDefinition Not meant to be used externally
func (*View) Definition ¶
Definition returns the definition of the view.
func (*View) TextDefinition ¶
TextDefinition returns the text definition of the view as originally defined.
type ViewDatabase ¶ added in v0.11.0
type ViewDatabase interface { // CreateView persists the definition a view with the name and select statement given. If a view with that name // already exists, should return ErrExistingView CreateView(ctx *Context, name string, selectStatement string) error // DropView deletes the view named from persistent storage. If the view doesn't exist, should return // ErrViewDoesNotExist DropView(ctx *Context, name string) error // GetView returns the textual definition of the view with the name given, or false if it doesn't exist. GetView(ctx *Context, viewName string) (string, bool, error) // AllViews returns the definitions of all views in the database AllViews(ctx *Context) ([]ViewDefinition, error) }
ViewDatabase is implemented by databases that persist view definitions
type ViewDefinition ¶ added in v0.11.0
ViewDefinition is the named textual definition of a view
type ViewKey ¶
type ViewKey struct {
// contains filtered or unexported fields
}
ViewKey is the key used to store view definitions
func NewViewKey ¶
NewViewKey creates a ViewKey ensuring both names are lowercase.
type ViewRegistry ¶
type ViewRegistry struct {
// contains filtered or unexported fields
}
ViewRegistry stores session-local views for databases that don't implement view storage. Each session gets a new view registry by default. Integrators that want views to persist across sessions should either implement sql.ViewDatabase, or construct their sessions to reuse the same ViewRegistry for each session.
func NewViewRegistry ¶
func NewViewRegistry() *ViewRegistry
NewViewRegistry creates an empty ViewRegistry.
func (*ViewRegistry) Delete ¶
func (r *ViewRegistry) Delete(databaseName, viewName string) error
Delete deletes the view specified by the pair {databaseName, viewName}, returning an error if it does not exist.
func (*ViewRegistry) Exists ¶
func (r *ViewRegistry) Exists(databaseName, viewName string) bool
Exists returns whether the specified key is already registered
func (*ViewRegistry) Register ¶
func (r *ViewRegistry) Register(database string, view *View) error
Register adds the view specified by the pair {database, view.Name()}, returning an error if there is already an element with that key.
func (*ViewRegistry) View ¶
func (r *ViewRegistry) View(databaseName, viewName string) (*View, error)
View returns a pointer to the view specified by the pair {databaseName, viewName}, returning an error if it does not exist.
func (*ViewRegistry) ViewsInDatabase ¶
func (r *ViewRegistry) ViewsInDatabase(databaseName string) (views []*View)
ViewsInDatabase returns an array of all the views registered under the specified database.
type Visitor ¶
type Visitor interface { // Visit method is invoked for each expr encountered by Walk. // If the result Visitor is not nil, 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 Expression) Visitor }
Visitor visits expressions in an expression tree.
type WindowAdaptableExpression ¶ added in v0.12.0
type WindowAdaptableExpression interface { Expression // NewEvalable constructs an executable aggregation WindowFunction NewWindowFunction() (WindowFunction, error) }
WindowAdaptableExpression is an Expression that can be executed as a window aggregation
type WindowAggregation ¶ added in v0.9.0
type WindowAggregation interface { WindowAdaptableExpression // Window returns this expression's window Window() *WindowDefinition // WithWindow returns a version of this window aggregation with the window given WithWindow(window *WindowDefinition) (WindowAggregation, error) }
WindowAggregation implements a window aggregation expression. A WindowAggregation is similar to an Aggregation, except that it returns a result row for every input row, as opposed to as single for the entire result set. A WindowAggregation is expected to track its input rows in the order received, and to return the value for the row index given on demand.
type WindowBuffer ¶ added in v0.12.0
type WindowBuffer []Row
WindowBuffer is a type alias for a window materialization
type WindowDefinition ¶ added in v0.12.0
type WindowDefinition struct { PartitionBy []Expression OrderBy SortFields Frame WindowFrame Ref string Name string // contains filtered or unexported fields }
A WindowDefinition specifies the window parameters of a window function
func NewWindowDefinition ¶ added in v0.12.0
func NewWindowDefinition(partitionBy []Expression, orderBy SortFields, frame WindowFrame, ref, name string) *WindowDefinition
func (*WindowDefinition) DebugString ¶ added in v0.12.0
func (w *WindowDefinition) DebugString() string
func (*WindowDefinition) FromExpressions ¶ added in v0.12.0
func (w *WindowDefinition) FromExpressions(children []Expression) (*WindowDefinition, error)
FromExpressions returns copy of this window with the given expressions taken to stand in for the partition and order by fields. An error is returned if the lengths or types of these expressions are incompatible with this window.
func (*WindowDefinition) PartitionId ¶ added in v0.12.0
func (w *WindowDefinition) PartitionId() (uint64, error)
func (*WindowDefinition) String ¶ added in v0.12.0
func (w *WindowDefinition) String() string
func (*WindowDefinition) ToExpressions ¶ added in v0.12.0
func (w *WindowDefinition) ToExpressions() []Expression
ToExpressions converts the PartitionBy and OrderBy expressions to a single slice of expressions suitable for manipulation by analyzer rules.
type WindowFrame ¶ added in v0.12.0
type WindowFrame interface { fmt.Stringer // NewFramer constructs an executable WindowFramer NewFramer(*WindowDefinition) (WindowFramer, error) // UnboundedFollowing returns whether a frame end is unbounded UnboundedFollowing() bool // UnboundedPreceding returns whether a frame start is unbounded UnboundedPreceding() bool // StartCurrentRow returns whether a frame start is CURRENT ROW StartCurrentRow() bool // EndCurrentRow returns whether a frame end is CURRENT ROW EndCurrentRow() bool // StartNFollowing returns a frame's start preceding Expression or nil StartNPreceding() Expression // StartNFollowing returns a frame's start following Expression or nil StartNFollowing() Expression // EndNPreceding returns whether a frame end preceding Expression or nil EndNPreceding() Expression // EndNPreceding returns whether a frame end following Expression or nil EndNFollowing() Expression }
WindowFrame describe input bounds for an aggregation function execution. A frame will only have two non-null fields for the start and end bounds. A WindowFrame plan node is associated with an exec WindowFramer.
type WindowFramer ¶ added in v0.12.0
type WindowFramer interface { // NewFramer is a prototype constructor that create a new Framer with pass-through // parent arguments NewFramer(WindowInterval) (WindowFramer, error) // Next returns the next WindowInterval frame, or an io.EOF error after the last row Next(*Context, WindowBuffer) (WindowInterval, error) // FirstIdx returns the current frame start index FirstIdx() int // LastIdx returns the last valid index in the current frame LastIdx() int // Interval returns the current frame as a WindowInterval Interval() (WindowInterval, error) }
WindowFramer is responsible for tracking window frame indices for partition rows. WindowFramer is aware of the framing strategy (offsets, ranges, etc), and is responsible for returning a WindowInterval for each partition row.
type WindowFunction ¶ added in v0.12.0
type WindowFunction interface { Disposable // WithWindow passes fields from the parent WindowDefinition, deferring partial construction of a WindowFunction WithWindow(w *WindowDefinition) (WindowFunction, error) // StartPartition discards any previous state and initializes the aggregation for a new partition StartPartition(*Context, WindowInterval, WindowBuffer) error // DefaultFramer returns a new instance of the default WindowFramer for a particular aggregation DefaultFramer() WindowFramer // NewSlidingFrameInterval is updates the function's internal aggregation state for the next // Compute call using three WindowInterval: added, dropped, and current. //TODO: implement sliding window interface in aggregation functions and windowBlockIter //NewSlidingFrameInterval(added, dropped WindowInterval) // Compute returns an aggregation result for a given interval and buffer Compute(*Context, WindowInterval, WindowBuffer) interface{} }
WindowFunction performs aggregations on buffer intervals, optionally maintaining internal state for performance optimizations
type WindowInterval ¶ added in v0.12.0
type WindowInterval struct {
Start, End int
}
WindowInterval is a WindowBuffer index range, where [Start] is inclusive, and [End] is exclusive
type WrappedInsertError ¶ added in v0.12.0
func NewWrappedInsertError ¶ added in v0.12.0
func NewWrappedInsertError(r Row, err error) WrappedInsertError
func (WrappedInsertError) Error ¶ added in v0.12.0
func (w WrappedInsertError) Error() string
type YearType ¶
type YearType interface { Type }
YearType represents the YEAR type. https://dev.mysql.com/doc/refman/8.0/en/year.html The type of the returned value is int16.
var ( Year YearType = yearType{} ErrConvertingToYear = errors.NewKind("value %v is not a valid Year") )
Source Files
¶
- arraytype.go
- background_threads.go
- bit.go
- cache.go
- catalog.go
- charsetcollation.go
- column.go
- columndefault.go
- constraints.go
- convert_value.go
- core.go
- datetimetype.go
- decimal.go
- deferredtype.go
- dual.go
- engines.go
- enumtype.go
- errors.go
- functions.go
- generator.go
- geometry.go
- index.go
- index_builder.go
- index_driver.go
- index_registry.go
- json.go
- json_value.go
- linestring.go
- lock_subsystem.go
- log.go
- memory.go
- nulltype.go
- numbertype.go
- ok_result.go
- partition.go
- point.go
- polygon.go
- privileges.go
- processlist.go
- provider.go
- range.go
- range_column_expr.go
- range_cut.go
- range_tree.go
- row.go
- row_frame.go
- schema.go
- session.go
- settype.go
- sort_field.go
- stringtype.go
- system_booltype.go
- system_doubletype.go
- system_enumtype.go
- system_inttype.go
- system_settype.go
- system_stringtype.go
- system_uinttype.go
- system_variables.go
- table_iter.go
- testutils.go
- timetype.go
- treeprinter.go
- tupletype.go
- type.go
- unresolved_database.go
- viewregistry.go
- walk.go
- window.go
- yeartype.go