org.eigenbase.rel.rules
Class ReduceDecimalsRule.CaseExpander
java.lang.Object
org.eigenbase.rel.rules.ReduceDecimalsRule.RexExpander
org.eigenbase.rel.rules.ReduceDecimalsRule.CaseExpander
- Enclosing class:
- ReduceDecimalsRule
private class ReduceDecimalsRule.CaseExpander
- extends ReduceDecimalsRule.RexExpander
Expander that rewrites case expressions, in place. Starting from:
(when $cond then $val)+ else $default
this expander casts all values to the return type. If the target type is
a decimal, then the values are then decoded. The result of expansion is
that the case operator no longer deals with decimals args. (The return
value is encoded if necessary.)
Note: a decimal type is returned iff arguments have decimals
Methods inherited from class org.eigenbase.rel.rules.ReduceDecimalsRule.RexExpander |
accessValue, canExpand, decodeValue, encodeValue, encodeValue, ensureScale, ensureType, ensureType, makeApproxLiteral, makeApproxScaleFactor, makeCase, makeCase, makeDivide, makeExactLiteral, makeIsNegative, makeIsPositive, makeMinus, makeMultiply, makePlus, makeRoundFactor, makeScaleFactor, matchNullability, powerOfTen, scaleDown, scaleDownDouble, scaleUp |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ReduceDecimalsRule.CaseExpander
private ReduceDecimalsRule.CaseExpander(RexBuilder rexBuilder)
expand
public RexNode expand(RexCall call)
- Description copied from class:
ReduceDecimalsRule.RexExpander
- Rewrites an expression containing decimals. Normally, this method
always performs a rewrite, but implementations may choose to return
the original expression if no change was required.
- Specified by:
expand
in class ReduceDecimalsRule.RexExpander