NewStatementFromRange builds a Statement from a split segment range.
(sql string, mapper *ByteOffsetPositionMapper, byteStart, byteEnd int, empty bool)
| 34 | |
| 35 | // NewStatementFromRange builds a Statement from a split segment range. |
| 36 | func NewStatementFromRange(sql string, mapper *ByteOffsetPositionMapper, byteStart, byteEnd int, empty bool) Statement { |
| 37 | if byteEnd < len(sql) && sql[byteEnd] == ';' { |
| 38 | byteEnd++ |
| 39 | } |
| 40 | return Statement{ |
| 41 | Text: sql[byteStart:byteEnd], |
| 42 | Empty: empty, |
| 43 | Start: mapper.Position(byteStart), |
| 44 | End: mapper.Position(byteEnd), |
| 45 | Range: &storepb.Range{ |
| 46 | Start: int32(byteStart), |
| 47 | End: int32(byteEnd), |
| 48 | }, |
| 49 | } |
| 50 | } |
| 51 | |
| 52 | // ParsedStatement is the result of parsing SQL (Statement + AST). |
| 53 | // AST is guaranteed to be non-nil after successful parsing. |