[Mondrian] RolapNativeSet NPE

Matt Campbell mcampbell at pentaho.com
Thu Mar 27 09:28:11 EDT 2014


ExpandNonNative increases the number of cases where push down logic can be used.  It does this by evaluating sub-expressions that cannot be easily optimized within a crossjoin, and then inlining the resulting sets into a new cross join argument.  This can help in many scenarios.  For example, with your query the Filter expression within a crossjoin arg caused the optimization logic to fail, but Mondrian then expanded out that filter.  Had it actually returned any tuples, those tuples would have been used in constraining the tuple set used for the outer crossjoin.  If [Fuel].members in your query had 10s of thousands of members that extra optimization could have a big impact on query time.  

Whether to have it on or off depends a lot on your workload, dimension cardinality, and model.  I'd suggest running some tests with typical queries using both settings to see how much it will impact you.



________________________________________
From: mondrian-bounces at pentaho.org [mondrian-bounces at pentaho.org] On Behalf Of Hilario Fernandes [hilario.fernandes at cortex-intelligence.com]
Sent: Thursday, March 27, 2014 8:59 AM
To: Mondrian developer mailing list
Subject: Re: [Mondrian] RolapNativeSet NPE

Yes Matt, i do have it enabled. These are my native setttings:

mondrian.native.crossjoin.enable=true
mondrian.native.filter.enable=true
mondrian.native.nonempty.enable=true
mondrian.native.topcount.enable=true
mondrian.native.ExpandNonNative=true
mondrian.native.EnableNativeRegexpFilter=true

I followed some indications on http://infocenter.pentaho.com/help/index.jsp?topic=%2Fperformance_tuning_guide%2Fconcept_mondrian_properties.html to set it to true. I supposed with those i'd have the optimal performance.

I can confirm that the error is gone when setting  mondrian.native.ExpandNonNative=false.

Is there any major hit in performance for having it to false with large datasets, or does any of the other options depend on this one to work?

Thank you for opening the issue, and for your attention.





On Thu, Mar 27, 2014 at 12:39 PM, Matt Campbell <mcampbell at pentaho.com<mailto:mcampbell at pentaho.com>> wrote:


Hi Hilario-
I was able to reproduce what you were seeing by setting ExpandNonNative=true.  Can you confirm you have that property set as well?  (I believe that's the default setting in biserver)

I've logged MONDRIAN-1964 for the issue.

-matt

________________________________________
From: mondrian-bounces at pentaho.org<mailto:mondrian-bounces at pentaho.org> [mondrian-bounces at pentaho.org<mailto:mondrian-bounces at pentaho.org>] On Behalf Of Hilario Fernandes [hilario.fernandes at cortex-intelligence.com<mailto:hilario.fernandes at cortex-intelligence.com>]
Sent: Thursday, March 27, 2014 6:39 AM
To: Mondrian developer mailing list
Subject: Re: [Mondrian] RolapNativeSet NPE

Thank you for your reply.

I've tryed version 3.6.2 and 3.6.5 with the same results.

Should i fill in a bug report? Under which project should i do it? I've opened bugs in the wrong place in the past, just want to make sure i put it on the right place this time!


On Wed, Mar 26, 2014 at 6:33 PM, Luc Boudreau <lucboudreau at gmail.com<mailto:lucboudreau at gmail.com><mailto:lucboudreau at gmail.com<mailto:lucboudreau at gmail.com>>> wrote:
Looks like a bug.

Which version is this? I vaguely remember seeing this before.

Luc


On Wed, Mar 26, 2014 at 2:30 PM, Hilario Fernandes <hilario.fernandes at cortex-intelligence.com<mailto:hilario.fernandes at cortex-intelligence.com><mailto:hilario.fernandes at cortex-intelligence.com<mailto:hilario.fernandes at cortex-intelligence.com>>> wrote:
Hi everyone,

I'm implementing a system that creates mdx queries and passes these to Mondrian to be executed. During my tests I have found a problem when using mondrian.native.crossjoin.enable=true.

If I try to do a query such as this:

SELECT
NON EMPTY {[Measures].[Price_SUM]} ON COLUMNS,
NON EMPTY CrossJoin({Filter({[Brand].[Brand].Members}, [Brand].CurrentMember.Name MATCHES '(?i).*zzzzz.*')}, {[Fuel].[Fuel].Members}) ON ROWS
FROM [Cars]


Where we have a CrossJoin of a Filter over Brand members with the fuel members. The problem is that whenever the first argument of the CrossJoin is a filter that returns empty (no values matched) i get a NullPointerException from mondrian.


java.lang.NullPointerException
at mondrian.rolap.RolapNativeSet$SetEvaluator.execute(RolapNativeSet.java:186)
at mondrian.olap.fun.CrossJoinFunDef$CrossJoinIterCalc.evaluateIterable(CrossJoinFunDef.java:177)
at mondrian.rolap.RolapResult.executeAxis(RolapResult.java:875)
at mondrian.rolap.RolapResult.evalLoad(RolapResult.java:700)
at mondrian.rolap.RolapResult.loadMembers(RolapResult.java:656)
at mondrian.rolap.RolapResult.<init>(RolapResult.java:288)
at mondrian.rolap.RolapConnection.executeInternal(RolapConnection.java:671)
at mondrian.rolap.RolapConnection.access$000(RolapConnection.java:51)
at mondrian.rolap.RolapConnection$1.call(RolapConnection.java:622)
at mondrian.rolap.RolapConnection$1.call(RolapConnection.java:621)


Anyone has an idea of the problem?

--
Hilario Fernandes

_______________________________________________
Mondrian mailing list
Mondrian at pentaho.org<mailto:Mondrian at pentaho.org><mailto:Mondrian at pentaho.org<mailto:Mondrian at pentaho.org>>
http://lists.pentaho.org/mailman/listinfo/mondrian



_______________________________________________
Mondrian mailing list
Mondrian at pentaho.org<mailto:Mondrian at pentaho.org><mailto:Mondrian at pentaho.org<mailto:Mondrian at pentaho.org>>
http://lists.pentaho.org/mailman/listinfo/mondrian




--
Hilario Fernandes
_______________________________________________
Mondrian mailing list
Mondrian at pentaho.org<mailto:Mondrian at pentaho.org>
http://lists.pentaho.org/mailman/listinfo/mondrian



--
Hilario Fernandes


More information about the Mondrian mailing list