(statement string)
| 89 | } |
| 90 | |
| 91 | func SplitSQLForCompletion(statement string) ([]base.Statement, error) { |
| 92 | segments := oracleparser.Split(statement) |
| 93 | |
| 94 | result := make([]base.Statement, 0, len(segments)) |
| 95 | positionMapper := base.NewByteOffsetPositionMapper(statement) |
| 96 | for i := 0; i < len(segments); i++ { |
| 97 | seg := segments[i] |
| 98 | if seg.Kind == oracleparser.SegmentSQLPlusCommand { |
| 99 | continue |
| 100 | } |
| 101 | byteStart := seg.ByteStart |
| 102 | byteEnd := seg.ByteEnd |
| 103 | if end, ok := matchRecognizeDefineMergeEnd(statement, segments, i); ok { |
| 104 | byteEnd = end |
| 105 | i += 2 |
| 106 | } |
| 107 | result = append(result, base.Statement{ |
| 108 | Text: statement[byteStart:byteEnd], |
| 109 | Start: positionMapper.Position(byteStart), |
| 110 | End: positionMapper.Position(byteEnd), |
| 111 | Empty: seg.Empty(), |
| 112 | Range: &storepb.Range{ |
| 113 | Start: int32(byteStart), |
| 114 | End: int32(byteEnd), |
| 115 | }, |
| 116 | }) |
| 117 | } |
| 118 | return result, nil |
| 119 | } |
no test coverage detected