forked from NYANDEV/forgejo
262 lines
7.2 KiB
Go
262 lines
7.2 KiB
Go
|
// Copyright 2015 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 mysql
|
||
|
|
||
|
// Version informations.
|
||
|
const (
|
||
|
MinProtocolVersion byte = 10
|
||
|
MaxPayloadLen int = 1<<24 - 1
|
||
|
ServerVersion string = "5.5.31-TiDB-1.0"
|
||
|
)
|
||
|
|
||
|
// Header informations.
|
||
|
const (
|
||
|
OKHeader byte = 0x00
|
||
|
ErrHeader byte = 0xff
|
||
|
EOFHeader byte = 0xfe
|
||
|
LocalInFileHeader byte = 0xfb
|
||
|
)
|
||
|
|
||
|
// Server informations.
|
||
|
const (
|
||
|
ServerStatusInTrans uint16 = 0x0001
|
||
|
ServerStatusAutocommit uint16 = 0x0002
|
||
|
ServerMoreResultsExists uint16 = 0x0008
|
||
|
ServerStatusNoGoodIndexUsed uint16 = 0x0010
|
||
|
ServerStatusNoIndexUsed uint16 = 0x0020
|
||
|
ServerStatusCursorExists uint16 = 0x0040
|
||
|
ServerStatusLastRowSend uint16 = 0x0080
|
||
|
ServerStatusDBDropped uint16 = 0x0100
|
||
|
ServerStatusNoBackslashEscaped uint16 = 0x0200
|
||
|
ServerStatusMetadataChanged uint16 = 0x0400
|
||
|
ServerStatusWasSlow uint16 = 0x0800
|
||
|
ServerPSOutParams uint16 = 0x1000
|
||
|
)
|
||
|
|
||
|
// Command informations.
|
||
|
const (
|
||
|
ComSleep byte = iota
|
||
|
ComQuit
|
||
|
ComInitDB
|
||
|
ComQuery
|
||
|
ComFieldList
|
||
|
ComCreateDB
|
||
|
ComDropDB
|
||
|
ComRefresh
|
||
|
ComShutdown
|
||
|
ComStatistics
|
||
|
ComProcessInfo
|
||
|
ComConnect
|
||
|
ComProcessKill
|
||
|
ComDebug
|
||
|
ComPing
|
||
|
ComTime
|
||
|
ComDelayedInsert
|
||
|
ComChangeUser
|
||
|
ComBinlogDump
|
||
|
ComTableDump
|
||
|
ComConnectOut
|
||
|
ComRegisterSlave
|
||
|
ComStmtPrepare
|
||
|
ComStmtExecute
|
||
|
ComStmtSendLongData
|
||
|
ComStmtClose
|
||
|
ComStmtReset
|
||
|
ComSetOption
|
||
|
ComStmtFetch
|
||
|
ComDaemon
|
||
|
ComBinlogDumpGtid
|
||
|
ComResetConnection
|
||
|
)
|
||
|
|
||
|
// Client informations.
|
||
|
const (
|
||
|
ClientLongPassword uint32 = 1 << iota
|
||
|
ClientFoundRows
|
||
|
ClientLongFlag
|
||
|
ClientConnectWithDB
|
||
|
ClientNoSchema
|
||
|
ClientCompress
|
||
|
ClientODBC
|
||
|
ClientLocalFiles
|
||
|
ClientIgnoreSpace
|
||
|
ClientProtocol41
|
||
|
ClientInteractive
|
||
|
ClientSSL
|
||
|
ClientIgnoreSigpipe
|
||
|
ClientTransactions
|
||
|
ClientReserved
|
||
|
ClientSecureConnection
|
||
|
ClientMultiStatements
|
||
|
ClientMultiResults
|
||
|
ClientPSMultiResults
|
||
|
ClientPluginAuth
|
||
|
ClientConnectAtts
|
||
|
ClientPluginAuthLenencClientData
|
||
|
)
|
||
|
|
||
|
// Cache type informations.
|
||
|
const (
|
||
|
TypeNoCache byte = 0xff
|
||
|
)
|
||
|
|
||
|
// Auth name informations.
|
||
|
const (
|
||
|
AuthName = "mysql_native_password"
|
||
|
)
|
||
|
|
||
|
// MySQL database and tables.
|
||
|
const (
|
||
|
// SystemDB is the name of system database.
|
||
|
SystemDB = "mysql"
|
||
|
// UserTable is the table in system db contains user info.
|
||
|
UserTable = "User"
|
||
|
// DBTable is the table in system db contains db scope privilege info.
|
||
|
DBTable = "DB"
|
||
|
// TablePrivTable is the table in system db contains table scope privilege info.
|
||
|
TablePrivTable = "Tables_priv"
|
||
|
// ColumnPrivTable is the table in system db contains column scope privilege info.
|
||
|
ColumnPrivTable = "Columns_priv"
|
||
|
// GlobalVariablesTable is the table contains global system variables.
|
||
|
GlobalVariablesTable = "GLOBAL_VARIABLES"
|
||
|
// GlobalStatusTable is the table contains global status variables.
|
||
|
GlobalStatusTable = "GLOBAL_STATUS"
|
||
|
// TiDBTable is the table contains tidb info.
|
||
|
TiDBTable = "tidb"
|
||
|
)
|
||
|
|
||
|
// PrivilegeType privilege
|
||
|
type PrivilegeType uint32
|
||
|
|
||
|
const (
|
||
|
_ PrivilegeType = 1 << iota
|
||
|
// CreatePriv is the privilege to create schema/table.
|
||
|
CreatePriv
|
||
|
// SelectPriv is the privilege to read from table.
|
||
|
SelectPriv
|
||
|
// InsertPriv is the privilege to insert data into table.
|
||
|
InsertPriv
|
||
|
// UpdatePriv is the privilege to update data in table.
|
||
|
UpdatePriv
|
||
|
// DeletePriv is the privilege to delete data from table.
|
||
|
DeletePriv
|
||
|
// ShowDBPriv is the privilege to run show databases statement.
|
||
|
ShowDBPriv
|
||
|
// CreateUserPriv is the privilege to create user.
|
||
|
CreateUserPriv
|
||
|
// DropPriv is the privilege to drop schema/table.
|
||
|
DropPriv
|
||
|
// GrantPriv is the privilege to grant privilege to user.
|
||
|
GrantPriv
|
||
|
// AlterPriv is the privilege to run alter statement.
|
||
|
AlterPriv
|
||
|
// ExecutePriv is the privilege to run execute statement.
|
||
|
ExecutePriv
|
||
|
// IndexPriv is the privilege to create/drop index.
|
||
|
IndexPriv
|
||
|
// AllPriv is the privilege for all actions.
|
||
|
AllPriv
|
||
|
)
|
||
|
|
||
|
// Priv2UserCol is the privilege to mysql.user table column name.
|
||
|
var Priv2UserCol = map[PrivilegeType]string{
|
||
|
CreatePriv: "Create_priv",
|
||
|
SelectPriv: "Select_priv",
|
||
|
InsertPriv: "Insert_priv",
|
||
|
UpdatePriv: "Update_priv",
|
||
|
DeletePriv: "Delete_priv",
|
||
|
ShowDBPriv: "Show_db_priv",
|
||
|
CreateUserPriv: "Create_user_priv",
|
||
|
DropPriv: "Drop_priv",
|
||
|
GrantPriv: "Grant_priv",
|
||
|
AlterPriv: "Alter_priv",
|
||
|
ExecutePriv: "Execute_priv",
|
||
|
IndexPriv: "Index_priv",
|
||
|
}
|
||
|
|
||
|
// Col2PrivType is the privilege tables column name to privilege type.
|
||
|
var Col2PrivType = map[string]PrivilegeType{
|
||
|
"Create_priv": CreatePriv,
|
||
|
"Select_priv": SelectPriv,
|
||
|
"Insert_priv": InsertPriv,
|
||
|
"Update_priv": UpdatePriv,
|
||
|
"Delete_priv": DeletePriv,
|
||
|
"Show_db_priv": ShowDBPriv,
|
||
|
"Create_user_priv": CreateUserPriv,
|
||
|
"Drop_priv": DropPriv,
|
||
|
"Grant_priv": GrantPriv,
|
||
|
"Alter_priv": AlterPriv,
|
||
|
"Execute_priv": ExecutePriv,
|
||
|
"Index_priv": IndexPriv,
|
||
|
}
|
||
|
|
||
|
// AllGlobalPrivs is all the privileges in global scope.
|
||
|
var AllGlobalPrivs = []PrivilegeType{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, GrantPriv, AlterPriv, ShowDBPriv, ExecutePriv, IndexPriv, CreateUserPriv}
|
||
|
|
||
|
// Priv2Str is the map for privilege to string.
|
||
|
var Priv2Str = map[PrivilegeType]string{
|
||
|
CreatePriv: "Create",
|
||
|
SelectPriv: "Select",
|
||
|
InsertPriv: "Insert",
|
||
|
UpdatePriv: "Update",
|
||
|
DeletePriv: "Delete",
|
||
|
ShowDBPriv: "Show Databases",
|
||
|
CreateUserPriv: "Create User",
|
||
|
DropPriv: "Drop",
|
||
|
GrantPriv: "Grant Option",
|
||
|
AlterPriv: "Alter",
|
||
|
ExecutePriv: "Execute",
|
||
|
IndexPriv: "Index",
|
||
|
}
|
||
|
|
||
|
// Priv2SetStr is the map for privilege to string.
|
||
|
var Priv2SetStr = map[PrivilegeType]string{
|
||
|
CreatePriv: "Create",
|
||
|
SelectPriv: "Select",
|
||
|
InsertPriv: "Insert",
|
||
|
UpdatePriv: "Update",
|
||
|
DeletePriv: "Delete",
|
||
|
DropPriv: "Drop",
|
||
|
GrantPriv: "Grant",
|
||
|
AlterPriv: "Alter",
|
||
|
ExecutePriv: "Execute",
|
||
|
IndexPriv: "Index",
|
||
|
}
|
||
|
|
||
|
// SetStr2Priv is the map for privilege set string to privilege type.
|
||
|
var SetStr2Priv = map[string]PrivilegeType{
|
||
|
"Create": CreatePriv,
|
||
|
"Select": SelectPriv,
|
||
|
"Insert": InsertPriv,
|
||
|
"Update": UpdatePriv,
|
||
|
"Delete": DeletePriv,
|
||
|
"Drop": DropPriv,
|
||
|
"Grant": GrantPriv,
|
||
|
"Alter": AlterPriv,
|
||
|
"Execute": ExecutePriv,
|
||
|
"Index": IndexPriv,
|
||
|
}
|
||
|
|
||
|
// AllDBPrivs is all the privileges in database scope.
|
||
|
var AllDBPrivs = []PrivilegeType{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, GrantPriv, AlterPriv, ExecutePriv, IndexPriv}
|
||
|
|
||
|
// AllTablePrivs is all the privileges in table scope.
|
||
|
var AllTablePrivs = []PrivilegeType{SelectPriv, InsertPriv, UpdatePriv, DeletePriv, CreatePriv, DropPriv, GrantPriv, AlterPriv, IndexPriv}
|
||
|
|
||
|
// AllColumnPrivs is all the privileges in column scope.
|
||
|
var AllColumnPrivs = []PrivilegeType{SelectPriv, InsertPriv, UpdatePriv}
|
||
|
|
||
|
// AllPrivilegeLiteral is the string literal for All Privilege.
|
||
|
const AllPrivilegeLiteral = "ALL PRIVILEGES"
|