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

Function getStatementWithResultLimitInline

backend/plugin/db/mysql/query.go:100–122  ·  view source on GitHub ↗
(statement string, limitCount int)

Source from the content-addressed store, hash-verified

98}
99
100func getStatementWithResultLimitInline(statement string, limitCount int) (string, error) {
101 if strings.TrimSpace(statement) == "" {
102 return "", errors.New("empty statement")
103 }
104
105 list, err := mysqlparser.ParseMySQLOmni(statement)
106 if err != nil {
107 if stmt, procedureErr := rewriteMySQLSelectProcedureLimit(statement, limitCount); procedureErr == nil {
108 return stmt, nil
109 }
110 return "", err
111 }
112 if len(list.Items) != 1 {
113 return "", errors.Errorf("expected exactly one statement, got %d", len(list.Items))
114 }
115
116 stmt, ok := list.Items[0].(*ast.SelectStmt)
117 if !ok {
118 return statement, nil
119 }
120
121 return rewriteMySQLSelectLimit(statement, stmt, limitCount)
122}
123
124func rewriteMySQLSelectProcedureLimit(sql string, limitCount int) (string, error) {
125 statements, err := mysqlparser.SplitSQL(sql)

Calls 3

rewriteMySQLSelectLimitFunction · 0.85
ErrorfMethod · 0.80

Tested by 1