Documentation ¶
Index ¶
- Constants
- Variables
- type Engine
- func (se *Engine) Close()
- func (se *Engine) GetSchema() map[string]*Table
- func (se *Engine) GetTable(tableName sqlparser.TableIdent) *Table
- func (se *Engine) InitDBConfig(dbcfgs dbconfigs.DBConfigs)
- func (se *Engine) MakeNonMaster()
- func (se *Engine) Open() error
- func (se *Engine) RegisterNotifier(name string, f notifier)
- func (se *Engine) Reload(ctx context.Context) error
- func (se *Engine) ReloadTime() time.Duration
- func (se *Engine) ServeHTTP(response http.ResponseWriter, request *http.Request)
- func (se *Engine) SetReloadTime(reloadTime time.Duration)
- func (se *Engine) SetTableForTests(table *Table)
- func (se *Engine) TableWasCreatedOrAltered(ctx context.Context, tableName string) error
- func (se *Engine) UnregisterNotifier(name string)
- type Index
- type MessageInfo
- type SequenceInfo
- type Table
- func (ta *Table) AddColumn(name string, columnType querypb.Type, defval sqltypes.Value, extra string)
- func (ta *Table) AddIndex(name string, unique bool) (index *Index)
- func (ta *Table) Done()
- func (ta *Table) FindColumn(name sqlparser.ColIdent) int
- func (ta *Table) GetPKColumn(index int) *TableColumn
- func (ta *Table) HasPrimary() bool
- func (ta *Table) SetMysqlStats(tr, dl, il, df, mdl sqltypes.Value)
- func (ta *Table) UniqueIndexes() int
- type TableColumn
Constants ¶
const ( NoType = iota Sequence Message )
Table types
Variables ¶
var TypeNames = []string{
"none",
"sequence",
"message",
}
TypeNames allows to fetch a the type name for a table. Count must match the number of table types.
Functions ¶
This section is empty.
Types ¶
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
Engine stores the schema info and performs operations that keep itself up-to-date.
func NewEngine ¶
func NewEngine(checker connpool.MySQLChecker, config tabletenv.TabletConfig) *Engine
NewEngine creates a new Engine.
func NewEngineForTests ¶
func NewEngineForTests() *Engine
NewEngineForTests creates a new engine, that can't query the database, and will not send notifications. It starts opened, and doesn't reload. Use SetTableForTests to set table schema.
func (*Engine) Close ¶
func (se *Engine) Close()
Close shuts down Engine and is idempotent. It can be re-opened after Close.
func (*Engine) GetSchema ¶
GetSchema returns the current The Tables are a shared data strucutre and must be treated as read-only.
func (*Engine) GetTable ¶
func (se *Engine) GetTable(tableName sqlparser.TableIdent) *Table
GetTable returns the info for a table.
func (*Engine) InitDBConfig ¶
InitDBConfig must be called before Open.
func (*Engine) MakeNonMaster ¶
func (se *Engine) MakeNonMaster()
MakeNonMaster clears the sequence caches to make sure that they don't get accidentally reused after losing mastership.
func (*Engine) Open ¶
Open initializes the Engine. Calling Open on an already open engine is a no-op.
func (*Engine) RegisterNotifier ¶
RegisterNotifier registers the function for schema change notification. It also causes an immediate notification to the caller. The notified function must not change the map or its contents. The only exception is the sequence table where the values can be changed using the lock.
func (*Engine) Reload ¶
Reload reloads the schema info from the db. Any tables that have changed since the last load are updated. This is a no-op if the Engine is closed.
func (*Engine) ReloadTime ¶
ReloadTime returns schema info reload time.
func (*Engine) ServeHTTP ¶
func (se *Engine) ServeHTTP(response http.ResponseWriter, request *http.Request)
func (*Engine) SetReloadTime ¶
SetReloadTime changes how often the schema is reloaded. This call also triggers an immediate reload.
func (*Engine) SetTableForTests ¶
SetTableForTests puts a Table in the map directly.
func (*Engine) TableWasCreatedOrAltered ¶
TableWasCreatedOrAltered must be called if a DDL was applied to that table.
func (*Engine) UnregisterNotifier ¶
UnregisterNotifier unregisters the notifier function.
type Index ¶
type Index struct { Name sqlparser.ColIdent Unique bool // Columns are the columns comprising the index. Columns []sqlparser.ColIdent // Cardinality[i] is the number of distinct values of Columns[i] in the // table. Cardinality []uint64 }
Index contains info about a table index.
type MessageInfo ¶
type MessageInfo struct { // IDPKIndex is the index of the ID column // in PKvalues. This is used to extract the ID // value for message tables to discard items // from the cache. IDPKIndex int // Fields stores the field info to be // returned for subscribers. Fields []*querypb.Field // AckWaitDuration specifies how long to wait after // the message was first sent. The back-off doubles // every attempt. AckWaitDuration time.Duration // PurgeAfterDuration specifies the time after which // a successfully acked message can be deleted. PurgeAfterDuration time.Duration // BatchSize specifies the max number of events to // send per response. BatchSize int // CacheSize specifies the number of messages to keep // in cache. Anything that cannot fit in the cache // is sent as best effort. CacheSize int // PollInterval specifies the polling frequency to // look for messages to be sent. PollInterval time.Duration }
MessageInfo contains info specific to message tables.
type SequenceInfo ¶
SequenceInfo contains info specific to sequence tabels. It must be locked before accessing the values inside. If CurVal==LastVal, we have to cache new values. When the schema is first loaded, the values are all 0, which will trigger caching on first use.
type Table ¶
type Table struct { Name sqlparser.TableIdent Columns []TableColumn Indexes []*Index PKColumns []int Type int // SequenceInfo contains info for sequence tables. SequenceInfo *SequenceInfo // MessageInfo contains info for message tables. MessageInfo *MessageInfo // These vars can be accessed concurrently. TableRows sync2.AtomicInt64 DataLength sync2.AtomicInt64 IndexLength sync2.AtomicInt64 DataFree sync2.AtomicInt64 MaxDataLength sync2.AtomicInt64 }
Table contains info about a table.
func LoadTable ¶
func LoadTable(conn *connpool.DBConn, tableName string, tableType string, comment string) (*Table, error)
LoadTable creates a Table from the schema info in the database.
func (*Table) AddColumn ¶
func (ta *Table) AddColumn(name string, columnType querypb.Type, defval sqltypes.Value, extra string)
AddColumn adds a column to the Table.
func (*Table) Done ¶
func (ta *Table) Done()
Done must be called after columns and indexes are added to the table. It will build additional metadata like PKColumns.
func (*Table) FindColumn ¶
FindColumn finds a column in the table. It returns the index if found. Otherwise, it returns -1.
func (*Table) GetPKColumn ¶
func (ta *Table) GetPKColumn(index int) *TableColumn
GetPKColumn returns the pk column specified by the index.
func (*Table) HasPrimary ¶
HasPrimary returns true if the table has a primary key.
func (*Table) SetMysqlStats ¶
SetMysqlStats receives the values found in the mysql information_schema.tables table
func (*Table) UniqueIndexes ¶
UniqueIndexes returns the number of unique indexes on the table
Directories ¶
Path | Synopsis |
---|---|
Package schematest provides support for testing packages that depend on schema
|
Package schematest provides support for testing packages that depend on schema |