parseJoinClause parses a JOIN clause from SQL by wrapping it in a SELECT.
(sql string)
| 148 | |
| 149 | // parseJoinClause parses a JOIN clause from SQL by wrapping it in a SELECT. |
| 150 | func parseJoinClause(sql string) (*ast.JoinClause, error) { |
| 151 | stmt, err := parseSQL("SELECT * FROM _t " + sql) |
| 152 | if err != nil { |
| 153 | return nil, fmt.Errorf("parse join %q: %w", sql, err) |
| 154 | } |
| 155 | |
| 156 | sel, ok := stmt.(*ast.SelectStatement) |
| 157 | if !ok || len(sel.Joins) == 0 { |
| 158 | return nil, fmt.Errorf("parse join %q: no join found", sql) |
| 159 | } |
| 160 | |
| 161 | return &sel.Joins[0], nil |
| 162 | } |
| 163 | |
| 164 | // stmtTypeName returns a human-readable name for a statement type. |
| 165 | func stmtTypeName(stmt ast.Statement) string { |
no test coverage detected