MCPcopy Create free account
hub / github.com/dolthub/doltgresql / TypeCheck

Method TypeCheck

postgres/parser/sem/tree/type_check.go:658–699  ·  view source on GitHub ↗

TypeCheck implements the Expr interface.

(
	ctx context.Context, semaCtx *SemaContext, desired *types.T,
)

Source from the content-addressed store, hash-verified

656
657// TypeCheck implements the Expr interface.
658func (expr *ComparisonExpr) TypeCheck(
659 ctx context.Context, semaCtx *SemaContext, desired *types.T,
660) (TypedExpr, error) {
661 var leftTyped, rightTyped TypedExpr
662 var cmpOp *CmpOp
663 var alwaysNull bool
664 var err error
665 if expr.Operator.HasSubOperator() {
666 leftTyped, rightTyped, cmpOp, alwaysNull, err = typeCheckComparisonOpWithSubOperator(
667 ctx,
668 semaCtx,
669 expr.Operator,
670 expr.SubOperator,
671 expr.Left,
672 expr.Right,
673 )
674 } else {
675 leftTyped, rightTyped, cmpOp, alwaysNull, err = typeCheckComparisonOp(
676 ctx,
677 semaCtx,
678 expr.Operator,
679 expr.Left,
680 expr.Right,
681 )
682 }
683 if err != nil {
684 return nil, err
685 }
686
687 if alwaysNull {
688 return DNull, nil
689 }
690
691 if err := semaCtx.checkVolatility(cmpOp.Volatility); err != nil {
692 return nil, pgerror.Wrapf(err, pgcode.InvalidParameterValue, "%s", expr.Operator)
693 }
694
695 expr.Left, expr.Right = leftTyped, rightTyped
696 expr.Fn = cmpOp
697 expr.typ = types.Bool
698 return expr, nil
699}
700
701var (
702 errStarNotAllowed = pgerror.New(pgcode.Syntax, "cannot use \"*\" in this context")

Callers

nothing calls this directly

Calls 5

WrapfFunction · 0.92
typeCheckComparisonOpFunction · 0.85
HasSubOperatorMethod · 0.80
checkVolatilityMethod · 0.80

Tested by

no test coverage detected