|
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.
|