MCPcopy
hub / github.com/sqldef/sqldef / parseExpr

Method parseExpr

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

Source from the content-addressed store, hash-verified

533}
534
535func (p PostgresParser) parseExpr(stmt *pgquery.Node) (parser.Expr, error) {
536 switch node := stmt.Node.(type) {
537 case *pgquery.Node_AArrayExpr:
538 var elements parser.Exprs
539 for _, element := range node.AArrayExpr.Elements {
540 node, err := p.parseExpr(element)
541 if err != nil {
542 return nil, err
543 }
544
545 elem, err := p.parseArrayElement(node)
546 if err != nil {
547 return nil, err
548 }
549 elements = append(elements, elem)
550 }
551 return &parser.ArrayConstructor{
552 Elements: elements,
553 }, nil
554 case *pgquery.Node_AConst:
555 switch cNode := node.AConst.Val.(type) {
556 case *pgquery.A_Const_Ival:
557 return parser.NewIntVal(fmt.Sprint(cNode.Ival.Ival)), nil
558 case *pgquery.A_Const_Fval:
559 return parser.NewFloatVal(fmt.Sprint(cNode.Fval.Fval)), nil
560 case *pgquery.A_Const_Boolval:
561 return parser.NewBoolVal(cNode.Boolval.Boolval), nil
562 case *pgquery.A_Const_Sval:
563 return parser.NewStrVal(cNode.Sval.Sval), nil
564 case *pgquery.A_Const_Bsval:
565 return parser.NewBitVal(cNode.Bsval.Bsval), nil
566 case nil:
567 return &parser.NullVal{}, nil
568 default:
569 return nil, fmt.Errorf("unknown AConst val type in parseExpr: %#v", cNode)
570 }
571 case *pgquery.Node_BoolExpr:
572 expr, err := p.parseExpr(node.BoolExpr.Args[0])
573 if err != nil {
574 return nil, err
575 }
576
577 if node.BoolExpr.Boolop == pgquery.BoolExprType_NOT_EXPR {
578 return &parser.NotExpr{
579 Expr: expr,
580 }, nil
581 }
582
583 for _, arg := range node.BoolExpr.Args[1:] {
584 right, err := p.parseExpr(arg)
585 if err != nil {
586 return nil, err
587 }
588
589 switch node.BoolExpr.Boolop {
590 case pgquery.BoolExprType_AND_EXPR:
591 expr = &parser.AndExpr{
592 Left: expr,

Callers 11

parseCreateStmtMethod · 0.95
parseIndexStmtMethod · 0.95
parseSelectStmtMethod · 0.95
parseResTargetMethod · 0.95
parseIndexColumnMethod · 0.95
parseExclusionMethod · 0.95
parseColumnDefMethod · 0.95
parseDefaultValueMethod · 0.95
parseTypmodsMethod · 0.95
parseCheckConstraintMethod · 0.95
parseCreatePolicyStmtMethod · 0.95

Calls 12

parseArrayElementMethod · 0.95
parseTypeNameMethod · 0.95
getRawTypeNameMethod · 0.95
NewIntValFunction · 0.92
NewFloatValFunction · 0.92
NewBoolValFunction · 0.92
NewStrValFunction · 0.92
NewBitValFunction · 0.92
NewIdentFunction · 0.92
ValTupleTypeAlias · 0.92
shouldDeleteTypeCastFunction · 0.85
ErrorfMethod · 0.65

Tested by

no test coverage detected