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

Method normalize

pkg/sql/sem/tree/normalize.go:519–568  ·  view source on GitHub ↗
(v *NormalizeVisitor)

Source from the content-addressed store, hash-verified

517}
518
519func (expr *OrExpr) normalize(v *NormalizeVisitor) TypedExpr {
520 left := expr.TypedLeft()
521 right := expr.TypedRight()
522 var dleft, dright Datum
523
524 if left == DNull && right == DNull {
525 return DNull
526 }
527
528 // Use short-circuit evaluation to simplify OR expressions.
529 if v.isConst(left) {
530 dleft, v.err = left.Eval(v.ctx)
531 if v.err != nil {
532 return expr
533 }
534 if dleft != DNull {
535 if d, err := GetBool(dleft); err == nil {
536 if d {
537 return dleft
538 }
539 return right
540 }
541 return DNull
542 }
543 return NewTypedOrExpr(
544 dleft,
545 right,
546 )
547 }
548 if v.isConst(right) {
549 dright, v.err = right.Eval(v.ctx)
550 if v.err != nil {
551 return expr
552 }
553 if dright != DNull {
554 if d, err := GetBool(dright); err == nil {
555 if d {
556 return right
557 }
558 return left
559 }
560 return DNull
561 }
562 return NewTypedOrExpr(
563 left,
564 dright,
565 )
566 }
567 return expr
568}
569
570func (expr *NotExpr) normalize(v *NormalizeVisitor) TypedExpr {
571 inner := expr.TypedInnerExpr()

Callers

nothing calls this directly

Calls 6

TypedLeftMethod · 0.95
TypedRightMethod · 0.95
GetBoolFunction · 0.85
NewTypedOrExprFunction · 0.85
EvalMethod · 0.65
isConstMethod · 0.45

Tested by

no test coverage detected