MCPcopy
hub / github.com/sqldef/sqldef / parseIndexColumn

Method parseIndexColumn

database/postgres/parser.go:896–928  ·  view source on GitHub ↗
(stmt *pgquery.Node)

Source from the content-addressed store, hash-verified

894}
895
896func (p PostgresParser) parseIndexColumn(stmt *pgquery.Node) (parser.IndexColumn, error) {
897 switch node := stmt.Node.(type) {
898 case *pgquery.Node_IndexElem:
899 if node.IndexElem.Expr != nil {
900 expr, err := p.parseExpr(node.IndexElem.Expr)
901 if err != nil {
902 return parser.IndexColumn{}, err
903 }
904
905 return parser.IndexColumn{
906 Expression: expr,
907 }, nil
908 } else {
909 var direction string
910 switch node.IndexElem.Ordering {
911 case pgquery.SortByDir_SORTBY_ASC:
912 direction = parser.AscScr
913 case pgquery.SortByDir_SORTBY_DESC:
914 direction = parser.DescScr
915 case pgquery.SortByDir_SORTBY_DEFAULT:
916 direction = ""
917 default:
918 return parser.IndexColumn{}, fmt.Errorf("unexpected direction in parseIndexColumn: %d", node.IndexElem.Ordering)
919 }
920 return parser.IndexColumn{
921 Column: parser.NewIdent(node.IndexElem.Name, false),
922 Direction: direction,
923 }, nil
924 }
925 default:
926 return parser.IndexColumn{}, fmt.Errorf("unexpected node type in parseIndexColumn: %#v", stmt)
927 }
928}
929
930func (p PostgresParser) parseArrayElement(node parser.Expr) (parser.Expr, error) {
931 switch node := node.(type) {

Callers 1

parseIndexStmtMethod · 0.95

Calls 3

parseExprMethod · 0.95
NewIdentFunction · 0.92
ErrorfMethod · 0.65

Tested by

no test coverage detected