Documentation
¶
Index ¶
- Constants
- Variables
- func ChangeDisableFlagAndFlush(dom *domain.Domain, pluginName string, disable bool) error
- func ForeachPlugin(kind Kind, fn func(plugin *Plugin) error) error
- func GetAll() map[Kind][]Plugin
- func Init(ctx context.Context, cfg Config) (err error)
- func IsEnable(kind Kind) bool
- func Load(ctx context.Context, cfg Config) (err error)
- func NotifyFlush(dom *domain.Domain, pluginName string) error
- func SetTestHook(...)
- func Shutdown(ctx context.Context)
- type AuditManifest
- type AuthenticationManifest
- type Config
- type ConnectionEvent
- type DaemonManifest
- type GeneralEvent
- type ID
- type Kind
- type Manifest
- type ParseEvent
- type Plugin
- type RejectReasonCtxValue
- type SchemaManifest
- type State
Constants ¶
const ( // LibrarySuffix defines TiDB plugin's file suffix. LibrarySuffix = ".so" // ManifestSymbol defines TiDB plugin's entrance symbol. // Plugin take manifest info from this symbol. ManifestSymbol = "PluginManifest" )
Variables ¶
var ExecStartTimeCtxKey = execStartTimeCtxKeyType{}
ExecStartTimeCtxKey indicates stmt start execution time.
var StaticPlugins staticPlugins
StaticPlugins is a registry to register plugins for other packages without loading go plugin so
Functions ¶
func ChangeDisableFlagAndFlush ¶
ChangeDisableFlagAndFlush changes plugin disable flag and notify other nodes to do same change.
func ForeachPlugin ¶
ForeachPlugin loops all ready plugins.
func Init ¶
Init initializes the loaded plugin by config param. This method must be called after `Load` but before any other plugin method call, so it call got TiDB domain info.
func Load ¶
Load load plugin by config param. This method need be called before domain init to inject global variable info during bootstrap.
func NotifyFlush ¶
NotifyFlush notify plugins to do flush logic.
Types ¶
type AuditManifest ¶
type AuditManifest struct {
Manifest
// OnConnectionEvent will be called when TiDB receive or disconnect from client.
// return error will ignore and close current connection.
OnConnectionEvent func(ctx context.Context, event ConnectionEvent, info *variable.ConnectionInfo) error
// OnGeneralEvent will be called during TiDB execution.
OnGeneralEvent func(ctx context.Context, sctx *variable.SessionVars, event GeneralEvent, cmd string)
// OnGlobalVariableEvent will be called when Change GlobalVariable.
OnGlobalVariableEvent func(ctx context.Context, sctx *variable.SessionVars, varName, varValue string)
// OnParseEvent will be called around parse logic.
OnParseEvent func(ctx context.Context, sctx *variable.SessionVars, event ParseEvent) error
}
AuditManifest presents a sub-manifest that every audit plugin must provide.
func DeclareAuditManifest ¶
func DeclareAuditManifest(m *Manifest) *AuditManifest
DeclareAuditManifest declares manifest as AuditManifest.
type AuthenticationManifest ¶
type AuthenticationManifest struct {
Manifest
AuthenticateUser func()
GenerateAuthenticationString func()
ValidateAuthenticationString func()
SetSalt func()
}
AuthenticationManifest presents a sub-manifest that every audit plugin must provide.
func DeclareAuthenticationManifest ¶
func DeclareAuthenticationManifest(m *Manifest) *AuthenticationManifest
DeclareAuthenticationManifest declares manifest as AuthenticationManifest.
type Config ¶
type Config struct {
Plugins []string
PluginDir string
SkipWhenFail bool
EnvVersion map[string]uint16
EtcdClient *clientv3.Client
}
Config presents the init configuration for plugin framework.
type ConnectionEvent ¶
type ConnectionEvent byte
ConnectionEvent presents TiDB connection event.
const ( // Connected represents new connection establish event(finish auth). Connected ConnectionEvent = iota // Disconnect represents disconnect event. Disconnect // ChangeUser represents change user. ChangeUser // PreAuth represents event before start auth. PreAuth // Reject represents event reject connection event. Reject )
func (ConnectionEvent) String ¶
func (c ConnectionEvent) String() string
type DaemonManifest ¶
type DaemonManifest struct {
Manifest
}
DaemonManifest presents a sub-manifest that every DaemonManifest plugins must provide.
func DeclareDaemonManifest ¶
func DeclareDaemonManifest(m *Manifest) *DaemonManifest
DeclareDaemonManifest declares manifest as DaemonManifest.
type GeneralEvent ¶
type GeneralEvent byte
GeneralEvent presents TiDB generate event.
const ( // Starting represents a GeneralEvent that is about to start Starting GeneralEvent = iota // Completed represents a GeneralEvent that has completed Completed // Error represents a GeneralEvent that has error (and typically couldn't start) Error // GeneralEventCount is the count for the general events // The new events MUST be added before it GeneralEventCount )
func GeneralEventFromString ¶
func GeneralEventFromString(s string) (GeneralEvent, error)
GeneralEventFromString gets the `GeneralEvent` from the given string
func (GeneralEvent) String ¶
func (e GeneralEvent) String() string
String returns the string for the `GeneralEvent`
type Manifest ¶
type Manifest struct {
Name string
Description string
RequireVersion map[string]uint16
License string
BuildTime string
// Validate defines the validate logic for plugin.
// returns error will stop load plugin process and TiDB startup.
Validate func(ctx context.Context, manifest *Manifest) error
// OnInit defines the plugin init logic.
// it will be called after domain init.
// return error will stop load plugin process and TiDB startup.
OnInit func(ctx context.Context, manifest *Manifest) error
// OnShutDown defines the plugin cleanup logic.
// return error will write log and continue shutdown.
OnShutdown func(ctx context.Context, manifest *Manifest) error
// OnFlush defines flush logic after executed `flush tidb plugins`.
// it will be called after OnInit.
// return error will write log and continue watch following flush.
OnFlush func(ctx context.Context, manifest *Manifest) error
Version uint16
Kind Kind
// contains filtered or unexported fields
}
Manifest describes plugin info and how it can do by plugin itself.
func ExportManifest ¶
ExportManifest exports a manifest to TiDB as a known format. it just casts sub-manifest to manifest.
type ParseEvent ¶
type ParseEvent byte
ParseEvent presents events happen around parser.
const ( // PreParse presents event before parse. PreParse ParseEvent = 1 + iota // PostParse presents event after parse. PostParse )
type Plugin ¶
type Plugin struct {
*Manifest
Path string
Disabled uint32
State State
// contains filtered or unexported fields
}
Plugin presents a TiDB plugin.
func (*Plugin) DisableFlag ¶
DisableFlag changes the disable flag of plugin.
func (*Plugin) StateValue ¶
StateValue returns readable state string.
type RejectReasonCtxValue ¶
type RejectReasonCtxValue struct{}
RejectReasonCtxValue will be used in OnConnectionEvent to pass RejectReason to plugin.
type SchemaManifest ¶
type SchemaManifest struct {
Manifest
}
SchemaManifest presents a sub-manifest that every schema plugins must provide.
func DeclareSchemaManifest ¶
func DeclareSchemaManifest(m *Manifest) *SchemaManifest
DeclareSchemaManifest declares manifest as SchemaManifest.