|
From: <fab...@us...> - 2010-07-22 16:50:56
|
Revision: 5048
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5048&view=rev
Author: fabiomaulo
Date: 2010-07-22 16:50:49 +0000 (Thu, 22 Jul 2010)
Log Message:
-----------
Fix NH-2031 (thanks to Andrea Balducci)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2031/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2031/HqlModFuctionForMsSqlTest.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2031/Mappings.hbm.xml
Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2010-07-22 16:10:05 UTC (rev 5047)
+++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2010-07-22 16:50:49 UTC (rev 5048)
@@ -94,7 +94,7 @@
RegisterFunction("ln", new StandardSQLFunction("ln", NHibernateUtil.Double));
RegisterFunction("log", new StandardSQLFunction("log", NHibernateUtil.Double));
RegisterFunction("log10", new StandardSQLFunction("log10", NHibernateUtil.Double));
- RegisterFunction("mod", new SQLFunctionTemplate(NHibernateUtil.Int32, "(?1 % ?2)"));
+ RegisterFunction("mod", new SQLFunctionTemplate(NHibernateUtil.Int32, "((?1) % (?2))"));
RegisterFunction("radians", new StandardSQLFunction("radians", NHibernateUtil.Double));
RegisterFunction("rand", new NoArgSQLFunction("rand", NHibernateUtil.Double));
RegisterFunction("sin", new StandardSQLFunction("sin", NHibernateUtil.Double));
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2031/HqlModFuctionForMsSqlTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2031/HqlModFuctionForMsSqlTest.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2031/HqlModFuctionForMsSqlTest.cs 2010-07-22 16:50:49 UTC (rev 5048)
@@ -0,0 +1,35 @@
+using NHibernate.Dialect;
+using NHibernate.Hql.Ast.ANTLR;
+using NHibernate.Util;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.NHSpecificTest.NH2031
+{
+ public class MyClass
+ {
+
+ }
+ public class HqlModFuctionForMsSqlTest : BugTestCase
+ {
+ protected override bool AppliesTo(NHibernate.Dialect.Dialect dialect)
+ {
+ return dialect is MsSql2000Dialect;
+ }
+
+ [Test]
+ public void TheModuleOperationShouldAddParenthesisToAvoidWrongSentence()
+ {
+ // The expected value should be "(5+1)%(1+1)" instead "5+ 1%1 +1"
+ var sqlQuery = GetSql("select mod(5+1,1+1) from MyClass");
+ sqlQuery.Should().Contain("(5+1)").And.Contain("(1+1)");
+ }
+
+ public string GetSql(string query)
+ {
+ var qt = new QueryTranslatorImpl(null, new HqlParseEngine(query, false, sessions).Parse(), new CollectionHelper.EmptyMapClass<string, IFilter>(), sessions);
+ qt.Compile(null, false);
+ return qt.SQLString;
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2031/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2031/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2031/Mappings.hbm.xml 2010-07-22 16:50:49 UTC (rev 5048)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ namespace="NHibernate.Test.NHSpecificTest.NH2031"
+ assembly="NHibernate.Test">
+
+ <class name="MyClass">
+ <id type="int">
+ <generator class="hilo" />
+ </id>
+ </class>
+</hibernate-mapping>
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-07-22 16:10:05 UTC (rev 5047)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-07-22 16:50:49 UTC (rev 5048)
@@ -452,6 +452,7 @@
<Compile Include="NHSpecificTest\NH1891\A.cs" />
<Compile Include="NHSpecificTest\NH1891\B.cs" />
<Compile Include="NHSpecificTest\NH1891\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH2031\HqlModFuctionForMsSqlTest.cs" />
<Compile Include="NHSpecificTest\NH2061\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2061\Model.cs" />
<Compile Include="NHSpecificTest\NH2069\Fixture.cs" />
@@ -2202,6 +2203,7 @@
<EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" />
<EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH2031\Mappings.hbm.xml" />
<EmbeddedResource Include="TypesTest\DateClass.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2207\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2243\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|