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