--------------------------------------------------------------------------- Bug 1 - Error positions (HIGH) Every parser error used to say "line 0, column 0" regardless of position. ParseFromModelTokens now uses convertModelTokensWithPositions internally. ---------------------------------------------
(t *testing.T, sql string)
| 41 | // parseExpectError is a test helper that tokenises + parses and expects an |
| 42 | // error to be returned. |
| 43 | func parseExpectError(t *testing.T, sql string) error { |
| 44 | t.Helper() |
| 45 | tkz := tokenizer.GetTokenizer() |
| 46 | defer tokenizer.PutTokenizer(tkz) |
| 47 | |
| 48 | tokens, err := tkz.Tokenize([]byte(sql)) |
| 49 | if err != nil { |
| 50 | t.Fatalf("tokenize unexpectedly failed: %v", err) |
| 51 | } |
| 52 | |
| 53 | p := parser.GetParser() |
| 54 | defer parser.PutParser(p) |
| 55 | |
| 56 | _, parseErr := p.ParseFromModelTokens(tokens) |
| 57 | if parseErr == nil { |
| 58 | t.Fatalf("expected parse error, but SQL parsed successfully: %s", sql) |
| 59 | } |
| 60 | return parseErr |
| 61 | } |
| 62 | |
| 63 | func TestBug1_ErrorPositionNonZeroOnSimpleSyntaxError(t *testing.T) { |
| 64 | // "SELECT FROM users" – missing column list; error should be on line 1 at col > 0 |
no test coverage detected