MCPcopy Create free account
hub / github.com/bytebase/bytebase / countAffectedRowsForOceanBase

Function countAffectedRowsForOceanBase

backend/plugin/db/mysql/stats.go:72–97  ·  view source on GitHub ↗
(ctx context.Context, sqlDB *sql.DB, dml string)

Source from the content-addressed store, hash-verified

70}
71
72func countAffectedRowsForOceanBase(ctx context.Context, sqlDB *sql.DB, dml string) (int64, error) {
73 explainSQL := fmt.Sprintf("EXPLAIN FORMAT=JSON %s", dml)
74 rows, err := sqlDB.QueryContext(ctx, explainSQL)
75 if err != nil {
76 return 0, err
77 }
78 defer rows.Close()
79 var planString strings.Builder
80 for rows.Next() {
81 var planColumn sql.NullString
82 if err := rows.Scan(&planColumn); err != nil {
83 return 0, err
84 }
85 if !planColumn.Valid {
86 continue
87 }
88 planString.WriteString(planColumn.String)
89 }
90 if err := rows.Err(); err != nil {
91 return 0, err
92 }
93 if planString.Len() == 0 {
94 return 0, nil
95 }
96 return getAffectedRowsFromOceanBaseQueryPlan(planString.String())
97}
98
99func getAffectedRowsFromOceanBaseQueryPlan(planString string) (int64, error) {
100 var planValue map[string]json.RawMessage

Calls 7

QueryContextMethod · 0.80
ScanMethod · 0.80
LenMethod · 0.80
CloseMethod · 0.65
StringMethod · 0.65
NextMethod · 0.45