From 77bae766f3f9883d0e7c7e16398f7bc8e1389357 Mon Sep 17 00:00:00 2001 From: aidan Date: Wed, 10 May 2023 10:24:26 +0800 Subject: [PATCH] support delimiter --- src/main.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main.go b/src/main.go index b1b5b41..f58b558 100644 --- a/src/main.go +++ b/src/main.go @@ -548,6 +548,7 @@ func (t *tester) loadQueries() ([]query, error) { seps := bytes.Split(data, []byte("\n")) queries := make([]query, 0, len(seps)) + splitSQL := ";" newStmt := true for i, v := range seps { v := bytes.TrimSpace(v) @@ -564,6 +565,12 @@ func (t *tester) loadQueries() ([]query, error) { continue } + strs := strings.Fields(s) + if strings.EqualFold(strs[0], "delimiter") && len(strs) == 2 && strings.HasSuffix(strs[1], splitSQL) { + splitSQL = strs[1][:len(strs[1])-len(splitSQL)] + newStmt = true + continue + } if newStmt { queries = append(queries, query{Query: s, Line: i + 1}) } else { @@ -573,7 +580,14 @@ func (t *tester) loadQueries() ([]query, error) { } // if the line has a ; in the end, we will treat new line as the new statement. - newStmt = strings.HasSuffix(s, ";") + newStmt = strings.HasSuffix(s, splitSQL) + if newStmt { + if splitSQL == ";" { + queries[len(queries)-1].Query = queries[len(queries)-1].Query[:len(queries[len(queries)-1].Query)] + } else { + queries[len(queries)-1].Query = queries[len(queries)-1].Query[:len(queries[len(queries)-1].Query)-len(splitSQL)] + } + } } return ParseQueries(queries...)