[Mondrian] when iif has a tuple and a member as its arguments weget an exception

Matt Campbell mkambol at gmail.com
Thu Jan 31 12:05:35 EST 2008


Julian,
Harun is working on Ajit's team.  Would it be okay if they check in the
change he suggested?  They wanted to get some confirmation that their
solution was correct.
-matt

On Jan 31, 2008 11:38 AM, Julian Hyde <jhyde at pentaho.org> wrote:

> Thanks. Logged as bug 1883611
>
> http://sourceforge.net/tracker/index.php?func=detail&aid=1883611&group_id=35
> 302&atid=414613 for tracking. Will fix in 3.0.
>
> Julian
>
> > -----Original Message-----
> > From: mondrian-bounces at pentaho.org
> > [mailto:mondrian-bounces at pentaho.org] On Behalf Of Harun Pathan
> > Sent: Thursday, January 31, 2008 6:54 AM
> > To: mondrian at pentaho.org
> > Subject: [Mondrian] when iif has a tuple and a member as its
> > arguments weget an exception
> >
> > Hi,
> >
> > When we run this mdx we get an error stacktrace for which is as below.
> >
> > WITH
> > MEMBER [Gender].agg
> > AS 'IIF(1=1, ([Gender].[All Gender],measures.[unit
> > sales]),([Gender].[All Gender]) )', SOLVE_ORDER = 4
> > SELECT {[Measures].[unit sales]} ON 0,
> > {{[Gender].[Gender].MEMBERS},{([Gender].agg)}} on 1 FROM sales
> >
> > Caused by: mondrian.olap.MondrianException: Mondrian Error:Internal
> > error: could not derive type
> >       at
> > mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:777)
> >       at mondrian.olap.Util.newInternal(Util.java:1333)
> >       at mondrian.olap.fun.FunDefBase.createCall(FunDefBase.java:245)
> >       at
> > mondrian.mdx.UnresolvedFunCall.accept(UnresolvedFunCall.java:101)
> >       at mondrian.olap.Query$StackValidator.validate(Query.java:1229)
> >       at mondrian.olap.Formula.accept(Formula.java:131)
> >       at mondrian.olap.Query$StackValidator.validate(Query.java:1304)
> >       at mondrian.olap.Query.resolve(Query.java:571)
> >       at mondrian.olap.Query.resolve(Query.java:433)
> >       at mondrian.olap.Query.<init>(Query.java:217)
> >       at mondrian.olap.Query.<init>(Query.java:177)
> >       at mondrian.olap.Parser.makeQuery(Parser.java:850)
> >       at
> > mondrian.olap.CUP$Parser$actions.CUP$Parser$do_action(Parser.j
> > ava:1683)
> >       at mondrian.olap.Parser.do_action(Parser.java:684)
> >       at java_cup.runtime.lr_parser.parse(lr_parser.java:569)
> >       at mondrian.olap.Parser.parseInternal(Parser.java:754)
> >
> > What we saw is that when the iif function is resolved it tries to get
> > a common result type between its arguments.There is no common
> > resulttype between a TupleType and a MemberType.
> > Currently in the TupleType the result type gets resolved to a
> > ScalarType when the other type is a ScalarType and to a TupleType when
> > the other one is a Tuple and in all other cases null.
> > Currently in the MemberType the result type gets resolved to null for
> > the above example when the incoming tuple has more than one argument
> > in it.
> > is it valid if the return type is resolved to a ScalarType when the
> > IIF gets a TupleType and MemberType as its arguments.
> >
> > Code changes in TupleType :
> > //currently this check isnt there.
> > if (type instanceof MemberType) {
> >             return getValueType().computeCommonType(type,
> > conversionCount);
> > }
> >
> > Code changes in MemberType:
> >
> > if (type instanceof TupleType) {
> >       TupleType tupleType = (TupleType) type;
> >        if (tupleType.elementTypes.length == 1) {
> >                return new TupleType(new Type[]
> > {type}).computeCommonType(tupleType, conversionCount);
> >             } else {
> >                 return
> > computeCommonType(tupleType.getValueType(),conversionCount);// this is
> > the code change, earlier returned null
> >             }
> >  }
> > _______________________________________________
> > Mondrian mailing list
> > Mondrian at pentaho.org
> > http://lists.pentaho.org/mailman/listinfo/mondrian
> >
>
> _______________________________________________
> Mondrian mailing list
> Mondrian at pentaho.org
> http://lists.pentaho.org/mailman/listinfo/mondrian
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20080131/6c6e4c28/attachment.html 


More information about the Mondrian mailing list