Skip to content

Commit 911d4cb

Browse files
author
linxiaotao
committed
fix: SQL Workbench is unable to execute SQL
Due to the failure to pass the data source name during the audit, sqled was unable to locate the data source, resulting in an audit error and causing SQL execution to start interrupting at sqle. However, subsequent error messages were not accurately transmitted and logs were not printed, making it difficult to troubleshoot.Temporarily supplement log messages for future troubleshooting.
1 parent 6dce122 commit 911d4cb

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

internal/sql_workbench/service/sql_workbench_service.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,6 +1019,7 @@ func (sqlWorkbenchService *SqlWorkbenchService) AuditMiddleware() echo.Middlewar
10191019
// 读取请求体
10201020
bodyBytes, err := io.ReadAll(c.Request().Body)
10211021
if err != nil {
1022+
sqlWorkbenchService.log.Errorf("failed to read request body: %v", err)
10221023
return fmt.Errorf("failed to read request body: %w", err)
10231024
}
10241025
// 恢复请求体,供后续处理使用
@@ -1027,43 +1028,51 @@ func (sqlWorkbenchService *SqlWorkbenchService) AuditMiddleware() echo.Middlewar
10271028
// 解析请求体获取 SQL 和 datasource ID
10281029
sql, datasourceID, err := sqlWorkbenchService.parseStreamExecuteRequest(bodyBytes)
10291030
if err != nil {
1031+
sqlWorkbenchService.log.Errorf("failed to parse streamExecute request, skipping audit: %v", err)
10301032
return fmt.Errorf("failed to parse streamExecute request, skipping audit: %v", err)
10311033
}
10321034

10331035
if sql == "" || datasourceID == "" {
1036+
sqlWorkbenchService.log.Debugf("SQL or datasource ID is empty, skipping audit")
10341037
return fmt.Errorf("SQL or datasource ID is empty, skipping audit")
10351038
}
10361039

10371040
// 获取当前用户 ID
10381041
dmsUserId, err := sqlWorkbenchService.getDMSUserIdFromRequest(c)
10391042
if err != nil {
1043+
sqlWorkbenchService.log.Errorf("failed to get DMS user ID: %v", err)
10401044
return fmt.Errorf("failed to get DMS user ID: %v", err)
10411045
}
10421046

10431047
// 从缓存表获取 dms_db_service_id
10441048
dmsDBServiceID, err := sqlWorkbenchService.getDMSDBServiceIDFromCache(c.Request().Context(), datasourceID, dmsUserId)
10451049
if err != nil {
1050+
sqlWorkbenchService.log.Errorf("failed to get dms_db_service_id from cache: %v", err)
10461051
return fmt.Errorf("failed to get dms_db_service_id from cache: %v", err)
10471052
}
10481053

10491054
if dmsDBServiceID == "" {
1055+
sqlWorkbenchService.log.Debugf("dms_db_service_id not found in cache for datasource: %s", datasourceID)
10501056
return fmt.Errorf("dms_db_service_id not found in cache for datasource: %s", datasourceID)
10511057
}
10521058

10531059
// 获取 DBService 信息
10541060
dbService, err := sqlWorkbenchService.dbServiceUsecase.GetDBService(c.Request().Context(), dmsDBServiceID)
10551061
if err != nil {
1062+
sqlWorkbenchService.log.Errorf("failed to get DBService: %v", err)
10561063
return fmt.Errorf("failed to get DBService: %v", err)
10571064
}
10581065

10591066
// 检查是否启用 SQL 审核
10601067
if !sqlWorkbenchService.isEnableSQLAudit(dbService) {
1068+
sqlWorkbenchService.log.Debugf("SQL audit is not enabled for DBService: %s", dmsDBServiceID)
10611069
return fmt.Errorf("SQL audit is not enabled for DBService: %s", dmsDBServiceID)
10621070
}
10631071

10641072
// 调用 SQLE 审核接口
10651073
auditResult, err := sqlWorkbenchService.callSQLEAudit(c.Request().Context(), sql, dbService)
10661074
if err != nil {
1075+
sqlWorkbenchService.log.Errorf("call SQLE audit failed: %v", err)
10671076
return fmt.Errorf("call SQLE audit failed: %v", err)
10681077
}
10691078

@@ -1225,6 +1234,7 @@ func (sqlWorkbenchService *SqlWorkbenchService) callSQLEAudit(ctx context.Contex
12251234
SQLContent: sql,
12261235
SQLType: "sql",
12271236
ProjectId: dbService.ProjectUID,
1237+
InstanceName: dbService.Name,
12281238
RuleTemplateName: dbService.SQLEConfig.SQLQueryConfig.RuleTemplateName,
12291239
}
12301240

0 commit comments

Comments
 (0)