Changes look good. Do all existing tests pass? 

In your follow up change, I think it'd be good to have unit tests (not end2end ones), that instantiate and use the Decimal arithmetic expressions directly so we get better test coverage. Plus they'll run faster too.

What's left to get in? Is this accurate:
- throw instead of return null for error conditions
- use precision/scale for aggregate functions (AVG, SUM, MIN/MAX?). I think it's probably ok to set this at the very end of the function - this would be in AvgAggregateFunction, SumAggregationFunction, etc. Can you see how Oracle deals with this with a few tests (whether it sets the scale only at the end). Not sure if anything is required for MIN and MAX.
- add more tests as described above

Anything else?