87 lines
4.0 KiB
Go
87 lines
4.0 KiB
Go
// Copyright 2023 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,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package sessionapi
|
|
|
|
import (
|
|
"context"
|
|
"crypto/tls"
|
|
"time"
|
|
|
|
"github.com/pingcap/tidb/pkg/expression"
|
|
"github.com/pingcap/tidb/pkg/extension"
|
|
"github.com/pingcap/tidb/pkg/parser/ast"
|
|
"github.com/pingcap/tidb/pkg/parser/auth"
|
|
"github.com/pingcap/tidb/pkg/planner/core/resolve"
|
|
"github.com/pingcap/tidb/pkg/privilege/conn"
|
|
"github.com/pingcap/tidb/pkg/session/sessmgr"
|
|
"github.com/pingcap/tidb/pkg/session/txninfo"
|
|
"github.com/pingcap/tidb/pkg/sessionctx"
|
|
"github.com/pingcap/tidb/pkg/sessionctx/sessionstates"
|
|
"github.com/pingcap/tidb/pkg/util/sqlexec"
|
|
)
|
|
|
|
// Session context, it is consistent with the lifecycle of a client connection.
|
|
type Session interface {
|
|
sessionctx.Context
|
|
Status() uint16 // Flag of current status, such as autocommit.
|
|
LastInsertID() uint64 // LastInsertID is the last inserted auto_increment ID.
|
|
LastMessage() string // LastMessage is the info message that may be generated by last command
|
|
AffectedRows() uint64 // Affected rows by latest executed stmt.
|
|
// Execute is deprecated, and only used by plugins. Use ExecuteStmt() instead.
|
|
Execute(context.Context, string) ([]sqlexec.RecordSet, error) // Execute a sql statement.
|
|
// ExecuteStmt executes a parsed statement.
|
|
ExecuteStmt(context.Context, ast.StmtNode) (sqlexec.RecordSet, error)
|
|
// Parse is deprecated, use ParseWithParams() instead.
|
|
Parse(ctx context.Context, sql string) ([]ast.StmtNode, error)
|
|
// ExecuteInternal is a helper around ParseWithParams() and ExecuteStmt(). It is not allowed to execute multiple statements.
|
|
ExecuteInternal(context.Context, string, ...any) (sqlexec.RecordSet, error)
|
|
String() string // String is used to debug.
|
|
CommitTxn(context.Context) error
|
|
RollbackTxn(context.Context)
|
|
// PrepareStmt executes prepare statement in binary protocol.
|
|
PrepareStmt(sql string) (stmtID uint32, paramCount int, fields []*resolve.ResultField, err error)
|
|
// ExecutePreparedStmt executes a prepared statement.
|
|
// Deprecated: please use ExecuteStmt, this function is left for testing only.
|
|
// TODO: remove ExecutePreparedStmt.
|
|
ExecutePreparedStmt(ctx context.Context, stmtID uint32, param []expression.Expression) (sqlexec.RecordSet, error)
|
|
DropPreparedStmt(stmtID uint32) error
|
|
// SetSessionStatesHandler sets SessionStatesHandler for type stateType.
|
|
SetSessionStatesHandler(stateType sessionstates.SessionStateType, handler sessionctx.SessionStatesHandler)
|
|
SetClientCapability(uint32) // Set client capability flags.
|
|
SetConnectionID(uint64)
|
|
SetCommandValue(byte)
|
|
SetCompressionAlgorithm(int)
|
|
SetCompressionLevel(int)
|
|
SetProcessInfo(string, time.Time, byte, uint64)
|
|
SetTLSState(*tls.ConnectionState)
|
|
SetCollation(coID int) error
|
|
SetSessionManager(sessmgr.Manager)
|
|
Close()
|
|
Auth(user *auth.UserIdentity, auth, salt []byte, authConn conn.AuthConn) error
|
|
AuthWithoutVerification(ctx context.Context, user *auth.UserIdentity) bool
|
|
AuthPluginForUser(ctx context.Context, user *auth.UserIdentity) (string, error)
|
|
MatchIdentity(ctx context.Context, username, remoteHost string) (*auth.UserIdentity, error)
|
|
// Return the information of the txn current running
|
|
TxnInfo() *txninfo.TxnInfo
|
|
// PrepareTxnCtx is exported for test.
|
|
PrepareTxnCtx(context.Context, ast.StmtNode) error
|
|
// FieldList returns fields list of a table.
|
|
FieldList(tableName string) (fields []*resolve.ResultField, err error)
|
|
SetPort(port string)
|
|
|
|
// SetExtensions sets the `*extension.SessionExtensions` object
|
|
SetExtensions(extensions *extension.SessionExtensions)
|
|
}
|