(n *chast.TableExpression)
| 245 | } |
| 246 | |
| 247 | func (c *cc) convertTableExpression(n *chast.TableExpression) ast.Node { |
| 248 | var result ast.Node |
| 249 | |
| 250 | switch t := n.Table.(type) { |
| 251 | case *chast.TableIdentifier: |
| 252 | rv := parseTableIdentifierToRangeVar(t) |
| 253 | if n.Alias != "" { |
| 254 | alias := n.Alias |
| 255 | rv.Alias = &ast.Alias{Aliasname: &alias} |
| 256 | } |
| 257 | result = rv |
| 258 | case *chast.Subquery: |
| 259 | subselect := &ast.RangeSubselect{ |
| 260 | Subquery: c.convert(t.Query), |
| 261 | } |
| 262 | alias := n.Alias |
| 263 | if alias == "" && t.Alias != "" { |
| 264 | alias = t.Alias |
| 265 | } |
| 266 | if alias != "" { |
| 267 | subselect.Alias = &ast.Alias{Aliasname: &alias} |
| 268 | } |
| 269 | result = subselect |
| 270 | case *chast.FunctionCall: |
| 271 | // Table function like file(), url(), etc. |
| 272 | rf := &ast.RangeFunction{ |
| 273 | Functions: &ast.List{ |
| 274 | Items: []ast.Node{c.convertFunctionCall(t)}, |
| 275 | }, |
| 276 | } |
| 277 | if n.Alias != "" { |
| 278 | alias := n.Alias |
| 279 | rf.Alias = &ast.Alias{Aliasname: &alias} |
| 280 | } |
| 281 | result = rf |
| 282 | default: |
| 283 | result = &ast.TODO{} |
| 284 | } |
| 285 | |
| 286 | return result |
| 287 | } |
| 288 | |
| 289 | func (c *cc) convertTableJoin(n *chast.TableJoin, left, right ast.Node) *ast.JoinExpr { |
| 290 | join := &ast.JoinExpr{ |
no test coverage detected