(t *testing.T, sql string, dialect string)
| 10 | ) |
| 11 | |
| 12 | func parseTopSQL(t *testing.T, sql string, dialect string) error { |
| 13 | t.Helper() |
| 14 | // Use the specified dialect for tokenisation; fall back to SQL Server |
| 15 | // when dialect is empty because TOP is a SQL-Server-family keyword. |
| 16 | tokDialect := keywords.SQLDialect(dialect) |
| 17 | if dialect == "" { |
| 18 | tokDialect = keywords.DialectSQLServer |
| 19 | } |
| 20 | tkz, err := tokenizer.NewWithDialect(tokDialect) |
| 21 | if err != nil { |
| 22 | t.Fatalf("failed to create tokenizer: %v", err) |
| 23 | } |
| 24 | tokens, err := tkz.Tokenize([]byte(sql)) |
| 25 | if err != nil { |
| 26 | t.Fatalf("tokenize failed: %v", err) |
| 27 | } |
| 28 | p := parser.NewParser(parser.WithDialect(dialect)) |
| 29 | _, parseErr := p.ParseFromModelTokens(tokens) |
| 30 | return parseErr |
| 31 | } |
| 32 | |
| 33 | func TestTopVerification(t *testing.T) { |
| 34 | // Test 1: sqlserver dialect - must succeed |
no test coverage detected