<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6001.17052" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=980032208-05022008><FONT face=Verdana 
color=#000080 size=2>Your suggested fix happens to work, but it's wrong. What do 
think the right answer is? (Not just what happens to 
work.)</FONT></SPAN></DIV><BR>
<BLOCKQUOTE 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000080 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> mondrian-bounces@pentaho.org 
  [mailto:mondrian-bounces@pentaho.org] <B>On Behalf Of </B>Harun 
  Pathan<BR><B>Sent:</B> Monday, February 04, 2008 11:33 PM<BR><B>To:</B> 
  mondrian@pentaho.org<BR><B>Subject:</B> [Mondrian] When iif has tupletypes 
  with unequal lengths asarguments, we get an exception<BR></FONT><BR></DIV>
  <DIV></DIV>When we run this mdx we get an error stacktrace for which is as 
  below.<BR><BR>WITH <BR>MEMBER [Gender].agg<BR>AS 'IIF(1=1, 
  <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ([Store].[All 
  Stores],[Gender].[All Gender]),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  ([Store].[All Stores],[Gender].[All Gender],measures.[unit sales]) )', 
  SOLVE_ORDER = 4<BR>SELECT {[Measures].[unit sales]} ON 0, 
  <BR>{{[Gender].[Gender].MEMBERS},{([Gender].agg)}} on 1 FROM 
  sales<BR><BR>Caused by: mondrian.olap.MondrianException: Mondrian 
  Error:Internal<BR>error: could not derive type<BR>at 
  mondrian.resource.MondrianResource$_Def0.ex(Mondri anResource.java:777)<BR>at 
  mondrian.olap.Util.newInternal(Util.java:1333)<BR>at 
  mondrian.olap.fun.FunDefBase.createCall(FunDefBase .java:245)<BR>at 
  mondrian.mdx.UnresolvedFunCall.accept(UnresolvedFu nCall.java:101)<BR>at 
  mondrian.olap.Query$StackValidator.validate(Query. java:1229)<BR>at 
  mondrian.olap.Formula.accept(Formula.java:131)<BR>at 
  mondrian.olap.Query$StackValidator.validate(Query. java:1304)<BR>at 
  mondrian.olap.Query.resolve(Query.java:571)<BR>at 
  mondrian.olap.Query.resolve(Query.java:433)<BR>at 
  mondrian.olap.Query.&lt;init&gt;(Query.java:217)<BR>at 
  mondrian.olap.Query.&lt;init&gt;(Query.java:177)<BR>at 
  mondrian.olap.Parser.makeQuery(Parser.java:850)<BR>at 
  mondrian.olap.CUP$Parser$actions.CUP$Parser$do_act ion(Parser.java:1683)<BR>at 
  mondrian.olap.Parser.do_action(Parser.java:684)<BR>at 
  java_cup.runtime.lr_parser.parse(lr_parser.java:56 9)<BR>at 
  mondrian.olap.Parser.parseInternal(Parser.java:754 )<BR><BR>When iif function 
  is resolved, it tried to get common result type between its arguments. <BR>It 
  return null if the number of element types in both are unequal.Instead we need 
  to return a ScalarType.<BR><BR>Following is the code change in 
  TupleType<BR><BR>TupleType that = (TupleType) type;<BR>if 
  (this.elementTypes.length !=<BR>&nbsp;&nbsp;&nbsp; that.elementTypes.length) 
  {<BR>&nbsp;&nbsp;&nbsp; return new ScalarType();&nbsp;&nbsp; //earlier it was 
  returning null<BR>}<BR><BR><BR>Can we go ahead and check this 
in?<BR></BLOCKQUOTE></BODY></HTML>