Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Feat actiontech/dms-ee/issues/125: plugin interface define
  • Loading branch information
waterdrink committed Feb 22, 2024
commit 4c2b3a3f7c813a2cc5ea79afbaea1b6acd37b956
5 changes: 5 additions & 0 deletions sqle/driver/plugin_adapter_v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
sqlDriver "database/sql/driver"

dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op"
driverV1 "github.com/actiontech/sqle/sqle/driver/v1"
driverV2 "github.com/actiontech/sqle/sqle/driver/v2"
"github.com/actiontech/sqle/sqle/errors"
Expand Down Expand Up @@ -314,3 +315,7 @@ func (p *PluginImplV1) GetTableMetaBySQL(ctx context.Context, conf *GetTableMeta
func (p *PluginImplV1) EstimateSQLAffectRows(ctx context.Context, sql string) (*driverV2.EstimatedAffectRows, error) {
return nil, NewErrPluginAPINotImplement(driverV2.OptionalModuleEstimateSQLAffectRows)
}

func (p *PluginImplV1) GetSQLOp(ctx context.Context, sqls string) ([]*dmsCommonSQLOp.SQLObjectOps, error) {
return nil, NewErrPluginAPINotImplement(driverV2.OptionalModuleProvision)
}
17 changes: 17 additions & 0 deletions sqle/driver/plugin_adapter_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"fmt"
"sync"

dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op"
driverV2 "github.com/actiontech/sqle/sqle/driver/v2"
protoV2 "github.com/actiontech/sqle/sqle/driver/v2/proto"
"github.com/actiontech/sqle/sqle/log"
Expand Down Expand Up @@ -485,6 +486,22 @@ func (s *PluginImplV2) EstimateSQLAffectRows(ctx context.Context, sql string) (*
}, nil
}

func (s *PluginImplV2) GetSQLOp(ctx context.Context, sqls string) ([]*dmsCommonSQLOp.SQLObjectOps, error) {
api := "GetSQLOp"
s.preLog(api)
resp, err := s.client.GetSQLOp(ctx, &protoV2.GetSQLOpRequest{
Session: s.Session,
SqlText: &protoV2.GetSQLOpSQL{
Sql: sqls,
},
})
s.afterLog(api, err)
if err != nil {
return nil, err
}
return driverV2.ConvertProtoSQLOpsResponseToDriver(resp)
}

type dbDriverResult struct {
lastInsertId int64
lastInsertIdErr string
Expand Down
5 changes: 5 additions & 0 deletions sqle/driver/plugin_interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"database/sql/driver"

driverV2 "github.com/actiontech/sqle/sqle/driver/v2"
dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op"

"github.com/sirupsen/logrus"
)
Expand Down Expand Up @@ -40,6 +41,10 @@ type Plugin interface {

// Introduced from v2.2304.0
EstimateSQLAffectRows(ctx context.Context, sql string) (*driverV2.EstimatedAffectRows, error)

// 权限相关接口,目前用于provision的权限校验
// GetSqlOp 获取sql中涉及的对象操作,sql可以是单条语句,也可以是多条语句
GetSQLOp(ctx context.Context, sqls string) ([]*dmsCommonSQLOp.SQLObjectOps, error)
}

type PluginProcessor interface {
Expand Down
15 changes: 15 additions & 0 deletions sqle/driver/v2/driver_grpc_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -449,3 +449,18 @@ func (d *DriverGrpcServer) KillProcess(ctx context.Context, req *protoV2.KillPro
ErrMessage: info.ErrMessage,
}, nil
}

func (d *DriverGrpcServer) GetSQLOp(ctx context.Context, req *protoV2.GetSQLOpRequest) (*protoV2.GetSQLOpResponse, error) {
driver, err := d.getDriverBySession(req.Session)
if err != nil {
return &protoV2.GetSQLOpResponse{}, err
}
if req.GetSqlText() == nil {
return &protoV2.GetSQLOpResponse{}, ErrSQLisEmpty
}
ops, err := driver.GetSQLOp(ctx, req.GetSqlText().Sql)
if err != nil {
return &protoV2.GetSQLOpResponse{}, err
}
return ConvertDriverSQLOpsResponseToProto(ops)
}
5 changes: 5 additions & 0 deletions sqle/driver/v2/driver_interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"sort"
"strings"

dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op"
"github.com/actiontech/sqle/sqle/driver/common"
protoV2 "github.com/actiontech/sqle/sqle/driver/v2/proto"
"github.com/actiontech/sqle/sqle/pkg/params"
Expand Down Expand Up @@ -88,6 +89,10 @@ type Driver interface {
ExtractTableFromSQL(ctx context.Context, sql string) ([]*Table, error)
EstimateSQLAffectRows(ctx context.Context, sql string) (*EstimatedAffectRows, error)
KillProcess(ctx context.Context) (*KillProcessInfo, error)

// 权限相关接口,目前用于provision的权限校验
// GetSQLOp 获取sql中涉及的对象操作,sql可以是单条语句,也可以是多条语句
GetSQLOp(ctx context.Context, sqls string) ([]*dmsCommonSQLOp.SQLObjectOps, error)
}

type Node struct {
Expand Down
Loading