Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AutoColumn ¶
AutoColumn model
func GetAutoColumnFromDef ¶
func GetAutoColumnFromDef(def *plan.TableDef) []AutoColumn
GetAutoColumnFromDef get auto columns from table def
type AutoIncrementService ¶
type AutoIncrementService interface {
// Create a separate transaction is used to create the cache service and insert records
// into catalog.AutoIncrTableName before the transaction that created the table is committed.
// When the transaction that created the table is rolled back, the corresponding records in
// catalog.AutoIncrTableName are deleted.
Create(ctx context.Context, tableID uint64, caches []AutoColumn, txn client.TxnOperator) error
// Reset consists of delete+create, if keep is true, then the new self-incrementing column cache
// will retain the value of the old cache
Reset(ctx context.Context, oldTableID, newTableID uint64, keep bool, txn client.TxnOperator) error
// Delete until the delete table transaction is committed, no operation is performed, only the
// records to be deleted are recorded. When the delete table transaction is committed, the
// delete operation is triggered.
Delete(ctx context.Context, tableID uint64, txn client.TxnOperator) error
// InsertValues insert auto columns values into bat.
InsertValues(ctx context.Context, tableID uint64, bat *batch.Batch) (uint64, error)
// CurrentValue return current incr column value.
CurrentValue(ctx context.Context, tableID uint64, col string) (uint64, error)
// Close close the auto increment service
Close()
}
AutoIncrementService provides data service for the columns of auto-increment. Each CN contains a service instance. Whenever a table containing an auto-increment column is created, the service internally creates a data cache for the auto-increment column to avoid updating the sequence values of these auto-increment columns each time data is inserted.
func GetAutoIncrementService ¶
func GetAutoIncrementService() AutoIncrementService
GetAutoIncrementService get increment service from process level runtime
func NewIncrService ¶
func NewIncrService( store IncrValueStore, cfg Config) AutoIncrementService
type Config ¶
type Config struct {
// CountPerAllocate how many ids are cached in the current cn node for each assignment
CountPerAllocate int `toml:"count-per-allocate"`
// LowCapacity when the remaining number of ids is less than this value, the current cn
// node will initiate asynchronous task assignment in advance
LowCapacity int `toml:"low-capacity"`
}
Config auto increment config
type IncrValueStore ¶
type IncrValueStore interface {
// GetColumns return auto columns of table.
GetColumns(ctx context.Context, tableID uint64, txnOp client.TxnOperator) ([]AutoColumn, error)
// Create add metadata records into catalog.AutoIncrTableName.
Create(ctx context.Context, tableID uint64, cols []AutoColumn, txnOp client.TxnOperator) error
// Allocate allocate new range for auto-increment column.
Allocate(ctx context.Context, tableID uint64, col string, count int, txnOp client.TxnOperator) (uint64, uint64, error)
// UpdateMinValue update auto column min value to specified value.
UpdateMinValue(ctx context.Context, tableID uint64, col string, minValue uint64, txnOp client.TxnOperator) error
// Delete remove metadata records from catalog.AutoIncrTableName.
Delete(ctx context.Context, tableID uint64) error
// Close the store
Close()
}
IncrValueStore is used to add and delete metadata records for auto-increment columns.
func NewSQLStore ¶
func NewSQLStore(exec executor.SQLExecutor) (IncrValueStore, error)
Click to show internal directories.
Click to hide internal directories.