pentaho/mondrian — pull request #411 by mkambol (2014-12-19 19:21:11+00:00)
Title: [MONDRIAN-2202] Addresses issues with native evaluation and with

CJFD.nonEmptyList that arise when one or more measures change the
conditions under which a context is non empty. For example, given a
measure which sums YTD values up to Time.CurrentMember, it's possible
that there will be non empty data for tuples in a crossjoin even if
there is no base measure value at Time.CurrentMember (since the
measures sums *up to* CurrentMember).

This fix extracts all referenced members from the set of measures in
the query, and determines whether there's a potential for conflict.
If there is, native eval is turned off. Likewise a conflict in
CJFD.nonEmptyList is handled by removing the conflicting member from
the evaluation context to avoid suppressing tuples which may
ultimately have data.

This change does not address calculated members not defined on
measures that result in similar changing of context. It's possible
that the approach can be extended to handle calc members in general,
but the challenge is to avoid disabling native evaluation too broadly.