MCPcopy Create free account
hub / github.com/auxten/postgresql-parser / Eval

Method Eval

pkg/sql/sem/tree/eval.go:3130–3156  ·  view source on GitHub ↗

Eval implements the TypedExpr interface.

(ctx *EvalContext)

Source from the content-addressed store, hash-verified

3128
3129// Eval implements the TypedExpr interface.
3130func (expr *BinaryExpr) Eval(ctx *EvalContext) (Datum, error) {
3131 left, err := expr.Left.(TypedExpr).Eval(ctx)
3132 if err != nil {
3133 return nil, err
3134 }
3135 if left == DNull && !expr.fn.NullableArgs {
3136 return DNull, nil
3137 }
3138 right, err := expr.Right.(TypedExpr).Eval(ctx)
3139 if err != nil {
3140 return nil, err
3141 }
3142 if right == DNull && !expr.fn.NullableArgs {
3143 return DNull, nil
3144 }
3145 res, err := expr.fn.Fn(ctx, left, right)
3146 if err != nil {
3147 return nil, err
3148 }
3149 if ctx.TestingKnobs.AssertBinaryExprReturnTypes {
3150 if err := ensureExpectedType(expr.fn.ReturnType, res); err != nil {
3151 return nil, errors.NewAssertionErrorWithWrappedErrf(err,
3152 "binary op %q", expr)
3153 }
3154 }
3155 return res, err
3156}
3157
3158// Eval implements the TypedExpr interface.
3159func (expr *CaseExpr) Eval(ctx *EvalContext) (Datum, error) {

Callers 1

normalizeMethod · 0.95

Calls 2

ensureExpectedTypeFunction · 0.85
EvalMethod · 0.65

Tested by

no test coverage detected