From: <fab...@us...> - 2008-12-16 20:54:18
|
Revision: 3961 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3961&view=rev Author: fabiomaulo Date: 2008-12-16 20:54:13 +0000 (Tue, 16 Dec 2008) Log Message: ----------- Fix NH-1614 by Giovanni Bismondo Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs 2008-12-16 20:44:19 UTC (rev 3960) +++ trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs 2008-12-16 20:54:13 UTC (rev 3961) @@ -4,14 +4,38 @@ { internal class MySQL5Dialect : MySQLDialect { + //Reference 5.x + //Numeric: + //http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html + //Date and time: + //http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.html + //String: + //http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html + //default: + //http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html + public override bool SupportsVariableLimit { - get { return false; } + get + { + //note: why false? + return false; + } } + public override bool SupportsSubSelects + { + get + { + //subquery in mysql? yes! From 4.1! + //http://dev.mysql.com/doc/refman/5.1/en/subqueries.html + return true; + } + } + public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit) { - SqlStringBuilder pagingBuilder = new SqlStringBuilder(); + var pagingBuilder = new SqlStringBuilder(); pagingBuilder.Add(querySqlString); pagingBuilder.Add(" limit "); @@ -23,7 +47,6 @@ pagingBuilder.Add(limit.ToString()); - return pagingBuilder.ToSqlString(); } } Modified: trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2008-12-16 20:44:19 UTC (rev 3960) +++ trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2008-12-16 20:54:13 UTC (rev 3961) @@ -29,9 +29,19 @@ /// </remarks> public class MySQLDialect : Dialect { - /// <summary></summary> - public MySQLDialect() : base() + public MySQLDialect() { + //Reference 3-4.x + //Numeric: + //http://dev.mysql.com/doc/refman/4.1/en/numeric-type-overview.html + //Date and time: + //http://dev.mysql.com/doc/refman/4.1/en/date-and-time-type-overview.html + //String: + //http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html + //default: + //http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html + + //string type RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)"); RegisterColumnType(DbType.AnsiStringFixedLength, 255, "CHAR($l)"); RegisterColumnType(DbType.AnsiStringFixedLength, 65535, "TEXT"); @@ -40,33 +50,58 @@ RegisterColumnType(DbType.AnsiString, 255, "VARCHAR($l)"); RegisterColumnType(DbType.AnsiString, 65535, "TEXT"); RegisterColumnType(DbType.AnsiString, 16777215, "MEDIUMTEXT"); + RegisterColumnType(DbType.StringFixedLength, "CHAR(255)"); + RegisterColumnType(DbType.StringFixedLength, 255, "CHAR($l)"); + RegisterColumnType(DbType.StringFixedLength, 65535, "TEXT"); + RegisterColumnType(DbType.StringFixedLength, 16777215, "MEDIUMTEXT"); + RegisterColumnType(DbType.String, "VARCHAR(255)"); + RegisterColumnType(DbType.String, 255, "VARCHAR($l)"); + RegisterColumnType(DbType.String, 65535, "TEXT"); + RegisterColumnType(DbType.String, 16777215, "MEDIUMTEXT"); + //todo: future: add compatibility with decimal??? + //An unpacked fixed-point number. Behaves like a CHAR column; + //\x93unpacked\x94 means the number is stored as a string, using one character for each digit of the value. + //M is the total number of digits and D is the number of digits after the decimal point + //DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] + + //binary type: RegisterColumnType(DbType.Binary, "LONGBLOB"); RegisterColumnType(DbType.Binary, 127, "TINYBLOB"); RegisterColumnType(DbType.Binary, 65535, "BLOB"); RegisterColumnType(DbType.Binary, 16777215, "MEDIUMBLOB"); - RegisterColumnType(DbType.Boolean, "TINYINT(1)"); + + //Numeric type: + RegisterColumnType(DbType.Boolean, "TINYINT(1)"); // SELECT IF(0, 'true', 'false'); RegisterColumnType(DbType.Byte, "TINYINT UNSIGNED"); RegisterColumnType(DbType.Currency, "MONEY"); - RegisterColumnType(DbType.Date, "DATE"); - RegisterColumnType(DbType.DateTime, "DATETIME"); RegisterColumnType(DbType.Decimal, "NUMERIC(19,5)"); RegisterColumnType(DbType.Decimal, 19, "NUMERIC(19, $l)"); RegisterColumnType(DbType.Double, "DOUBLE"); - RegisterColumnType(DbType.Guid, "VARCHAR(40)"); + //The signed range is -32768 to 32767. The unsigned range is 0 to 65535. RegisterColumnType(DbType.Int16, "SMALLINT"); - RegisterColumnType(DbType.Int32, "INTEGER"); + RegisterColumnType(DbType.Int32, "INTEGER"); //alias INT + //As of MySQL 4.1, SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE. RegisterColumnType(DbType.Int64, "BIGINT"); + //!!! + //Using FLOAT might give you some unexpected problems because all calculations in MySQL are done with double precision RegisterColumnType(DbType.Single, "FLOAT"); - RegisterColumnType(DbType.StringFixedLength, "CHAR(255)"); - RegisterColumnType(DbType.StringFixedLength, 255, "CHAR($l)"); - RegisterColumnType(DbType.StringFixedLength, 65535, "TEXT"); - RegisterColumnType(DbType.StringFixedLength, 16777215, "MEDIUMTEXT"); - RegisterColumnType(DbType.String, "VARCHAR(255)"); - RegisterColumnType(DbType.String, 255, "VARCHAR($l)"); - RegisterColumnType(DbType.String, 65535, "TEXT"); - RegisterColumnType(DbType.String, 16777215, "MEDIUMTEXT"); + RegisterColumnType(DbType.Byte, 1, "BIT"); //Like TinyInt(i) + RegisterColumnType(DbType.SByte, "TINYINT"); + + //UNSINGED Numeric type: + RegisterColumnType(DbType.UInt16, "SMALLINT UNSIGNED"); + RegisterColumnType(DbType.UInt32, "INTEGER UNSIGNED"); + RegisterColumnType(DbType.UInt64, "BIGINT UNSIGNED"); + //there are no other DbType unsigned...but mysql support Float unsigned, double unsigned, etc.. + + //Date and time type: + RegisterColumnType(DbType.Date, "DATE"); + RegisterColumnType(DbType.DateTime, "DATETIME"); RegisterColumnType(DbType.Time, "TIME"); + //special: + RegisterColumnType(DbType.Guid, "VARCHAR(40)"); + DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.MySqlDataDriver"; } @@ -123,6 +158,11 @@ get { return true; } } + public override bool SupportsSubSelects + { + get { return false; } + } + /// <summary> /// /// </summary> @@ -131,7 +171,7 @@ /// <returns></returns> public override SqlString GetLimitString(SqlString querySqlString, bool hasOffset) { - SqlStringBuilder pagingBuilder = new SqlStringBuilder(); + var pagingBuilder = new SqlStringBuilder(); pagingBuilder.Add(querySqlString); pagingBuilder.Add(" limit "); pagingBuilder.Add(Parameter.Placeholder); @@ -141,27 +181,18 @@ pagingBuilder.Add(", "); pagingBuilder.Add(Parameter.Placeholder); } - return pagingBuilder.ToSqlString(); } public override string GetAddForeignKeyConstraintString(string constraintName, string[] foreignKey, - string referencedTable, string[] primaryKey, bool referencesPrimaryKey) + string referencedTable, string[] primaryKey, + bool referencesPrimaryKey) { string cols = String.Join(StringHelper.CommaSpace, foreignKey); - return new StringBuilder(30) - .Append(" add index (") - .Append(cols) - .Append("), add constraint ") - .Append(constraintName) - .Append(" foreign key (") - .Append(cols) - .Append(") references ") - .Append(referencedTable) - .Append(" (") - .Append(String.Join(StringHelper.CommaSpace, primaryKey)) - .Append(')') - .ToString(); + return + new StringBuilder(30).Append(" add index (").Append(cols).Append("), add constraint ").Append(constraintName).Append + (" foreign key (").Append(cols).Append(") references ").Append(referencedTable).Append(" (").Append( + String.Join(StringHelper.CommaSpace, primaryKey)).Append(')').ToString(); } /// <summary> @@ -193,11 +224,5 @@ { return " drop index " + constraintName; } - - public override bool SupportsSubSelects - { - // TODO: newer MySQLs actually support subselects - get { return false; } - } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-01-10 15:10:40
|
Revision: 3986 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3986&view=rev Author: fabiomaulo Date: 2009-01-10 15:10:34 +0000 (Sat, 10 Jan 2009) Log Message: ----------- Fix NH-1491 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/FirebirdDialect.cs trunk/nhibernate/src/NHibernate/Dialect/Function/NoArgSQLFunction.cs trunk/nhibernate/src/NHibernate/Dialect/Oracle9Dialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/FirebirdDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/FirebirdDialect.cs 2009-01-10 12:47:32 UTC (rev 3985) +++ trunk/nhibernate/src/NHibernate/Dialect/FirebirdDialect.cs 2009-01-10 15:10:34 UTC (rev 3986) @@ -225,9 +225,9 @@ { return new SqlStringBuilder() .Add("cast('") - .Add(name) + .Add(Name) .Add("' as ") - .Add(returnType.SqlTypes(factory)[0].ToString()) + .Add(FunctionReturnType.SqlTypes(factory)[0].ToString()) .Add(")") .ToSqlString(); } @@ -241,7 +241,7 @@ public override SqlString Render(IList args, ISessionFactoryImplementor factory) { - return new SqlString(name); + return new SqlString(Name); } } Modified: trunk/nhibernate/src/NHibernate/Dialect/Function/NoArgSQLFunction.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Function/NoArgSQLFunction.cs 2009-01-10 12:47:32 UTC (rev 3985) +++ trunk/nhibernate/src/NHibernate/Dialect/Function/NoArgSQLFunction.cs 2009-01-10 15:10:34 UTC (rev 3986) @@ -10,36 +10,27 @@ /// </summary> public class NoArgSQLFunction : ISQLFunction { - protected readonly IType returnType = null; - protected readonly string name; - private readonly bool hasParenthesesIfNoArguments; - - public NoArgSQLFunction(string name, IType returnType) : this(name, returnType, true) + public NoArgSQLFunction(string name, IType returnType) + : this(name, returnType, true) { } public NoArgSQLFunction(string name, IType returnType, bool hasParenthesesIfNoArguments) { - this.name = name; - this.returnType = returnType; - this.hasParenthesesIfNoArguments = hasParenthesesIfNoArguments; + Name = name; + FunctionReturnType = returnType; + HasParenthesesIfNoArguments = hasParenthesesIfNoArguments; } - protected IType FunctionReturnType - { - get { return returnType; } - } + public IType FunctionReturnType { get; protected set; } - protected string Name - { - get { return name; } - } + public string Name { get; protected set; } #region ISQLFunction Members public IType ReturnType(IType columnType, IMapping mapping) { - return returnType; + return FunctionReturnType; } public bool HasArguments @@ -47,24 +38,21 @@ get { return false; } } - public bool HasParenthesesIfNoArguments - { - get { return hasParenthesesIfNoArguments; } - } + public bool HasParenthesesIfNoArguments { get; protected set; } public virtual SqlString Render(IList args, ISessionFactoryImplementor factory) { if (args.Count > 0) { - throw new QueryException("function takes no arguments: " + name); + throw new QueryException("function takes no arguments: " + Name); } - if (hasParenthesesIfNoArguments) + if (HasParenthesesIfNoArguments) { - return new SqlString(name + "()"); + return new SqlString(Name + "()"); } - return new SqlString(name); + return new SqlString(Name); } #endregion Modified: trunk/nhibernate/src/NHibernate/Dialect/Oracle9Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Oracle9Dialect.cs 2009-01-10 12:47:32 UTC (rev 3985) +++ trunk/nhibernate/src/NHibernate/Dialect/Oracle9Dialect.cs 2009-01-10 15:10:34 UTC (rev 3986) @@ -260,7 +260,7 @@ public override SqlString Render(IList args, ISessionFactoryImplementor factory) { - return new SqlString(name); + return new SqlString(Name); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-01-10 22:22:16
|
Revision: 3995 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3995&view=rev Author: fabiomaulo Date: 2009-01-10 21:34:06 +0000 (Sat, 10 Jan 2009) Log Message: ----------- Minor Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/OracleLiteDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2009-01-10 21:26:34 UTC (rev 3994) +++ trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2009-01-10 21:34:06 UTC (rev 3995) @@ -1286,7 +1286,7 @@ /// dialects should only need to override this method if different key phrases /// are used to apply the allocation information. /// </remarks> - protected internal virtual string GetCreateSequenceString(string sequenceName, int initialValue, int incrementSize) + protected virtual string GetCreateSequenceString(string sequenceName, int initialValue, int incrementSize) { if (SupportsPooledSequences) { Modified: trunk/nhibernate/src/NHibernate/Dialect/OracleLiteDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/OracleLiteDialect.cs 2009-01-10 21:26:34 UTC (rev 3994) +++ trunk/nhibernate/src/NHibernate/Dialect/OracleLiteDialect.cs 2009-01-10 21:34:06 UTC (rev 3995) @@ -1,7 +1,6 @@ using System.Data; +using NHibernate.Cfg; using NHibernate.Dialect.Function; -using NHibernate.SqlCommand; -using Environment=NHibernate.Cfg.Environment; namespace NHibernate.Dialect { @@ -26,10 +25,10 @@ /// </item> /// </list> /// </remarks> - public class OracleLiteDialect : Oracle9Dialect + public class OracleLiteDialect : Oracle9Dialect { /// <summary></summary> - public OracleLiteDialect() + public OracleLiteDialect() { DefaultProperties[Environment.PrepareSql] = "false"; DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.OracleLiteDataClientDriver"; @@ -115,7 +114,12 @@ /// <summary></summary> public override string GetCreateSequenceString(string sequenceName) { - return "create sequence " + sequenceName + " INCREMENT BY 1 START WITH 1"; + return "create sequence " + sequenceName; } + + protected override string GetCreateSequenceString(string sequenceName, int initialValue, int incrementSize) + { + return GetCreateSequenceString(sequenceName) + " increment by " + incrementSize + " start with " + initialValue; + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-02-04 14:28:17
|
Revision: 4036 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4036&view=rev Author: fabiomaulo Date: 2009-02-04 14:28:13 +0000 (Wed, 04 Feb 2009) Log Message: ----------- Minor Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2009-02-04 13:53:38 UTC (rev 4035) +++ trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2009-02-04 14:28:13 UTC (rev 4036) @@ -557,7 +557,7 @@ #endregion #region keyword support - protected internal virtual void RegisterKeyword(string word) + protected void RegisterKeyword(string word) { Keywords.Add(word); } Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2009-02-04 13:53:38 UTC (rev 4035) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2009-02-04 14:28:13 UTC (rev 4036) @@ -122,35 +122,7 @@ RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(day, ?1)")); RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(month, ?1)")); RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(year, ?1)")); - RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")")); - /* - RegisterFunction("julian_day", new StandardSQLFunction( NHibernateUtil.Int32 ) ); - RegisterFunction("microsecond", new StandardSQLFunction( NHibernateUtil.Int32 ) ); - RegisterFunction("midnight_seconds", new StandardSQLFunction( NHibernateUtil.Int32 ) ); - RegisterFunction("monthname", new StandardSQLFunction( NHibernateUtil.String ) ); - RegisterFunction("quarter", new StandardSQLFunction( NHibernateUtil.Int32 ) ); - RegisterFunction("date", new StandardSQLFunction(Hibernate.DATE) ); - RegisterFunction("dayname", new StandardSQLFunction( NHibernateUtil.String ) ); - RegisterFunction("dayofweek", new StandardSQLFunction( NHibernateUtil.Int32 ) ); - RegisterFunction("dayofweek_iso", new StandardSQLFunction( NHibernateUtil.Int32 ) ); - RegisterFunction("dayofyear", new StandardSQLFunction( NHibernateUtil.Int32 ) ); - RegisterFunction("days", new StandardSQLFunction( NHibernateUtil.Int32 ) ); - RegisterFunction("time", new StandardSQLFunction( NHibernateUtil.Time ) ); - RegisterFunction("timestamp", new StandardSQLFunction( NHibernateUtil.Timestamp ) ); - RegisterFunction("timestamp_iso", new StandardSQLFunction( NHibernateUtil.Timestamp ) ); - RegisterFunction("week", new StandardSQLFunction( NHibernateUtil.Int32 ) ); - RegisterFunction("week_iso", new StandardSQLFunction( NHibernateUtil.Int32 ) ); - - RegisterFunction("double", new StandardSQLFunction( NHibernateUtil.Double ) ); - RegisterFunction("varchar", new StandardSQLFunction( NHibernateUtil.String ) ); - RegisterFunction("real", new StandardSQLFunction( NHibernateUtil.Single ) ); - RegisterFunction("bigint", new StandardSQLFunction( NHibernateUtil.Int32 ) ); - RegisterFunction("char", new StandardSQLFunction( NHibernateUtil.Character ) ); - RegisterFunction("integer", new StandardSQLFunction( NHibernateUtil.Int32 ) ); - RegisterFunction("smallint", new StandardSQLFunction( NHibernateUtil.Int16 ) ); - */ - RegisterFunction("digits", new StandardSQLFunction("digits", NHibernateUtil.String)); RegisterFunction("chr", new StandardSQLFunction("chr", NHibernateUtil.Character)); RegisterFunction("upper", new StandardSQLFunction("upper")); @@ -163,6 +135,8 @@ RegisterFunction("trim", new AnsiTrimEmulationFunction()); RegisterFunction("iif", new SQLFunctionTemplate(null, "case when ?1 then ?2 else ?3 end")); + RegisterKeyword("top"); + DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver"; DefaultProperties[Environment.PrepareSql] = "false"; } Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2009-02-04 13:53:38 UTC (rev 4035) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2009-02-04 14:28:13 UTC (rev 4036) @@ -16,7 +16,6 @@ RegisterColumnType(DbType.String, 1073741823, "NVARCHAR(MAX)"); RegisterColumnType(DbType.AnsiString, 2147483647, "VARCHAR(MAX)"); RegisterColumnType(DbType.Binary, 2147483647, "VARBINARY(MAX)"); - RegisterKeyword("top"); } /// <summary> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aye...@us...> - 2010-01-27 15:19:20
|
Revision: 4938 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4938&view=rev Author: ayenderahien Date: 2010-01-27 15:19:14 +0000 (Wed, 27 Jan 2010) Log Message: ----------- Adding top keyword for Sybase (NH-2081) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/SybaseAdoNet12Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/SybaseAnywhereDialect.cs trunk/nhibernate/src/NHibernate/Dialect/SybaseDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/SybaseAdoNet12Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SybaseAdoNet12Dialect.cs 2010-01-27 15:07:21 UTC (rev 4937) +++ trunk/nhibernate/src/NHibernate/Dialect/SybaseAdoNet12Dialect.cs 2010-01-27 15:19:14 UTC (rev 4938) @@ -35,6 +35,8 @@ /// <summary></summary> public SybaseAdoNet12Dialect() { + RegisterKeyword("top"); + DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SybaseAdoNet12ClientDriver"; DefaultProperties[Environment.PrepareSql] = "true"; } Modified: trunk/nhibernate/src/NHibernate/Dialect/SybaseAnywhereDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SybaseAnywhereDialect.cs 2010-01-27 15:07:21 UTC (rev 4937) +++ trunk/nhibernate/src/NHibernate/Dialect/SybaseAnywhereDialect.cs 2010-01-27 15:19:14 UTC (rev 4938) @@ -55,6 +55,8 @@ Types.CLOB, "TEXT" ); */ + RegisterKeyword("top"); + DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.ASAClientDriver"; DefaultProperties[Environment.PrepareSql] = "false"; } Modified: trunk/nhibernate/src/NHibernate/Dialect/SybaseDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SybaseDialect.cs 2010-01-27 15:07:21 UTC (rev 4937) +++ trunk/nhibernate/src/NHibernate/Dialect/SybaseDialect.cs 2010-01-27 15:19:14 UTC (rev 4938) @@ -126,6 +126,8 @@ RegisterFunction("trim", new SQLFunctionTemplate(NHibernateUtil.String, "ltrim(rtrim(?1))")); RegisterFunction("locate", new CharIndexFunction()); + RegisterKeyword("top"); + DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SybaseClientDriver"; DefaultProperties[Environment.PrepareSql] = "false"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-02 21:40:22
|
Revision: 5099 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5099&view=rev Author: fabiomaulo Date: 2010-08-02 21:40:16 +0000 (Mon, 02 Aug 2010) Log Message: ----------- Fix NH-2162 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2010-08-02 19:52:44 UTC (rev 5098) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2010-08-02 21:40:16 UTC (rev 5099) @@ -134,6 +134,7 @@ RegisterKeyword("top"); RegisterKeyword("integer"); RegisterKeyword("int"); + RegisterKeyword("datetime"); DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver"; } Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs 2010-08-02 19:52:44 UTC (rev 5098) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs 2010-08-02 21:40:16 UTC (rev 5099) @@ -3,17 +3,19 @@ namespace NHibernate.Dialect { - public class MsSql2008Dialect : MsSql2005Dialect - { - public MsSql2008Dialect() - { - RegisterColumnType(DbType.DateTime2, "DATETIME2"); - RegisterColumnType(DbType.DateTimeOffset, "DATETIMEOFFSET"); + public class MsSql2008Dialect : MsSql2005Dialect + { + public MsSql2008Dialect() + { + RegisterColumnType(DbType.DateTime2, "DATETIME2"); + RegisterColumnType(DbType.DateTimeOffset, "DATETIMEOFFSET"); RegisterColumnType(DbType.Date, "DATE"); RegisterColumnType(DbType.Time, "TIME"); RegisterFunction("current_timestamp", new NoArgSQLFunction("sysdatetime", NHibernateUtil.DateTime2, true)); RegisterFunction("current_timestamp_offset", new NoArgSQLFunction("sysdatetimeoffset", NHibernateUtil.DateTimeOffset, true)); - } - } + RegisterKeyword("datetime2"); + RegisterKeyword("datetimeoffset"); + } + } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2010-08-05 12:30:44
|
Revision: 5114 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5114&view=rev Author: fabiomaulo Date: 2010-08-05 12:30:38 +0000 (Thu, 05 Aug 2010) Log Message: ----------- Fix NH-2149 (by Paul Wideman) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs 2010-08-05 12:20:09 UTC (rev 5113) +++ trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs 2010-08-05 12:30:38 UTC (rev 5114) @@ -12,6 +12,15 @@ RegisterColumnType(DbType.Guid, "BINARY(16)"); } + protected override void RegisterCastTypes() { + base.RegisterCastTypes(); + // MySql 5 also supports DECIMAL as a cast type target + // http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html + RegisterCastType(DbType.Decimal, "DECIMAL"); + RegisterCastType(DbType.Double, "DECIMAL"); + RegisterCastType(DbType.Single, "DECIMAL"); + } + //Reference 5.x //Numeric: //http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html Modified: trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2010-08-05 12:20:09 UTC (rev 5113) +++ trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2010-08-05 12:30:38 UTC (rev 5114) @@ -5,6 +5,7 @@ using NHibernate.Dialect.Function; using NHibernate.Dialect.Schema; using NHibernate.SqlCommand; +using NHibernate.SqlTypes; using NHibernate.Util; using Environment=NHibernate.Cfg.Environment; @@ -32,85 +33,90 @@ /// </remarks> public class MySQLDialect : Dialect { - public MySQLDialect() - { - //Reference 3-4.x - //Numeric: - //http://dev.mysql.com/doc/refman/4.1/en/numeric-type-overview.html - //Date and time: - //http://dev.mysql.com/doc/refman/4.1/en/date-and-time-type-overview.html - //String: - //http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html - //default: - //http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html + private readonly TypeNames castTypeNames = new TypeNames(); - //string type - RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)"); - RegisterColumnType(DbType.AnsiStringFixedLength, 255, "CHAR($l)"); - RegisterColumnType(DbType.AnsiStringFixedLength, 65535, "TEXT"); - RegisterColumnType(DbType.AnsiStringFixedLength, 16777215, "MEDIUMTEXT"); - RegisterColumnType(DbType.AnsiString, "VARCHAR(255)"); - RegisterColumnType(DbType.AnsiString, 255, "VARCHAR($l)"); - RegisterColumnType(DbType.AnsiString, 65535, "TEXT"); - RegisterColumnType(DbType.AnsiString, 16777215, "MEDIUMTEXT"); - RegisterColumnType(DbType.StringFixedLength, "CHAR(255)"); - RegisterColumnType(DbType.StringFixedLength, 255, "CHAR($l)"); - RegisterColumnType(DbType.StringFixedLength, 65535, "TEXT"); - RegisterColumnType(DbType.StringFixedLength, 16777215, "MEDIUMTEXT"); - RegisterColumnType(DbType.String, "VARCHAR(255)"); - RegisterColumnType(DbType.String, 255, "VARCHAR($l)"); - RegisterColumnType(DbType.String, 65535, "TEXT"); - RegisterColumnType(DbType.String, 16777215, "MEDIUMTEXT"); - //todo: future: add compatibility with decimal??? - //An unpacked fixed-point number. Behaves like a CHAR column; - //\x93unpacked\x94 means the number is stored as a string, using one character for each digit of the value. - //M is the total number of digits and D is the number of digits after the decimal point - //DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] + public MySQLDialect() + { + //Reference 3-4.x + //Numeric: + //http://dev.mysql.com/doc/refman/4.1/en/numeric-type-overview.html + //Date and time: + //http://dev.mysql.com/doc/refman/4.1/en/date-and-time-type-overview.html + //String: + //http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html + //default: + //http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html - //binary type: - RegisterColumnType(DbType.Binary, "LONGBLOB"); - RegisterColumnType(DbType.Binary, 127, "TINYBLOB"); - RegisterColumnType(DbType.Binary, 65535, "BLOB"); - RegisterColumnType(DbType.Binary, 16777215, "MEDIUMBLOB"); - //Numeric type: - RegisterColumnType(DbType.Boolean, "TINYINT(1)"); // SELECT IF(0, 'true', 'false'); - RegisterColumnType(DbType.Byte, "TINYINT UNSIGNED"); - RegisterColumnType(DbType.Currency, "MONEY"); - RegisterColumnType(DbType.Decimal, "NUMERIC(19,5)"); - RegisterColumnType(DbType.Decimal, 19, "NUMERIC($p, $s)"); - RegisterColumnType(DbType.Double, "DOUBLE"); - //The signed range is -32768 to 32767. The unsigned range is 0 to 65535. - RegisterColumnType(DbType.Int16, "SMALLINT"); - RegisterColumnType(DbType.Int32, "INTEGER"); //alias INT - //As of MySQL 4.1, SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE. - RegisterColumnType(DbType.Int64, "BIGINT"); - //!!! - //Using FLOAT might give you some unexpected problems because all calculations in MySQL are done with double precision - RegisterColumnType(DbType.Single, "FLOAT"); - RegisterColumnType(DbType.Byte, 1, "BIT"); //Like TinyInt(i) - RegisterColumnType(DbType.SByte, "TINYINT"); + //string type + RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)"); + RegisterColumnType(DbType.AnsiStringFixedLength, 255, "CHAR($l)"); + RegisterColumnType(DbType.AnsiStringFixedLength, 65535, "TEXT"); + RegisterColumnType(DbType.AnsiStringFixedLength, 16777215, "MEDIUMTEXT"); + RegisterColumnType(DbType.AnsiString, "VARCHAR(255)"); + RegisterColumnType(DbType.AnsiString, 255, "VARCHAR($l)"); + RegisterColumnType(DbType.AnsiString, 65535, "TEXT"); + RegisterColumnType(DbType.AnsiString, 16777215, "MEDIUMTEXT"); + RegisterColumnType(DbType.StringFixedLength, "CHAR(255)"); + RegisterColumnType(DbType.StringFixedLength, 255, "CHAR($l)"); + RegisterColumnType(DbType.StringFixedLength, 65535, "TEXT"); + RegisterColumnType(DbType.StringFixedLength, 16777215, "MEDIUMTEXT"); + RegisterColumnType(DbType.String, "VARCHAR(255)"); + RegisterColumnType(DbType.String, 255, "VARCHAR($l)"); + RegisterColumnType(DbType.String, 65535, "TEXT"); + RegisterColumnType(DbType.String, 16777215, "MEDIUMTEXT"); + //todo: future: add compatibility with decimal??? + //An unpacked fixed-point number. Behaves like a CHAR column; + //\x93unpacked\x94 means the number is stored as a string, using one character for each digit of the value. + //M is the total number of digits and D is the number of digits after the decimal point + //DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] - //UNSINGED Numeric type: - RegisterColumnType(DbType.UInt16, "SMALLINT UNSIGNED"); - RegisterColumnType(DbType.UInt32, "INTEGER UNSIGNED"); - RegisterColumnType(DbType.UInt64, "BIGINT UNSIGNED"); - //there are no other DbType unsigned...but mysql support Float unsigned, double unsigned, etc.. + //binary type: + RegisterColumnType(DbType.Binary, "LONGBLOB"); + RegisterColumnType(DbType.Binary, 127, "TINYBLOB"); + RegisterColumnType(DbType.Binary, 65535, "BLOB"); + RegisterColumnType(DbType.Binary, 16777215, "MEDIUMBLOB"); - //Date and time type: - RegisterColumnType(DbType.Date, "DATE"); - RegisterColumnType(DbType.DateTime, "DATETIME"); - RegisterColumnType(DbType.Time, "TIME"); + //Numeric type: + RegisterColumnType(DbType.Boolean, "TINYINT(1)"); // SELECT IF(0, 'true', 'false'); + RegisterColumnType(DbType.Byte, "TINYINT UNSIGNED"); + RegisterColumnType(DbType.Currency, "MONEY"); + RegisterColumnType(DbType.Decimal, "NUMERIC(19,5)"); + RegisterColumnType(DbType.Decimal, 19, "NUMERIC($p, $s)"); + RegisterColumnType(DbType.Double, "DOUBLE"); + //The signed range is -32768 to 32767. The unsigned range is 0 to 65535. + RegisterColumnType(DbType.Int16, "SMALLINT"); + RegisterColumnType(DbType.Int32, "INTEGER"); //alias INT + //As of MySQL 4.1, SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE. + RegisterColumnType(DbType.Int64, "BIGINT"); + //!!! + //Using FLOAT might give you some unexpected problems because all calculations in MySQL are done with double precision + RegisterColumnType(DbType.Single, "FLOAT"); + RegisterColumnType(DbType.Byte, 1, "BIT"); //Like TinyInt(i) + RegisterColumnType(DbType.SByte, "TINYINT"); - //special: - RegisterColumnType(DbType.Guid, "VARCHAR(40)"); + //UNSINGED Numeric type: + RegisterColumnType(DbType.UInt16, "SMALLINT UNSIGNED"); + RegisterColumnType(DbType.UInt32, "INTEGER UNSIGNED"); + RegisterColumnType(DbType.UInt64, "BIGINT UNSIGNED"); + //there are no other DbType unsigned...but mysql support Float unsigned, double unsigned, etc.. - //functions: - RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "concat(", ",", ")")); + //Date and time type: + RegisterColumnType(DbType.Date, "DATE"); + RegisterColumnType(DbType.DateTime, "DATETIME"); + RegisterColumnType(DbType.Time, "TIME"); - DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.MySqlDataDriver"; - } + //special: + RegisterColumnType(DbType.Guid, "VARCHAR(40)"); + RegisterCastTypes(); + + //functions: + RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "concat(", ",", ")")); + + DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.MySqlDataDriver"; + } + /// <summary></summary> public override string AddColumnString { @@ -245,5 +251,57 @@ { get { return "create temporary table if not exists"; } } + + protected virtual void RegisterCastTypes() + { + // According to the MySql documentation (http://dev.mysql.com/doc/refman/4.1/en/cast-functions.html) + // only a few values are supported for the cast target type: BINARY, CHAR, DATE, DATETIME, + // SIGNED, TIME, and UNSIGNED. So we must limit our possible cast types to these + + // The Dialect.GetCastTypeName() method uses the default length, precision, and + // scale values, so there's no need to consider those values here either, just use the defaults + RegisterCastType(DbType.AnsiString, "CHAR"); + RegisterCastType(DbType.AnsiStringFixedLength, "CHAR"); + RegisterCastType(DbType.String, "CHAR"); + RegisterCastType(DbType.StringFixedLength, "CHAR"); + RegisterCastType(DbType.Binary, "BINARY"); + RegisterCastType(DbType.Int16, "SIGNED"); + RegisterCastType(DbType.Int32, "SIGNED"); + RegisterCastType(DbType.Int64, "SIGNED"); + RegisterCastType(DbType.UInt16, "UNSIGNED"); + RegisterCastType(DbType.UInt32, "UNSIGNED"); + RegisterCastType(DbType.UInt64, "UNSIGNED"); + RegisterCastType(DbType.Guid, "CHAR(40)"); + RegisterCastType(DbType.Time, "TIME"); + RegisterCastType(DbType.Date, "DATE"); + RegisterCastType(DbType.DateTime, "DATETIME"); + } + + /// <summary> + /// Suclasses register a typename for the given type code, to be used in CAST() + /// statements. + /// </summary> + /// <param name="code">The typecode</param> + /// <param name="name">The database type name</param> + protected void RegisterCastType(DbType code, string name) + { + castTypeNames.Put(code, name); + } + + /// <summary> + /// Get the name of the database type appropriate for casting operations + /// (via the CAST() SQL function) for the given <see cref="SqlType"/> typecode. + /// </summary> + /// <param name="sqlType">The <see cref="SqlType"/> typecode </param> + /// <returns> The database type name </returns> + public override string GetCastTypeName(SqlType sqlType) + { + string result = castTypeNames.Get(sqlType.DbType); + if (result == null) + { + throw new HibernateException(string.Format("No CAST() type mapping for SqlType {0}", sqlType)); + } + return result; + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2010-09-17 16:25:22
|
Revision: 5190 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5190&view=rev Author: julian-maughan Date: 2010-09-17 16:25:16 +0000 (Fri, 17 Sep 2010) Log Message: ----------- Added GetDataBaseSchema method override to SybaseSQLAnywhere10Dialect, and refined XML comments. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/SybaseSQLAnywhere10Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/SybaseSQLAnywhere11Dialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/SybaseSQLAnywhere10Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SybaseSQLAnywhere10Dialect.cs 2010-09-17 16:23:14 UTC (rev 5189) +++ trunk/nhibernate/src/NHibernate/Dialect/SybaseSQLAnywhere10Dialect.cs 2010-09-17 16:25:16 UTC (rev 5190) @@ -6,6 +6,7 @@ using NHibernate.Dialect.Function; using NHibernate.Dialect.Lock; +using NHibernate.Dialect.Schema; using NHibernate.Engine; using NHibernate.Exceptions; using NHibernate.Mapping; @@ -40,17 +41,13 @@ /// /// </summary> /// <remarks> - /// The SybaseSQLAnywhere10Dialect defaults the following configuration properties: + /// The dialect defaults the following configuration properties: /// <list type="table"> /// <listheader> /// <term>Property</term> /// <description>Default Value</description> /// </listheader> /// <item> - /// <term>use_outer_join</term> - /// <description><see langword="true" /></description> - /// </item> - /// <item> /// <term>connection.driver_class</term> /// <description><see cref="NHibernate.Driver.ASA10ClientDriver" /></description> /// </item> @@ -882,5 +879,10 @@ { get { return true; } } + + public override IDataBaseSchema GetDataBaseSchema(DbConnection connection) + { + return new SybaseAnywhereDataBaseMetaData(connection); + } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Dialect/SybaseSQLAnywhere11Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SybaseSQLAnywhere11Dialect.cs 2010-09-17 16:23:14 UTC (rev 5189) +++ trunk/nhibernate/src/NHibernate/Dialect/SybaseSQLAnywhere11Dialect.cs 2010-09-17 16:25:16 UTC (rev 5190) @@ -25,17 +25,13 @@ /// /// </summary> /// <remarks> - /// The SybaseSQLAnywhere11Dialect defaults the following configuration properties: + /// The dialect defaults the following configuration properties: /// <list type="table"> /// <listheader> /// <term>Property</term> /// <description>Default Value</description> /// </listheader> /// <item> - /// <term>use_outer_join</term> - /// <description><see langword="true" /></description> - /// </item> - /// <item> /// <term>connection.driver_class</term> /// <description><see cref="NHibernate.Driver.ASA10ClientDriver" /></description> /// </item> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2010-10-12 21:27:07
|
Revision: 5249 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5249&view=rev Author: ricbrown Date: 2010-10-12 21:27:00 +0000 (Tue, 12 Oct 2010) Log Message: ----------- Fix NH-2371 (Exception is thrown when using SetMaxResults on query using MySQL) Fixes MySql tests (broken in r5118): NHibernate.Test.Criteria.Lambda.IntegrationFixture.MultiCriteria NHibernate.Test.Criteria.Lambda.IntegrationFixture.RowCount NHibernate.Test.Legacy.FooBarTest.FindByCriteria NHibernate.Test.Legacy.FooBarTest.Limit NHibernate.Test.Legacy.FooBarTest.PSCache NHibernate.Test.Legacy.FooBarTest.Query NHibernate.Test.Legacy.SQLFunctionsTest.SQLFunctions NHibernate.Test.NHSpecificTest.Futures.FutureCriteriaFixture.CanCombineSingleFutureValueWithEnumerableFutures NHibernate.Test.NHSpecificTest.Futures.FutureCriteriaFixture.CanUseFutureCriteria NHibernate.Test.NHSpecificTest.Futures.FutureCriteriaFixture.TwoFuturesRunInTwoRoundTrips NHibernate.Test.NHSpecificTest.Futures.FutureQueryFixture.CanCombineSingleFutureValueWithEnumerableFutures NHibernate.Test.NHSpecificTest.Futures.FutureQueryFixture.CanUseFutureQuery NHibernate.Test.NHSpecificTest.Futures.FutureQueryFixture.TwoFuturesRunInTwoRoundTrips NHibernate.Test.NHSpecificTest.Futures.FutureQueryOverFixture.CanCombineSingleFutureValueWithEnumerableFutures NHibernate.Test.NHSpecificTest.Futures.FutureQueryOverFixture.CanUseFutureCriteria NHibernate.Test.NHSpecificTest.Futures.FutureQueryOverFixture.TwoFuturesRunInTwoRoundTrips NHibernate.Test.NHSpecificTest.Futures.LinqFutureFixture.CanCombineSingleFutureValueWithEnumerableFutures NHibernate.Test.NHSpecificTest.Futures.LinqFutureFixture.CanUseFutureQuery NHibernate.Test.NHSpecificTest.Futures.LinqFutureFixture.TwoFuturesRunInTwoRoundTrips NHibernate.Test.NHSpecificTest.NH1349.Fixture.Can_page_with_formula_property NHibernate.Test.NHSpecificTest.NH1359.Fixture.CanOrderByNamedSubquery NHibernate.Test.NHSpecificTest.NH1359.Fixture.CanPageAndSortResultsWithParametersAndFilters NHibernate.Test.NHSpecificTest.NH1359.Fixture.CanPageAndSortWithMultipleColumnsOfSameName NHibernate.Test.NHSpecificTest.NH1408.DetachedSubCriteriaTest.Test NHibernate.Test.NHSpecificTest.NH1413.PagingTest.Bug NHibernate.Test.NHSpecificTest.NH1533.Fixture.Can_query_using_two_orderby_and_limit_altogether NHibernate.Test.NHSpecificTest.NH1533.Fixture.Can_query_using_two_orderby_and_limit_with_maxresult_only NHibernate.Test.NHSpecificTest.NH1609.Fixture.Test NHibernate.Test.NHSpecificTest.NH1675.Fixture.ShouldWorkUsingDistinctAndLimits NHibernate.Test.NHSpecificTest.NH2344.Fixture.CoalesceShouldWork NHibernate.Test.NHSpecificTest.NH734.Fixture.LimitProblem NHibernate.Test.Pagination.PaginationFixture.PagingWithLock_NH2255 NHibernate.Test.Pagination.PaginationFixture.PagTest NHibernate.Test.ProjectionFixtures.Fixture.LimitingResultSetOnQueryThatIsOrderedByProjection NHibernate.Test.ProjectionFixtures.Fixture.QueryingWithParemetersAndParaemtersInOrderBy NHibernate.Test.QueryTest.DetachedQueryFixture.ExecutableQuery NHibernate.Test.SubselectFetchTest.SubselectFetchFixture.SubselectFetchWithLimit Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs 2010-10-12 19:12:23 UTC (rev 5248) +++ trunk/nhibernate/src/NHibernate/Dialect/MySQL5Dialect.cs 2010-10-12 21:27:00 UTC (rev 5249) @@ -31,15 +31,6 @@ //default: //http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html - public override bool SupportsVariableLimit - { - get - { - //note: why false? - return false; - } - } - public override bool SupportsSubSelects { get Modified: trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2010-10-12 19:12:23 UTC (rev 5248) +++ trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2010-10-12 21:27:00 UTC (rev 5249) @@ -194,13 +194,15 @@ var pagingBuilder = new SqlStringBuilder(); pagingBuilder.Add(querySqlString); pagingBuilder.Add(" limit "); - pagingBuilder.Add(Parameter.WithIndex(limitParameterIndex.Value)); if (offset > 0) { + pagingBuilder.Add(Parameter.WithIndex(offsetParameterIndex.Value)); pagingBuilder.Add(", "); - pagingBuilder.Add(Parameter.WithIndex(offsetParameterIndex.Value)); } + + pagingBuilder.Add(Parameter.WithIndex(limitParameterIndex.Value)); + return pagingBuilder.ToSqlString(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-03-06 20:04:03
|
Revision: 5437 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5437&view=rev Author: patearl Date: 2011-03-06 20:03:56 +0000 (Sun, 06 Mar 2011) Log Message: ----------- Support "mod" function for PostgreSQL and SQLite. Support GUID generation for SQLite. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs 2011-03-06 16:29:29 UTC (rev 5436) +++ trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs 2011-03-06 20:03:56 UTC (rev 5437) @@ -67,6 +67,8 @@ RegisterFunction("substring", new AnsiSubstringFunction()); RegisterFunction("replace", new StandardSQLFunction("replace", NHibernateUtil.String)); + RegisterFunction("mod", new SQLFunctionTemplate(NHibernateUtil.Int32, "((?1) % (?2))")); + DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.NpgsqlDriver"; } Modified: trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2011-03-06 16:29:29 UTC (rev 5436) +++ trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2011-03-06 20:03:56 UTC (rev 5437) @@ -53,12 +53,13 @@ RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.String, "strftime('%d', ?1)")); RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.String, "strftime('%m', ?1)")); RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.String, "strftime('%Y', ?1)")); - // Uses local time like MSSQL and PostgreSQL. RegisterFunction("current_timestamp", new SQLFunctionTemplate(NHibernateUtil.DateTime, "datetime(current_timestamp, 'localtime')")); RegisterFunction("substring", new StandardSQLFunction("substr", NHibernateUtil.String)); RegisterFunction("trim", new AnsiTrimEmulationFunction()); + + RegisterFunction("mod", new SQLFunctionTemplate(NHibernateUtil.Int32, "((?1) % (?2))")); } public override Schema.IDataBaseSchema GetDataBaseSchema(DbConnection connection) @@ -239,5 +240,10 @@ { return true; } + + public override string SelectGUIDString + { + get { return "randomblob(16)"; } + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-03-13 03:09:32
|
Revision: 5461 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5461&view=rev Author: patearl Date: 2011-03-13 03:09:26 +0000 (Sun, 13 Mar 2011) Log Message: ----------- SQLite: Improved cast function. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/Function/CastFunction.cs trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/Function/CastFunction.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Function/CastFunction.cs 2011-03-12 22:52:19 UTC (rev 5460) +++ trunk/nhibernate/src/NHibernate/Dialect/Function/CastFunction.cs 2011-03-13 03:09:26 UTC (rev 5461) @@ -71,17 +71,34 @@ { throw new QueryException(string.Format("invalid Hibernate type for cast(): type {0} not found", typeName)); } - return new SqlStringBuilder() - .Add("cast(") - .AddObject(args[0]) - .Add(" as ") - .Add(sqlType) - .Add(")") - .ToSqlString(); + + if (CastingIsRequired(sqlType)) + { + return new SqlStringBuilder() + .Add("cast(") + .AddObject(args[0]) + .Add(" as ") + .Add(sqlType) + .Add(")") + .ToSqlString(); + } + else + { + return new SqlStringBuilder() + .Add("(") + .AddObject(args[0]) + .Add(")") + .ToSqlString(); + } } #endregion + protected virtual bool CastingIsRequired(string sqlType) + { + return true; + } + #region IFunctionGrammar Members bool IFunctionGrammar.IsSeparator(string token) Modified: trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2011-03-12 22:52:19 UTC (rev 5460) +++ trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2011-03-13 03:09:26 UTC (rev 5461) @@ -67,6 +67,8 @@ RegisterFunction("mod", new SQLFunctionTemplate(NHibernateUtil.Int32, "((?1) % (?2))")); RegisterFunction("iif", new SQLFunctionTemplate(null, "case when ?1 then ?2 else ?3 end")); + + RegisterFunction("cast", new SQLiteCastFunction()); } public override Schema.IDataBaseSchema GetDataBaseSchema(DbConnection connection) @@ -252,5 +254,16 @@ { get { return "select randomblob(16)"; } } + + protected class SQLiteCastFunction : CastFunction + { + protected override bool CastingIsRequired(string sqlType) + { + // SQLite doesn't support casting to datetime types. It assumes you want an integer and destroys the date string. + if (sqlType.ToLowerInvariant().Contains("date") || sqlType.ToLowerInvariant().Contains("time")) + return false; + return true; + } + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-03-14 04:14:47
|
Revision: 5471 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5471&view=rev Author: patearl Date: 2011-03-14 04:14:41 +0000 (Mon, 14 Mar 2011) Log Message: ----------- Dialect method to get longest storage type for a specified DbType. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/TypeNames.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2011-03-13 23:44:34 UTC (rev 5470) +++ trunk/nhibernate/src/NHibernate/Dialect/Dialect.cs 2011-03-14 04:14:41 UTC (rev 5471) @@ -449,6 +449,16 @@ return result; } + /// <summary> + /// Gets the name of the longest registered type for a particular DbType. + /// </summary> + /// <param name="dbType"></param> + /// <returns></returns> + public virtual string GetLongestTypeName(DbType dbType) + { + return typeNames.GetLongest(dbType); + } + /// <summary> /// Get the name of the database type appropriate for casting operations /// (via the CAST() SQL function) for the given <see cref="SqlType"/> typecode. Modified: trunk/nhibernate/src/NHibernate/Dialect/TypeNames.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/TypeNames.cs 2011-03-13 23:44:34 UTC (rev 5470) +++ trunk/nhibernate/src/NHibernate/Dialect/TypeNames.cs 2011-03-14 04:14:41 UTC (rev 5471) @@ -93,6 +93,23 @@ return Replace(Get(typecode), size, precision, scale); } + /// <summary> + /// For types with a simple length, this method returns the definition + /// for the longest registered type. + /// </summary> + /// <param name="typecode"></param> + /// <returns></returns> + public string GetLongest(DbType typecode) + { + SortedList<int, string> map; + weighted.TryGetValue(typecode, out map); + + if (map != null && map.Count > 0) + return Replace(map.Values[map.Count - 1], map.Keys[map.Count - 1], 0, 0); + + return Get(typecode); + } + private static string Replace(string type, int size, int precision, int scale) { type = StringHelper.ReplaceOnce(type, LengthPlaceHolder, size.ToString()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-03-23 16:16:25
|
Revision: 5510 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5510&view=rev Author: fabiomaulo Date: 2011-03-23 16:16:19 +0000 (Wed, 23 Mar 2011) Log Message: ----------- Minor refactoring (organized stuff in methods) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-03-23 15:41:09 UTC (rev 5509) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-03-23 16:16:19 UTC (rev 5510) @@ -43,34 +43,34 @@ { public MsSql2000Dialect() { - RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)"); - RegisterColumnType(DbType.AnsiStringFixedLength, 8000, "CHAR($l)"); - RegisterColumnType(DbType.AnsiString, "VARCHAR(255)"); - RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForLengthLimitedAnsiString, "VARCHAR($l)"); - RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForAnsiClob, "TEXT"); - RegisterColumnType(DbType.Binary, "VARBINARY(8000)"); - RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForLengthLimitedBinary, "VARBINARY($l)"); - RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForBlob, "IMAGE"); - RegisterColumnType(DbType.Boolean, "BIT"); - RegisterColumnType(DbType.Byte, "TINYINT"); - RegisterColumnType(DbType.Currency, "MONEY"); - RegisterColumnType(DbType.Date, "DATETIME"); - RegisterColumnType(DbType.DateTime, "DATETIME"); - RegisterColumnType(DbType.Decimal, "DECIMAL(19,5)"); - RegisterColumnType(DbType.Decimal, 19, "DECIMAL($p, $s)"); - RegisterColumnType(DbType.Double, "DOUBLE PRECISION"); //synonym for FLOAT(53) - RegisterColumnType(DbType.Guid, "UNIQUEIDENTIFIER"); - RegisterColumnType(DbType.Int16, "SMALLINT"); - RegisterColumnType(DbType.Int32, "INT"); - RegisterColumnType(DbType.Int64, "BIGINT"); - RegisterColumnType(DbType.Single, "REAL"); //synonym for FLOAT(24) - RegisterColumnType(DbType.StringFixedLength, "NCHAR(255)"); - RegisterColumnType(DbType.StringFixedLength, SqlClientDriver.MaxSizeForLengthLimitedString, "NCHAR($l)"); - RegisterColumnType(DbType.String, "NVARCHAR(255)"); - RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForLengthLimitedString, "NVARCHAR($l)"); - RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForClob, "NTEXT"); - RegisterColumnType(DbType.Time, "DATETIME"); + RegisterCharacterTypeMappings(); + RegisterNumericTypeMappings(); + RegisterDateTimeTypeMappings(); + RegisterLargeObjectTypeMappings(); + RegisterGuidTypeMapping(); + RegisterFunctions(); + + RegisterKeywords(); + + RegisterDefaultProperties(); + } + + protected virtual void RegisterDefaultProperties() + { + DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver"; + } + + protected virtual void RegisterKeywords() + { + RegisterKeyword("top"); + RegisterKeyword("integer"); + RegisterKeyword("int"); + RegisterKeyword("datetime"); + } + + protected virtual void RegisterFunctions() + { RegisterFunction("count", new CountBigQueryFunction()); RegisterFunction("abs", new StandardSQLFunction("abs")); @@ -116,8 +116,8 @@ RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(day, ?1)")); RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(month, ?1)")); RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(year, ?1)")); - RegisterFunction("date", new SQLFunctionTemplate(NHibernateUtil.Date, "dateadd(dd, 0, datediff(dd, 0, ?1))")); - RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")")); + RegisterFunction("date", new SQLFunctionTemplate(NHibernateUtil.Date, "dateadd(dd, 0, datediff(dd, 0, ?1))")); + RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")")); RegisterFunction("digits", new StandardSQLFunction("digits", NHibernateUtil.String)); RegisterFunction("chr", new StandardSQLFunction("chr", NHibernateUtil.Character)); RegisterFunction("upper", new StandardSQLFunction("upper")); @@ -130,15 +130,55 @@ RegisterFunction("trim", new AnsiTrimEmulationFunction()); RegisterFunction("iif", new SQLFunctionTemplate(null, "case when ?1 then ?2 else ?3 end")); RegisterFunction("replace", new StandardSafeSQLFunction("replace", NHibernateUtil.String, 3)); + } - RegisterKeyword("top"); - RegisterKeyword("integer"); - RegisterKeyword("int"); - RegisterKeyword("datetime"); + protected virtual void RegisterGuidTypeMapping() + { + RegisterColumnType(DbType.Guid, "UNIQUEIDENTIFIER"); + } - DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver"; + protected virtual void RegisterLargeObjectTypeMappings() + { + RegisterColumnType(DbType.Binary, "VARBINARY(8000)"); + RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForLengthLimitedBinary, "VARBINARY($l)"); + RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForBlob, "IMAGE"); } + protected virtual void RegisterDateTimeTypeMappings() + { + RegisterColumnType(DbType.Time, "DATETIME"); + } + + protected virtual void RegisterNumericTypeMappings() + { + RegisterColumnType(DbType.Boolean, "BIT"); + RegisterColumnType(DbType.Byte, "TINYINT"); + RegisterColumnType(DbType.Currency, "MONEY"); + RegisterColumnType(DbType.Date, "DATETIME"); + RegisterColumnType(DbType.DateTime, "DATETIME"); + RegisterColumnType(DbType.Decimal, "DECIMAL(19,5)"); + RegisterColumnType(DbType.Decimal, 19, "DECIMAL($p, $s)"); + RegisterColumnType(DbType.Double, "DOUBLE PRECISION"); //synonym for FLOAT(53) + RegisterColumnType(DbType.Int16, "SMALLINT"); + RegisterColumnType(DbType.Int32, "INT"); + RegisterColumnType(DbType.Int64, "BIGINT"); + RegisterColumnType(DbType.Single, "REAL"); //synonym for FLOAT(24) + } + + protected virtual void RegisterCharacterTypeMappings() + { + RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)"); + RegisterColumnType(DbType.AnsiStringFixedLength, 8000, "CHAR($l)"); + RegisterColumnType(DbType.AnsiString, "VARCHAR(255)"); + RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForLengthLimitedAnsiString, "VARCHAR($l)"); + RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForAnsiClob, "TEXT"); + RegisterColumnType(DbType.StringFixedLength, "NCHAR(255)"); + RegisterColumnType(DbType.StringFixedLength, SqlClientDriver.MaxSizeForLengthLimitedString, "NCHAR($l)"); + RegisterColumnType(DbType.String, "NVARCHAR(255)"); + RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForLengthLimitedString, "NVARCHAR($l)"); + RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForClob, "NTEXT"); + } + /// <summary></summary> public override string AddColumnString { Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2011-03-23 15:41:09 UTC (rev 5509) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2011-03-23 16:16:19 UTC (rev 5510) @@ -12,10 +12,15 @@ { public MsSql2005Dialect() { + RegisterColumnType(DbType.Xml, "XML"); + } + + protected override void RegisterCharacterTypeMappings() + { + base.RegisterCharacterTypeMappings(); RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForClob, "NVARCHAR(MAX)"); RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForAnsiClob, "VARCHAR(MAX)"); RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForBlob, "VARBINARY(MAX)"); - RegisterColumnType(DbType.Xml, "XML"); } /// <summary> Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs 2011-03-23 15:41:09 UTC (rev 5509) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs 2011-03-23 16:16:19 UTC (rev 5510) @@ -5,15 +5,25 @@ { public class MsSql2008Dialect : MsSql2005Dialect { - public MsSql2008Dialect() + protected override void RegisterDateTimeTypeMappings() { + base.RegisterDateTimeTypeMappings(); RegisterColumnType(DbType.DateTime2, "DATETIME2"); RegisterColumnType(DbType.DateTimeOffset, "DATETIMEOFFSET"); RegisterColumnType(DbType.Date, "DATE"); RegisterColumnType(DbType.Time, "TIME"); + } + protected override void RegisterFunctions() + { + base.RegisterFunctions(); RegisterFunction("current_timestamp", new NoArgSQLFunction("sysdatetime", NHibernateUtil.DateTime2, true)); RegisterFunction("current_timestamp_offset", new NoArgSQLFunction("sysdatetimeoffset", NHibernateUtil.DateTimeOffset, true)); + } + + protected override void RegisterKeywords() + { + base.RegisterKeywords(); RegisterKeyword("datetime2"); RegisterKeyword("datetimeoffset"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-04-12 05:30:09
|
Revision: 5672 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5672&view=rev Author: patearl Date: 2011-04-12 05:30:03 +0000 (Tue, 12 Apr 2011) Log Message: ----------- Dialects: Improved PostgreSQL and SQLite dialects with regards to limit handling. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs 2011-04-12 05:28:42 UTC (rev 5671) +++ trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs 2011-04-12 05:30:03 UTC (rev 5672) @@ -123,6 +123,11 @@ get { return true; } } + public override bool SupportsLimitOffset + { + get { return true; } + } + public override bool BindLimitParametersInReverseOrder { get { return true; } @@ -139,20 +144,36 @@ /// <returns>A new <see cref="SqlString"/> that contains the <c>LIMIT</c> clause.</returns> public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit, int? offsetParameterIndex, int? limitParameterIndex) { - SqlStringBuilder pagingBuilder = new SqlStringBuilder(); - pagingBuilder.Add(querySqlString); - pagingBuilder.Add(" limit "); - pagingBuilder.Add(Parameter.WithIndex(limitParameterIndex.Value)); + object limitObject = Parameter.WithIndex(limitParameterIndex.Value); + object offsetObject = offset > 0 ? Parameter.WithIndex(offsetParameterIndex.Value) : null; + return GetLimitString(querySqlString, offsetObject, limitObject); + } - if (offset > 0) - { - pagingBuilder.Add(" offset "); - pagingBuilder.Add(Parameter.WithIndex(offsetParameterIndex.Value)); - } + public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit) + { + return GetLimitString(querySqlString, new SqlString(offset.ToString()), new SqlString(limit.ToString())); + } - return pagingBuilder.ToSqlString(); - } + private SqlString GetLimitString(SqlString querySqlString, object offset, object limit) + { + SqlStringBuilder pagingBuilder = new SqlStringBuilder(); + pagingBuilder.Add(querySqlString); + if (limit != null) + { + pagingBuilder.Add(" limit "); + pagingBuilder.AddObject(limit); + } + + if (offset != null) + { + pagingBuilder.Add(" offset "); + pagingBuilder.AddObject(offset); + } + + return pagingBuilder.ToSqlString(); + } + public override string GetForUpdateString(string aliases) { return ForUpdateString + " of " + aliases; Modified: trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2011-04-12 05:28:42 UTC (rev 5671) +++ trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2011-04-12 05:30:03 UTC (rev 5672) @@ -164,6 +164,11 @@ get { return true; } } + public override bool SupportsLimitOffset + { + get { return true; } + } + public override string IdentityColumnString { get This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |