Documentation ¶
Index ¶
- Constants
- func EncodeIndexValue(value *IndexValue) ([]byte, error)
- func NewMemoryDBProvider(dbs ...sql.Database) sql.MutableDatabaseProvider
- func NewTableEditAccumulator(t *Table) tableEditAccumulator
- type BaseDatabase
- func (d *BaseDatabase) AddTable(name string, t sql.Table)
- func (d *BaseDatabase) CreateTable(ctx *sql.Context, name string, schema sql.PrimaryKeySchema) error
- func (d *BaseDatabase) CreateTrigger(ctx *sql.Context, definition sql.TriggerDefinition) error
- func (d *BaseDatabase) DropStoredProcedure(ctx *sql.Context, name string) error
- func (d *BaseDatabase) DropTable(ctx *sql.Context, name string) error
- func (d *BaseDatabase) DropTrigger(ctx *sql.Context, name string) error
- func (d *BaseDatabase) EnablePrimaryKeyIndexes()
- func (d *BaseDatabase) GetStoredProcedures(ctx *sql.Context) ([]sql.StoredProcedureDetails, error)
- func (d *BaseDatabase) GetTableInsensitive(ctx *sql.Context, tblName string) (sql.Table, bool, error)
- func (d *BaseDatabase) GetTableNames(ctx *sql.Context) ([]string, error)
- func (d *BaseDatabase) GetTriggers(ctx *sql.Context) ([]sql.TriggerDefinition, error)
- func (d *BaseDatabase) Name() string
- func (d *BaseDatabase) RenameTable(ctx *sql.Context, oldName, newName string) error
- func (d *BaseDatabase) SaveStoredProcedure(ctx *sql.Context, spd sql.StoredProcedureDetails) error
- func (d *BaseDatabase) Tables() map[string]sql.Table
- type Database
- func (d *Database) AllViews(ctx *sql.Context) ([]sql.ViewDefinition, error)
- func (d *Database) CreateView(ctx *sql.Context, name string, selectStatement string) error
- func (d *Database) DropView(ctx *sql.Context, name string) error
- func (d *Database) GetView(ctx *sql.Context, viewName string) (string, bool, error)
- type ExpressionsIndex
- type FilteredTable
- type GlobalsMap
- type HistoryDatabase
- func (db *HistoryDatabase) AddTableAsOf(name string, t sql.Table, asOf interface{})
- func (db *HistoryDatabase) GetTableInsensitiveAsOf(ctx *sql.Context, tblName string, time interface{}) (sql.Table, bool, error)
- func (db *HistoryDatabase) GetTableNamesAsOf(ctx *sql.Context, time interface{}) ([]string, error)
- type InMemoryPersistedSession
- func (s *InMemoryPersistedSession) GetPersistedValue(k string) (interface{}, error)
- func (s *InMemoryPersistedSession) PersistGlobal(sysVarName string, value interface{}) error
- func (s *InMemoryPersistedSession) RemoveAllPersistedGlobals() error
- func (s *InMemoryPersistedSession) RemovePersistedGlobal(sysVarName string) error
- type Index
- func (idx *Index) ColumnExpressionTypes(*sql.Context) []sql.ColumnExpressionType
- func (idx *Index) ColumnExpressions() []sql.Expression
- func (idx *Index) Comment() string
- func (idx *Index) Database() string
- func (idx *Index) Driver() string
- func (idx *Index) Expressions() []string
- func (idx *Index) ID() string
- func (idx *Index) IndexType() string
- func (idx *Index) IsGenerated() bool
- func (idx *Index) IsUnique() bool
- func (idx *Index) MemTable() *Table
- func (idx *Index) NewLookup(ctx *sql.Context, ranges ...sql.Range) (sql.IndexLookup, error)
- func (idx *Index) Table() string
- type IndexLookup
- func (eil *IndexLookup) EvalExpression() sql.Expression
- func (eil *IndexLookup) Index() sql.Index
- func (eil *IndexLookup) Indexes() []string
- func (eil *IndexLookup) Ranges() sql.RangeCollection
- func (eil *IndexLookup) String() string
- func (eil *IndexLookup) Values(p sql.Partition) (sql.IndexValueIter, error)
- type IndexValue
- type MemoryDatabase
- type Partition
- type ReadOnlyDatabase
- type Table
- func (t *Table) AddColumn(ctx *sql.Context, column *sql.Column, order *sql.ColumnOrder) error
- func (t *Table) AutoIncrementSetter(*sql.Context) sql.AutoIncrementSetter
- func (t *Table) CreateCheck(_ *sql.Context, check *sql.CheckDefinition) error
- func (t *Table) CreateForeignKey(_ *sql.Context, fkName string, columns []string, referencedTable string, ...) error
- func (t *Table) CreateIndex(ctx *sql.Context, indexName string, using sql.IndexUsing, ...) error
- func (t *Table) CreatePrimaryKey(ctx *sql.Context, columns []sql.IndexColumn) error
- func (t *Table) DataLength(ctx *sql.Context) (uint64, error)
- func (t *Table) DebugString() string
- func (t *Table) Deleter(*sql.Context) sql.RowDeleter
- func (t *Table) DropCheck(ctx *sql.Context, chName string) error
- func (t *Table) DropColumn(ctx *sql.Context, columnName string) error
- func (t *Table) DropForeignKey(ctx *sql.Context, fkName string) error
- func (t *Table) DropIndex(ctx *sql.Context, indexName string) error
- func (t *Table) DropPrimaryKey(ctx *sql.Context) error
- func (t *Table) EnablePrimaryKeyIndexes()
- func (t *Table) Filters() []sql.Expression
- func (t *Table) GetChecks(_ *sql.Context) ([]sql.CheckDefinition, error)
- func (t *Table) GetForeignKeys(_ *sql.Context) ([]sql.ForeignKeyConstraint, error)
- func (t *Table) GetIndexes(ctx *sql.Context) ([]sql.Index, error)
- func (t *Table) GetNextAutoIncrementValue(ctx *sql.Context, insertVal interface{}) (interface{}, error)
- func (t *Table) GetPartition(key string) []sql.Row
- func (t *Table) HandledFilters(filters []sql.Expression) []sql.Expression
- func (t *Table) IndexKeyValues(ctx *sql.Context, colNames []string) (sql.PartitionIndexKeyValueIter, error)
- func (t *Table) Insert(ctx *sql.Context, row sql.Row) error
- func (t *Table) Inserter(*sql.Context) sql.RowInserter
- func (t *Table) ModifyColumn(ctx *sql.Context, columnName string, column *sql.Column, ...) error
- func (t *Table) Name() string
- func (t *Table) NumRows(ctx *sql.Context) (uint64, error)
- func (t *Table) PartitionCount(ctx *sql.Context) (int64, error)
- func (t *Table) PartitionRows(ctx *sql.Context, partition sql.Partition) (sql.RowIter, error)
- func (t *Table) Partitions(ctx *sql.Context) (sql.PartitionIter, error)
- func (t *Table) PeekNextAutoIncrementValue(*sql.Context) (interface{}, error)
- func (t *Table) PrimaryKeySchema() sql.PrimaryKeySchema
- func (t *Table) RenameIndex(ctx *sql.Context, fromIndexName string, toIndexName string) error
- func (t *Table) Replacer(*sql.Context) sql.RowReplacer
- func (t *Table) Schema() sql.Schema
- func (t *Table) String() string
- func (t *Table) Truncate(ctx *sql.Context) (int, error)
- func (t *Table) Updater(*sql.Context) sql.RowUpdater
- func (t *Table) WithIndexLookup(lookup sql.IndexLookup) sql.Table
- func (t *Table) WithProjection(colNames []string) sql.Table
- type TestIndexDriver
- func (d *TestIndexDriver) Create(db, table, id string, expressions []sql.Expression, config map[string]string) (sql.DriverIndex, error)
- func (d *TestIndexDriver) Delete(sql.DriverIndex, sql.PartitionIter) error
- func (d *TestIndexDriver) ID() string
- func (d *TestIndexDriver) LoadAll(ctx *sql.Context, db, table string) ([]sql.DriverIndex, error)
- func (d *TestIndexDriver) Save(*sql.Context, sql.DriverIndex, sql.PartitionIndexKeyValueIter) error
Constants ¶
const CommentPreventingIndexBuilding = "__FOR TESTING: I cannot be built__"
const IndexDriverId = "MemoryIndexDriver"
Variables ¶
This section is empty.
Functions ¶
func EncodeIndexValue ¶
func EncodeIndexValue(value *IndexValue) ([]byte, error)
func NewMemoryDBProvider ¶
func NewMemoryDBProvider(dbs ...sql.Database) sql.MutableDatabaseProvider
func NewTableEditAccumulator ¶
func NewTableEditAccumulator(t *Table) tableEditAccumulator
NewTableEditAccumulator returns a tableEditAccumulator based on the schema.
Types ¶
type BaseDatabase ¶
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 ¶
func NewViewlessDatabase(name string) *BaseDatabase
NewViewlessDatabase creates a new database that doesn't persist views. Used only for testing. Use NewDatabase.
func (*BaseDatabase) AddTable ¶
func (d *BaseDatabase) AddTable(name string, t sql.Table)
AddTable adds a new table to the database.
func (*BaseDatabase) CreateTable ¶
func (d *BaseDatabase) CreateTable(ctx *sql.Context, name string, schema sql.PrimaryKeySchema) error
CreateTable creates a table with the given name and schema
func (*BaseDatabase) CreateTrigger ¶
func (d *BaseDatabase) CreateTrigger(ctx *sql.Context, definition sql.TriggerDefinition) error
func (*BaseDatabase) DropStoredProcedure ¶
func (d *BaseDatabase) DropStoredProcedure(ctx *sql.Context, name string) error
DropStoredProcedure implements sql.StoredProcedureDatabase
func (*BaseDatabase) DropTable ¶
func (d *BaseDatabase) DropTable(ctx *sql.Context, name string) error
DropTable drops the table with the given name
func (*BaseDatabase) DropTrigger ¶
func (d *BaseDatabase) DropTrigger(ctx *sql.Context, name string) error
func (*BaseDatabase) EnablePrimaryKeyIndexes ¶
func (d *BaseDatabase) EnablePrimaryKeyIndexes()
EnablePrimaryKeyIndexes causes every table created in this database to use an index on its primary partitionKeys
func (*BaseDatabase) GetStoredProcedures ¶
func (d *BaseDatabase) GetStoredProcedures(ctx *sql.Context) ([]sql.StoredProcedureDetails, error)
GetStoredProcedures implements sql.StoredProcedureDatabase
func (*BaseDatabase) GetTableInsensitive ¶
func (*BaseDatabase) GetTableNames ¶
func (d *BaseDatabase) GetTableNames(ctx *sql.Context) ([]string, error)
func (*BaseDatabase) GetTriggers ¶
func (d *BaseDatabase) GetTriggers(ctx *sql.Context) ([]sql.TriggerDefinition, error)
func (*BaseDatabase) RenameTable ¶
func (d *BaseDatabase) RenameTable(ctx *sql.Context, oldName, newName string) error
func (*BaseDatabase) SaveStoredProcedure ¶
func (d *BaseDatabase) SaveStoredProcedure(ctx *sql.Context, spd sql.StoredProcedureDetails) error
SaveStoredProcedure implements sql.StoredProcedureDatabase
type Database ¶
type Database struct { *BaseDatabase // contains filtered or unexported fields }
Database is an in-memory database.
func NewDatabase ¶
NewDatabase creates a new database with the given name.
func (*Database) CreateView ¶
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 ¶
type FilteredTable struct {
*Table
}
sql.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 ¶
func NewFilteredTable(name string, schema sql.PrimaryKeySchema) *FilteredTable
func (*FilteredTable) WithFilters ¶
func (t *FilteredTable) WithFilters(ctx *sql.Context, filters []sql.Expression) sql.Table
WithFilters implements the sql.FilteredTable interface.
func (*FilteredTable) WithProjection ¶
func (t *FilteredTable) WithProjection(colNames []string) sql.Table
WithFilters implements the sql.FilteredTable interface.
type GlobalsMap ¶
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 (*HistoryDatabase) GetTableNamesAsOf ¶
func (db *HistoryDatabase) GetTableNamesAsOf(ctx *sql.Context, time interface{}) ([]string, error)
type InMemoryPersistedSession ¶
func NewInMemoryPersistedSession ¶
func NewInMemoryPersistedSession(sess sql.Session, persistedGlobals GlobalsMap) *InMemoryPersistedSession
NewInMemoryPersistedSession is a sql.PersistableSession that writes global variables to an im-memory map
func (*InMemoryPersistedSession) GetPersistedValue ¶
func (s *InMemoryPersistedSession) GetPersistedValue(k string) (interface{}, error)
RemoveAllPersistedGlobals implements sql.PersistableSession
func (*InMemoryPersistedSession) PersistGlobal ¶
func (s *InMemoryPersistedSession) PersistGlobal(sysVarName string, value interface{}) error
PersistGlobal implements sql.PersistableSession
func (*InMemoryPersistedSession) RemoveAllPersistedGlobals ¶
func (s *InMemoryPersistedSession) RemoveAllPersistedGlobals() error
RemoveAllPersistedGlobals implements sql.PersistableSession
func (*InMemoryPersistedSession) RemovePersistedGlobal ¶
func (s *InMemoryPersistedSession) RemovePersistedGlobal(sysVarName string) error
RemovePersistedGlobal implements sql.PersistableSession
type Index ¶
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 CommentStr string }
func (*Index) ColumnExpressionTypes ¶
func (idx *Index) ColumnExpressionTypes(*sql.Context) []sql.ColumnExpressionType
ColumnExpressionTypes implements the interface sql.Index.
func (*Index) ColumnExpressions ¶
func (idx *Index) ColumnExpressions() []sql.Expression
func (*Index) Expressions ¶
func (*Index) IsGenerated ¶
type IndexLookup ¶
type IndexLookup struct { Expr sql.Expression // contains filtered or unexported fields }
func NewIndexLookup ¶
func NewIndexLookup(ctx *sql.Context, idx ExpressionsIndex, expr sql.Expression, ranges ...sql.Range) *IndexLookup
func (*IndexLookup) EvalExpression ¶
func (eil *IndexLookup) EvalExpression() sql.Expression
func (*IndexLookup) Index ¶
func (eil *IndexLookup) Index() sql.Index
Index implements the interface sql.IndexLookup.
func (*IndexLookup) Indexes ¶
func (eil *IndexLookup) Indexes() []string
func (*IndexLookup) Ranges ¶
func (eil *IndexLookup) Ranges() sql.RangeCollection
Ranges implements the interface sql.IndexLookup.
func (*IndexLookup) String ¶
func (eil *IndexLookup) String() string
func (*IndexLookup) Values ¶
func (eil *IndexLookup) Values(p sql.Partition) (sql.IndexValueIter, error)
type IndexValue ¶
func DecodeIndexValue ¶
func DecodeIndexValue(data []byte) (*IndexValue, error)
type MemoryDatabase ¶
type Partition ¶
type Partition struct {
// contains filtered or unexported fields
}
func NewPartition ¶
type ReadOnlyDatabase ¶
type ReadOnlyDatabase struct {
*HistoryDatabase
}
func NewReadOnlyDatabase ¶
func NewReadOnlyDatabase(name string) ReadOnlyDatabase
func (ReadOnlyDatabase) IsReadOnly ¶
func (d ReadOnlyDatabase) IsReadOnly() bool
type Table ¶
type Table struct {
// contains filtered or unexported fields
}
Table represents an in-memory database table.
func NewPartitionedTable ¶
func NewPartitionedTable(name string, schema sql.PrimaryKeySchema, numPartitions int) *Table
NewPartitionedTable creates a new Table with the given name, schema and number of partitions.
func NewTable ¶
func NewTable(name string, schema sql.PrimaryKeySchema) *Table
NewTable creates a new Table with the given name and schema.
func (*Table) AutoIncrementSetter ¶
func (t *Table) AutoIncrementSetter(*sql.Context) sql.AutoIncrementSetter
func (*Table) CreateCheck ¶
CreateCheck implements sql.CheckAlterableTable
func (*Table) CreateForeignKey ¶
func (t *Table) CreateForeignKey(_ *sql.Context, fkName string, columns []string, referencedTable string, referencedColumns []string, onUpdate, onDelete sql.ForeignKeyReferenceOption) error
CreateForeignKey implements sql.ForeignKeyAlterableTable. Foreign partitionKeys are not enforced on update / delete.
func (*Table) CreateIndex ¶
func (t *Table) CreateIndex(ctx *sql.Context, indexName string, using sql.IndexUsing, constraint sql.IndexConstraint, columns []sql.IndexColumn, comment string) error
CreateIndex implements sql.IndexAlterableTable
func (*Table) CreatePrimaryKey ¶
CreatePrimaryKey implements the PrimaryKeyAlterableTable
func (*Table) DebugString ¶
func (*Table) DropCheck ¶
func (t *Table) DropCheck(ctx *sql.Context, chName string) error {} implements sql.CheckAlterableTable.
func (*Table) DropForeignKey ¶
DropForeignKey implements sql.ForeignKeyAlterableTable.
func (*Table) DropPrimaryKey ¶
DropPrimaryKey implements the PrimaryKeyAlterableTable
func (*Table) EnablePrimaryKeyIndexes ¶
func (t *Table) EnablePrimaryKeyIndexes()
EnablePrimaryKeyIndexes enables the use of primary key indexes on this table.
func (*Table) Filters ¶
func (t *Table) Filters() []sql.Expression
Filters implements the sql.FilteredTable interface.
func (*Table) GetForeignKeys ¶
GetForeignKeys implements sql.ForeignKeyTable
func (*Table) GetIndexes ¶
GetIndexes implements sql.IndexedTable
func (*Table) GetNextAutoIncrementValue ¶
func (t *Table) GetNextAutoIncrementValue(ctx *sql.Context, insertVal interface{}) (interface{}, error)
GetNextAutoIncrementValue gets the next auto increment value for the memory table the increment.
func (*Table) HandledFilters ¶
func (t *Table) HandledFilters(filters []sql.Expression) []sql.Expression
HandledFilters implements the sql.FilteredTable interface.
func (*Table) IndexKeyValues ¶
func (t *Table) IndexKeyValues( ctx *sql.Context, colNames []string, ) (sql.PartitionIndexKeyValueIter, error)
IndexKeyValues implements the sql.IndexableTable interface.
func (*Table) ModifyColumn ¶
func (*Table) PartitionCount ¶
PartitionCount implements the sql.PartitionCounter interface.
func (*Table) PartitionRows ¶
PartitionRows implements the sql.PartitionRows interface.
func (*Table) Partitions ¶
Partitions implements the sql.Table interface.
func (*Table) PeekNextAutoIncrementValue ¶
PeekNextAutoIncrementValue peeks at the next AUTO_INCREMENT value
func (*Table) PrimaryKeySchema ¶
func (t *Table) PrimaryKeySchema() sql.PrimaryKeySchema
PrimaryKeySchema implements sql.PrimaryKeyAlterableTable
func (*Table) RenameIndex ¶
RenameIndex implements sql.IndexAlterableTable
func (*Table) WithIndexLookup ¶
func (t *Table) WithIndexLookup(lookup sql.IndexLookup) sql.Table
WithIndexLookup implements the sql.IndexAddressableTable interface.
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 (d *TestIndexDriver) Delete(sql.DriverIndex, sql.PartitionIter) error
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 ¶
func (d *TestIndexDriver) Save(*sql.Context, sql.DriverIndex, sql.PartitionIndexKeyValueIter) error