(stmt *pgquery.ViewStmt)
| 341 | } |
| 342 | |
| 343 | func (p PostgresParser) parseViewStmt(stmt *pgquery.ViewStmt) (parser.Statement, error) { |
| 344 | viewName, err := p.parseTableName(stmt.View) |
| 345 | if err != nil { |
| 346 | return nil, err |
| 347 | } |
| 348 | |
| 349 | var definition parser.SelectStatement |
| 350 | switch node := stmt.Query.Node.(type) { |
| 351 | case *pgquery.Node_SelectStmt: |
| 352 | definition, err = p.parseSelectStmt(node.SelectStmt) |
| 353 | if err != nil { |
| 354 | return nil, err |
| 355 | } |
| 356 | default: |
| 357 | return nil, fmt.Errorf("unknown node in parseViewStmt: %#v", node) |
| 358 | } |
| 359 | |
| 360 | return &parser.DDL{ |
| 361 | Action: parser.CreateView, |
| 362 | View: &parser.View{ |
| 363 | Type: parser.ViewStr, |
| 364 | Name: viewName, |
| 365 | Definition: definition, |
| 366 | }, |
| 367 | }, nil |
| 368 | } |
| 369 | |
| 370 | func (p PostgresParser) parseSelectStmt(stmt *pgquery.SelectStmt) (parser.SelectStatement, error) { |
| 371 | unhandled := stmt.IntoClause != nil || |
no test coverage detected