|
From: <fab...@us...> - 2010-08-02 11:44:33
|
Revision: 5092
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5092&view=rev
Author: fabiomaulo
Date: 2010-08-02 11:44:24 +0000 (Mon, 02 Aug 2010)
Log Message:
-----------
Apply NH-2252 (thanks to Diego Mijelshon)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/NHibernate.csproj
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate/Dialect/MsSqlCe40Dialect.cs
trunk/nhibernate/src/NHibernate.Test/DialectTest/MsSqlCe40DialectFixture.cs
Added: trunk/nhibernate/src/NHibernate/Dialect/MsSqlCe40Dialect.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Dialect/MsSqlCe40Dialect.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Dialect/MsSqlCe40Dialect.cs 2010-08-02 11:44:24 UTC (rev 5092)
@@ -0,0 +1,30 @@
+using NHibernate.SqlCommand;
+
+namespace NHibernate.Dialect
+{
+ public class MsSqlCe40Dialect : MsSqlCeDialect
+ {
+ public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit)
+ {
+ if (querySqlString.IndexOfCaseInsensitive(" ORDER BY ") < 0)
+ querySqlString = querySqlString.Append(" ORDER BY GETDATE()");
+ return querySqlString.Append(string.Format(" OFFSET {0} ROWS FETCH NEXT {1} ROWS ONLY", offset, limit));
+ }
+
+ public override bool SupportsLimit
+ {
+ get
+ {
+ return true;
+ }
+ }
+
+ public override bool SupportsLimitOffset
+ {
+ get
+ {
+ return true;
+ }
+ }
+ }
+}
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-02 11:35:07 UTC (rev 5091)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-02 11:44:24 UTC (rev 5092)
@@ -585,6 +585,7 @@
<Compile Include="Dialect\MsSql2008Dialect.cs" />
<Compile Include="Dialect\InformixDialect0940.cs" />
<Compile Include="Dialect\InformixDialect1000.cs" />
+ <Compile Include="Dialect\MsSqlCe40Dialect.cs" />
<Compile Include="Dialect\Oracle10gDialect.cs" />
<Compile Include="Dialect\Oracle8iDialect.cs" />
<Compile Include="Dialect\Oracle9iDialect.cs" />
Added: trunk/nhibernate/src/NHibernate.Test/DialectTest/MsSqlCe40DialectFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/DialectTest/MsSqlCe40DialectFixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/DialectTest/MsSqlCe40DialectFixture.cs 2010-08-02 11:44:24 UTC (rev 5092)
@@ -0,0 +1,25 @@
+using NHibernate.Dialect;
+using NHibernate.SqlCommand;
+using NUnit.Framework;
+
+namespace NHibernate.Test.DialectTest
+{
+ public class MsSqlCe40DialectFixture
+ {
+ [Test]
+ public void GetLimitString()
+ {
+ var dialect = new MsSqlCe40Dialect();
+ var str = dialect.GetLimitString(new SqlString("SELECT id FROM user ORDER BY name"), 13, 17);
+ Assert.AreEqual("SELECT id FROM user ORDER BY name OFFSET 13 ROWS FETCH NEXT 17 ROWS ONLY", str.ToString());
+ }
+
+ [Test]
+ public void GetLimitStringWithDummyOrder()
+ {
+ var dialect = new MsSqlCe40Dialect();
+ var str = dialect.GetLimitString(new SqlString("SELECT id FROM user"), 13, 17);
+ Assert.AreEqual("SELECT id FROM user ORDER BY GETDATE() OFFSET 13 ROWS FETCH NEXT 17 ROWS ONLY", str.ToString());
+ }
+ }
+}
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-02 11:35:07 UTC (rev 5091)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-02 11:44:24 UTC (rev 5092)
@@ -177,6 +177,7 @@
<Compile Include="Criteria\MaterialResource.cs" />
<Compile Include="Criteria\ProjectionsTest.cs" />
<Compile Include="Criteria\Reptile.cs" />
+ <Compile Include="DialectTest\MsSqlCe40DialectFixture.cs" />
<Compile Include="DriverTest\SqlClientDriverFixture.cs" />
<Compile Include="DriverTest\SqlServerCeDriverFixture.cs" />
<Compile Include="EngineTest\CallableParserFixture.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|