I don't see why you can't have an overall precision/scale, calculated using the same logic you've already written, but just as a loop instead of just with the lhs and rhs. It seems better in the case you mentioned if col1 + col2 + col3 doesn't fail if the overall result fits into the overall precision. Were not driving off a spec that says that's not ok.

The alternative would be to create arithmetic expressions with only 2 children, instead of n. I just don't see an advantage to failing the expression evaluation in the case you mention. Would Oracle fail it? If Oracle and Postgres and Derby all fail in this case, then let's move to having only 2 children expressions. Otherwise, let's do the above.