(stmt *pgquery.IndexStmt)
| 299 | } |
| 300 | |
| 301 | func (p PostgresParser) parseIndexStmt(stmt *pgquery.IndexStmt) (parser.Statement, error) { |
| 302 | table, err := p.parseTableName(stmt.Relation) |
| 303 | if err != nil { |
| 304 | return nil, err |
| 305 | } |
| 306 | |
| 307 | var where *parser.Where |
| 308 | if stmt.WhereClause != nil { |
| 309 | whereExpr, err := p.parseExpr(stmt.WhereClause) |
| 310 | if err != nil { |
| 311 | return nil, err |
| 312 | } |
| 313 | where = &parser.Where{ |
| 314 | Type: "where", |
| 315 | Expr: whereExpr, |
| 316 | } |
| 317 | } |
| 318 | |
| 319 | var indexCols []parser.IndexColumn |
| 320 | for _, indexParam := range stmt.IndexParams { |
| 321 | indexCol, err := p.parseIndexColumn(indexParam) |
| 322 | if err != nil { |
| 323 | return nil, err |
| 324 | } |
| 325 | indexCols = append(indexCols, indexCol) |
| 326 | } |
| 327 | |
| 328 | return &parser.DDL{ |
| 329 | Action: parser.CreateIndex, |
| 330 | Table: table, |
| 331 | NewName: table, |
| 332 | IndexSpec: &parser.IndexSpec{ |
| 333 | Name: parser.NewIdent(stmt.Idxname, false), |
| 334 | Type: parser.NewIdent(stmt.AccessMethod, false), |
| 335 | Unique: stmt.Unique, |
| 336 | Async: false, // go_pgquery doesn't support ASYNC, will be set by generic parser |
| 337 | Where: where, |
| 338 | }, |
| 339 | IndexCols: indexCols, |
| 340 | }, nil |
| 341 | } |
| 342 | |
| 343 | func (p PostgresParser) parseViewStmt(stmt *pgquery.ViewStmt) (parser.Statement, error) { |
| 344 | viewName, err := p.parseTableName(stmt.View) |
no test coverage detected