Documentation ¶
Index ¶
- Constants
- Variables
- func IsIndexPrefixCovered(tbInfo *TableInfo, index *IndexInfo, cols ...CIStr) bool
- func LessDBInfo(a *DBInfo, b *DBInfo) bool
- func TSConvert2Time(ts uint64) time.Time
- type ActionType
- type AffectedOption
- type BackfillState
- type CIStr
- type ChangeStateInfo
- type ColumnChoice
- type ColumnInfo
- func (c *ColumnInfo) AddFlag(flag uint)
- func (c *ColumnInfo) AndFlag(flag uint)
- func (c *ColumnInfo) Clone() *ColumnInfo
- func (c *ColumnInfo) DelFlag(flag uint)
- func (c *ColumnInfo) GetCharset() string
- func (c *ColumnInfo) GetCollate() string
- func (c *ColumnInfo) GetDecimal() int
- func (c *ColumnInfo) GetDefaultValue() interface{}
- func (c *ColumnInfo) GetElems() []string
- func (c *ColumnInfo) GetFlag() uint
- func (c *ColumnInfo) GetFlen() int
- func (c *ColumnInfo) GetOriginDefaultValue() interface{}
- func (c *ColumnInfo) GetType() byte
- func (c *ColumnInfo) GetTypeDesc() string
- func (c *ColumnInfo) IsGenerated() bool
- func (c *ColumnInfo) SetCharset(charset string)
- func (c *ColumnInfo) SetCollate(collate string)
- func (c *ColumnInfo) SetDecimal(decimal int)
- func (c *ColumnInfo) SetDefaultValue(value interface{}) error
- func (c *ColumnInfo) SetElems(elems []string)
- func (c *ColumnInfo) SetFlag(flag uint)
- func (c *ColumnInfo) SetFlen(flen int)
- func (c *ColumnInfo) SetOriginDefaultValue(value interface{}) error
- func (c *ColumnInfo) SetType(tp byte)
- func (c *ColumnInfo) ToggleFlag(flag uint)
- type ConstraintInfo
- type DBInfo
- type DDLReorgMeta
- type ExchangePartitionInfo
- type FKInfo
- type HistoryInfo
- type IndexColumn
- type IndexInfo
- type IndexType
- type Job
- func (job *Job) Clone() *Job
- func (job *Job) Decode(b []byte) error
- func (job *Job) DecodeArgs(args ...interface{}) error
- func (job *Job) Encode(updateRawArgs bool) ([]byte, error)
- func (job *Job) FinishDBJob(jobState JobState, schemaState SchemaState, ver int64, dbInfo *DBInfo)
- func (job *Job) FinishMultipleTableJob(jobState JobState, schemaState SchemaState, ver int64, tblInfos []*TableInfo)
- func (job *Job) FinishTableJob(jobState JobState, schemaState SchemaState, ver int64, tblInfo *TableInfo)
- func (job *Job) GetRowCount() int64
- func (job *Job) GetWarnings() (map[errors.ErrorID]*terror.Error, map[errors.ErrorID]int64)
- func (job *Job) IsCancelled() bool
- func (job *Job) IsCancelling() bool
- func (job *Job) IsDependentOn(other *Job) (bool, error)
- func (job *Job) IsDone() bool
- func (job *Job) IsFinished() bool
- func (job *Job) IsQueueing() bool
- func (job *Job) IsRollbackDone() bool
- func (job *Job) IsRollbackable() bool
- func (job *Job) IsRollingback() bool
- func (job *Job) IsRunning() bool
- func (job *Job) IsSynced() bool
- func (job *Job) MarkNonRevertible()
- func (job *Job) MayNeedReorg() bool
- func (job *Job) NotStarted() bool
- func (job *Job) SetRowCount(count int64)
- func (job *Job) SetWarnings(warnings map[errors.ErrorID]*terror.Error, ...)
- func (job *Job) String() string
- type JobState
- type MultiSchemaInfo
- type PartitionDefinition
- type PartitionInfo
- func (pi *PartitionInfo) Clone() *PartitionInfo
- func (pi *PartitionInfo) FindPartitionDefinitionByName(partitionDefinitionName string) int
- func (pi *PartitionInfo) GCPartitionStates()
- func (pi *PartitionInfo) GetNameByID(id int64) string
- func (pi *PartitionInfo) GetStateByID(id int64) SchemaState
- func (pi *PartitionInfo) SetStateByID(id int64, state SchemaState)
- type PartitionState
- type PartitionType
- type PlacementSettings
- type PolicyInfo
- type PolicyRefInfo
- type PrimaryKeyType
- type ReferOptionType
- type ReferredFKInfo
- type ReorgType
- type SchemaDiff
- type SchemaState
- type SequenceInfo
- type SessionInfo
- type StatsOptions
- type StatsWindowSettings
- type SubJob
- type TTLInfo
- type TableCacheStatusType
- type TableInfo
- func (t *TableInfo) ClearPlacement()
- func (t *TableInfo) Clone() *TableInfo
- func (t *TableInfo) Cols() []*ColumnInfo
- func (t *TableInfo) ColumnIsInIndex(c *ColumnInfo) bool
- func (t *TableInfo) ContainsAutoRandomBits() bool
- func (t *TableInfo) FindColumnNameByID(id int64) string
- func (t *TableInfo) FindConstraintInfoByName(constrName string) *ConstraintInfo
- func (t *TableInfo) FindIndexByName(idxName string) *IndexInfo
- func (t *TableInfo) FindIndexNameByID(id int64) string
- func (t *TableInfo) FindPublicColumnByName(colNameL string) *ColumnInfo
- func (t *TableInfo) GetAutoIncrementColInfo() *ColumnInfo
- func (t *TableInfo) GetDBID(dbID int64) int64
- func (t *TableInfo) GetPartitionInfo() *PartitionInfo
- func (t *TableInfo) GetPkColInfo() *ColumnInfo
- func (t *TableInfo) GetPkName() CIStr
- func (t *TableInfo) GetPrimaryKey() *IndexInfo
- func (t *TableInfo) GetUpdateTime() time.Time
- func (t *TableInfo) HasClusteredIndex() bool
- func (t *TableInfo) IsAutoIncColUnsigned() bool
- func (t *TableInfo) IsAutoRandomBitColUnsigned() bool
- func (t *TableInfo) IsBaseTable() bool
- func (t *TableInfo) IsLocked() bool
- func (t *TableInfo) IsSequence() bool
- func (t *TableInfo) IsView() bool
- func (t *TableInfo) MoveColumnInfo(from, to int)
- func (t *TableInfo) SepAutoInc() bool
- type TableItemID
- type TableLockInfo
- type TableLockState
- type TableLockTpInfo
- type TableLockType
- type TempTableType
- type TiFlashReplicaInfo
- type TimeZoneLocation
- type ViewAlgorithm
- type ViewCheckOption
- type ViewInfo
- type ViewSecurity
- type WindowRepeatType
Constants ¶
const ( // FlagIgnoreTruncate indicates if truncate error should be ignored. // Read-only statements should ignore truncate error, write statements should not ignore truncate error. FlagIgnoreTruncate uint64 = 1 // FlagTruncateAsWarning indicates if truncate error should be returned as warning. // This flag only matters if FlagIgnoreTruncate is not set, in strict sql mode, truncate error should // be returned as error, in non-strict sql mode, truncate error should be saved as warning. FlagTruncateAsWarning = 1 << 1 // FlagPadCharToFullLength indicates if sql_mode 'PAD_CHAR_TO_FULL_LENGTH' is set. FlagPadCharToFullLength = 1 << 2 // FlagInInsertStmt indicates if this is a INSERT statement. FlagInInsertStmt = 1 << 3 // FlagInUpdateOrDeleteStmt indicates if this is a UPDATE statement or a DELETE statement. FlagInUpdateOrDeleteStmt = 1 << 4 // FlagInSelectStmt indicates if this is a SELECT statement. FlagInSelectStmt = 1 << 5 // FlagOverflowAsWarning indicates if overflow error should be returned as warning. // In strict sql mode, overflow error should be returned as error, // in non-strict sql mode, overflow error should be saved as warning. FlagOverflowAsWarning = 1 << 6 // FlagIgnoreZeroInDate indicates if ZeroInDate error should be ignored. // Read-only statements should ignore ZeroInDate error. // Write statements should not ignore ZeroInDate error in strict sql mode. FlagIgnoreZeroInDate = 1 << 7 // FlagDividedByZeroAsWarning indicates if DividedByZero should be returned as warning. FlagDividedByZeroAsWarning = 1 << 8 // FlagInSetOprStmt indicates if this is a UNION/EXCEPT/INTERSECT statement. FlagInSetOprStmt = 1 << 9 // FlagInLoadDataStmt indicates if this is a LOAD DATA statement. FlagInLoadDataStmt = 1 << 10 // FlagInRestrictedSQL indicates if this request is in a restricted SQL. Auto Analyze is one example FlagInRestrictedSQL = 1 << 11 )
Flags are used by tipb.SelectRequest.Flags to handle execution mode, like how to handle truncate error.
const ( // ColumnInfoVersion0 means the column info version is 0. ColumnInfoVersion0 = uint64(0) // ColumnInfoVersion1 means the column info version is 1. ColumnInfoVersion1 = uint64(1) // ColumnInfoVersion2 means the column info version is 2. // This is for v2.1.7 to Compatible with older versions charset problem. // Old version such as v2.0.8 treat utf8 as utf8mb4, because there is no UTF8 check in v2.0.8. // After version V2.1.2 (PR#8738) , TiDB add UTF8 check, then the user upgrade from v2.0.8 insert some UTF8MB4 characters will got error. // This is not compatibility for user. Then we try to fix this in PR #9820, and increase the version number. ColumnInfoVersion2 = uint64(2) // CurrLatestColumnInfoVersion means the latest column info in the current TiDB. CurrLatestColumnInfoVersion = ColumnInfoVersion2 )
const ( // TableInfoVersion0 means the table info version is 0. // Upgrade from v2.1.1 or v2.1.2 to v2.1.3 and later, and then execute a "change/modify column" statement // that does not specify a charset value for column. Then the following error may be reported: // ERROR 1105 (HY000): unsupported modify charset from utf8mb4 to utf8. // To eliminate this error, we will not modify the charset of this column // when executing a change/modify column statement that does not specify a charset value for column. // This behavior is not compatible with MySQL. TableInfoVersion0 = uint16(0) // TableInfoVersion1 means the table info version is 1. // When we execute a change/modify column statement that does not specify a charset value for column, // we set the charset of this column to the charset of table. This behavior is compatible with MySQL. TableInfoVersion1 = uint16(1) // TableInfoVersion2 means the table info version is 2. // This is for v2.1.7 to Compatible with older versions charset problem. // Old version such as v2.0.8 treat utf8 as utf8mb4, because there is no UTF8 check in v2.0.8. // After version V2.1.2 (PR#8738) , TiDB add UTF8 check, then the user upgrade from v2.0.8 insert some UTF8MB4 characters will got error. // This is not compatibility for user. Then we try to fix this in PR #9820, and increase the version number. TableInfoVersion2 = uint16(2) // TableInfoVersion3 means the table info version is 3. // This version aims to deal with upper-cased charset name in TableInfo stored by versions prior to TiDB v2.1.9: // TiDB always suppose all charsets / collations as lower-cased and try to convert them if they're not. // However, the convert is missed in some scenarios before v2.1.9, so for all those tables prior to TableInfoVersion3, their // charsets / collations will be converted to lower-case while loading from the storage. TableInfoVersion3 = uint16(3) // TableInfoVersion4 is not used. TableInfoVersion4 = uint16(4) // TableInfoVersion5 indicates that the auto_increment allocator in TiDB has been separated from // _tidb_rowid allocator when AUTO_ID_CACHE is 1. This version is introduced to preserve the compatibility of old tables: // the tables with version <= TableInfoVersion4 still use a single allocator for auto_increment and _tidb_rowid. // Also see https://github.com/wuhuizuo/tidb6/issues/982. TableInfoVersion5 = uint16(5) // CurrLatestTableInfoVersion means the latest table info in the current TiDB. CurrLatestTableInfoVersion = TableInfoVersion5 )
const ( DefaultSequenceCacheBool = true DefaultSequenceCycleBool = false DefaultSequenceOrderBool = false DefaultSequenceCacheValue = int64(1000) DefaultSequenceIncrementValue = int64(1) DefaultPositiveSequenceStartValue = int64(1) DefaultNegativeSequenceStartValue = int64(-1) DefaultPositiveSequenceMinValue = int64(1) DefaultPositiveSequenceMaxValue = int64(9223372036854775806) DefaultNegativeSequenceMaxValue = int64(-1) DefaultNegativeSequenceMinValue = int64(-9223372036854775807) )
const ( // FKVersion0 indicate the FKInfo version is 0. // In FKVersion0, TiDB only supported syntax of foreign key, but the foreign key constraint doesn't take effect. FKVersion0 = 0 // FKVersion1 indicate the FKInfo version is 1. // In FKVersion1, TiDB supports the foreign key constraint. FKVersion1 = 1 )
const EmptyColumnInfoSize = int64(unsafe.Sizeof(ColumnInfo{}))
EmptyColumnInfoSize is the memory usage of ColumnInfoSize
const ExtraHandleID = -1
ExtraHandleID is the column ID of column which we need to append to schema to occupy the handle's position for use of execution phase.
const ExtraPhysTblID = -3
ExtraPhysTblID is the column ID of column that should be filled in with the physical table id. Primarily used for table partition dynamic prune mode, to return which partition (physical table id) the row came from. Using a dedicated id for this, since in the future ExtraPidColID and ExtraPhysTblID may be used for the same request. Must be after ExtraPidColID!
const ExtraPidColID = -2
ExtraPidColID is the column ID of column which store the partitionID decoded in global index values.
Variables ¶
var ExtraHandleName = NewCIStr("_tidb_rowid")
ExtraHandleName is the name of ExtraHandle Column.
var ExtraPartitionIdName = NewCIStr("_tidb_pid") //nolint:revive
ExtraPartitionIdName is the name of ExtraPartitionId Column.
var ExtraPhysTblIdName = NewCIStr("_tidb_tid") //nolint:revive
ExtraPhysTblIdName is the name of ExtraPhysTblID Column.
Functions ¶
func IsIndexPrefixCovered ¶
IsIndexPrefixCovered checks the index's columns beginning with the cols.
func LessDBInfo ¶
LessDBInfo is used for sorting DBInfo by DBInfo.Name.
func TSConvert2Time ¶
TSConvert2Time converts timestamp to time.
Types ¶
type ActionType ¶
type ActionType byte
ActionType is the type for DDL action.
const ( ActionNone ActionType = 0 ActionCreateSchema ActionType = 1 ActionDropSchema ActionType = 2 ActionCreateTable ActionType = 3 ActionDropTable ActionType = 4 ActionAddColumn ActionType = 5 ActionDropColumn ActionType = 6 ActionAddIndex ActionType = 7 ActionDropIndex ActionType = 8 ActionAddForeignKey ActionType = 9 ActionDropForeignKey ActionType = 10 ActionTruncateTable ActionType = 11 ActionModifyColumn ActionType = 12 ActionRebaseAutoID ActionType = 13 ActionRenameTable ActionType = 14 ActionSetDefaultValue ActionType = 15 ActionShardRowID ActionType = 16 ActionModifyTableComment ActionType = 17 ActionRenameIndex ActionType = 18 ActionAddTablePartition ActionType = 19 ActionDropTablePartition ActionType = 20 ActionCreateView ActionType = 21 ActionModifyTableCharsetAndCollate ActionType = 22 ActionTruncateTablePartition ActionType = 23 ActionDropView ActionType = 24 ActionRecoverTable ActionType = 25 ActionModifySchemaCharsetAndCollate ActionType = 26 ActionLockTable ActionType = 27 ActionUnlockTable ActionType = 28 ActionRepairTable ActionType = 29 ActionSetTiFlashReplica ActionType = 30 ActionUpdateTiFlashReplicaStatus ActionType = 31 ActionAddPrimaryKey ActionType = 32 ActionDropPrimaryKey ActionType = 33 ActionCreateSequence ActionType = 34 ActionAlterSequence ActionType = 35 ActionDropSequence ActionType = 36 ActionAddColumns ActionType = 37 // Deprecated, we use ActionMultiSchemaChange instead. ActionDropColumns ActionType = 38 // Deprecated, we use ActionMultiSchemaChange instead. ActionModifyTableAutoIdCache ActionType = 39 //nolint:revive ActionRebaseAutoRandomBase ActionType = 40 ActionAlterIndexVisibility ActionType = 41 ActionExchangeTablePartition ActionType = 42 ActionAddCheckConstraint ActionType = 43 ActionDropCheckConstraint ActionType = 44 ActionAlterCheckConstraint ActionType = 45 ActionRenameTables ActionType = 47 ActionDropIndexes ActionType = 48 // Deprecated, we use ActionMultiSchemaChange instead. ActionAlterTableAttributes ActionType = 49 ActionAlterTablePartitionAttributes ActionType = 50 ActionCreatePlacementPolicy ActionType = 51 ActionAlterPlacementPolicy ActionType = 52 ActionDropPlacementPolicy ActionType = 53 ActionAlterTablePartitionPlacement ActionType = 54 ActionModifySchemaDefaultPlacement ActionType = 55 ActionAlterTablePlacement ActionType = 56 ActionAlterCacheTable ActionType = 57 ActionAlterTableStatsOptions ActionType = 58 ActionAlterNoCacheTable ActionType = 59 ActionCreateTables ActionType = 60 ActionMultiSchemaChange ActionType = 61 ActionFlashbackCluster ActionType = 62 ActionRecoverSchema ActionType = 63 ActionReorganizePartition ActionType = 64 ActionAlterTTLInfo ActionType = 65 ActionAlterTTLRemove ActionType = 67 )
List DDL actions.
func (ActionType) String ¶
func (action ActionType) String() string
String return current ddl action in string
type AffectedOption ¶
type AffectedOption struct { SchemaID int64 `json:"schema_id"` TableID int64 `json:"table_id"` OldTableID int64 `json:"old_table_id"` OldSchemaID int64 `json:"old_schema_id"` }
AffectedOption is used when a ddl affects multi tables.
type BackfillState ¶
type BackfillState byte
BackfillState is the state used by the backfill-merge process.
const ( // BackfillStateInapplicable means the backfill-merge process is not used. BackfillStateInapplicable BackfillState = iota // BackfillStateRunning is the state that the backfill process is running. // In this state, the index's write and delete operations are redirected to a temporary index. BackfillStateRunning // BackfillStateReadyToMerge is the state that the temporary index's records are ready to be merged back // to the origin index. // In this state, the index's write and delete operations are copied to a temporary index. // This state is used to make sure that all the TiDB instances are aware of the copy during the merge(BackfillStateMerging). BackfillStateReadyToMerge // BackfillStateMerging is the state that the temp index is merging back to the origin index. // In this state, the index's write and delete operations are copied to a temporary index. BackfillStateMerging )
func (BackfillState) String ¶
func (s BackfillState) String() string
String implements fmt.Stringer interface.
type CIStr ¶
type CIStr struct { O string `json:"O"` // Original string. L string `json:"L"` // Lower case string. }
CIStr is case insensitive string.
func (*CIStr) MemoryUsage ¶
MemoryUsage return the memory usage of CIStr
func (*CIStr) UnmarshalJSON ¶
UnmarshalJSON implements the user defined unmarshal method. CIStr can be unmarshaled from a single string, so PartitionDefinition.Name in this change https://github.com/wuhuizuo/tidb6/pull/6460/files would be compatible during TiDB upgrading.
type ChangeStateInfo ¶
type ChangeStateInfo struct { // DependencyColumnOffset is the changing column offset that the current column depends on when executing modify/change column. DependencyColumnOffset int `json:"relative_col_offset"` }
ChangeStateInfo is used for recording the information of schema changing.
type ColumnChoice ¶
type ColumnChoice byte
ColumnChoice is the type of the column choice.
const ( DefaultChoice ColumnChoice = iota AllColumns PredicateColumns ColumnList )
func (ColumnChoice) String ¶
func (s ColumnChoice) String() string
type ColumnInfo ¶
type ColumnInfo struct { ID int64 `json:"id"` Name CIStr `json:"name"` Offset int `json:"offset"` OriginDefaultValue interface{} `json:"origin_default"` OriginDefaultValueBit []byte `json:"origin_default_bit"` DefaultValue interface{} `json:"default"` DefaultValueBit []byte `json:"default_bit"` // DefaultIsExpr is indicates the default value string is expr. DefaultIsExpr bool `json:"default_is_expr"` GeneratedExprString string `json:"generated_expr_string"` GeneratedStored bool `json:"generated_stored"` Dependences map[string]struct{} `json:"dependences"` FieldType types.FieldType `json:"type"` State SchemaState `json:"state"` Comment string `json:"comment"` // A hidden column is used internally(expression index) and are not accessible by users. Hidden bool `json:"hidden"` *ChangeStateInfo `json:"change_state_info"` // Version means the version of the column info. // Version = 0: For OriginDefaultValue and DefaultValue of timestamp column will stores the default time in system time zone. // That is a bug if multiple TiDB servers in different system time zone. // Version = 1: For OriginDefaultValue and DefaultValue of timestamp column will stores the default time in UTC time zone. // This will fix bug in version 0. For compatibility with version 0, we add version field in column info struct. Version uint64 `json:"version"` }
ColumnInfo provides meta data describing of a table column.
func FindColumnInfo ¶
func FindColumnInfo(cols []*ColumnInfo, name string) *ColumnInfo
FindColumnInfo finds ColumnInfo in cols by name.
func FindColumnInfoByID ¶
func FindColumnInfoByID(cols []*ColumnInfo, id int64) *ColumnInfo
FindColumnInfoByID finds ColumnInfo in cols by id.
func NewExtraHandleColInfo ¶
func NewExtraHandleColInfo() *ColumnInfo
NewExtraHandleColInfo mocks a column info for extra handle column.
func NewExtraPartitionIDColInfo ¶
func NewExtraPartitionIDColInfo() *ColumnInfo
NewExtraPartitionIDColInfo mocks a column info for extra partition id column.
func NewExtraPhysTblIDColInfo ¶
func NewExtraPhysTblIDColInfo() *ColumnInfo
NewExtraPhysTblIDColInfo mocks a column info for extra partition id column.
func (*ColumnInfo) AddFlag ¶
func (c *ColumnInfo) AddFlag(flag uint)
AddFlag adds the flag of ColumnInfo.
func (*ColumnInfo) AndFlag ¶
func (c *ColumnInfo) AndFlag(flag uint)
AndFlag adds a flag to the column.
func (*ColumnInfo) DelFlag ¶
func (c *ColumnInfo) DelFlag(flag uint)
DelFlag removes the flag from the column's flag.
func (*ColumnInfo) GetCharset ¶
func (c *ColumnInfo) GetCharset() string
GetCharset returns the charset of ColumnInfo.
func (*ColumnInfo) GetCollate ¶
func (c *ColumnInfo) GetCollate() string
GetCollate returns the collation of ColumnInfo.
func (*ColumnInfo) GetDecimal ¶
func (c *ColumnInfo) GetDecimal() int
GetDecimal returns the decimal of ColumnInfo.
func (*ColumnInfo) GetDefaultValue ¶
func (c *ColumnInfo) GetDefaultValue() interface{}
GetDefaultValue gets the default value of the column. Default value use to stored in DefaultValue field, but now, bit type default value will store in DefaultValueBit for fix bit default value decode/encode bug.
func (*ColumnInfo) GetElems ¶
func (c *ColumnInfo) GetElems() []string
GetElems returns the elems of ColumnInfo.
func (*ColumnInfo) GetFlag ¶
func (c *ColumnInfo) GetFlag() uint
GetFlag returns the flag of ColumnInfo.
func (*ColumnInfo) GetFlen ¶
func (c *ColumnInfo) GetFlen() int
GetFlen returns the flen of ColumnInfo.
func (*ColumnInfo) GetOriginDefaultValue ¶
func (c *ColumnInfo) GetOriginDefaultValue() interface{}
GetOriginDefaultValue gets the origin default value.
func (*ColumnInfo) GetType ¶
func (c *ColumnInfo) GetType() byte
GetType returns the type of ColumnInfo.
func (*ColumnInfo) GetTypeDesc ¶
func (c *ColumnInfo) GetTypeDesc() string
GetTypeDesc gets the description for column type.
func (*ColumnInfo) IsGenerated ¶
func (c *ColumnInfo) IsGenerated() bool
IsGenerated returns true if the column is generated column.
func (*ColumnInfo) SetCharset ¶
func (c *ColumnInfo) SetCharset(charset string)
SetCharset sets charset of the ColumnInfo
func (*ColumnInfo) SetCollate ¶
func (c *ColumnInfo) SetCollate(collate string)
SetCollate sets the collation of the column.
func (*ColumnInfo) SetDecimal ¶
func (c *ColumnInfo) SetDecimal(decimal int)
SetDecimal sets the decimal of ColumnInfo.
func (*ColumnInfo) SetDefaultValue ¶
func (c *ColumnInfo) SetDefaultValue(value interface{}) error
SetDefaultValue sets the default value.
func (*ColumnInfo) SetElems ¶
func (c *ColumnInfo) SetElems(elems []string)
SetElems set the elements of enum column.
func (*ColumnInfo) SetFlag ¶
func (c *ColumnInfo) SetFlag(flag uint)
SetFlag set the flag of ColumnInfo.
func (*ColumnInfo) SetFlen ¶
func (c *ColumnInfo) SetFlen(flen int)
SetFlen sets the flen of ColumnInfo.
func (*ColumnInfo) SetOriginDefaultValue ¶
func (c *ColumnInfo) SetOriginDefaultValue(value interface{}) error
SetOriginDefaultValue sets the origin default value. For mysql.TypeBit type, the default value storage format must be a string. Other value such as int must convert to string format first. The mysql.TypeBit type supports the null default value.
func (*ColumnInfo) SetType ¶
func (c *ColumnInfo) SetType(tp byte)
SetType set the type of ColumnInfo.
func (*ColumnInfo) ToggleFlag ¶
func (c *ColumnInfo) ToggleFlag(flag uint)
ToggleFlag flips the flag according to the value.
type ConstraintInfo ¶
type ConstraintInfo struct { ID int64 `json:"id"` Name CIStr `json:"constraint_name"` Table CIStr `json:"tbl_name"` // Table name. ConstraintCols []CIStr `json:"constraint_cols"` // Depended column names. Enforced bool `json:"enforced"` InColumn bool `json:"in_column"` // Indicate whether the constraint is column type check. ExprString string `json:"expr_string"` State SchemaState `json:"state"` }
ConstraintInfo provides meta data describing check-expression constraint.
func (*ConstraintInfo) Clone ¶
func (ci *ConstraintInfo) Clone() *ConstraintInfo
Clone clones ConstraintInfo.
type DBInfo ¶
type DBInfo struct { ID int64 `json:"id"` // Database ID Name CIStr `json:"db_name"` // DB name. Charset string `json:"charset"` Collate string `json:"collate"` Tables []*TableInfo `json:"-"` // Tables in the DB. State SchemaState `json:"state"` PlacementPolicyRef *PolicyRefInfo `json:"policy_ref_info"` }
DBInfo provides meta data describing a DB.
type DDLReorgMeta ¶
type DDLReorgMeta struct { // EndHandle is the last handle of the adding indices table. // We should only backfill indices in the range [startHandle, EndHandle]. EndHandle int64 `json:"end_handle"` SQLMode mysql.SQLMode `json:"sql_mode"` Warnings map[errors.ErrorID]*terror.Error `json:"warnings"` WarningsCount map[errors.ErrorID]int64 `json:"warnings_count"` Location *TimeZoneLocation `json:"location"` ReorgTp ReorgType `json:"reorg_tp"` }
DDLReorgMeta is meta info of DDL reorganization.
type ExchangePartitionInfo ¶
type ExchangePartitionInfo struct { ExchangePartitionFlag bool `json:"exchange_partition_flag"` ExchangePartitionID int64 `json:"exchange_partition_id"` ExchangePartitionDefID int64 `json:"exchange_partition_def_id"` }
ExchangePartitionInfo provides exchange partition info.
type FKInfo ¶
type FKInfo struct { ID int64 `json:"id"` Name CIStr `json:"fk_name"` RefSchema CIStr `json:"ref_schema"` RefTable CIStr `json:"ref_table"` RefCols []CIStr `json:"ref_cols"` Cols []CIStr `json:"cols"` OnDelete int `json:"on_delete"` OnUpdate int `json:"on_update"` State SchemaState `json:"state"` Version int `json:"version"` }
FKInfo provides meta data describing a foreign key constraint.
func FindFKInfoByName ¶
FindFKInfoByName finds FKInfo in fks by lowercase name.
type HistoryInfo ¶
type HistoryInfo struct { SchemaVersion int64 DBInfo *DBInfo TableInfo *TableInfo FinishedTS uint64 // MultipleTableInfos is like TableInfo but only for operations updating multiple tables. MultipleTableInfos []*TableInfo }
HistoryInfo is used for binlog.
func (*HistoryInfo) AddDBInfo ¶
func (h *HistoryInfo) AddDBInfo(schemaVer int64, dbInfo *DBInfo)
AddDBInfo adds schema version and schema information that are used for binlog. dbInfo is added in the following operations: create database, drop database.
func (*HistoryInfo) AddTableInfo ¶
func (h *HistoryInfo) AddTableInfo(schemaVer int64, tblInfo *TableInfo)
AddTableInfo adds schema version and table information that are used for binlog. tblInfo is added except for the following operations: create database, drop database.
func (*HistoryInfo) SetTableInfos ¶
func (h *HistoryInfo) SetTableInfos(schemaVer int64, tblInfos []*TableInfo)
SetTableInfos is like AddTableInfo, but will add multiple table infos to the binlog.
type IndexColumn ¶
type IndexColumn struct { Name CIStr `json:"name"` // Index name Offset int `json:"offset"` // Index offset // Length of prefix when using column prefix // for indexing; // UnspecifedLength if not using prefix indexing Length int `json:"length"` }
IndexColumn provides index column info.
func FindIndexColumnByName ¶
func FindIndexColumnByName(indexCols []*IndexColumn, nameL string) (int, *IndexColumn)
FindIndexColumnByName finds IndexColumn by name. When IndexColumn is not found, returns (-1, nil).
type IndexInfo ¶
type IndexInfo struct { ID int64 `json:"id"` Name CIStr `json:"idx_name"` // Index name. Table CIStr `json:"tbl_name"` // Table name. Columns []*IndexColumn `json:"idx_cols"` // Index columns. State SchemaState `json:"state"` BackfillState BackfillState `json:"backfill_state"` Comment string `json:"comment"` // Comment Tp IndexType `json:"index_type"` // Index type: Btree, Hash or Rtree Unique bool `json:"is_unique"` // Whether the index is unique. Primary bool `json:"is_primary"` // Whether the index is primary key. Invisible bool `json:"is_invisible"` // Whether the index is invisible. Global bool `json:"is_global"` // Whether the index is global. }
IndexInfo provides meta data describing a DB index. It corresponds to the statement `CREATE INDEX Name ON Table (Column);` See https://dev.mysql.com/doc/refman/5.7/en/create-index.html
func FindIndexByColumns ¶
FindIndexByColumns find IndexInfo in indices which is cover the specified columns.
func FindIndexInfoByID ¶
FindIndexInfoByID finds IndexInfo in indices by id.
func (*IndexInfo) FindColumnByName ¶
func (index *IndexInfo) FindColumnByName(nameL string) *IndexColumn
FindColumnByName finds the index column with the specified name.
func (*IndexInfo) HasColumnInIndexColumns ¶
HasColumnInIndexColumns checks whether the index contains the column with the specified ID.
func (*IndexInfo) HasPrefixIndex ¶
HasPrefixIndex returns whether any columns of this index uses prefix length.
type Job ¶
type Job struct { ID int64 `json:"id"` Type ActionType `json:"type"` SchemaID int64 `json:"schema_id"` TableID int64 `json:"table_id"` SchemaName string `json:"schema_name"` TableName string `json:"table_name"` State JobState `json:"state"` Warning *terror.Error `json:"warning"` Error *terror.Error `json:"err"` // ErrorCount will be increased, every time we meet an error when running job. ErrorCount int64 `json:"err_count"` // RowCount means the number of rows that are processed. RowCount int64 `json:"row_count"` Mu sync.Mutex `json:"-"` // CtxVars are variables attached to the job. It is for internal usage. // E.g. passing arguments between functions by one single *Job pointer. CtxVars []interface{} `json:"-"` Args []interface{} `json:"-"` // RawArgs : We must use json raw message to delay parsing special args. RawArgs json.RawMessage `json:"raw_args"` SchemaState SchemaState `json:"schema_state"` // SnapshotVer means snapshot version for this job. SnapshotVer uint64 `json:"snapshot_ver"` // RealStartTS uses timestamp allocated by TSO. // Now it's the TS when we actually start the job. RealStartTS uint64 `json:"real_start_ts"` // StartTS uses timestamp allocated by TSO. // Now it's the TS when we put the job to TiKV queue. StartTS uint64 `json:"start_ts"` // DependencyID is the job's ID that the current job depends on. DependencyID int64 `json:"dependency_id"` // Query string of the ddl job. Query string `json:"query"` BinlogInfo *HistoryInfo `json:"binlog"` // Version indicates the DDL job version. For old jobs, it will be 0. Version int64 `json:"version"` // ReorgMeta is meta info of ddl reorganization. ReorgMeta *DDLReorgMeta `json:"reorg_meta"` // MultiSchemaInfo keeps some warning now for multi schema change. MultiSchemaInfo *MultiSchemaInfo `json:"multi_schema_info"` // Priority is only used to set the operation priority of adding indices. Priority int `json:"priority"` // SeqNum is the total order in all DDLs, it's used to identify the order of DDL. SeqNum uint64 `json:"seq_num"` // Charset is the charset when the DDL Job is created. Charset string `json:"charset"` // Collate is the collation the DDL Job is created. Collate string `json:"collate"` }
Job is for a DDL operation.
func (*Job) Decode ¶
Decode decodes job from the json buffer, we must use DecodeArgs later to decode special args for this job.
func (*Job) DecodeArgs ¶
DecodeArgs decodes job args.
func (*Job) Encode ¶
Encode encodes job with json format. updateRawArgs is used to determine whether to update the raw args.
func (*Job) FinishDBJob ¶
func (job *Job) FinishDBJob(jobState JobState, schemaState SchemaState, ver int64, dbInfo *DBInfo)
FinishDBJob is called when a job is finished. It updates the job's state information and adds dbInfo the binlog.
func (*Job) FinishMultipleTableJob ¶
func (job *Job) FinishMultipleTableJob(jobState JobState, schemaState SchemaState, ver int64, tblInfos []*TableInfo)
FinishMultipleTableJob is called when a job is finished. It updates the job's state information and adds tblInfos to the binlog.
func (*Job) FinishTableJob ¶
func (job *Job) FinishTableJob(jobState JobState, schemaState SchemaState, ver int64, tblInfo *TableInfo)
FinishTableJob is called when a job is finished. It updates the job's state information and adds tblInfo to the binlog.
func (*Job) GetRowCount ¶
GetRowCount gets the number of rows. Make sure it can pass `make race`.
func (*Job) GetWarnings ¶
GetWarnings gets the warnings of the rows handled.
func (*Job) IsCancelled ¶
IsCancelled returns whether the job is cancelled or not.
func (*Job) IsCancelling ¶
IsCancelling returns whether the job is cancelling or not.
func (*Job) IsDependentOn ¶
IsDependentOn returns whether the job depends on "other". How to check the job depends on "other"? 1. The two jobs handle the same database when one of the two jobs is an ActionDropSchema or ActionCreateSchema type. 2. Or the two jobs handle the same table. 3. Or other job is flashback cluster.
func (*Job) IsFinished ¶
IsFinished returns whether job is finished or not. If the job state is Done or Cancelled, it is finished.
func (*Job) IsQueueing ¶
IsQueueing returns whether job is queuing or not.
func (*Job) IsRollbackDone ¶
IsRollbackDone returns whether the job is rolled back or not.
func (*Job) IsRollbackable ¶
IsRollbackable checks whether the job can be rollback.
func (*Job) IsRollingback ¶
IsRollingback returns whether the job is rolling back or not.
func (*Job) IsSynced ¶
IsSynced returns whether the DDL modification is synced among all TiDB servers.
func (*Job) MarkNonRevertible ¶
func (job *Job) MarkNonRevertible()
MarkNonRevertible mark the current job to be non-revertible. It means the job cannot be cancelled or rollbacked.
func (*Job) MayNeedReorg ¶
MayNeedReorg indicates that this job may need to reorganize the data.
func (*Job) NotStarted ¶
NotStarted returns true if the job is never run by a worker.
func (*Job) SetRowCount ¶
SetRowCount sets the number of rows. Make sure it can pass `make race`.
type JobState ¶
type JobState byte
JobState is for job state.
const ( JobStateNone JobState = 0 JobStateRunning JobState = 1 // When DDL encountered an unrecoverable error at reorganization state, // some keys has been added already, we need to remove them. // JobStateRollingback is the state to do the rolling back job. JobStateRollingback JobState = 2 JobStateRollbackDone JobState = 3 JobStateDone JobState = 4 JobStateCancelled JobState = 5 // JobStateSynced is used to mark the information about the completion of this job // has been synchronized to all servers. JobStateSynced JobState = 6 // JobStateCancelling is used to mark the DDL job is cancelled by the client, but the DDL work hasn't handle it. JobStateCancelling JobState = 7 // JobStateQueueing means the job has not yet been started. JobStateQueueing JobState = 8 )
List job states.
type MultiSchemaInfo ¶
type MultiSchemaInfo struct { SubJobs []*SubJob `json:"sub_jobs"` Revertible bool `json:"revertible"` // SkipVersion is used to control whether generating a new schema version for a sub-job. SkipVersion bool `json:"-"` AddColumns []CIStr `json:"-"` DropColumns []CIStr `json:"-"` ModifyColumns []CIStr `json:"-"` AddIndexes []CIStr `json:"-"` DropIndexes []CIStr `json:"-"` AlterIndexes []CIStr `json:"-"` ForeignKeys []CIStr `json:"-"` RelativeColumns []CIStr `json:"-"` PositionColumns []CIStr `json:"-"` }
MultiSchemaInfo keeps some information for multi schema change.
func NewMultiSchemaInfo ¶
func NewMultiSchemaInfo() *MultiSchemaInfo
NewMultiSchemaInfo new a MultiSchemaInfo.
type PartitionDefinition ¶
type PartitionDefinition struct { ID int64 `json:"id"` Name CIStr `json:"name"` LessThan []string `json:"less_than"` InValues [][]string `json:"in_values"` PlacementPolicyRef *PolicyRefInfo `json:"policy_ref_info"` Comment string `json:"comment,omitempty"` }
PartitionDefinition defines a single partition.
func (*PartitionDefinition) Clone ¶
func (ci *PartitionDefinition) Clone() PartitionDefinition
Clone clones ConstraintInfo.
func (*PartitionDefinition) MemoryUsage ¶
func (ci *PartitionDefinition) MemoryUsage() (sum int64)
MemoryUsage return the memory usage of PartitionDefinition
type PartitionInfo ¶
type PartitionInfo struct { Type PartitionType `json:"type"` Expr string `json:"expr"` Columns []CIStr `json:"columns"` // User may already create table with partition but table partition is not // yet supported back then. When Enable is true, write/read need use tid // rather than pid. Enable bool `json:"enable"` Definitions []PartitionDefinition `json:"definitions"` // AddingDefinitions is filled when adding a partition that is in the mid state. AddingDefinitions []PartitionDefinition `json:"adding_definitions"` // DroppingDefinitions is filled when dropping a partition that is in the mid state. DroppingDefinitions []PartitionDefinition `json:"dropping_definitions"` States []PartitionState `json:"states"` Num uint64 `json:"num"` }
PartitionInfo provides table partition info.
func (*PartitionInfo) FindPartitionDefinitionByName ¶
func (pi *PartitionInfo) FindPartitionDefinitionByName(partitionDefinitionName string) int
FindPartitionDefinitionByName finds PartitionDefinition by name.
func (*PartitionInfo) GCPartitionStates ¶
func (pi *PartitionInfo) GCPartitionStates()
GCPartitionStates cleans up the partition state.
func (*PartitionInfo) GetNameByID ¶
func (pi *PartitionInfo) GetNameByID(id int64) string
GetNameByID gets the partition name by ID.
func (*PartitionInfo) GetStateByID ¶
func (pi *PartitionInfo) GetStateByID(id int64) SchemaState
GetStateByID gets the partition state by ID.
func (*PartitionInfo) SetStateByID ¶
func (pi *PartitionInfo) SetStateByID(id int64, state SchemaState)
SetStateByID sets the state of the partition by ID.
type PartitionState ¶
type PartitionState struct { ID int64 `json:"id"` State SchemaState `json:"state"` }
PartitionState is the state of the partition.
type PartitionType ¶
type PartitionType int
PartitionType is the type for PartitionInfo
const ( PartitionTypeRange PartitionType = 1 PartitionTypeHash PartitionType = 2 PartitionTypeList PartitionType = 3 PartitionTypeKey PartitionType = 4 PartitionTypeSystemTime PartitionType = 5 )
Partition types.
func (PartitionType) String ¶
func (p PartitionType) String() string
type PlacementSettings ¶
type PlacementSettings struct { PrimaryRegion string `json:"primary_region"` Regions string `json:"regions"` Learners uint64 `json:"learners"` Followers uint64 `json:"followers"` Voters uint64 `json:"voters"` Schedule string `json:"schedule"` Constraints string `json:"constraints"` LeaderConstraints string `json:"leader_constraints"` LearnerConstraints string `json:"learner_constraints"` FollowerConstraints string `json:"follower_constraints"` VoterConstraints string `json:"voter_constraints"` SurvivalPreferences string `json:"survival_preferences"` }
PlacementSettings is the settings of the placement
func (*PlacementSettings) Clone ¶
func (p *PlacementSettings) Clone() *PlacementSettings
Clone clones the placement settings.
func (*PlacementSettings) String ¶
func (p *PlacementSettings) String() string
type PolicyInfo ¶
type PolicyInfo struct { *PlacementSettings ID int64 `json:"id"` Name CIStr `json:"name"` State SchemaState `json:"state"` }
PolicyInfo is the struct to store the placement policy.
type PolicyRefInfo ¶
PolicyRefInfo is the struct to refer the placement policy.
type PrimaryKeyType ¶
type PrimaryKeyType int8
PrimaryKeyType is the type of primary key. Available values are "clustered", "nonclustered", and ""(default).
const ( PrimaryKeyTypeDefault PrimaryKeyType = iota PrimaryKeyTypeClustered PrimaryKeyTypeNonClustered )
func (PrimaryKeyType) String ¶
func (p PrimaryKeyType) String() string
type ReferOptionType ¶
type ReferOptionType int
ReferOptionType is the type for refer options.
const ( ReferOptionNoOption ReferOptionType = iota ReferOptionRestrict ReferOptionCascade ReferOptionSetNull ReferOptionNoAction ReferOptionSetDefault )
Refer option types.
func (ReferOptionType) String ¶
func (r ReferOptionType) String() string
String implements fmt.Stringer interface.
type ReferredFKInfo ¶
type ReferredFKInfo struct { Cols []CIStr `json:"cols"` ChildSchema CIStr `json:"child_schema"` ChildTable CIStr `json:"child_table"` ChildFKName CIStr `json:"child_fk_name"` }
ReferredFKInfo provides the cited foreign key in the child table.
type ReorgType ¶
type ReorgType int8
ReorgType indicates which process is used for the data reorganization.
const ( // ReorgTypeNone means the backfill task is not started yet. ReorgTypeNone ReorgType = iota // ReorgTypeTxn means the index records are backfill with transactions. // All the index KVs are written through the transaction interface. // This is the original backfill implementation. ReorgTypeTxn // ReorgTypeLitMerge means the index records are backfill with lightning. // The index KVs are encoded to SST files and imported to the storage directly. // The incremental index KVs written by DML are redirected to a temporary index. // After the backfill is finished, the temporary index records are merged back to the original index. ReorgTypeLitMerge // ReorgTypeTxnMerge means backfill with transactions and merge incremental changes. // The backfill index KVs are written through the transaction interface. // The incremental index KVs written by DML are redirected to a temporary index. // After the backfill is finished, the temporary index records are merged back to the original index. ReorgTypeTxnMerge )
func (ReorgType) NeedMergeProcess ¶
NeedMergeProcess means the incremental changes need to be merged.
type SchemaDiff ¶
type SchemaDiff struct { Version int64 `json:"version"` Type ActionType `json:"type"` SchemaID int64 `json:"schema_id"` TableID int64 `json:"table_id"` // OldTableID is the table ID before truncate, only used by truncate table DDL. OldTableID int64 `json:"old_table_id"` // OldSchemaID is the schema ID before rename table, only used by rename table DDL. OldSchemaID int64 `json:"old_schema_id"` AffectedOpts []*AffectedOption `json:"affected_options"` }
SchemaDiff contains the schema modification at a particular schema version. It is used to reduce schema reload cost.
type SchemaState ¶
type SchemaState byte
SchemaState is the state for schema elements.
const ( // StateNone means this schema element is absent and can't be used. StateNone SchemaState = iota // StateDeleteOnly means we can only delete items for this schema element. StateDeleteOnly // StateWriteOnly means we can use any write operation on this schema element, // but outer can't read the changed data. StateWriteOnly // StateWriteReorganization means we are re-organizing whole data after write only state. StateWriteReorganization // StateDeleteReorganization means we are re-organizing whole data after delete only state. StateDeleteReorganization // StatePublic means this schema element is ok for all write and read operations. StatePublic // StateReplicaOnly means we're waiting tiflash replica to be finished. StateReplicaOnly // StateGlobalTxnOnly means we can only use global txn for operator on this schema element StateGlobalTxnOnly )
func (SchemaState) String ¶
func (s SchemaState) String() string
String implements fmt.Stringer interface.
type SequenceInfo ¶
type SequenceInfo struct { Start int64 `json:"sequence_start"` Cache bool `json:"sequence_cache"` Cycle bool `json:"sequence_cycle"` MinValue int64 `json:"sequence_min_value"` MaxValue int64 `json:"sequence_max_value"` Increment int64 `json:"sequence_increment"` CacheValue int64 `json:"sequence_cache_value"` Comment string `json:"sequence_comment"` }
SequenceInfo provide meta data describing a DB sequence.
type SessionInfo ¶
SessionInfo contain the session ID and the server ID.
func (SessionInfo) String ¶
func (s SessionInfo) String() string
type StatsOptions ¶
type StatsOptions struct { *StatsWindowSettings AutoRecalc bool `json:"auto_recalc"` ColumnChoice ColumnChoice `json:"column_choice"` ColumnList []CIStr `json:"column_list"` SampleNum uint64 `json:"sample_num"` SampleRate float64 `json:"sample_rate"` Buckets uint64 `json:"buckets"` TopN uint64 `json:"topn"` Concurrency uint `json:"concurrency"` }
StatsOptions is the struct to store the stats options.
func NewStatsOptions ¶
func NewStatsOptions() *StatsOptions
NewStatsOptions creates a new StatsOptions.
type StatsWindowSettings ¶
type StatsWindowSettings struct { WindowStart time.Time `json:"window_start"` WindowEnd time.Time `json:"window_end"` RepeatType WindowRepeatType `json:"repeat_type"` RepeatInterval uint `json:"repeat_interval"` }
StatsWindowSettings is the settings of the stats window.
type SubJob ¶
type SubJob struct { Type ActionType `json:"type"` Args []interface{} `json:"-"` RawArgs json.RawMessage `json:"raw_args"` SchemaState SchemaState `json:"schema_state"` SnapshotVer uint64 `json:"snapshot_ver"` Revertible bool `json:"revertible"` State JobState `json:"state"` RowCount int64 `json:"row_count"` Warning *terror.Error `json:"warning"` CtxVars []interface{} `json:"-"` SchemaVer int64 `json:"schema_version"` }
SubJob is a representation of one DDL schema change. A Job may contain zero(when multi-schema change is not applicable) or more SubJobs.
func (*SubJob) FromProxyJob ¶
FromProxyJob converts a proxy job to a sub-job.
func (*SubJob) IsFinished ¶
IsFinished returns true if the job is done.
func (*SubJob) ToProxyJob ¶
ToProxyJob converts a sub-job to a proxy job.
type TTLInfo ¶
type TTLInfo struct { ColumnName CIStr `json:"column"` IntervalExprStr string `json:"interval_expr"` // `IntervalTimeUnit` is actually ast.TimeUnitType. Use `int` to avoid cycle dependency IntervalTimeUnit int `json:"interval_time_unit"` Enable bool `json:"enable"` }
TTLInfo records the TTL config
type TableCacheStatusType ¶
type TableCacheStatusType int
TableCacheStatusType is the type of the table cache status
const ( TableCacheStatusDisable TableCacheStatusType = iota TableCacheStatusEnable TableCacheStatusSwitching )
func (TableCacheStatusType) String ¶
func (t TableCacheStatusType) String() string
type TableInfo ¶
type TableInfo struct { ID int64 `json:"id"` Name CIStr `json:"name"` Charset string `json:"charset"` Collate string `json:"collate"` // Columns are listed in the order in which they appear in the schema. Columns []*ColumnInfo `json:"cols"` Indices []*IndexInfo `json:"index_info"` Constraints []*ConstraintInfo `json:"constraint_info"` ForeignKeys []*FKInfo `json:"fk_info"` State SchemaState `json:"state"` // PKIsHandle is true when primary key is a single integer column. PKIsHandle bool `json:"pk_is_handle"` // IsCommonHandle is true when clustered index feature is // enabled and the primary key is not a single integer column. IsCommonHandle bool `json:"is_common_handle"` // CommonHandleVersion is the version of the clustered index. // 0 for the clustered index created == 5.0.0 RC. // 1 for the clustered index created > 5.0.0 RC. CommonHandleVersion uint16 `json:"common_handle_version"` Comment string `json:"comment"` AutoIncID int64 `json:"auto_inc_id"` // Only used by BR when: // 1. SepAutoInc() is true // 2. The table is nonclustered and has auto_increment column. // In that case, both auto_increment_id and tidb_rowid need to be backup & recover. // See also https://github.com/wuhuizuo/tidb6/issues/46093 // // It should have been named TiDBRowID, but for historial reasons, we do not use separate meta key for _tidb_rowid and auto_increment_id, // and field `AutoIncID` is used to serve both _tidb_rowid and auto_increment_id. // If we introduce a TiDBRowID here, it could make furthur misunderstanding: // in most cases, AutoIncID is _tidb_rowid and TiDBRowID is null // but in some cases, AutoIncID is auto_increment_id and TiDBRowID is _tidb_rowid // So let's just use another name AutoIncIDExtra to avoid misconception. AutoIncIDExtra int64 `json:"auto_inc_id_extra,omitempty"` AutoIdCache int64 `json:"auto_id_cache"` //nolint:revive AutoRandID int64 `json:"auto_rand_id"` MaxColumnID int64 `json:"max_col_id"` MaxIndexID int64 `json:"max_idx_id"` MaxForeignKeyID int64 `json:"max_fk_id"` MaxConstraintID int64 `json:"max_cst_id"` // UpdateTS is used to record the timestamp of updating the table's schema information. // These changing schema operations don't include 'truncate table' and 'rename table'. UpdateTS uint64 `json:"update_timestamp"` // OldSchemaID : // Because auto increment ID has schemaID as prefix, // We need to save original schemaID to keep autoID unchanged // while renaming a table from one database to another. // TODO: Remove it. // Now it only uses for compatibility with the old version that already uses this field. OldSchemaID int64 `json:"old_schema_id,omitempty"` // ShardRowIDBits specify if the implicit row ID is sharded. ShardRowIDBits uint64 // MaxShardRowIDBits uses to record the max ShardRowIDBits be used so far. MaxShardRowIDBits uint64 `json:"max_shard_row_id_bits"` // AutoRandomBits is used to set the bit number to shard automatically when PKIsHandle. AutoRandomBits uint64 `json:"auto_random_bits"` // AutoRandomRangeBits represents the bit number of the int primary key that will be used by TiDB. AutoRandomRangeBits uint64 `json:"auto_random_range_bits"` // PreSplitRegions specify the pre-split region when create table. // The pre-split region num is 2^(PreSplitRegions-1). // And the PreSplitRegions should less than or equal to ShardRowIDBits. PreSplitRegions uint64 `json:"pre_split_regions"` Partition *PartitionInfo `json:"partition"` Compression string `json:"compression"` View *ViewInfo `json:"view"` Sequence *SequenceInfo `json:"sequence"` // Lock represent the table lock info. Lock *TableLockInfo `json:"Lock"` // Version means the version of the table info. Version uint16 `json:"version"` // TiFlashReplica means the TiFlash replica info. TiFlashReplica *TiFlashReplicaInfo `json:"tiflash_replica"` // IsColumnar means the table is column-oriented. // It's true when the engine of the table is TiFlash only. IsColumnar bool `json:"is_columnar"` TempTableType `json:"temp_table_type"` TableCacheStatusType `json:"cache_table_status"` PlacementPolicyRef *PolicyRefInfo `json:"policy_ref_info"` // StatsOptions is used when do analyze/auto-analyze for each table StatsOptions *StatsOptions `json:"stats_options"` ExchangePartitionInfo *ExchangePartitionInfo `json:"exchange_partition_info"` TTLInfo *TTLInfo `json:"ttl_info"` }
TableInfo provides meta data describing a DB table.
func (*TableInfo) ClearPlacement ¶
func (t *TableInfo) ClearPlacement()
ClearPlacement clears all table and partitions' placement settings
func (*TableInfo) Cols ¶
func (t *TableInfo) Cols() []*ColumnInfo
Cols returns the columns of the table in public state.
func (*TableInfo) ColumnIsInIndex ¶
func (t *TableInfo) ColumnIsInIndex(c *ColumnInfo) bool
ColumnIsInIndex checks whether c is included in any indices of t.
func (*TableInfo) ContainsAutoRandomBits ¶
ContainsAutoRandomBits indicates whether a table contains auto_random column.
func (*TableInfo) FindColumnNameByID ¶
FindColumnNameByID finds column name by id.
func (*TableInfo) FindConstraintInfoByName ¶
func (t *TableInfo) FindConstraintInfoByName(constrName string) *ConstraintInfo
FindConstraintInfoByName finds constraintInfo by name.
func (*TableInfo) FindIndexByName ¶
FindIndexByName finds index by name.
func (*TableInfo) FindIndexNameByID ¶
FindIndexNameByID finds index name by id.
func (*TableInfo) FindPublicColumnByName ¶
func (t *TableInfo) FindPublicColumnByName(colNameL string) *ColumnInfo
FindPublicColumnByName finds the public column by name.
func (*TableInfo) GetAutoIncrementColInfo ¶
func (t *TableInfo) GetAutoIncrementColInfo() *ColumnInfo
GetAutoIncrementColInfo gets the ColumnInfo of auto_increment column if exists.
func (*TableInfo) GetDBID ¶
GetDBID returns the schema ID that is used to create an allocator. TODO: Remove it after removing OldSchemaID.
func (*TableInfo) GetPartitionInfo ¶
func (t *TableInfo) GetPartitionInfo() *PartitionInfo
GetPartitionInfo returns the partition information.
func (*TableInfo) GetPkColInfo ¶
func (t *TableInfo) GetPkColInfo() *ColumnInfo
GetPkColInfo gets the ColumnInfo of pk if exists. Make sure PkIsHandle checked before call this method.
func (*TableInfo) GetPrimaryKey ¶
GetPrimaryKey extract the primary key in a table and return `IndexInfo` The returned primary key could be explicit or implicit. If there is no explicit primary key in table, the first UNIQUE INDEX on NOT NULL columns will be the implicit primary key. For more information about implicit primary key, see https://dev.mysql.com/doc/refman/8.0/en/invisible-indexes.html
func (*TableInfo) GetUpdateTime ¶
GetUpdateTime gets the table's updating time.
func (*TableInfo) HasClusteredIndex ¶
HasClusteredIndex checks whether the table has a clustered index.
func (*TableInfo) IsAutoIncColUnsigned ¶
IsAutoIncColUnsigned checks whether the auto increment column is unsigned.
func (*TableInfo) IsAutoRandomBitColUnsigned ¶
IsAutoRandomBitColUnsigned indicates whether the auto_random column is unsigned. Make sure the table contains auto_random before calling this method.
func (*TableInfo) IsBaseTable ¶
IsBaseTable checks to see the table is neither a view or a sequence.
func (*TableInfo) IsSequence ¶
IsSequence checks if TableInfo is a sequence.
func (*TableInfo) MoveColumnInfo ¶
MoveColumnInfo moves a column to another offset. It maintains the offsets of all affects columns and index columns,
func (*TableInfo) SepAutoInc ¶
SepAutoInc decides whether _rowid and auto_increment id use separate allocator.
type TableItemID ¶
TableItemID is composed by table ID and column/index ID
type TableLockInfo ¶
type TableLockInfo struct { Tp TableLockType // Use array because there may be multiple sessions holding the same read lock. Sessions []SessionInfo State TableLockState // TS is used to record the timestamp this table lock been locked. TS uint64 }
TableLockInfo provides meta data describing a table lock.
type TableLockState ¶
type TableLockState byte
TableLockState is the state for table lock.
const ( // TableLockStateNone means this table lock is absent. TableLockStateNone TableLockState = iota // TableLockStatePreLock means this table lock is pre-lock state. Other session doesn't hold this lock should't do corresponding operation according to the lock type. TableLockStatePreLock // TableLockStatePublic means this table lock is public state. TableLockStatePublic )
func (TableLockState) String ¶
func (t TableLockState) String() string
String implements fmt.Stringer interface.
type TableLockTpInfo ¶
type TableLockTpInfo struct { SchemaID int64 TableID int64 Tp TableLockType }
TableLockTpInfo is composed by schema ID, table ID and table lock type.
type TableLockType ¶
type TableLockType byte
TableLockType is the type of the table lock.
const ( // TableLockNone means this table lock is absent. TableLockNone TableLockType = iota // TableLockRead means the session with this lock can read the table (but not write it). // Multiple sessions can acquire a READ lock for the table at the same time. // Other sessions can read the table without explicitly acquiring a READ lock. TableLockRead // TableLockReadLocal is not supported. TableLockReadLocal // TableLockReadOnly is used to set a table into read-only status, // when the session exits, it will not release its lock automatically. TableLockReadOnly // TableLockWrite means only the session with this lock has write/read permission. // Only the session that holds the lock can access the table. No other session can access it until the lock is released. TableLockWrite // TableLockWriteLocal means the session with this lock has write/read permission, and the other session still has read permission. TableLockWriteLocal )
func (TableLockType) String ¶
func (t TableLockType) String() string
type TempTableType ¶
type TempTableType byte
TempTableType is the type of the temp table
const ( TempTableNone TempTableType = iota TempTableGlobal TempTableLocal )
func (TempTableType) String ¶
func (t TempTableType) String() string
type TiFlashReplicaInfo ¶
type TiFlashReplicaInfo struct { Count uint64 LocationLabels []string Available bool AvailablePartitionIDs []int64 }
TiFlashReplicaInfo means the flash replica info.
func (*TiFlashReplicaInfo) IsPartitionAvailable ¶
func (tr *TiFlashReplicaInfo) IsPartitionAvailable(pid int64) bool
IsPartitionAvailable checks whether the partition table replica was available.
type TimeZoneLocation ¶
type TimeZoneLocation struct { Name string `json:"name"` Offset int `json:"offset"` // seconds east of UTC // contains filtered or unexported fields }
TimeZoneLocation represents a single time zone.
func (*TimeZoneLocation) GetLocation ¶
func (tz *TimeZoneLocation) GetLocation() (*time.Location, error)
GetLocation gets the timezone location.
type ViewAlgorithm ¶
type ViewAlgorithm int
ViewAlgorithm is VIEW's SQL ALGORITHM characteristic. See https://dev.mysql.com/doc/refman/5.7/en/view-algorithms.html
const ( AlgorithmUndefined ViewAlgorithm = iota AlgorithmMerge AlgorithmTemptable )
func (*ViewAlgorithm) String ¶
func (v *ViewAlgorithm) String() string
type ViewCheckOption ¶
type ViewCheckOption int
ViewCheckOption is VIEW's WITH CHECK OPTION clause part. See https://dev.mysql.com/doc/refman/5.7/en/view-check-option.html
const ( CheckOptionLocal ViewCheckOption = iota CheckOptionCascaded )
func (*ViewCheckOption) String ¶
func (v *ViewCheckOption) String() string
type ViewInfo ¶
type ViewInfo struct { Algorithm ViewAlgorithm `json:"view_algorithm"` Definer *auth.UserIdentity `json:"view_definer"` Security ViewSecurity `json:"view_security"` SelectStmt string `json:"view_select"` CheckOption ViewCheckOption `json:"view_checkoption"` Cols []CIStr `json:"view_cols"` }
ViewInfo provides meta data describing a DB view.
type ViewSecurity ¶
type ViewSecurity int
ViewSecurity is VIEW's SQL SECURITY characteristic. See https://dev.mysql.com/doc/refman/5.7/en/create-view.html
const ( SecurityDefiner ViewSecurity = iota SecurityInvoker )
func (*ViewSecurity) String ¶
func (v *ViewSecurity) String() string
type WindowRepeatType ¶
type WindowRepeatType byte
WindowRepeatType is the type of the window repeat.
const ( Never WindowRepeatType = iota Day Week Month )
func (WindowRepeatType) String ¶
func (s WindowRepeatType) String() string