You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.8 KiB
100 lines
2.8 KiB
// Copyright 2019 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 plugin
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/pingcap/tidb/sessionctx/variable"
|
|
)
|
|
|
|
// GeneralEvent presents TiDB generate event.
|
|
type GeneralEvent byte
|
|
|
|
const (
|
|
// Log presents log event.
|
|
Log GeneralEvent = iota
|
|
// Error presents error event.
|
|
Error
|
|
// Result presents result event.
|
|
Result
|
|
// Status presents status event.
|
|
Status
|
|
)
|
|
|
|
// ConnectionEvent presents TiDB connection event.
|
|
type ConnectionEvent byte
|
|
|
|
const (
|
|
// Connected presents new connection establish event(finish auth).
|
|
Connected ConnectionEvent = iota
|
|
// Disconnect presents disconnect event.
|
|
Disconnect
|
|
// ChangeUser presents change user.
|
|
ChangeUser
|
|
// PreAuth presents event before start auth.
|
|
PreAuth
|
|
// Reject presents event reject connection event.
|
|
Reject
|
|
)
|
|
|
|
func (c ConnectionEvent) String() string {
|
|
switch c {
|
|
case Connected:
|
|
return "Connected"
|
|
case Disconnect:
|
|
return "Disconnect"
|
|
case ChangeUser:
|
|
return "ChangeUser"
|
|
case PreAuth:
|
|
return "PreAuth"
|
|
case Reject:
|
|
return "Reject"
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// ParseEvent presents events happen around parser.
|
|
type ParseEvent byte
|
|
|
|
const (
|
|
// PreParse presents event before parse.
|
|
PreParse ParseEvent = 1 + iota
|
|
// PostParse presents event after parse.
|
|
PostParse
|
|
)
|
|
|
|
// AuditManifest presents a sub-manifest that every audit plugin must provide.
|
|
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
|
|
}
|
|
|
|
type (
|
|
// RejectReasonCtxValue will be used in OnConnectionEvent to pass RejectReason to plugin.
|
|
RejectReasonCtxValue struct{}
|
|
)
|
|
|
|
type execStartTimeCtxKeyType struct{}
|
|
|
|
// ExecStartTimeCtxKey indicates stmt start execution time.
|
|
var ExecStartTimeCtxKey = execStartTimeCtxKeyType{}
|
|
|