From: <fab...@us...> - 2009-04-22 05:13:09
|
Revision: 4194 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4194&view=rev Author: fabiomaulo Date: 2009-04-22 05:13:07 +0000 (Wed, 22 Apr 2009) Log Message: ----------- Fix NH-1725 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Hql/Classic/SelectParser.cs trunk/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs trunk/nhibernate/src/NHibernate.Test/HQL/MaterialResource.hbm.xml Modified: trunk/nhibernate/src/NHibernate/Hql/Classic/SelectParser.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Classic/SelectParser.cs 2009-04-21 19:06:39 UTC (rev 4193) +++ trunk/nhibernate/src/NHibernate/Hql/Classic/SelectParser.cs 2009-04-22 05:13:07 UTC (rev 4194) @@ -150,7 +150,8 @@ else if (funcStack.HasFunctions) { bool constantToken = false; - if (!readyForAliasOrExpression && parenCount != funcStack.NestedFunctionCount) + var expectedParen = parenCount + ((insideNew) ? -1 : 0); + if (!readyForAliasOrExpression && expectedParen != funcStack.NestedFunctionCount) { throw new QueryException("'(' expected after HQL function in SELECT"); } Modified: trunk/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs 2009-04-21 19:06:39 UTC (rev 4193) +++ trunk/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs 2009-04-22 05:13:07 UTC (rev 4194) @@ -900,6 +900,19 @@ } } + [Test] + public void NH1725() + { + // Only to test the parser + using (ISession s = OpenSession()) + { + var hql = "select new ForNh1725(mr.Description, iif(mr.State= 0,1,0)) from MaterialResource mr"; + s.CreateQuery(hql).List(); + hql = "select new ForNh1725(mr.Description, cast(iif(mr.State= 0,1,0) as int)) from MaterialResource mr"; + s.CreateQuery(hql).List(); + } + } + [Test, Ignore("Not supported yet!")] public void ParameterLikeArgument() { @@ -934,4 +947,15 @@ } } } + public class ForNh1725 + { + public string Description { get; set; } + public int Value { get; set; } + + public ForNh1725(string description, int value) + { + Description = description; + Value = value; + } + } } Modified: trunk/nhibernate/src/NHibernate.Test/HQL/MaterialResource.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/MaterialResource.hbm.xml 2009-04-21 19:06:39 UTC (rev 4193) +++ trunk/nhibernate/src/NHibernate.Test/HQL/MaterialResource.hbm.xml 2009-04-22 05:13:07 UTC (rev 4194) @@ -4,7 +4,7 @@ namespace="NHibernate.Test.Hql" default-access="field.camelcase-underscore" default-lazy="true"> - + <import class="NHibernate.Test.Hql.ForNh1725, NHibernate.Test" rename="ForNh1725"/> <class name="MaterialResource"> <id name ="Id"> <generator class="native" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |