[Mondrian] [Measures] dimension is equals any other [Measures]dimension.

Julian Hyde jhyde at pentaho.com
Sun Jun 21 16:43:05 EDT 2009

Thanks - I have logged  <http://jira.pentaho.com/browse/MONDRIAN-568>
http://jira.pentaho.com/browse/MONDRIAN-568 to track this.


From: Alexander Korsukov [mailto:akorsukov at gmail.com] 
Sent: Saturday, June 20, 2009 11:52 PM
To: jhyde at pentaho.com; Mondrian developer mailing list
Subject: Re: [Mondrian] [Measures] dimension is equals any other

Hello, Julian.

See RoleImpl.getAccess(Dimension)

Dimension compared with dimensions from all cubes. I catch following

Have cube [CubeA] with measures [Measures].[MA1] and [Measures].[MA2] and
cube [CubeB]. Define roles:

<Role name="RoleA">
    <SchemaGrant access="none">
        <CubeGrant cube="CubeA" access="all">
            <HierarchyGrant hierarchy="[Measures]" access="custom">
                <MemberGrant member="[Measures].[MA1]" access="all"/>

<Role name="RoleB">
    <SchemaGrant access="none">
        <CubeGrant cube="CubeB" access="all"/>

When create mondrian connection with Role=RoleA, have access only to
[Measures].[MA1]. When create mondrian connection with Role=RoleA,RoleB,
have access to all measures from [CubeA]. Why? Because when check role RoleB
mondrian found [Measure] dimension of [CubeB] then equals to [Measure]
dimension of [CubeA] and therefore get access to all members of [Measure].


On Sat, Jun 20, 2009 at 00:30, Julian Hyde<jhyde at pentaho.com> wrote:
> It wasn't by design, but I don't see it as a glaring bug because we don't
> need to compare dimensions from different cubes. I think the methods on
> member, level, hierarchy do the same.
> We compare dimensions for equality a lot - for example
> RolapEvaluator.setContext(Member) calls it - so the implementation needs
> be very efficient. Frankly, the current implementation, of one name
> comparison, is probably not efficient enough. If we could comehow canonize
> dimensions, we could use identity.
> What is your use case for this? We probably need a method that compares
> objects in the same cube, and a less efficient method that works globally.
> Depending on the use cases, equals could remain the former (and we'd
> the doc) or would become the latter.
> Julian
>> -----Original Message-----
>> From: mondrian-bounces at pentaho.org
>> [mailto:mondrian-bounces at pentaho.org] On Behalf Of Alexander Korsukov
>> Sent: Friday, June 19, 2009 12:08 AM
>> To: Mondrian developer mailing list
>> Subject: [Mondrian] [Measures] dimension is equals any other
>> [Measures]dimension.
>> Hello.
>> Right now, [Measures] dimension of one RolapCube is equals [Measures]
>> dimension of any another RolapCube, because RolapDimension and
>> DimensionBase does not override equals() method, and the base class
>> (OlapElementBase) compares only a name.
>> My fix: add method to RolapDiemnsion (or probably to DimensionBase)
>>     public boolean equals(Object o) {
>>         if (this == o) {
>>             return true;
>>         }
>>         if (!(o instanceof RolapDimension) || isMeasures() ||
>> ((RolapDimension)o).isMeasures()) {
>>             return false;
>>         }
>>         return equals(o);
>>     }
>> Future more, if I have cube [A] with dimension [D] and cube [B] with
>> dimension [D] and try to check equality I will see following
>> RolapCubeDimension dimDofA = ...;
>> RolapCubeDimension dimDofB = ...;
>> // call boolean
>> mondrian.olap.OlapElementBase.equals(OlapElement mdxElement)
>> dimDofA.equals(dimDofB) // result is true
>> // call boolean mondrian.rolap.RolapCubeDimension.equals(Object o)
>> dimDofA.equals((Object)dimDofB) // result is false
>> This is bug or feature by design?
>> --
>> Best regards,
>> Alexander Korsukov
>> _____________________________________________________
>> mailto:akorsukov at gmail.com                icq:8572488
>> (2E0A2052)                        xmpp:shko at jabber.ru
<mailto:xmpp%3Ashko at jabber.ru>  

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20090621/ff66a85f/attachment.html 

More information about the Mondrian mailing list