SplitSQL splits the given T-SQL script into statements. Strategy: use omni's mssql parser to obtain per-statement byte ranges, then emit one base.Statement per omni statement with strict byte-contiguity and position adjacency: 1. stmts[0].Range.Start == 0 stmts[i].Range.Start == stmts[i-1].Range.E
(statement string)
| 34 | // |
| 35 | // On parser failure, falls back to the semicolon-based tokenizer splitter. |
| 36 | func SplitSQL(statement string) ([]base.Statement, error) { |
| 37 | omniStmts, err := omnimssql.Parse(statement) |
| 38 | if err != nil { |
| 39 | return splitBySemi(statement) |
| 40 | } |
| 41 | return toBaseStatements(statement, omniStmts), nil |
| 42 | } |
| 43 | |
| 44 | func splitBySemi(statement string) ([]base.Statement, error) { |
| 45 | t := tokenizer.NewTokenizer(statement) |
no test coverage detected