memory

package
v0.18.1 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2024 License: Apache-2.0 Imports: 28 Imported by: 24

Documentation

Index

Constants

View Source
const CommentPreventingIndexBuilding = "__FOR TESTING: I cannot be built__"
View Source
const DualTableName = ""
View Source
const IndexDriverId = "MemoryIndexDriver"

Variables

View Source
var DualTableSchema = sql.NewPrimaryKeySchema(sql.Schema{
	{Name: "", Source: DualTableName, Type: types.LongText, Nullable: false},
})
View Source
var (
	ExternalStoredProcedures = []sql.ExternalStoredProcedureDetails{
		{
			Name:     "memory_inout_add",
			Schema:   nil,
			Function: inout_add,
		},
		{
			Name:     "memory_inout_set_unitialized",
			Schema:   nil,
			Function: inout_set_unitialized,
		},
		{
			Name:     "memory_overloaded_mult",
			Schema:   externalSPSchemaInt,
			Function: overloaded_mult1,
		},
		{
			Name:     "memory_overloaded_mult",
			Schema:   externalSPSchemaInt,
			Function: overloaded_mult2,
		},
		{
			Name:     "memory_overloaded_mult",
			Schema:   externalSPSchemaInt,
			Function: overloaded_mult3,
		},
		{
			Name:     "memory_overloaded_type_test",
			Schema:   externalSPSchemaInt,
			Function: overloaded_type_test1,
		},
		{
			Name:     "memory_overloaded_type_test",
			Schema:   externalSPSchemaText,
			Function: overloaded_type_test2,
		},
		{
			Name:     "memory_type_test3",
			Schema:   externalSPSchemaUint,
			Function: type_test3,
		},
		{
			Name:     "memory_inout_bool_byte",
			Schema:   nil,
			Function: inout_bool_byte,
		},
		{
			Name:     "memory_error_table_not_found",
			Schema:   nil,
			Function: error_table_not_found,
		},
		{
			Name:     "memory_variadic_add",
			Schema:   externalSPSchemaInt,
			Function: variadic_add,
		},
		{
			Name:     "memory_variadic_byte_slice",
			Schema:   externalSPSchemaText,
			Function: variadic_byte_slice,
		},
		{
			Name:     "memory_variadic_overload",
			Schema:   externalSPSchemaText,
			Function: variadic_overload1,
		},
		{
			Name:     "memory_variadic_overload",
			Schema:   externalSPSchemaText,
			Function: variadic_overload2,
		},
		{
			Name:     "memory_inout_add_readonly",
			Schema:   externalSPSchemaInt,
			Function: variadic_add,
			ReadOnly: true,
		},
		{
			Name:     "memory_inout_add_readwrite",
			Schema:   externalSPSchemaInt,
			Function: variadic_add,
			ReadOnly: false,
		},
		{
			Name:      "memory_admin_only",
			Schema:    externalSPSchemaInt,
			Function:  variadic_add,
			ReadOnly:  false,
			AdminOnly: true,
		},
	}
)

Functions

func EncodeIndexValue added in v0.9.0

func EncodeIndexValue(value *IndexValue) ([]byte, error)

func NewDBProviderWithOpts added in v0.15.0

func NewDBProviderWithOpts(opts ...ProviderOption) sql.MutableDatabaseProvider

NewDBProviderWithOpts creates a new DbProvider with the given options and no databases

func NewSessionBuilder added in v0.18.1

func NewSessionBuilder(pro *DbProvider) func(ctx context.Context, conn *mysql.Conn, addr string) (sql.Session, error)

NewSessionBuilder returns a session for the given in-memory database provider suitable to use in a test server This can't be defined as server.SessionBuilder because importing it would create a circular dependency, but it's the same signature.

Types

type BaseDatabase added in v0.11.0

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

BaseDatabase is an in-memory database that can't store views, only for testing the engine

func NewViewlessDatabase added in v0.11.0

func NewViewlessDatabase(name string) *BaseDatabase

NewViewlessDatabase creates a new database that doesn't persist views. Used only for testing. Use NewDatabase.

func (*BaseDatabase) AddTable added in v0.11.0

func (d *BaseDatabase) AddTable(name string, t MemTable)

AddTable adds a new table to the database.

func (*BaseDatabase) CreateFulltextTableNames added in v0.17.0

func (d *BaseDatabase) CreateFulltextTableNames(ctx *sql.Context, parentTableName string, parentIndexName string) (fulltext.IndexTableNames, error)

func (*BaseDatabase) CreateIndexedTable added in v0.15.0

func (d *BaseDatabase) CreateIndexedTable(ctx *sql.Context, name string, sch sql.PrimaryKeySchema, idxDef sql.IndexDef, collation sql.CollationID) error

CreateIndexedTable creates a table with the given name and schema

func (*BaseDatabase) CreateTable added in v0.11.0

func (d *BaseDatabase) CreateTable(ctx *sql.Context, name string, schema sql.PrimaryKeySchema, collation sql.CollationID, comment string) error

CreateTable creates a table with the given name and schema

func (*BaseDatabase) CreateTrigger added in v0.11.0

func (d *BaseDatabase) CreateTrigger(_ *sql.Context, definition sql.TriggerDefinition) error

func (*BaseDatabase) Database added in v0.18.0

func (d *BaseDatabase) Database() *BaseDatabase

func (*BaseDatabase) DropEvent added in v0.15.0

func (d *BaseDatabase) DropEvent(ctx *sql.Context, name string) error

DropEvent implements sql.EventDatabase

func (*BaseDatabase) DropStoredProcedure added in v0.11.0

func (d *BaseDatabase) DropStoredProcedure(ctx *sql.Context, name string) error

DropStoredProcedure implements sql.StoredProcedureDatabase

func (*BaseDatabase) DropTable added in v0.11.0

func (d *BaseDatabase) DropTable(ctx *sql.Context, name string) error

DropTable drops the table with the given name

func (*BaseDatabase) DropTrigger added in v0.11.0

func (d *BaseDatabase) DropTrigger(_ *sql.Context, name string) error

func (*BaseDatabase) EnablePrimaryKeyIndexes added in v0.11.0

func (d *BaseDatabase) EnablePrimaryKeyIndexes()

EnablePrimaryKeyIndexes causes every table created in this database to use an index on its primary partitionKeys

func (*BaseDatabase) GetCollation added in v0.14.0

func (d *BaseDatabase) GetCollation(ctx *sql.Context) sql.CollationID

GetCollation implements sql.CollatedDatabase.

func (*BaseDatabase) GetEvent added in v0.15.0

func (d *BaseDatabase) GetEvent(ctx *sql.Context, name string) (sql.EventDefinition, bool, error)

GetEvent implements sql.EventDatabase

func (*BaseDatabase) GetEvents added in v0.15.0

func (d *BaseDatabase) GetEvents(ctx *sql.Context) ([]sql.EventDefinition, interface{}, error)

GetEvents implements sql.EventDatabase

func (*BaseDatabase) GetForeignKeyCollection added in v0.12.0

func (d *BaseDatabase) GetForeignKeyCollection() *ForeignKeyCollection

func (*BaseDatabase) GetStoredProcedure added in v0.15.0

func (d *BaseDatabase) GetStoredProcedure(ctx *sql.Context, name string) (sql.StoredProcedureDetails, bool, error)

GetStoredProcedure implements sql.StoredProcedureDatabase

func (*BaseDatabase) GetStoredProcedures added in v0.11.0

func (d *BaseDatabase) GetStoredProcedures(ctx *sql.Context) ([]sql.StoredProcedureDetails, error)

GetStoredProcedures implements sql.StoredProcedureDatabase

func (*BaseDatabase) GetTableInsensitive added in v0.11.0

func (d *BaseDatabase) GetTableInsensitive(ctx *sql.Context, tblName string) (sql.Table, bool, error)

func (*BaseDatabase) GetTableNames added in v0.11.0

func (d *BaseDatabase) GetTableNames(ctx *sql.Context) ([]string, error)

func (*BaseDatabase) GetTriggers added in v0.11.0

func (d *BaseDatabase) GetTriggers(_ *sql.Context) ([]sql.TriggerDefinition, error)

func (*BaseDatabase) Name added in v0.11.0

func (d *BaseDatabase) Name() string

Name returns the database name.

func (*BaseDatabase) RenameTable added in v0.11.0

func (d *BaseDatabase) RenameTable(ctx *sql.Context, oldName, newName string) error

func (*BaseDatabase) SaveEvent added in v0.15.0

func (d *BaseDatabase) SaveEvent(_ *sql.Context, event sql.EventDefinition) (bool, error)

SaveEvent implements sql.EventDatabase

func (*BaseDatabase) SaveStoredProcedure added in v0.11.0

func (d *BaseDatabase) SaveStoredProcedure(ctx *sql.Context, spd sql.StoredProcedureDetails) error

SaveStoredProcedure implements sql.StoredProcedureDatabase

func (*BaseDatabase) SetCollation added in v0.14.0

func (d *BaseDatabase) SetCollation(ctx *sql.Context, collation sql.CollationID) error

SetCollation implements sql.CollatedDatabase.

func (*BaseDatabase) Tables added in v0.11.0

func (d *BaseDatabase) Tables() map[string]sql.Table

Tables returns all tables in the database.

func (*BaseDatabase) UpdateEvent added in v0.15.0

func (d *BaseDatabase) UpdateEvent(_ *sql.Context, originalName string, event sql.EventDefinition) (bool, error)

UpdateEvent implements sql.EventDatabase

func (*BaseDatabase) UpdateLastExecuted added in v0.18.0

func (d *BaseDatabase) UpdateLastExecuted(ctx *sql.Context, eventName string, lastExecuted time.Time) error

UpdateLastExecuted implements sql.EventDatabase

func (*BaseDatabase) ValidateSchema added in v0.18.0

func (d *BaseDatabase) ValidateSchema(schema sql.Schema) error

ValidateSchema implements sql.SchemaValidator

type Database

type Database struct {
	*BaseDatabase
	// contains filtered or unexported fields
}

Database is an in-memory database.

func NewDatabase

func NewDatabase(name string) *Database

NewDatabase creates a new database with the given name.

func (*Database) AllViews added in v0.11.0

func (d *Database) AllViews(ctx *sql.Context) ([]sql.ViewDefinition, error)

AllViews implements the interface sql.ViewDatabase.

func (*Database) CreateView added in v0.11.0

func (d *Database) CreateView(ctx *sql.Context, name string, selectStatement, createViewStmt string) error

CreateView implements the interface sql.ViewDatabase.

func (*Database) Database added in v0.18.0

func (d *Database) Database() *BaseDatabase

func (*Database) DropView added in v0.11.0

func (d *Database) DropView(ctx *sql.Context, name string) error

DropView implements the interface sql.ViewDatabase.

func (*Database) GetViewDefinition added in v0.15.0

func (d *Database) GetViewDefinition(ctx *sql.Context, viewName string) (sql.ViewDefinition, bool, error)

GetViewDefinition implements the interface sql.ViewDatabase.

func (*Database) NeedsToReloadEvents added in v0.18.0

func (d *Database) NeedsToReloadEvents(_ *sql.Context, token interface{}) (bool, error)

NeedsToReloadEvents implements sql.EventDatabase

type DbProvider added in v0.15.0

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

DbProvider is a provider for in-memory databases

func NewDBProvider added in v0.15.0

func NewDBProvider(dbs ...sql.Database) *DbProvider

NewDBProvider creates a new DbProvider with the default options and the databases specified

func (*DbProvider) AllDatabases added in v0.15.0

func (pro *DbProvider) AllDatabases(*sql.Context) []sql.Database

AllDatabases returns the Database with the given name if it exists.

func (*DbProvider) CreateDatabase added in v0.15.0

func (pro *DbProvider) CreateDatabase(_ *sql.Context, name string) (err error)

CreateDatabase implements MutableDatabaseProvider.

func (*DbProvider) Database added in v0.15.0

func (pro *DbProvider) Database(_ *sql.Context, name string) (sql.Database, error)

Database returns the Database with the given name if it exists.

func (*DbProvider) DropDatabase added in v0.15.0

func (pro *DbProvider) DropDatabase(_ *sql.Context, name string) (err error)

DropDatabase implements MutableDatabaseProvider.

func (*DbProvider) ExternalStoredProcedure added in v0.15.0

func (pro *DbProvider) ExternalStoredProcedure(_ *sql.Context, name string, numOfParams int) (*sql.ExternalStoredProcedureDetails, error)

ExternalStoredProcedure implements sql.ExternalStoredProcedureProvider

func (*DbProvider) ExternalStoredProcedures added in v0.15.0

func (pro *DbProvider) ExternalStoredProcedures(_ *sql.Context, name string) ([]sql.ExternalStoredProcedureDetails, error)

ExternalStoredProcedures implements sql.ExternalStoredProcedureProvider

func (*DbProvider) HasDatabase added in v0.15.0

func (pro *DbProvider) HasDatabase(_ *sql.Context, name string) bool

HasDatabase returns the Database with the given name if it exists.

func (*DbProvider) TableFunction added in v0.15.0

func (pro *DbProvider) TableFunction(_ *sql.Context, name string) (sql.TableFunction, error)

TableFunction implements sql.TableFunctionProvider

func (*DbProvider) WithOption added in v0.15.0

func (pro *DbProvider) WithOption(opt ProviderOption)

WithOption modifies the provider with the given option

func (*DbProvider) WithTableFunctions added in v0.18.0

func (pro *DbProvider) WithTableFunctions(fns ...sql.TableFunction) (sql.TableFunctionProvider, error)

type ExponentialDistTable added in v0.18.0

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

ExponentialDistTable a simple table function that returns samples from a parameterized exponential distribution.

func (ExponentialDistTable) CheckPrivileges added in v0.18.0

func (ExponentialDistTable) Children added in v0.18.0

func (s ExponentialDistTable) Children() []sql.Node

func (ExponentialDistTable) Collation added in v0.18.0

func (ExponentialDistTable) Collation() sql.CollationID

Collation implements the sql.Table interface.

func (ExponentialDistTable) CollationCoercibility added in v0.18.0

func (ExponentialDistTable) CollationCoercibility(ctx *sql.Context) (collation sql.CollationID, coercibility byte)

CollationCoercibility implements the interface sql.CollationCoercible.

func (ExponentialDistTable) Database added in v0.18.0

func (s ExponentialDistTable) Database() sql.Database

func (ExponentialDistTable) DebugString added in v0.18.0

func (s ExponentialDistTable) DebugString() string

func (ExponentialDistTable) Description added in v0.18.0

func (s ExponentialDistTable) Description() string

func (ExponentialDistTable) Expressions added in v0.18.0

func (s ExponentialDistTable) Expressions() []sql.Expression

func (ExponentialDistTable) IsReadOnly added in v0.18.0

func (s ExponentialDistTable) IsReadOnly() bool

func (ExponentialDistTable) Name added in v0.18.0

func (s ExponentialDistTable) Name() string

func (ExponentialDistTable) NewInstance added in v0.18.0

func (s ExponentialDistTable) NewInstance(_ *sql.Context, db sql.Database, args []sql.Expression) (sql.Node, error)

func (ExponentialDistTable) PartitionRows added in v0.18.0

func (s ExponentialDistTable) PartitionRows(ctx *sql.Context, _ sql.Partition) (sql.RowIter, error)

PartitionRows is a sql.Table interface function that takes a partition and returns all rows in that partition. This table has a partition for just schema changes, one for just data changes, and one for both.

func (ExponentialDistTable) Partitions added in v0.18.0

func (s ExponentialDistTable) Partitions(ctx *sql.Context) (sql.PartitionIter, error)

Partitions is a sql.Table interface function that returns a partition of the data. This data has a single partition.

func (ExponentialDistTable) Resolved added in v0.18.0

func (s ExponentialDistTable) Resolved() bool

func (ExponentialDistTable) RowIter added in v0.18.0

func (s ExponentialDistTable) RowIter(_ *sql.Context, _ sql.Row) (sql.RowIter, error)

func (ExponentialDistTable) Schema added in v0.18.0

func (s ExponentialDistTable) Schema() sql.Schema

func (ExponentialDistTable) String added in v0.18.0

func (s ExponentialDistTable) String() string

func (ExponentialDistTable) UnderlyingTable added in v0.18.0

func (s ExponentialDistTable) UnderlyingTable() sql.Table

func (ExponentialDistTable) WithChildren added in v0.18.0

func (s ExponentialDistTable) WithChildren(_ ...sql.Node) (sql.Node, error)

func (ExponentialDistTable) WithDatabase added in v0.18.0

func (s ExponentialDistTable) WithDatabase(_ sql.Database) (sql.Node, error)

func (ExponentialDistTable) WithExpressions added in v0.18.0

func (s ExponentialDistTable) WithExpressions(e ...sql.Expression) (sql.Node, error)

type ExpressionsIndex

type ExpressionsIndex interface {
	sql.Index
	MemTable() *Table
	ColumnExpressions() []sql.Expression
}

ExpressionsIndex is an index made out of one or more expressions (usually field expressions), linked to a Table.

type FilteredTable added in v0.10.0

type FilteredTable struct {
	*Table
}

FilteredTable functionality in the Table type was disabled for a long period of time, and has developed major issues with the current analyzer logic. It's only used in the pushdown unit tests, and sql.FilteredTable should be considered unstable until this situation is fixed.

func NewFilteredTable added in v0.10.0

func NewFilteredTable(db MemoryDatabase, name string, schema sql.PrimaryKeySchema, fkColl *ForeignKeyCollection) *FilteredTable

func (*FilteredTable) Projections added in v0.12.0

func (t *FilteredTable) Projections() []string

Projections implements sql.ProjectedTable

func (*FilteredTable) WithFilters added in v0.10.0

func (t *FilteredTable) WithFilters(ctx *sql.Context, filters []sql.Expression) sql.Table

WithFilters implements the sql.FilteredTable interface.

func (*FilteredTable) WithProjections added in v0.12.0

func (t *FilteredTable) WithProjections(schema []string) sql.Table

WithProjections implements sql.ProjectedTable

type ForeignKeyCollection added in v0.12.0

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

ForeignKeyCollection is a shareable container for a collection of foreign keys.

func (*ForeignKeyCollection) AddFK added in v0.12.0

AddFK adds the given foreign key to the internal slice.

func (*ForeignKeyCollection) DropFK added in v0.12.0

func (fkc *ForeignKeyCollection) DropFK(fkName string) bool

DropFK removes the given foreign key from the internal slice. Returns true if the foreign key was found.

func (*ForeignKeyCollection) Keys added in v0.12.0

Keys returns all of the foreign keys.

func (*ForeignKeyCollection) SetResolved added in v0.12.0

func (fkc *ForeignKeyCollection) SetResolved(fkName string) bool

SetResolved sets the given foreign key as being resolved.

type GlobalsMap added in v0.12.0

type GlobalsMap = map[string]interface{}

type HistoryDatabase

type HistoryDatabase struct {
	*Database
	Revisions map[string]map[interface{}]sql.Table
	// contains filtered or unexported fields
}

HistoryDatabase is a test-only VersionedDatabase implementation. It only supports exact lookups, not AS OF queries between two revisions. It's constructed just like its non-versioned sibling, but it can receive updates to particular tables via the AddTableAsOf method. Consecutive calls to AddTableAsOf with the same table must install new versions of the named table each time, with ascending version identifiers, for this to work.

func NewHistoryDatabase

func NewHistoryDatabase(name string) *HistoryDatabase

func (*HistoryDatabase) AddTableAsOf

func (db *HistoryDatabase) AddTableAsOf(name string, t sql.Table, asOf interface{})

Adds a table with an asOf revision key. The table given becomes the current version for the name given.

func (*HistoryDatabase) GetTableInsensitiveAsOf

func (db *HistoryDatabase) GetTableInsensitiveAsOf(ctx *sql.Context, tblName string, time interface{}) (sql.Table, bool, error)

func (*HistoryDatabase) GetTableNamesAsOf

func (db *HistoryDatabase) GetTableNamesAsOf(ctx *sql.Context, time interface{}) ([]string, error)

type Index added in v0.12.0

type Index struct {
	DB         string // required for engine tests with driver
	DriverName string // required for engine tests with driver
	Tbl        *Table // required for engine tests with driver
	TableName  string
	Exprs      []sql.Expression
	Name       string
	Unique     bool
	Spatial    bool
	Fulltext   bool
	CommentStr string
	PrefixLens []uint16
	// contains filtered or unexported fields
}

func (*Index) CanSupport added in v0.14.0

func (idx *Index) CanSupport(...sql.Range) bool

func (*Index) ColumnExpressionTypes added in v0.12.0

func (idx *Index) ColumnExpressionTypes() []sql.ColumnExpressionType

ColumnExpressionTypes implements the interface sql.Index.

func (*Index) ColumnExpressions added in v0.12.0

func (idx *Index) ColumnExpressions() []sql.Expression

func (*Index) Comment added in v0.12.0

func (idx *Index) Comment() string

func (*Index) Database added in v0.12.0

func (idx *Index) Database() string

func (*Index) Driver added in v0.12.0

func (idx *Index) Driver() string

func (*Index) Expressions added in v0.12.0

func (idx *Index) Expressions() []string

func (*Index) ExtendedColumnExpressionTypes added in v0.16.0

func (idx *Index) ExtendedColumnExpressionTypes() []sql.ColumnExpressionType

func (*Index) ExtendedExpressions added in v0.16.0

func (idx *Index) ExtendedExpressions() []string

func (*Index) ExtendedExprs added in v0.18.0

func (idx *Index) ExtendedExprs() []sql.Expression

ExtendedExprs returns the same information as ExtendedExpressions, but in sql.Expression form.

func (*Index) FullTextKeyColumns added in v0.17.0

func (idx *Index) FullTextKeyColumns(ctx *sql.Context) (fulltext.KeyColumns, error)

func (*Index) FullTextTableNames added in v0.17.0

func (idx *Index) FullTextTableNames(ctx *sql.Context) (fulltext.IndexTableNames, error)

func (*Index) HandledFilters added in v0.12.0

func (idx *Index) HandledFilters(filters []sql.Expression) []sql.Expression

func (*Index) ID added in v0.12.0

func (idx *Index) ID() string

func (*Index) IndexType added in v0.12.0

func (idx *Index) IndexType() string

func (*Index) IsFullText added in v0.17.0

func (idx *Index) IsFullText() bool

func (*Index) IsGenerated added in v0.12.0

func (idx *Index) IsGenerated() bool

func (*Index) IsSpatial added in v0.15.0

func (idx *Index) IsSpatial() bool

func (*Index) IsUnique added in v0.12.0

func (idx *Index) IsUnique() bool

func (*Index) MemTable added in v0.12.0

func (idx *Index) MemTable() *Table

func (*Index) Order added in v0.12.0

func (idx *Index) Order() sql.IndexOrder

func (*Index) PrefixLengths added in v0.15.0

func (idx *Index) PrefixLengths() []uint16

func (*Index) Reversible added in v0.16.0

func (idx *Index) Reversible() bool

func (*Index) Table added in v0.12.0

func (idx *Index) Table() string

type IndexValue added in v0.9.0

type IndexValue struct {
	Key string
	Pos int
}

func DecodeIndexValue added in v0.9.0

func DecodeIndexValue(data []byte) (*IndexValue, error)

type IndexedTable added in v0.14.0

type IndexedTable struct {
	*Table
	Lookup sql.IndexLookup
}

IndexedTable is a table that expects to return one or more partitions for range lookups.

func (*IndexedTable) LookupPartitions added in v0.14.0

func (t *IndexedTable) LookupPartitions(ctx *sql.Context, lookup sql.IndexLookup) (sql.PartitionIter, error)

func (*IndexedTable) PartitionRows added in v0.15.0

func (t *IndexedTable) PartitionRows(ctx *sql.Context, partition sql.Partition) (sql.RowIter, error)

PartitionRows implements the sql.PartitionRows interface.

type IntSequenceTable added in v0.15.0

type IntSequenceTable struct {
	Len int64
	// contains filtered or unexported fields
}

IntSequenceTable a simple table function that returns a sequence of integers.

func (IntSequenceTable) CheckPrivileges added in v0.15.0

func (IntSequenceTable) Children added in v0.15.0

func (s IntSequenceTable) Children() []sql.Node

func (IntSequenceTable) Collation added in v0.17.0

func (IntSequenceTable) Collation() sql.CollationID

Collation implements the sql.Table interface.

func (IntSequenceTable) CollationCoercibility added in v0.15.0

func (IntSequenceTable) CollationCoercibility(ctx *sql.Context) (collation sql.CollationID, coercibility byte)

CollationCoercibility implements the interface sql.CollationCoercible.

func (IntSequenceTable) Database added in v0.15.0

func (s IntSequenceTable) Database() sql.Database

func (IntSequenceTable) DebugString added in v0.15.0

func (s IntSequenceTable) DebugString() string

func (IntSequenceTable) Description added in v0.15.0

func (s IntSequenceTable) Description() string

func (IntSequenceTable) Expressions added in v0.15.0

func (s IntSequenceTable) Expressions() []sql.Expression

func (IntSequenceTable) GetIndexes added in v0.17.0

func (s IntSequenceTable) GetIndexes(ctx *sql.Context) ([]sql.Index, error)

func (IntSequenceTable) IndexedAccess added in v0.17.0

func (s IntSequenceTable) IndexedAccess(lookup sql.IndexLookup) sql.IndexedTable

func (IntSequenceTable) IsReadOnly added in v0.18.0

func (s IntSequenceTable) IsReadOnly() bool

func (IntSequenceTable) LookupPartitions added in v0.17.0

func (s IntSequenceTable) LookupPartitions(context *sql.Context, lookup sql.IndexLookup) (sql.PartitionIter, error)

LookupPartitions is a sql.IndexedTable interface function that takes an index lookup and returns the set of corresponding partitions.

func (IntSequenceTable) Name added in v0.15.0

func (s IntSequenceTable) Name() string

func (IntSequenceTable) NewInstance added in v0.15.0

func (s IntSequenceTable) NewInstance(_ *sql.Context, db sql.Database, args []sql.Expression) (sql.Node, error)

func (IntSequenceTable) PartitionRows added in v0.17.0

func (s IntSequenceTable) PartitionRows(ctx *sql.Context, partition sql.Partition) (sql.RowIter, error)

PartitionRows is a sql.Table interface function that takes a partition and returns all rows in that partition. This table has a partition for just schema changes, one for just data changes, and one for both.

func (IntSequenceTable) Partitions added in v0.17.0

func (s IntSequenceTable) Partitions(ctx *sql.Context) (sql.PartitionIter, error)

Partitions is a sql.Table interface function that returns a partition of the data. This data has a single partition.

func (IntSequenceTable) PreciseMatch added in v0.18.0

func (s IntSequenceTable) PreciseMatch() bool

func (IntSequenceTable) Resolved added in v0.15.0

func (s IntSequenceTable) Resolved() bool

func (IntSequenceTable) RowIter added in v0.15.0

func (s IntSequenceTable) RowIter(_ *sql.Context, _ sql.Row) (sql.RowIter, error)

func (IntSequenceTable) Schema added in v0.15.0

func (s IntSequenceTable) Schema() sql.Schema

func (IntSequenceTable) String added in v0.15.0

func (s IntSequenceTable) String() string

func (IntSequenceTable) UnderlyingTable added in v0.17.0

func (s IntSequenceTable) UnderlyingTable() sql.Table

func (IntSequenceTable) WithChildren added in v0.15.0

func (s IntSequenceTable) WithChildren(_ ...sql.Node) (sql.Node, error)

func (IntSequenceTable) WithDatabase added in v0.15.0

func (s IntSequenceTable) WithDatabase(_ sql.Database) (sql.Node, error)

func (IntSequenceTable) WithExpressions added in v0.15.0

func (s IntSequenceTable) WithExpressions(e ...sql.Expression) (sql.Node, error)

type MemTable added in v0.18.0

type MemTable interface {
	sql.Table
	IgnoreSessionData() bool
	UnderlyingTable() *Table
}

type MemoryDatabase added in v0.11.0

type MemoryDatabase interface {
	sql.Database
	AddTable(name string, t MemTable)
	Database() *BaseDatabase
}

type NormalDistTable added in v0.18.0

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

NormalDistTable a simple table function that returns samples from a parameterized normal distribution.

func (NormalDistTable) CheckPrivileges added in v0.18.0

func (s NormalDistTable) CheckPrivileges(_ *sql.Context, _ sql.PrivilegedOperationChecker) bool

func (NormalDistTable) Children added in v0.18.0

func (s NormalDistTable) Children() []sql.Node

func (NormalDistTable) Collation added in v0.18.0

func (NormalDistTable) Collation() sql.CollationID

Collation implements the sql.Table interface.

func (NormalDistTable) CollationCoercibility added in v0.18.0

func (NormalDistTable) CollationCoercibility(ctx *sql.Context) (collation sql.CollationID, coercibility byte)

CollationCoercibility implements the interface sql.CollationCoercible.

func (NormalDistTable) Database added in v0.18.0

func (s NormalDistTable) Database() sql.Database

func (NormalDistTable) DebugString added in v0.18.0

func (s NormalDistTable) DebugString() string

func (NormalDistTable) Description added in v0.18.0

func (s NormalDistTable) Description() string

func (NormalDistTable) Expressions added in v0.18.0

func (s NormalDistTable) Expressions() []sql.Expression

func (NormalDistTable) IsReadOnly added in v0.18.0

func (s NormalDistTable) IsReadOnly() bool

func (NormalDistTable) Name added in v0.18.0

func (s NormalDistTable) Name() string

func (NormalDistTable) NewInstance added in v0.18.0

func (s NormalDistTable) NewInstance(_ *sql.Context, db sql.Database, args []sql.Expression) (sql.Node, error)

func (NormalDistTable) PartitionRows added in v0.18.0

func (s NormalDistTable) PartitionRows(ctx *sql.Context, _ sql.Partition) (sql.RowIter, error)

PartitionRows is a sql.Table interface function that takes a partition and returns all rows in that partition. This table has a partition for just schema changes, one for just data changes, and one for both.

func (NormalDistTable) Partitions added in v0.18.0

func (s NormalDistTable) Partitions(ctx *sql.Context) (sql.PartitionIter, error)

Partitions is a sql.Table interface function that returns a partition of the data. This data has a single partition.

func (NormalDistTable) Resolved added in v0.18.0

func (s NormalDistTable) Resolved() bool

func (NormalDistTable) RowIter added in v0.18.0

func (s NormalDistTable) RowIter(_ *sql.Context, _ sql.Row) (sql.RowIter, error)

func (NormalDistTable) Schema added in v0.18.0

func (s NormalDistTable) Schema() sql.Schema

func (NormalDistTable) String added in v0.18.0

func (s NormalDistTable) String() string

func (NormalDistTable) UnderlyingTable added in v0.18.0

func (s NormalDistTable) UnderlyingTable() sql.Table

func (NormalDistTable) WithChildren added in v0.18.0

func (s NormalDistTable) WithChildren(_ ...sql.Node) (sql.Node, error)

func (NormalDistTable) WithDatabase added in v0.18.0

func (s NormalDistTable) WithDatabase(_ sql.Database) (sql.Node, error)

func (NormalDistTable) WithExpressions added in v0.18.0

func (s NormalDistTable) WithExpressions(e ...sql.Expression) (sql.Node, error)

type Partition added in v0.9.0

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

func NewPartition added in v0.9.0

func NewPartition(key []byte) *Partition

func (*Partition) Key added in v0.9.0

func (p *Partition) Key() []byte

type PointLookupTable added in v0.18.0

type PointLookupTable struct {
	IntSequenceTable
}

PointLookupTable is a table whose indexes only support point lookups but not range scans. It's used for testing optimizations on indexes.

func (PointLookupTable) DebugString added in v0.18.0

func (s PointLookupTable) DebugString() string

func (PointLookupTable) Description added in v0.18.0

func (s PointLookupTable) Description() string

func (PointLookupTable) GetIndexes added in v0.18.0

func (s PointLookupTable) GetIndexes(ctx *sql.Context) (indexes []sql.Index, err error)

func (PointLookupTable) Name added in v0.18.0

func (s PointLookupTable) Name() string

func (PointLookupTable) NewInstance added in v0.18.0

func (s PointLookupTable) NewInstance(ctx *sql.Context, db sql.Database, args []sql.Expression) (sql.Node, error)

func (PointLookupTable) PreciseMatch added in v0.18.0

func (s PointLookupTable) PreciseMatch() bool

func (PointLookupTable) String added in v0.18.0

func (s PointLookupTable) String() string

func (PointLookupTable) UnderlyingTable added in v0.18.0

func (s PointLookupTable) UnderlyingTable() sql.Table

type ProviderOption added in v0.15.0

type ProviderOption func(*DbProvider)

func HistoryProvider added in v0.15.0

func HistoryProvider(enableHistory bool) ProviderOption

HistoryProvider returns a ProviderOption to construct a memoryDBProvider that uses history databases

func NativeIndexProvider added in v0.15.0

func NativeIndexProvider(useNativeIndexes bool) ProviderOption

func ReadOnlyProvider added in v0.15.0

func ReadOnlyProvider(enableReadOnly bool) ProviderOption

ReadOnlyProvider returns a ProviderOption to construct a memoryDBProvider that is read-only

func WithDbsOption added in v0.15.0

func WithDbsOption(dbs []sql.Database) ProviderOption

WithDbsOption returns a ProviderOption to construct a DbProvider with the given databases

type ReadOnlyDatabase added in v0.11.0

type ReadOnlyDatabase struct {
	*HistoryDatabase
}

func NewReadOnlyDatabase added in v0.11.0

func NewReadOnlyDatabase(name string) ReadOnlyDatabase

func (ReadOnlyDatabase) IsReadOnly added in v0.11.0

func (d ReadOnlyDatabase) IsReadOnly() bool

type RequiredLookupTable added in v0.18.0

type RequiredLookupTable struct {
	IntSequenceTable
	// contains filtered or unexported fields
}

RequiredLookupTable is a table that will error if not executed as an index lookup

func (RequiredLookupTable) Database added in v0.18.0

func (s RequiredLookupTable) Database() sql.Database

func (RequiredLookupTable) DebugString added in v0.18.0

func (s RequiredLookupTable) DebugString() string

func (RequiredLookupTable) Description added in v0.18.0

func (s RequiredLookupTable) Description() string

func (RequiredLookupTable) Expressions added in v0.18.0

func (s RequiredLookupTable) Expressions() []sql.Expression

func (RequiredLookupTable) GetIndexes added in v0.18.0

func (s RequiredLookupTable) GetIndexes(ctx *sql.Context) (indexes []sql.Index, err error)

func (RequiredLookupTable) IndexedAccess added in v0.18.0

func (s RequiredLookupTable) IndexedAccess(lookup sql.IndexLookup) sql.IndexedTable

func (RequiredLookupTable) Name added in v0.18.0

func (s RequiredLookupTable) Name() string

func (RequiredLookupTable) NewInstance added in v0.18.0

func (s RequiredLookupTable) NewInstance(ctx *sql.Context, db sql.Database, args []sql.Expression) (sql.Node, error)

func (RequiredLookupTable) PartitionRows added in v0.18.0

func (s RequiredLookupTable) PartitionRows(ctx *sql.Context, partition sql.Partition) (sql.RowIter, error)

func (RequiredLookupTable) Partitions added in v0.18.0

func (s RequiredLookupTable) Partitions(ctx *sql.Context) (sql.PartitionIter, error)

Partitions is a sql.Table interface function that returns a partition of the data. This data has a single partition.

func (RequiredLookupTable) PreciseMatch added in v0.18.0

func (s RequiredLookupTable) PreciseMatch() bool

func (RequiredLookupTable) RequiredPredicates added in v0.18.0

func (s RequiredLookupTable) RequiredPredicates() []string

func (RequiredLookupTable) RowIter added in v0.18.0

func (s RequiredLookupTable) RowIter(_ *sql.Context, _ sql.Row) (sql.RowIter, error)

func (RequiredLookupTable) String added in v0.18.0

func (s RequiredLookupTable) String() string

func (RequiredLookupTable) UnderlyingTable added in v0.18.0

func (s RequiredLookupTable) UnderlyingTable() sql.Table

func (RequiredLookupTable) WithChildren added in v0.18.0

func (s RequiredLookupTable) WithChildren(_ ...sql.Node) (sql.Node, error)

func (RequiredLookupTable) WithDatabase added in v0.18.0

func (s RequiredLookupTable) WithDatabase(_ sql.Database) (sql.Node, error)

func (RequiredLookupTable) WithExpressions added in v0.18.0

func (s RequiredLookupTable) WithExpressions(e ...sql.Expression) (sql.Node, error)

type SequenceTableFnRowIter added in v0.15.0

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

func (*SequenceTableFnRowIter) Close added in v0.15.0

func (i *SequenceTableFnRowIter) Close(_ *sql.Context) error

func (*SequenceTableFnRowIter) Next added in v0.15.0

func (i *SequenceTableFnRowIter) Next(_ *sql.Context) (sql.Row, error)

type Session added in v0.18.0

type Session struct {
	*sql.BaseSession
	// contains filtered or unexported fields
}

func NewSession added in v0.18.0

func NewSession(baseSession *sql.BaseSession, provider sql.DatabaseProvider) *Session

NewSession returns the new session for this object

func SessionFromContext added in v0.18.0

func SessionFromContext(ctx *sql.Context) *Session

func (*Session) CommitTransaction added in v0.18.0

func (s *Session) CommitTransaction(ctx *sql.Context, tx sql.Transaction) error

func (*Session) CreateSavepoint added in v0.18.0

func (s *Session) CreateSavepoint(ctx *sql.Context, transaction sql.Transaction, name string) error

func (*Session) GetPersistedValue added in v0.18.0

func (s *Session) GetPersistedValue(k string) (interface{}, error)

GetPersistedValue implements sql.PersistableSession

func (*Session) PersistGlobal added in v0.18.0

func (s *Session) PersistGlobal(sysVarName string, value interface{}) error

PersistGlobal implements sql.PersistableSession

func (*Session) ReleaseSavepoint added in v0.18.0

func (s *Session) ReleaseSavepoint(ctx *sql.Context, transaction sql.Transaction, name string) error

func (*Session) RemoveAllPersistedGlobals added in v0.18.0

func (s *Session) RemoveAllPersistedGlobals() error

RemoveAllPersistedGlobals implements sql.PersistableSession

func (*Session) RemovePersistedGlobal added in v0.18.0

func (s *Session) RemovePersistedGlobal(sysVarName string) error

RemovePersistedGlobal implements sql.PersistableSession

func (*Session) Rollback added in v0.18.0

func (s *Session) Rollback(ctx *sql.Context, transaction sql.Transaction) error

func (*Session) RollbackToSavepoint added in v0.18.0

func (s *Session) RollbackToSavepoint(ctx *sql.Context, transaction sql.Transaction, name string) error

func (*Session) SetGlobals added in v0.18.0

func (s *Session) SetGlobals(globals map[string]interface{}) *Session

func (*Session) SetValidationCallback added in v0.18.0

func (s *Session) SetValidationCallback(validationCallback func()) *Session

func (*Session) StartTransaction added in v0.18.0

func (s *Session) StartTransaction(ctx *sql.Context, tCharacteristic sql.TransactionCharacteristic) (sql.Transaction, error)

StartTransaction clears session state and returns a new transaction object. Because we don't support concurrency, we store table data changes in the session, rather than the transaction itself.

func (*Session) ValidateSession added in v0.18.0

func (s *Session) ValidateSession(ctx *sql.Context) error

ValidateSession counts the number of times this method is called.

type StatsProv added in v0.18.0

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

func NewStatsProv added in v0.18.0

func NewStatsProv() *StatsProv

func (*StatsProv) DataLength added in v0.18.0

func (s *StatsProv) DataLength(ctx *sql.Context, db, table string) (uint64, error)

func (*StatsProv) DropDbStats added in v0.18.0

func (s *StatsProv) DropDbStats(ctx *sql.Context, db string, flush bool) error

func (*StatsProv) DropStats added in v0.18.0

func (s *StatsProv) DropStats(ctx *sql.Context, qual sql.StatQualifier, cols []string) error

func (*StatsProv) GetStats added in v0.18.0

func (s *StatsProv) GetStats(ctx *sql.Context, qual sql.StatQualifier, cols []string) (sql.Statistic, bool)

func (*StatsProv) GetTableStats added in v0.18.0

func (s *StatsProv) GetTableStats(ctx *sql.Context, db, table string) ([]sql.Statistic, error)

func (*StatsProv) RefreshTableStats added in v0.18.0

func (s *StatsProv) RefreshTableStats(ctx *sql.Context, table sql.Table, db string) error

func (*StatsProv) RowCount added in v0.18.0

func (s *StatsProv) RowCount(ctx *sql.Context, db, table string) (uint64, error)

func (*StatsProv) SetStats added in v0.18.0

func (s *StatsProv) SetStats(ctx *sql.Context, stats sql.Statistic) error

type Table

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

Table represents an in-memory database table.

func NewDualTable added in v0.18.0

func NewDualTable() *Table

NewDualTable creates the dual table, which is used by the engine for queries with no tables specified, or the `dual` table specified. This table is never supplied by integrators, but always by this stand-in implementation.

func NewLocalTable added in v0.18.0

func NewLocalTable(db MemoryDatabase, name string, schema sql.PrimaryKeySchema, fkColl *ForeignKeyCollection) *Table

NewLocalTable returns a table suitable to use for transient non-memory applications

func NewPartitionedTable

func NewPartitionedTable(db *BaseDatabase, name string, schema sql.PrimaryKeySchema, fkColl *ForeignKeyCollection, numPartitions int) *Table

NewPartitionedTable creates a new Table with the given name, schema and number of partitions. Assigns the default collation, therefore if a different collation is desired, please use NewPartitionedTableWithCollation.

func NewPartitionedTableWithCollation added in v0.14.0

func NewPartitionedTableWithCollation(db *BaseDatabase, name string, schema sql.PrimaryKeySchema, fkColl *ForeignKeyCollection, numPartitions int, collation sql.CollationID, comment string) *Table

NewPartitionedTableWithCollation creates a new Table with the given name, schema, number of partitions, collation, and comment.

func NewTable

func NewTable(db MemoryDatabase, name string, schema sql.PrimaryKeySchema, fkColl *ForeignKeyCollection) *Table

NewTable creates a new Table with the given name and schema. Assigns the default collation, therefore if a different collation is desired, please use NewTableWithCollation.

func NewTableWithCollation added in v0.14.0

func NewTableWithCollation(db *BaseDatabase, name string, schema sql.PrimaryKeySchema, fkColl *ForeignKeyCollection, collation sql.CollationID) *Table

NewTableWithCollation creates a new Table with the given name, schema, and collation.

func (*Table) AddColumn

func (t *Table) AddColumn(ctx *sql.Context, column *sql.Column, order *sql.ColumnOrder) error

func (*Table) AddForeignKey added in v0.12.0

func (t *Table) AddForeignKey(ctx *sql.Context, fk sql.ForeignKeyConstraint) error

AddForeignKey implements sql.ForeignKeyTable. Foreign partitionKeys are not enforced on update / delete.

func (*Table) AutoIncrementSetter

func (t *Table) AutoIncrementSetter(ctx *sql.Context) sql.AutoIncrementSetter

func (*Table) BuildIndex added in v0.18.0

func (t *Table) BuildIndex(ctx *sql.Context, indexDef sql.IndexDef) (sql.RowInserter, error)

func (*Table) Collation added in v0.14.0

func (t *Table) Collation() sql.CollationID

Collation implements the sql.Table interface.

func (*Table) Comment added in v0.18.0

func (t *Table) Comment() string

Comment implements the sql.CommentedTable interface.

func (*Table) CreateCheck added in v0.9.0

func (t *Table) CreateCheck(ctx *sql.Context, check *sql.CheckDefinition) error

CreateCheck implements sql.CheckAlterableTable

func (*Table) CreateFulltextIndex added in v0.17.0

func (t *Table) CreateFulltextIndex(ctx *sql.Context, indexDef sql.IndexDef, keyCols fulltext.KeyColumns, tableNames fulltext.IndexTableNames) error

CreateFulltextIndex implements fulltext.IndexAlterableTable

func (*Table) CreateIndex

func (t *Table) CreateIndex(ctx *sql.Context, idx sql.IndexDef) error

CreateIndex implements sql.IndexAlterableTable

func (*Table) CreateIndexForForeignKey added in v0.12.0

func (t *Table) CreateIndexForForeignKey(ctx *sql.Context, idx sql.IndexDef) error

CreateIndexForForeignKey implements sql.ForeignKeyTable.

func (*Table) CreatePrimaryKey added in v0.11.0

func (t *Table) CreatePrimaryKey(ctx *sql.Context, columns []sql.IndexColumn) error

CreatePrimaryKey implements the PrimaryKeyAlterableTable

func (*Table) DataLength added in v0.9.0

func (t *Table) DataLength(ctx *sql.Context) (uint64, error)

func (*Table) Database added in v0.18.0

func (t *Table) Database() string

func (*Table) DebugString

func (t *Table) DebugString() string

func (*Table) Deleter

func (t *Table) Deleter(ctx *sql.Context) sql.RowDeleter

func (*Table) DropCheck added in v0.9.0

func (t *Table) DropCheck(ctx *sql.Context, chName string) error

DropCheck implements sql.CheckAlterableTable.

func (*Table) DropColumn

func (t *Table) DropColumn(ctx *sql.Context, columnName string) error

func (*Table) DropForeignKey

func (t *Table) DropForeignKey(ctx *sql.Context, fkName string) error

DropForeignKey implements sql.ForeignKeyTable.

func (*Table) DropIndex

func (t *Table) DropIndex(ctx *sql.Context, name string) error

DropIndex implements sql.IndexAlterableTable

func (*Table) DropPrimaryKey added in v0.11.0

func (t *Table) DropPrimaryKey(ctx *sql.Context) error

DropPrimaryKey implements the PrimaryKeyAlterableTable TODO: get rid of this / make it error?

func (*Table) EnablePrimaryKeyIndexes

func (t *Table) EnablePrimaryKeyIndexes()

EnablePrimaryKeyIndexes enables the use of primary key indexes on this table.

func (*Table) Filters added in v0.10.0

func (t *Table) Filters() []sql.Expression

Filters implements the sql.FilteredTable interface.

func (*Table) GetChecks added in v0.9.0

func (t *Table) GetChecks(ctx *sql.Context) ([]sql.CheckDefinition, error)

GetChecks implements sql.CheckTable

func (*Table) GetDeclaredForeignKeys added in v0.12.0

func (t *Table) GetDeclaredForeignKeys(ctx *sql.Context) ([]sql.ForeignKeyConstraint, error)

GetDeclaredForeignKeys implements the interface sql.ForeignKeyTable.

func (*Table) GetForeignKeyEditor added in v0.15.0

func (t *Table) GetForeignKeyEditor(ctx *sql.Context) sql.ForeignKeyEditor

GetForeignKeyEditor implements sql.ForeignKeyTable.

func (*Table) GetIndexes

func (t *Table) GetIndexes(ctx *sql.Context) ([]sql.Index, error)

GetIndexes implements sql.IndexedTable

func (*Table) GetNextAutoIncrementValue added in v0.11.0

func (t *Table) GetNextAutoIncrementValue(ctx *sql.Context, insertVal interface{}) (uint64, error)

GetNextAutoIncrementValue gets the next auto increment value for the memory table the increment.

func (*Table) GetPartition added in v0.9.0

func (t *Table) GetPartition(key string) []sql.Row

func (*Table) GetReferencedForeignKeys added in v0.12.0

func (t *Table) GetReferencedForeignKeys(ctx *sql.Context) ([]sql.ForeignKeyConstraint, error)

GetReferencedForeignKeys implements the interface sql.ForeignKeyTable.

func (*Table) HandledFilters

func (t *Table) HandledFilters(filters []sql.Expression) []sql.Expression

HandledFilters implements the sql.FilteredTable interface.

func (*Table) IgnoreSessionData added in v0.18.0

func (t *Table) IgnoreSessionData() bool

func (*Table) IndexedAccess added in v0.14.0

func (t *Table) IndexedAccess(lookup sql.IndexLookup) sql.IndexedTable

func (*Table) Insert

func (t *Table) Insert(ctx *sql.Context, row sql.Row) error

Insert is a convenience method to avoid having to create an inserter in test setup

func (*Table) Inserter

func (t *Table) Inserter(ctx *sql.Context) sql.RowInserter

func (*Table) ModifyColumn

func (t *Table) ModifyColumn(ctx *sql.Context, columnName string, column *sql.Column, order *sql.ColumnOrder) error

func (*Table) ModifyDefaultCollation added in v0.15.0

func (t *Table) ModifyDefaultCollation(ctx *sql.Context, collation sql.CollationID) error

ModifyDefaultCollation implements sql.CollationAlterableTable

func (*Table) ModifyStoredCollation added in v0.15.0

func (t *Table) ModifyStoredCollation(ctx *sql.Context, collation sql.CollationID) error

ModifyStoredCollation implements sql.CollationAlterableTable

func (*Table) Name

func (t *Table) Name() string

Name implements the sql.Table interface.

func (*Table) PartitionCount

func (t *Table) PartitionCount(ctx *sql.Context) (int64, error)

PartitionCount implements the sql.PartitionCounter interface.

func (*Table) PartitionRows

func (t *Table) PartitionRows(ctx *sql.Context, partition sql.Partition) (sql.RowIter, error)

PartitionRows implements the sql.PartitionRows interface.

func (*Table) Partitions

func (t *Table) Partitions(ctx *sql.Context) (sql.PartitionIter, error)

Partitions implements the sql.Table interface.

func (*Table) PeekNextAutoIncrementValue added in v0.11.0

func (t *Table) PeekNextAutoIncrementValue(ctx *sql.Context) (uint64, error)

PeekNextAutoIncrementValue peeks at the next AUTO_INCREMENT value

func (*Table) PreciseMatch added in v0.18.0

func (t *Table) PreciseMatch() bool

func (*Table) PrimaryKeySchema added in v0.12.0

func (t *Table) PrimaryKeySchema() sql.PrimaryKeySchema

PrimaryKeySchema implements sql.PrimaryKeyAlterableTable

func (*Table) Projections added in v0.12.0

func (t *Table) Projections() []string

Projections implements sql.ProjectedTable

func (*Table) RenameIndex

func (t *Table) RenameIndex(ctx *sql.Context, fromIndexName string, toIndexName string) error

RenameIndex implements sql.IndexAlterableTable

func (*Table) Replacer

func (t *Table) Replacer(ctx *sql.Context) sql.RowReplacer

func (*Table) RewriteInserter added in v0.18.0

func (t *Table) RewriteInserter(ctx *sql.Context, oldSchema, newSchema sql.PrimaryKeySchema, _, _ *sql.Column, idxCols []sql.IndexColumn) (sql.RowInserter, error)

func (*Table) RowCount added in v0.15.0

func (t *Table) RowCount(ctx *sql.Context) (uint64, bool, error)

func (*Table) Schema

func (t *Table) Schema() sql.Schema

Schema implements the sql.Table interface.

func (*Table) SetForeignKeyResolved added in v0.12.0

func (t *Table) SetForeignKeyResolved(ctx *sql.Context, fkName string) error

SetForeignKeyResolved implements sql.ForeignKeyTable.

func (*Table) ShouldBuildIndex added in v0.18.0

func (t *Table) ShouldBuildIndex(ctx *sql.Context, indexDef sql.IndexDef) (bool, error)

func (*Table) ShouldRewriteTable added in v0.18.0

func (t *Table) ShouldRewriteTable(ctx *sql.Context, oldSchema, newSchema sql.PrimaryKeySchema, oldColumn, newColumn *sql.Column) bool

func (*Table) String

func (t *Table) String() string

String implements the sql.Table interface.

func (*Table) Truncate

func (t *Table) Truncate(ctx *sql.Context) (int, error)

func (*Table) UnderlyingTable added in v0.18.0

func (t *Table) UnderlyingTable() *Table

func (*Table) UpdateForeignKey added in v0.12.0

func (t *Table) UpdateForeignKey(ctx *sql.Context, fkName string, fk sql.ForeignKeyConstraint) error

UpdateForeignKey implements sql.ForeignKeyTable.

func (*Table) Updater

func (t *Table) Updater(ctx *sql.Context) sql.RowUpdater

func (*Table) WithProjections added in v0.12.0

func (t *Table) WithProjections(cols []string) sql.Table

WithProjections implements sql.ProjectedTable

type TableData added in v0.18.0

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

TableData encapsulates all schema and data for a table's schema and rows. Other aspects of a table can change freely as needed for different views on a table (column projections, index lookups, filters, etc.) but the storage of underlying data lives here.

func (TableData) Table added in v0.18.0

func (td TableData) Table(database *BaseDatabase) *Table

Table returns a table with this data

type TableFunc added in v0.18.0

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

TableFunc a simple table function that returns the instantiated value.

func (TableFunc) CheckPrivileges added in v0.18.0

func (s TableFunc) CheckPrivileges(_ *sql.Context, _ sql.PrivilegedOperationChecker) bool

func (TableFunc) Children added in v0.18.0

func (s TableFunc) Children() []sql.Node

func (TableFunc) Collation added in v0.18.0

func (TableFunc) Collation() sql.CollationID

Collation implements the sql.Table interface.

func (TableFunc) CollationCoercibility added in v0.18.0

func (TableFunc) CollationCoercibility(ctx *sql.Context) (collation sql.CollationID, coercibility byte)

CollationCoercibility implements the interface sql.CollationCoercible.

func (TableFunc) Database added in v0.18.0

func (s TableFunc) Database() sql.Database

func (TableFunc) DebugString added in v0.18.0

func (s TableFunc) DebugString() string

func (TableFunc) Description added in v0.18.0

func (s TableFunc) Description() string

func (TableFunc) Expressions added in v0.18.0

func (s TableFunc) Expressions() []sql.Expression

func (TableFunc) IsReadOnly added in v0.18.0

func (s TableFunc) IsReadOnly() bool

func (TableFunc) Name added in v0.18.0

func (s TableFunc) Name() string

func (TableFunc) NewInstance added in v0.18.0

func (s TableFunc) NewInstance(_ *sql.Context, db sql.Database, args []sql.Expression) (sql.Node, error)

func (TableFunc) Resolved added in v0.18.0

func (s TableFunc) Resolved() bool

func (TableFunc) RowIter added in v0.18.0

func (s TableFunc) RowIter(_ *sql.Context, _ sql.Row) (sql.RowIter, error)

func (TableFunc) Schema added in v0.18.0

func (s TableFunc) Schema() sql.Schema

func (TableFunc) String added in v0.18.0

func (s TableFunc) String() string

func (TableFunc) WithChildren added in v0.18.0

func (s TableFunc) WithChildren(_ ...sql.Node) (sql.Node, error)

func (TableFunc) WithDatabase added in v0.18.0

func (s TableFunc) WithDatabase(_ sql.Database) (sql.Node, error)

func (TableFunc) WithExpressions added in v0.18.0

func (s TableFunc) WithExpressions(e ...sql.Expression) (sql.Node, error)

type TableFunctionRowIter added in v0.18.0

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

func (*TableFunctionRowIter) Close added in v0.18.0

func (i *TableFunctionRowIter) Close(_ *sql.Context) error

func (*TableFunctionRowIter) Next added in v0.18.0

func (i *TableFunctionRowIter) Next(_ *sql.Context) (sql.Row, error)

type TableRevision added in v0.18.0

type TableRevision struct {
	*Table
}

TableRevision is a container for memory tables to run basic smoke tests for versioned queries. It overrides only enough of the Table interface required to pass those tests. Memory tables have a flag to force them to ignore session data and use embedded data, which is required for the versioned table tests to pass.

func NewPartitionedTableRevision added in v0.18.0

func NewPartitionedTableRevision(db *BaseDatabase, name string, schema sql.PrimaryKeySchema, fkColl *ForeignKeyCollection, numPartitions int) *TableRevision

NewPartitionedTable creates a new Table with the given name, schema and number of partitions. Assigns the default collation, therefore if a different collation is desired, please use NewPartitionedTableWithCollation.

func (*TableRevision) AddColumn added in v0.18.0

func (t *TableRevision) AddColumn(ctx *sql.Context, column *sql.Column, order *sql.ColumnOrder) error

func (*TableRevision) IgnoreSessionData added in v0.18.0

func (t *TableRevision) IgnoreSessionData() bool

func (*TableRevision) Inserter added in v0.18.0

func (t *TableRevision) Inserter(ctx *sql.Context) sql.RowInserter

type TestIndexDriver

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

TestIndexDriver is a non-performant index driver meant to aid in verification of engine correctness. It can not create or delete indexes, but will use the index types defined in this package to alter how queries are executed, retrieving values from the indexes rather than from the tables directly.

func NewIndexDriver

func NewIndexDriver(db string, indexes map[string][]sql.DriverIndex) *TestIndexDriver

NewIndexDriver returns a new index driver for database and the indexes given, keyed by the table name.

func (*TestIndexDriver) Create

func (d *TestIndexDriver) Create(db, table, id string, expressions []sql.Expression, config map[string]string) (sql.DriverIndex, error)

func (*TestIndexDriver) Delete

func (*TestIndexDriver) ID

func (d *TestIndexDriver) ID() string

func (*TestIndexDriver) LoadAll

func (d *TestIndexDriver) LoadAll(ctx *sql.Context, db, table string) ([]sql.DriverIndex, error)

func (*TestIndexDriver) Save

type Transaction added in v0.18.0

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

func (*Transaction) IsReadOnly added in v0.18.0

func (s *Transaction) IsReadOnly() bool

func (*Transaction) String added in v0.18.0

func (s *Transaction) String() string

Jump to

Keyboard shortcuts

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