Index: nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs
===================================================================
--- nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs (revision 3636)
+++ nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs (working copy)
@@ -111,12 +111,10 @@
get { return true; }
}
- ///
- ///
- ///
- ///
- /// Offset of the first row to process in the result set is non-zero
- ///
+ /*
+ ///This was commented out as a workaround for NH-1197:
+ ///NH seems to not correctly handle SubSelects with 'variable limits'
+ ///see http://jira.nhibernate.org/browse/NH-1197
public override SqlString GetLimitString(SqlString querySqlString, bool hasOffset)
{
SqlStringBuilder pagingBuilder = new SqlStringBuilder();
@@ -131,8 +129,29 @@
}
return pagingBuilder.ToSqlString();
+ }*/
+
+ public override bool SupportsVariableLimit
+ {
+ get { return false; }
}
+ public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit)
+ {
+ SqlStringBuilder pagingBuilder = new SqlStringBuilder();
+ pagingBuilder.Add(querySqlString);
+ pagingBuilder.Add(" limit ");
+ pagingBuilder.Add(limit.ToString());
+
+ if (offset > 0)
+ {
+ pagingBuilder.Add(" offset ");
+ pagingBuilder.Add(offset.ToString());
+ }
+
+ return pagingBuilder.ToSqlString();
+ }
+
public override string GetForUpdateString(string aliases)
{
return ForUpdateString + " of " + aliases;