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

Method normalize

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

Source from the content-addressed store, hash-verified

166}
167
168func (expr *AndExpr) normalize(v *NormalizeVisitor) TypedExpr {
169 left := expr.TypedLeft()
170 right := expr.TypedRight()
171 var dleft, dright Datum
172
173 if left == DNull && right == DNull {
174 return DNull
175 }
176
177 // Use short-circuit evaluation to simplify AND expressions.
178 if v.isConst(left) {
179 dleft, v.err = left.Eval(v.ctx)
180 if v.err != nil {
181 return expr
182 }
183 if dleft != DNull {
184 if d, err := GetBool(dleft); err == nil {
185 if !d {
186 return dleft
187 }
188 return right
189 }
190 return DNull
191 }
192 return NewTypedAndExpr(
193 dleft,
194 right,
195 )
196 }
197 if v.isConst(right) {
198 dright, v.err = right.Eval(v.ctx)
199 if v.err != nil {
200 return expr
201 }
202 if dright != DNull {
203 if d, err := GetBool(dright); err == nil {
204 if !d {
205 return right
206 }
207 return left
208 }
209 return DNull
210 }
211 return NewTypedAndExpr(
212 left,
213 dright,
214 )
215 }
216 return expr
217}
218
219func (expr *ComparisonExpr) normalize(v *NormalizeVisitor) TypedExpr {
220 switch expr.Operator {

Callers

nothing calls this directly

Calls 6

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

Tested by

no test coverage detected