mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-06-03 21:30:10 +00:00
Integrate public as bindata optionally (#293)
* Dropped unused codekit config * Integrated dynamic and static bindata for public * Ignore public bindata * Add a general generate make task * Integrated flexible public assets into web command * Updated vendoring, added all missiong govendor deps * Made the linter happy with the bindata and dynamic code * Moved public bindata definition to modules directory * Ignoring the new bindata path now * Updated to the new public modules import path * Updated public bindata command and drop the new prefix
This commit is contained in:
parent
4680c349dd
commit
b6a95a8cb3
691 changed files with 305318 additions and 1272 deletions
458
vendor/github.com/pingcap/tidb/infoschema/tables.go
generated
vendored
Normal file
458
vendor/github.com/pingcap/tidb/infoschema/tables.go
generated
vendored
Normal file
|
@ -0,0 +1,458 @@
|
|||
// Copyright 2016 PingCAP, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package infoschema
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
|
||||
"github.com/pingcap/tidb/column"
|
||||
"github.com/pingcap/tidb/meta/autoid"
|
||||
"github.com/pingcap/tidb/model"
|
||||
"github.com/pingcap/tidb/mysql"
|
||||
"github.com/pingcap/tidb/table"
|
||||
"github.com/pingcap/tidb/table/tables"
|
||||
"github.com/pingcap/tidb/util/charset"
|
||||
"github.com/pingcap/tidb/util/types"
|
||||
)
|
||||
|
||||
const (
|
||||
tableSchemata = "SCHEMATA"
|
||||
tableTables = "TABLES"
|
||||
tableColumns = "COLUMNS"
|
||||
tableStatistics = "STATISTICS"
|
||||
tableCharacterSets = "CHARACTER_SETS"
|
||||
tableCollations = "COLLATIONS"
|
||||
tableFiles = "FILES"
|
||||
catalogVal = "def"
|
||||
tableProfiling = "PROFILING"
|
||||
)
|
||||
|
||||
type columnInfo struct {
|
||||
name string
|
||||
tp byte
|
||||
size int
|
||||
flag uint
|
||||
deflt interface{}
|
||||
elems []string
|
||||
}
|
||||
|
||||
func buildColumnInfo(tableName string, col columnInfo) *model.ColumnInfo {
|
||||
mCharset := charset.CharsetBin
|
||||
mCollation := charset.CharsetBin
|
||||
mFlag := mysql.UnsignedFlag
|
||||
if col.tp == mysql.TypeVarchar || col.tp == mysql.TypeBlob {
|
||||
mCharset = mysql.DefaultCharset
|
||||
mCollation = mysql.DefaultCollationName
|
||||
mFlag = 0
|
||||
}
|
||||
fieldType := types.FieldType{
|
||||
Charset: mCharset,
|
||||
Collate: mCollation,
|
||||
Tp: col.tp,
|
||||
Flen: col.size,
|
||||
Flag: uint(mFlag),
|
||||
}
|
||||
return &model.ColumnInfo{
|
||||
Name: model.NewCIStr(col.name),
|
||||
FieldType: fieldType,
|
||||
State: model.StatePublic,
|
||||
}
|
||||
}
|
||||
|
||||
func buildTableMeta(tableName string, cs []columnInfo) *model.TableInfo {
|
||||
cols := make([]*model.ColumnInfo, 0, len(cs))
|
||||
for _, c := range cs {
|
||||
cols = append(cols, buildColumnInfo(tableName, c))
|
||||
}
|
||||
for i, col := range cols {
|
||||
col.Offset = i
|
||||
}
|
||||
return &model.TableInfo{
|
||||
Name: model.NewCIStr(tableName),
|
||||
Columns: cols,
|
||||
State: model.StatePublic,
|
||||
}
|
||||
}
|
||||
|
||||
var schemataCols = []columnInfo{
|
||||
{"CATALOG_NAME", mysql.TypeVarchar, 512, 0, nil, nil},
|
||||
{"SCHEMA_NAME", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"DEFAULT_CHARACTER_SET_NAME", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"DEFAULT_COLLATION_NAME", mysql.TypeVarchar, 32, 0, nil, nil},
|
||||
{"SQL_PATH", mysql.TypeVarchar, 512, 0, nil, nil},
|
||||
}
|
||||
|
||||
var tablesCols = []columnInfo{
|
||||
{"TABLE_CATALOG", mysql.TypeVarchar, 512, 0, nil, nil},
|
||||
{"TABLE_SCHEMA", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"TABLE_NAME", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"TABLE_TYPE", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"ENGINE", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"VERSION", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"ROW_FORMAT", mysql.TypeVarchar, 10, 0, nil, nil},
|
||||
{"TABLE_ROWS", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"AVG_ROW_LENGTH", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"DATA_LENGTH", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"MAX_DATA_LENGTH", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"INDEX_LENGTH", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"DATA_FREE", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"AUTO_INCREMENT", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"CREATE_TIME", mysql.TypeDatetime, 19, 0, nil, nil},
|
||||
{"UPDATE_TIME", mysql.TypeDatetime, 19, 0, nil, nil},
|
||||
{"CHECK_TIME", mysql.TypeDatetime, 19, 0, nil, nil},
|
||||
{"TABLE_COLLATION", mysql.TypeVarchar, 32, 0, nil, nil},
|
||||
{"CHECK_SUM", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"CREATE_OPTIONS", mysql.TypeVarchar, 255, 0, nil, nil},
|
||||
{"TABLE_COMMENT", mysql.TypeVarchar, 2048, 0, nil, nil},
|
||||
}
|
||||
|
||||
var columnsCols = []columnInfo{
|
||||
{"TABLE_CATALOG", mysql.TypeVarchar, 512, 0, nil, nil},
|
||||
{"TABLE_SCHEMA", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"TABLE_NAME", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"COLUMN_NAME", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"ORIGINAL_POSITION", mysql.TypeLonglong, 64, 0, nil, nil},
|
||||
{"COLUMN_DEFAULT", mysql.TypeBlob, 196606, 0, nil, nil},
|
||||
{"IS_NULLABLE", mysql.TypeVarchar, 3, 0, nil, nil},
|
||||
{"DATA_TYPE", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"CHARACTER_MAXIMUM_LENGTH", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"CHARACTOR_OCTET_LENGTH", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"NUMERIC_PRECISION", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"NUMERIC_SCALE", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"DATETIME_PRECISION", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"CHARACTER_SET_NAME", mysql.TypeVarchar, 32, 0, nil, nil},
|
||||
{"COLLATION_NAME", mysql.TypeVarchar, 32, 0, nil, nil},
|
||||
{"COLUMN_TYPE", mysql.TypeBlob, 196606, 0, nil, nil},
|
||||
{"COLUMN_KEY", mysql.TypeVarchar, 3, 0, nil, nil},
|
||||
{"EXTRA", mysql.TypeVarchar, 30, 0, nil, nil},
|
||||
{"PRIVILEGES", mysql.TypeVarchar, 80, 0, nil, nil},
|
||||
{"COLUMN_COMMENT", mysql.TypeVarchar, 1024, 0, nil, nil},
|
||||
}
|
||||
|
||||
var statisticsCols = []columnInfo{
|
||||
{"TABLE_CATALOG", mysql.TypeVarchar, 512, 0, nil, nil},
|
||||
{"TABLE_SCHEMA", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"TABLE_NAME", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"NON_UNIQUE", mysql.TypeVarchar, 1, 0, nil, nil},
|
||||
{"INDEX_SCHEMA", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"INDEX_NAME", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"SEQ_IN_INDEX", mysql.TypeLonglong, 2, 0, nil, nil},
|
||||
{"COLUMN_NAME", mysql.TypeVarchar, 21, 0, nil, nil},
|
||||
{"COLLATION", mysql.TypeVarchar, 1, 0, nil, nil},
|
||||
{"CARDINALITY", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"SUB_PART", mysql.TypeLonglong, 3, 0, nil, nil},
|
||||
{"PACKED", mysql.TypeVarchar, 10, 0, nil, nil},
|
||||
{"NULLABLE", mysql.TypeVarchar, 3, 0, nil, nil},
|
||||
{"INDEX_TYPE", mysql.TypeVarchar, 16, 0, nil, nil},
|
||||
{"COMMENT", mysql.TypeVarchar, 16, 0, nil, nil},
|
||||
{"INDEX_COMMENT", mysql.TypeVarchar, 1024, 0, nil, nil},
|
||||
}
|
||||
|
||||
var profilingCols = []columnInfo{
|
||||
{"QUERY_ID", mysql.TypeLong, 20, 0, nil, nil},
|
||||
{"SEQ", mysql.TypeLong, 20, 0, nil, nil},
|
||||
{"STATE", mysql.TypeVarchar, 30, 0, nil, nil},
|
||||
{"DURATION", mysql.TypeNewDecimal, 9, 0, nil, nil},
|
||||
{"CPU_USER", mysql.TypeNewDecimal, 9, 0, nil, nil},
|
||||
{"CPU_SYSTEM", mysql.TypeNewDecimal, 9, 0, nil, nil},
|
||||
{"CONTEXT_VOLUNTARY", mysql.TypeLong, 20, 0, nil, nil},
|
||||
{"CONTEXT_INVOLUNTARY", mysql.TypeLong, 20, 0, nil, nil},
|
||||
{"BLOCK_OPS_IN", mysql.TypeLong, 20, 0, nil, nil},
|
||||
{"BLOCK_OPS_OUT", mysql.TypeLong, 20, 0, nil, nil},
|
||||
{"MESSAGES_SENT", mysql.TypeLong, 20, 0, nil, nil},
|
||||
{"MESSAGES_RECEIVED", mysql.TypeLong, 20, 0, nil, nil},
|
||||
{"PAGE_FAULTS_MAJOR", mysql.TypeLong, 20, 0, nil, nil},
|
||||
{"PAGE_FAULTS_MINOR", mysql.TypeLong, 20, 0, nil, nil},
|
||||
{"SWAPS", mysql.TypeLong, 20, 0, nil, nil},
|
||||
{"SOURCE_FUNCTION", mysql.TypeVarchar, 30, 0, nil, nil},
|
||||
{"SOURCE_FILE", mysql.TypeVarchar, 20, 0, nil, nil},
|
||||
{"SOURCE_LINE", mysql.TypeLong, 20, 0, nil, nil},
|
||||
}
|
||||
|
||||
var charsetCols = []columnInfo{
|
||||
{"CHARACTER_SET_NAME", mysql.TypeVarchar, 32, 0, nil, nil},
|
||||
{"DEFAULT_COLLATE_NAME", mysql.TypeVarchar, 32, 0, nil, nil},
|
||||
{"DESCRIPTION", mysql.TypeVarchar, 60, 0, nil, nil},
|
||||
{"MAXLEN", mysql.TypeLonglong, 3, 0, nil, nil},
|
||||
}
|
||||
|
||||
var collationsCols = []columnInfo{
|
||||
{"COLLATION_NAME", mysql.TypeVarchar, 32, 0, nil, nil},
|
||||
{"CHARACTER_SET_NAME", mysql.TypeVarchar, 32, 0, nil, nil},
|
||||
{"ID", mysql.TypeLonglong, 11, 0, nil, nil},
|
||||
{"IS_DEFAULT", mysql.TypeVarchar, 3, 0, nil, nil},
|
||||
{"IS_COMPILED", mysql.TypeVarchar, 3, 0, nil, nil},
|
||||
{"SORTLEN", mysql.TypeLonglong, 3, 0, nil, nil},
|
||||
}
|
||||
|
||||
func dataForCharacterSets() (records [][]types.Datum) {
|
||||
records = append(records,
|
||||
types.MakeDatums("ascii", "ascii_general_ci", "US ASCII", 1),
|
||||
types.MakeDatums("binary", "binary", "Binary pseudo charset", 1),
|
||||
types.MakeDatums("latin1", "latin1_swedish_ci", "cp1252 West European", 1),
|
||||
types.MakeDatums("utf8", "utf8_general_ci", "UTF-8 Unicode", 3),
|
||||
types.MakeDatums("utf8mb4", "utf8mb4_general_ci", "UTF-8 Unicode", 4),
|
||||
)
|
||||
return records
|
||||
}
|
||||
|
||||
func dataForColltions() (records [][]types.Datum) {
|
||||
records = append(records,
|
||||
types.MakeDatums("ascii_general_ci", "ascii", 1, "Yes", "Yes", 1),
|
||||
types.MakeDatums("binary", "binary", 2, "Yes", "Yes", 1),
|
||||
types.MakeDatums("latin1_swedish_ci", "latin1", 3, "Yes", "Yes", 1),
|
||||
types.MakeDatums("utf8_general_ci", "utf8", 4, "Yes", "Yes", 1),
|
||||
types.MakeDatums("utf8mb4_general_ci", "utf8mb4", 5, "Yes", "Yes", 1),
|
||||
)
|
||||
return records
|
||||
}
|
||||
|
||||
var filesCols = []columnInfo{
|
||||
{"FILE_ID", mysql.TypeLonglong, 4, 0, nil, nil},
|
||||
{"FILE_NAME", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"TABLESPACE_NAME", mysql.TypeVarchar, 20, 0, nil, nil},
|
||||
{"TABLE_CATALOG", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"TABLE_SCHEMA", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"TABLE_NAME", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"LOGFILE_GROUP_NAME", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"LOGFILE_GROUP_NUMBER", mysql.TypeLonglong, 32, 0, nil, nil},
|
||||
{"ENGINE", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"FULLTEXT_KEYS", mysql.TypeVarchar, 64, 0, nil, nil},
|
||||
{"DELETED_ROWS", mysql.TypeLonglong, 4, 0, nil, nil},
|
||||
{"UPDATE_COUNT", mysql.TypeLonglong, 4, 0, nil, nil},
|
||||
{"FREE_EXTENTS", mysql.TypeLonglong, 4, 0, nil, nil},
|
||||
{"TOTAL_EXTENTS", mysql.TypeLonglong, 4, 0, nil, nil},
|
||||
{"EXTENT_SIZE", mysql.TypeLonglong, 4, 0, nil, nil},
|
||||
{"INITIAL_SIZE", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"MAXIMUM_SIZE", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"AUTOEXTEND_SIZE", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"CREATION_TIME", mysql.TypeDatetime, -1, 0, nil, nil},
|
||||
{"LAST_UPDATE_TIME", mysql.TypeDatetime, -1, 0, nil, nil},
|
||||
{"LAST_ACCESS_TIME", mysql.TypeDatetime, -1, 0, nil, nil},
|
||||
{"RECOVER_TIME", mysql.TypeLonglong, 4, 0, nil, nil},
|
||||
{"TRANSACTION_COUNTER", mysql.TypeLonglong, 4, 0, nil, nil},
|
||||
{"VERSION", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"ROW_FORMAT", mysql.TypeVarchar, 21, 0, nil, nil},
|
||||
{"TABLE_ROWS", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"AVG_ROW_LENGTH", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"DATA_FREE", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"CREATE_TIME", mysql.TypeDatetime, -1, 0, nil, nil},
|
||||
{"UPDATE_TIME", mysql.TypeDatetime, -1, 0, nil, nil},
|
||||
{"CHECK_TIME", mysql.TypeDatetime, -1, 0, nil, nil},
|
||||
{"CHECKSUM", mysql.TypeLonglong, 21, 0, nil, nil},
|
||||
{"STATUS", mysql.TypeVarchar, 20, 0, nil, nil},
|
||||
{"EXTRA", mysql.TypeVarchar, 255, 0, nil, nil},
|
||||
}
|
||||
|
||||
func dataForSchemata(schemas []string) [][]types.Datum {
|
||||
sort.Strings(schemas)
|
||||
rows := [][]types.Datum{}
|
||||
for _, schema := range schemas {
|
||||
record := types.MakeDatums(
|
||||
catalogVal, // CATALOG_NAME
|
||||
schema, // SCHEMA_NAME
|
||||
mysql.DefaultCharset, // DEFAULT_CHARACTER_SET_NAME
|
||||
mysql.DefaultCollationName, // DEFAULT_COLLATION_NAME
|
||||
nil,
|
||||
)
|
||||
rows = append(rows, record)
|
||||
}
|
||||
return rows
|
||||
}
|
||||
|
||||
func dataForTables(schemas []*model.DBInfo) [][]types.Datum {
|
||||
rows := [][]types.Datum{}
|
||||
for _, schema := range schemas {
|
||||
for _, table := range schema.Tables {
|
||||
record := types.MakeDatums(
|
||||
catalogVal, // TABLE_CATALOG
|
||||
schema.Name.O, // TABLE_SCHEMA
|
||||
table.Name.O, // TABLE_NAME
|
||||
"BASE_TABLE", // TABLE_TYPE
|
||||
"InnoDB", // ENGINE
|
||||
uint64(10), // VERSION
|
||||
"Compact", // ROW_FORMAT
|
||||
uint64(0), // TABLE_ROWS
|
||||
uint64(0), // AVG_ROW_LENGTH
|
||||
uint64(16384), // DATA_LENGTH
|
||||
uint64(0), // MAX_DATA_LENGTH
|
||||
uint64(0), // INDEX_LENGTH
|
||||
uint64(0), // DATA_FREE
|
||||
nil, // AUTO_INCREMENT
|
||||
nil, // CREATE_TIME
|
||||
nil, // UPDATE_TIME
|
||||
nil, // CHECK_TIME
|
||||
"latin1_swedish_ci", // TABLE_COLLATION
|
||||
nil, // CHECKSUM
|
||||
"", // CREATE_OPTIONS
|
||||
"", // TABLE_COMMENT
|
||||
)
|
||||
rows = append(rows, record)
|
||||
}
|
||||
}
|
||||
return rows
|
||||
}
|
||||
|
||||
func dataForColumns(schemas []*model.DBInfo) [][]types.Datum {
|
||||
rows := [][]types.Datum{}
|
||||
for _, schema := range schemas {
|
||||
for _, table := range schema.Tables {
|
||||
rs := dataForColumnsInTable(schema, table)
|
||||
for _, r := range rs {
|
||||
rows = append(rows, r)
|
||||
}
|
||||
}
|
||||
}
|
||||
return rows
|
||||
}
|
||||
|
||||
func dataForColumnsInTable(schema *model.DBInfo, table *model.TableInfo) [][]types.Datum {
|
||||
rows := [][]types.Datum{}
|
||||
for i, col := range table.Columns {
|
||||
colLen := col.Flen
|
||||
if colLen == types.UnspecifiedLength {
|
||||
colLen = mysql.GetDefaultFieldLength(col.Tp)
|
||||
}
|
||||
decimal := col.Decimal
|
||||
if decimal == types.UnspecifiedLength {
|
||||
decimal = 0
|
||||
}
|
||||
columnType := col.FieldType.CompactStr()
|
||||
columnDesc := column.NewColDesc(&column.Col{ColumnInfo: *col})
|
||||
var columnDefault interface{}
|
||||
if columnDesc.DefaultValue != nil {
|
||||
columnDefault = fmt.Sprintf("%v", columnDesc.DefaultValue)
|
||||
}
|
||||
record := types.MakeDatums(
|
||||
catalogVal, // TABLE_CATALOG
|
||||
schema.Name.O, // TABLE_SCHEMA
|
||||
table.Name.O, // TABLE_NAME
|
||||
col.Name.O, // COLUMN_NAME
|
||||
i+1, // ORIGINAL_POSITION
|
||||
columnDefault, // COLUMN_DEFAULT
|
||||
columnDesc.Null, // IS_NULLABLE
|
||||
types.TypeToStr(col.Tp, col.Charset), // DATA_TYPE
|
||||
colLen, // CHARACTER_MAXIMUM_LENGTH
|
||||
colLen, // CHARACTOR_OCTET_LENGTH
|
||||
decimal, // NUMERIC_PRECISION
|
||||
0, // NUMERIC_SCALE
|
||||
0, // DATETIME_PRECISION
|
||||
col.Charset, // CHARACTER_SET_NAME
|
||||
col.Collate, // COLLATION_NAME
|
||||
columnType, // COLUMN_TYPE
|
||||
columnDesc.Key, // COLUMN_KEY
|
||||
columnDesc.Extra, // EXTRA
|
||||
"select,insert,update,references", // PRIVILEGES
|
||||
"", // COLUMN_COMMENT
|
||||
)
|
||||
rows = append(rows, record)
|
||||
}
|
||||
return rows
|
||||
}
|
||||
|
||||
func dataForStatistics(schemas []*model.DBInfo) [][]types.Datum {
|
||||
rows := [][]types.Datum{}
|
||||
for _, schema := range schemas {
|
||||
for _, table := range schema.Tables {
|
||||
rs := dataForStatisticsInTable(schema, table)
|
||||
for _, r := range rs {
|
||||
rows = append(rows, r)
|
||||
}
|
||||
}
|
||||
}
|
||||
return rows
|
||||
}
|
||||
|
||||
func dataForStatisticsInTable(schema *model.DBInfo, table *model.TableInfo) [][]types.Datum {
|
||||
rows := [][]types.Datum{}
|
||||
if table.PKIsHandle {
|
||||
for _, col := range table.Columns {
|
||||
if mysql.HasPriKeyFlag(col.Flag) {
|
||||
record := types.MakeDatums(
|
||||
catalogVal, // TABLE_CATALOG
|
||||
schema.Name.O, // TABLE_SCHEMA
|
||||
table.Name.O, // TABLE_NAME
|
||||
"0", // NON_UNIQUE
|
||||
schema.Name.O, // INDEX_SCHEMA
|
||||
"PRIMARY", // INDEX_NAME
|
||||
1, // SEQ_IN_INDEX
|
||||
col.Name.O, // COLUMN_NAME
|
||||
"A", // COLLATION
|
||||
0, // CARDINALITY
|
||||
nil, // SUB_PART
|
||||
nil, // PACKED
|
||||
"", // NULLABLE
|
||||
"BTREE", // INDEX_TYPE
|
||||
"", // COMMENT
|
||||
"", // INDEX_COMMENT
|
||||
)
|
||||
rows = append(rows, record)
|
||||
}
|
||||
}
|
||||
}
|
||||
nameToCol := make(map[string]*model.ColumnInfo, len(table.Columns))
|
||||
for _, c := range table.Columns {
|
||||
nameToCol[c.Name.L] = c
|
||||
}
|
||||
for _, index := range table.Indices {
|
||||
nonUnique := "1"
|
||||
if index.Unique {
|
||||
nonUnique = "0"
|
||||
}
|
||||
for i, key := range index.Columns {
|
||||
col := nameToCol[key.Name.L]
|
||||
nullable := "YES"
|
||||
if mysql.HasNotNullFlag(col.Flag) {
|
||||
nullable = ""
|
||||
}
|
||||
record := types.MakeDatums(
|
||||
catalogVal, // TABLE_CATALOG
|
||||
schema.Name.O, // TABLE_SCHEMA
|
||||
table.Name.O, // TABLE_NAME
|
||||
nonUnique, // NON_UNIQUE
|
||||
schema.Name.O, // INDEX_SCHEMA
|
||||
index.Name.O, // INDEX_NAME
|
||||
i+1, // SEQ_IN_INDEX
|
||||
key.Name.O, // COLUMN_NAME
|
||||
"A", // COLLATION
|
||||
0, // CARDINALITY
|
||||
nil, // SUB_PART
|
||||
nil, // PACKED
|
||||
nullable, // NULLABLE
|
||||
"BTREE", // INDEX_TYPE
|
||||
"", // COMMENT
|
||||
"", // INDEX_COMMENT
|
||||
)
|
||||
rows = append(rows, record)
|
||||
}
|
||||
}
|
||||
return rows
|
||||
}
|
||||
|
||||
var tableNameToColumns = map[string]([]columnInfo){
|
||||
tableSchemata: schemataCols,
|
||||
tableTables: tablesCols,
|
||||
tableColumns: columnsCols,
|
||||
tableStatistics: statisticsCols,
|
||||
tableCharacterSets: charsetCols,
|
||||
tableCollations: collationsCols,
|
||||
tableFiles: filesCols,
|
||||
tableProfiling: profilingCols,
|
||||
}
|
||||
|
||||
func createMemoryTable(meta *model.TableInfo, alloc autoid.Allocator) (table.Table, error) {
|
||||
tbl, _ := tables.MemoryTableFromMeta(alloc, meta)
|
||||
return tbl, nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue