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

Function parseTSQLStatements

backend/plugin/parser/tsql/tsql.go:20–58  ·  view source on GitHub ↗
(statement string)

Source from the content-addressed store, hash-verified

18}
19
20func parseTSQLStatements(statement string) ([]base.ParsedStatement, error) {
21 // Split once to get Statement with text and positions.
22 stmts, err := SplitSQL(statement)
23 if err != nil {
24 return nil, err
25 }
26
27 var result []base.ParsedStatement
28 for _, stmt := range stmts {
29 if stmt.Empty {
30 continue
31 }
32
33 omniStmts, omniErr := ParseTSQLOmni(stmt.Text)
34 if omniErr != nil {
35 return nil, convertOmniError(omniErr, stmt)
36 }
37
38 if len(omniStmts) == 0 {
39 continue
40 }
41
42 for _, os := range omniStmts {
43 if os.Empty() {
44 continue
45 }
46 result = append(result, base.ParsedStatement{
47 Statement: stmt,
48 AST: &OmniAST{
49 Node: os.AST,
50 Text: stmt.Text,
51 StartPosition: stmt.Start,
52 },
53 })
54 }
55 }
56
57 return result, nil
58}
59
60// convertOmniError converts an omni parser error to a base.SyntaxError with proper line:column position.
61func convertOmniError(err error, stmt base.Statement) error {

Callers 3

prepareTransformationFunction · 0.85
GenerateRestoreSQLFunction · 0.85
extractStatementFunction · 0.85

Calls 3

ParseTSQLOmniFunction · 0.85
SplitSQLFunction · 0.70
convertOmniErrorFunction · 0.70

Tested by

no test coverage detected