MCPcopy
hub / github.com/sqldef/sqldef / parseIndexStmt

Method parseIndexStmt

database/postgres/parser.go:301–341  ·  view source on GitHub ↗
(stmt *pgquery.IndexStmt)

Source from the content-addressed store, hash-verified

299}
300
301func (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
343func (p PostgresParser) parseViewStmt(stmt *pgquery.ViewStmt) (parser.Statement, error) {
344 viewName, err := p.parseTableName(stmt.View)

Callers 1

parseStmtMethod · 0.95

Calls 4

parseTableNameMethod · 0.95
parseExprMethod · 0.95
parseIndexColumnMethod · 0.95
NewIdentFunction · 0.92

Tested by

no test coverage detected