mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-30 04:50:26 +08:00
fix: sql切割转义等问题处理
This commit is contained in:
@@ -109,6 +109,8 @@ func (d *dbSqlExecAppImpl) Exec(ctx context.Context, execSqlReq *DbSqlExecReq) (
|
||||
execRes, err = d.doInsert(ctx, sqlExec)
|
||||
} else if isOtherQuery(oneSql) {
|
||||
execRes, err = d.doOtherRead(ctx, sqlExec)
|
||||
} else if isDDL(oneSql) {
|
||||
execRes, err = d.doExecDDL(ctx, sqlExec)
|
||||
} else {
|
||||
execRes, err = d.doExec(ctx, dbConn, oneSql)
|
||||
}
|
||||
@@ -149,6 +151,18 @@ func (d *dbSqlExecAppImpl) Exec(ctx context.Context, execSqlReq *DbSqlExecReq) (
|
||||
execRes, err = d.doDelete(ctx, sqlExec)
|
||||
case *sqlstmt.InsertStmt:
|
||||
execRes, err = d.doInsert(ctx, sqlExec)
|
||||
case *sqlstmt.DdlStmt:
|
||||
execRes, err = d.doExecDDL(ctx, sqlExec)
|
||||
case *sqlstmt.CreateDatabase:
|
||||
execRes, err = d.doExecDDL(ctx, sqlExec)
|
||||
case *sqlstmt.CreateTable:
|
||||
execRes, err = d.doExecDDL(ctx, sqlExec)
|
||||
case *sqlstmt.CreateIndex:
|
||||
execRes, err = d.doExecDDL(ctx, sqlExec)
|
||||
case *sqlstmt.AlterDatabase:
|
||||
execRes, err = d.doExecDDL(ctx, sqlExec)
|
||||
case *sqlstmt.AlterTable:
|
||||
execRes, err = d.doExecDDL(ctx, sqlExec)
|
||||
default:
|
||||
execRes, err = d.doExec(ctx, dbConn, sql)
|
||||
}
|
||||
@@ -310,6 +324,19 @@ func (d *dbSqlExecAppImpl) doOtherRead(ctx context.Context, sqlExecParam *sqlExe
|
||||
return d.doQuery(ctx, sqlExecParam.DbConn, selectSql)
|
||||
}
|
||||
|
||||
func (d *dbSqlExecAppImpl) doExecDDL(ctx context.Context, sqlExecParam *sqlExecParam) (*DbSqlExecRes, error) {
|
||||
selectSql := sqlExecParam.Sql
|
||||
sqlExecParam.SqlExecRecord.Type = entity.DbSqlExecTypeDDL
|
||||
|
||||
if procdef := sqlExecParam.Procdef; procdef != nil {
|
||||
if needStartProc := procdef.MatchCondition(DbSqlExecFlowBizType, collx.Kvs("stmtType", "ddl")); needStartProc {
|
||||
return nil, errorx.NewBiz("该操作需要提交工单审批执行")
|
||||
}
|
||||
}
|
||||
|
||||
return d.doExec(ctx, sqlExecParam.DbConn, selectSql)
|
||||
}
|
||||
|
||||
func (d *dbSqlExecAppImpl) doUpdate(ctx context.Context, sqlExecParam *sqlExecParam) (*DbSqlExecRes, error) {
|
||||
dbConn := sqlExecParam.DbConn
|
||||
|
||||
@@ -533,3 +560,9 @@ func isOtherQuery(sql string) bool {
|
||||
sqlPrefix := strings.ToLower(sql[:10])
|
||||
return strings.Contains(sqlPrefix, "explain") || strings.Contains(sqlPrefix, "show")
|
||||
}
|
||||
|
||||
func isDDL(sql string) bool {
|
||||
sqlPrefix := strings.ToLower(sql[:10])
|
||||
return strings.Contains(sqlPrefix, "create") || strings.Contains(sqlPrefix, "alter") ||
|
||||
strings.Contains(sqlPrefix, "drop") || strings.Contains(sqlPrefix, "truncate") || strings.Contains(sqlPrefix, "rename")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user