(req *SqlSelect)
| 1330 | } |
| 1331 | |
| 1332 | func (m *Sqlbridge) parseWhereSelect(req *SqlSelect) error { |
| 1333 | |
| 1334 | var err error |
| 1335 | if m.Cur().T != lex.TokenWhere { |
| 1336 | return nil |
| 1337 | } |
| 1338 | defer func() { |
| 1339 | if r := recover(); r != nil { |
| 1340 | u.Errorf("where error? %v \n %v\n%s", r, m.Cur(), m.Lexer().RawInput()) |
| 1341 | if m.Cur().T == lex.TokenSelect { |
| 1342 | // TODO this is deeply flawed, need to fix/use tokenpager |
| 1343 | // with rewind ability |
| 1344 | err = m.parseWhereSubSelect(req) |
| 1345 | return |
| 1346 | } |
| 1347 | err = fmt.Errorf("panic err: %v", r) |
| 1348 | } |
| 1349 | }() |
| 1350 | |
| 1351 | where, err := m.parseWhere() |
| 1352 | if err != nil { |
| 1353 | return err |
| 1354 | } else if where != nil { |
| 1355 | req.Where = where |
| 1356 | } |
| 1357 | return nil |
| 1358 | } |
| 1359 | |
| 1360 | func (m *Sqlbridge) parseWhere() (*SqlWhere, error) { |
| 1361 |
no test coverage detected