From: <jul...@us...> - 2011-02-07 09:21:55
|
Revision: 5376 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5376&view=rev Author: julian-maughan Date: 2011-02-07 09:21:46 +0000 (Mon, 07 Feb 2011) Log Message: ----------- Merged latest trunk (r5375) to ReadOnlyCriteria branch. Modified Paths: -------------- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Dialect/DB2400Dialect.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Engine/QueryParameters.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Linq/ReWriters/ResultOperatorRewriter.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Linq/Visitors/HqlGeneratorExpressionTreeVisitor.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Loader/Loader.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Mapping/SimpleValue.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Type/SerializableType.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Type/TypeFactory.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/DriverTest/SqlClientDriverFixture.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/Linq/ByMethod/AnyTests.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/Linq/QueryCacheableTests.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHibernate.Test.build branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/DomainClass.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/Mappings.hbm.xml branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/NH2467Test.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2484/ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2484/Fixture.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2484/Mappings.hbm.xml branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2484/Model.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2484/food-photo.jpg branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2507/ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2507/Animal.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2507/Fixture.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2507/Mappings.hbm.xml Removed Paths: ------------- branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/DomainClass.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/Mappings.hbm.xml branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/NH2467Test.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2484/Fixture.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2484/Mappings.hbm.xml branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2484/Model.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2484/food-photo.jpg branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2507/Animal.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2507/Fixture.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2507/Mappings.hbm.xml Property Changed: ---------------- branches/ReadOnlyCriteria/ branches/ReadOnlyCriteria/nhibernate/ branches/ReadOnlyCriteria/nhibernate/src/ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/Tools/hbm2ddl/SchemaExportTests/ Property changes on: branches/ReadOnlyCriteria ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x:4505-4508,4510-4513,4537-4538 /trunk:5306-5362 + /branches/2.1.x:4505-4508,4510-4513,4537-4538 /trunk:5306-5375 Property changes on: branches/ReadOnlyCriteria/nhibernate ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x/nhibernate:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate:5306-5362 + /branches/2.1.x/nhibernate:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate:5306-5375 Property changes on: branches/ReadOnlyCriteria/nhibernate/src ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x/nhibernate/src:4659,4671,4681,4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src:5306-5362 + /branches/2.1.x/nhibernate/src:4659,4671,4681,4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src:5306-5375 Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Dialect/DB2400Dialect.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Dialect/DB2400Dialect.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Dialect/DB2400Dialect.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -46,6 +46,12 @@ get { return false; } } + public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit, int? offsetParameterIndex, int? limitParameterIndex) + { + // override the base-class's implementation that uses limit parameters + return GetLimitString(querySqlString, offset, limit); + } + public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit) { return new SqlStringBuilder(querySqlString) Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -5,6 +5,7 @@ using System.Text.RegularExpressions; using NHibernate.Dialect.Function; using NHibernate.Dialect.Schema; +using NHibernate.Driver; using NHibernate.Engine; using NHibernate.Mapping; using NHibernate.SqlCommand; @@ -40,18 +41,16 @@ /// </remarks> public class MsSql2000Dialect : Dialect { - public const int MaxSizeForLengthLimitedStrings = 4000; - /// <summary></summary> public MsSql2000Dialect() { RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)"); RegisterColumnType(DbType.AnsiStringFixedLength, 8000, "CHAR($l)"); RegisterColumnType(DbType.AnsiString, "VARCHAR(255)"); - RegisterColumnType(DbType.AnsiString, 8000, "VARCHAR($l)"); - RegisterColumnType(DbType.AnsiString, 2147483647, "TEXT"); + RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForLengthLimitedAnsiString, "VARCHAR($l)"); + RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForAnsiClob, "TEXT"); RegisterColumnType(DbType.Binary, "VARBINARY(8000)"); - RegisterColumnType(DbType.Binary, 8000, "VARBINARY($l)"); - RegisterColumnType(DbType.Binary, 2147483647, "IMAGE"); + 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"); @@ -66,10 +65,10 @@ RegisterColumnType(DbType.Int64, "BIGINT"); RegisterColumnType(DbType.Single, "REAL"); //synonym for FLOAT(24) RegisterColumnType(DbType.StringFixedLength, "NCHAR(255)"); - RegisterColumnType(DbType.StringFixedLength, MaxSizeForLengthLimitedStrings, "NCHAR($l)"); + RegisterColumnType(DbType.StringFixedLength, SqlClientDriver.MaxSizeForLengthLimitedString, "NCHAR($l)"); RegisterColumnType(DbType.String, "NVARCHAR(255)"); - RegisterColumnType(DbType.String, MaxSizeForLengthLimitedStrings, "NVARCHAR($l)"); - RegisterColumnType(DbType.String, 1073741823, "NTEXT"); + RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForLengthLimitedString, "NVARCHAR($l)"); + RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForClob, "NTEXT"); RegisterColumnType(DbType.Time, "DATETIME"); RegisterFunction("count", new CountBigQueryFunction()); Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Data; +using NHibernate.Driver; using NHibernate.Mapping; using NHibernate.SqlCommand; using NHibernate.Util; @@ -11,9 +12,9 @@ { public MsSql2005Dialect() { - RegisterColumnType(DbType.String, 1073741823, "NVARCHAR(MAX)"); - RegisterColumnType(DbType.AnsiString, 2147483647, "VARCHAR(MAX)"); - RegisterColumnType(DbType.Binary, 2147483647, "VARBINARY(MAX)"); + 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"); } Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -12,8 +12,19 @@ /// </summary> public class SqlClientDriver : DriverBase, IEmbeddedBatcherFactoryProvider { + public const int MaxSizeForAnsiClob = 2147483647; // int.MaxValue + public const int MaxSizeForClob = 1073741823; // int.MaxValue / 2 + public const int MaxSizeForBlob = 2147483647; // int.MaxValue + public const int MaxSizeForLengthLimitedAnsiString = 8000; + public const int MaxSizeForLengthLimitedString = 4000; + public const int MaxSizeForLengthLimitedBinary = 8000; + public const byte MaxPrecision = 28; + public const byte MaxScale = 5; + public const byte MaxDateTime2 = 8; + public const byte MaxDateTimeOffset = 10; + /// <summary> - /// Creates an uninitialized <see cref="IDbConnection" /> object for + /// Creates an uninitialized <see cref="IDbConnection" /> object for /// the SqlClientDriver. /// </summary> /// <value>An unitialized <see cref="System.Data.SqlClient.SqlConnection"/> object.</value> @@ -23,7 +34,7 @@ } /// <summary> - /// Creates an uninitialized <see cref="IDbCommand" /> object for + /// Creates an uninitialized <see cref="IDbCommand" /> object for /// the SqlClientDriver. /// </summary> /// <value>An unitialized <see cref="System.Data.SqlClient.SqlCommand"/> object.</value> @@ -33,7 +44,7 @@ } /// <summary> - /// MsSql requires the use of a Named Prefix in the SQL statement. + /// MsSql requires the use of a Named Prefix in the SQL statement. /// </summary> /// <remarks> /// <see langword="true" /> because MsSql uses "<c>@</c>". @@ -44,7 +55,7 @@ } /// <summary> - /// MsSql requires the use of a Named Prefix in the Parameter. + /// MsSql requires the use of a Named Prefix in the Parameter. /// </summary> /// <remarks> /// <see langword="true" /> because MsSql uses "<c>@</c>". @@ -55,7 +66,7 @@ } /// <summary> - /// The Named Prefix for parameters. + /// The Named Prefix for parameters. /// </summary> /// <value> /// Sql Server uses <c>"@"</c>. @@ -71,8 +82,8 @@ /// </summary> /// <value><see langword="false" /> - it is not supported.</value> /// <remarks> - /// MS SQL Server 2000 (and 7) throws an exception when multiple IDataReaders are - /// attempted to be opened. When SQL Server 2005 comes out a new driver will be + /// MS SQL Server 2000 (and 7) throws an exception when multiple IDataReaders are + /// attempted to be opened. When SQL Server 2005 comes out a new driver will be /// created for it because SQL Server 2005 is supposed to support it. /// </remarks> public override bool SupportsMultipleOpenReaders @@ -80,6 +91,20 @@ get { return false; } } + public override bool SupportsMultipleQueries + { + get { return true; } + } + + public override IDbCommand GenerateCommand(CommandType type, SqlString sqlString, SqlType[] parameterTypes) + { + IDbCommand command = base.GenerateCommand(type, sqlString, parameterTypes); + + SetParameterSizes(command.Parameters, parameterTypes); + + return command; + } + // Used from SqlServerCeDriver as well public static void SetParameterSizes(IDataParameterCollection parameters, SqlType[] parameterTypes) { @@ -89,34 +114,33 @@ } } - private const int MaxAnsiStringSize = 8000; - private const int MaxBinarySize = MaxAnsiStringSize; - private const int MaxStringSize = MaxAnsiStringSize / 2; - private const int MaxBinaryBlobSize = int.MaxValue; - private const int MaxStringClobSize = MaxBinaryBlobSize / 2; - private const byte MaxPrecision = 28; - private const byte MaxScale = 5; - private const byte MaxDateTime2 = 8; - private const byte MaxDateTimeOffset = 10; + private static void SetVariableLengthParameterSize(IDbDataParameter dbParam, SqlType sqlType) + { + SetDefaultParameterSize(dbParam, sqlType); + // Override the defaults using data from SqlType - except for LOB types + if (sqlType.LengthDefined && !IsText(dbParam, sqlType) && !IsBlob(dbParam, sqlType)) + { + dbParam.Size = sqlType.Length; + } + + if (sqlType.PrecisionDefined) + { + dbParam.Precision = sqlType.Precision; + dbParam.Scale = sqlType.Scale; + } + } + private static void SetDefaultParameterSize(IDbDataParameter dbParam, SqlType sqlType) { switch (dbParam.DbType) { case DbType.AnsiString: case DbType.AnsiStringFixedLength: - dbParam.Size = MaxAnsiStringSize; + dbParam.Size = MaxSizeForLengthLimitedAnsiString; break; - case DbType.Binary: - if (sqlType is BinaryBlobSqlType) - { - dbParam.Size = MaxBinaryBlobSize; - } - else - { - dbParam.Size = MaxBinarySize; - } + dbParam.Size = IsBlob(dbParam, sqlType) ? MaxSizeForBlob : MaxSizeForLengthLimitedBinary; break; case DbType.Decimal: dbParam.Precision = MaxPrecision; @@ -124,7 +148,7 @@ break; case DbType.String: case DbType.StringFixedLength: - dbParam.Size = IsText(dbParam, sqlType) ? MaxStringClobSize : MaxStringSize; + dbParam.Size = IsText(dbParam, sqlType) ? MaxSizeForClob : MaxSizeForLengthLimitedString; break; case DbType.DateTime2: dbParam.Size = MaxDateTime2; @@ -135,44 +159,28 @@ } } + /// <summary> + /// Interprets if a parameter is a Clob (for the purposes of setting its default size) + /// </summary> + /// <param name="dbParam">The parameter</param> + /// <param name="sqlType">The <see cref="SqlType" /> of the parameter</param> + /// <returns>True, if the parameter should be interpreted as a Clob, otherwise False</returns> private static bool IsText(IDbDataParameter dbParam, SqlType sqlType) { - return (sqlType is StringClobSqlType) || (sqlType.LengthDefined && sqlType.Length > MsSql2000Dialect.MaxSizeForLengthLimitedStrings && - (DbType.String == dbParam.DbType || DbType.StringFixedLength == dbParam.DbType)); + return (sqlType is StringClobSqlType) || ((DbType.String == dbParam.DbType || DbType.StringFixedLength == dbParam.DbType) && sqlType.LengthDefined && (sqlType.Length > MaxSizeForLengthLimitedString)); } - - private static void SetVariableLengthParameterSize(IDbDataParameter dbParam, SqlType sqlType) + + /// <summary> + /// Interprets if a parameter is a Blob (for the purposes of setting its default size) + /// </summary> + /// <param name="dbParam">The parameter</param> + /// <param name="sqlType">The <see cref="SqlType" /> of the parameter</param> + /// <returns>True, if the parameter should be interpreted as a Blob, otherwise False</returns> + private static bool IsBlob(IDbDataParameter dbParam, SqlType sqlType) { - SetDefaultParameterSize(dbParam, sqlType); - - // Override the defaults using data from SqlType. - if (sqlType.LengthDefined && !IsText(dbParam, sqlType)) - { - dbParam.Size = sqlType.Length; - } - - if (sqlType.PrecisionDefined) - { - dbParam.Precision = sqlType.Precision; - dbParam.Scale = sqlType.Scale; - } + return (sqlType is BinaryBlobSqlType) || ((DbType.Binary == dbParam.DbType) && sqlType.LengthDefined && (sqlType.Length > MaxSizeForLengthLimitedBinary)); } - public override IDbCommand GenerateCommand(CommandType type, SqlString sqlString, SqlType[] parameterTypes) - { - IDbCommand command = base.GenerateCommand(type, sqlString, parameterTypes); - //if (IsPrepareSqlEnabled) - { - SetParameterSizes(command.Parameters, parameterTypes); - } - return command; - } - - public override bool SupportsMultipleQueries - { - get { return true; } - } - #region IEmbeddedBatcherFactoryProvider Members System.Type IEmbeddedBatcherFactoryProvider.BatcherFactoryClass @@ -182,4 +190,4 @@ #endregion } -} +} \ No newline at end of file Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Engine/QueryParameters.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Engine/QueryParameters.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -553,12 +553,12 @@ else { paramTypeList.Add(NHibernateUtil.Int32); - limitParameterIndex = totalSpan; + limitParameterIndex = startParameterIndex + totalSpan; if (addOffset) { paramTypeList.Add(NHibernateUtil.Int32); - offsetParameterIndex = totalSpan; - limitParameterIndex = totalSpan + 1; + offsetParameterIndex = startParameterIndex + totalSpan; + limitParameterIndex = startParameterIndex + totalSpan + 1; } } Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -5,11 +5,10 @@ using System.Diagnostics; using Iesi.Collections; using Iesi.Collections.Generic; - using NHibernate.Cache; +using NHibernate.Criterion; using NHibernate.Driver; using NHibernate.Engine; -using NHibernate.Criterion; using NHibernate.Loader.Criteria; using NHibernate.SqlCommand; using NHibernate.SqlTypes; @@ -319,18 +318,19 @@ { int limitParameterSpan = BindLimitParametersFirstIfNeccesary(command, queryIndex, colIndex); colIndex = BindQueryParameters(command, queryIndex, colIndex + limitParameterSpan); - BindLimitParametersLastIfNeccesary(command, queryIndex, colIndex); + colIndex += BindLimitParametersLastIfNeccesary(command, queryIndex, colIndex); } } - private void BindLimitParametersLastIfNeccesary(IDbCommand command, int queryIndex, int colIndex) + private int BindLimitParametersLastIfNeccesary(IDbCommand command, int queryIndex, int colIndex) { QueryParameters parameter = parameters[queryIndex]; RowSelection selection = parameter.RowSelection; if (Loader.Loader.UseLimit(selection, dialect) && !dialect.BindLimitParametersFirst) { - Loader.Loader.BindLimitParameters(command, colIndex, selection, session); + return Loader.Loader.BindLimitParameters(command, colIndex, selection, session); } + return 0; } private int BindQueryParameters(IDbCommand command, int queryIndex, int colIndex) Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -1,9 +1,10 @@ using System; using System.Collections; +using System.Collections.Generic; using System.Data; using System.Diagnostics; using Iesi.Collections; - +using Iesi.Collections.Generic; using NHibernate.Cache; using NHibernate.Driver; using NHibernate.Engine; @@ -12,8 +13,6 @@ using NHibernate.SqlTypes; using NHibernate.Transform; using NHibernate.Type; -using Iesi.Collections.Generic; -using System.Collections.Generic; namespace NHibernate.Impl { @@ -653,18 +652,19 @@ { int limitParameterSpan = BindLimitParametersFirstIfNeccesary(command, queryIndex, colIndex); colIndex = BindQueryParameters(command, queryIndex, colIndex + limitParameterSpan); - BindLimitParametersLastIfNeccesary(command, queryIndex, colIndex); + colIndex += BindLimitParametersLastIfNeccesary(command, queryIndex, colIndex); } } - private void BindLimitParametersLastIfNeccesary(IDbCommand command, int queryIndex, int colIndex) + private int BindLimitParametersLastIfNeccesary(IDbCommand command, int queryIndex, int colIndex) { QueryParameters parameter = parameters[queryIndex]; RowSelection selection = parameter.RowSelection; if (Loader.Loader.UseLimit(selection, dialect) && !dialect.BindLimitParametersFirst) { - Loader.Loader.BindLimitParameters(command, colIndex, selection, session); + return Loader.Loader.BindLimitParameters(command, colIndex, selection, session); } + return 0; } private int BindQueryParameters(IDbCommand command, int queryIndex, int colIndex) Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Linq/ReWriters/ResultOperatorRewriter.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Linq/ReWriters/ResultOperatorRewriter.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Linq/ReWriters/ResultOperatorRewriter.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -63,6 +63,7 @@ { typeof(FetchRequestBase), typeof(OfTypeResultOperator), + typeof(CacheableResultOperator), }; private readonly List<ResultOperatorBase> resultOperators = new List<ResultOperatorBase>(); Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Linq/Visitors/HqlGeneratorExpressionTreeVisitor.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Linq/Visitors/HqlGeneratorExpressionTreeVisitor.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Linq/Visitors/HqlGeneratorExpressionTreeVisitor.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -330,6 +330,7 @@ case ExpressionType.Not: return _hqlTreeBuilder.BooleanNot(VisitExpression(expression.Operand).AsBooleanExpression()); case ExpressionType.Convert: + case ExpressionType.ConvertChecked: return VisitExpression(expression.Operand); } Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Loader/Loader.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Loader/Loader.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Loader/Loader.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -1222,7 +1222,8 @@ private int GetFirstLimitParameterCount(Dialect.Dialect dialect, bool useLimit, bool hasFirstRow, bool useOffset) { - if (!useLimit) return 0; + if (!useLimit) return 0; + if (!dialect.SupportsVariableLimit) return 0; if (!dialect.BindLimitParametersFirst) return 0; return (hasFirstRow && useOffset) ? 2 : 1; } Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Mapping/SimpleValue.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Mapping/SimpleValue.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Mapping/SimpleValue.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -247,18 +247,21 @@ { // NH different behavior // If the mapping has a type as "Double(10,5)" our SqlType will be created with all information - // including the rigth SqlType specification but when the length/presion/scale was specified - // trough attributes the SqlType is wrong (does not include length/presion/scale specification) + // including the right SqlType specification, but when the length/precision/scale was specified + // through attributes the SqlType is wrong (does not include length/precision/scale specification) IType result = null; if (ColumnSpan == 1 && !columns[0].IsFormula) { - var col = (Column) columns[0]; - if(col.IsLengthDefined()) + var col = (Column)columns[0]; + if (col.IsLengthDefined()) { result = TypeFactory.BuiltInType(typeName, col.Length); + + if (result == null) + result = TypeFactory.HeuristicType(typeName, typeParameters, col.Length); } - else if(col.IsPrecisionDefined()) + else if (col.IsPrecisionDefined()) { result = TypeFactory.BuiltInType(typeName, Convert.ToByte(col.Precision), Convert.ToByte(col.Scale)); } Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -3898,29 +3898,19 @@ { return this; } - else + // TODO : really need a way to do something like : + // getTuplizer(entityMode).determineConcreteSubclassEntityName(instance) + var clazz = instance.GetType(); + if (clazz == GetMappedClass(entityMode)) { - // TODO : really need a way to do something like : - // getTuplizer(entityMode).determineConcreteSubclassEntityName(instance) - System.Type clazz = instance.GetType(); - if (clazz == GetMappedClass(entityMode)) - { - return this; - } - else - { - string subclassEntityName = GetSubclassEntityName(clazz); - if (subclassEntityName == null) - { - throw new HibernateException("instance not of expected entity type: " + clazz.FullName + " is not a: " - + EntityName); - } - else - { - return factory.GetEntityPersister(subclassEntityName); - } - } + return this; } + var subclassEntityName = GetSubclassEntityName(clazz); + if (subclassEntityName == null || EntityName.Equals(subclassEntityName)) + { + return this; + } + return factory.GetEntityPersister(subclassEntityName); } public virtual EntityMode? GuessEntityMode(object obj) Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Type/SerializableType.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Type/SerializableType.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Type/SerializableType.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -14,8 +14,9 @@ /// </summary> /// <remarks> /// <para> - /// The SerializableType should be used when you know that Bytes are - /// not going to be greater than 8,000. + /// For performance reasons, the SerializableType should be used when you know that Bytes are + /// not going to be greater than 8,000. Implementing a custom type is recommended for larger + /// types. /// </para> /// <para> /// The base class is <see cref="MutableType"/> because the data is stored in Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Type/TypeFactory.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate/Type/TypeFactory.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -21,7 +21,7 @@ /// <remarks> /// Applications should use static methods and constants on NHibernate.NHibernateUtil if the default /// IType is good enough. For example, the TypeFactory should only be used when the String needs - /// to have a length of 300 instead of 255. At this point NHibernate.String does not get you the + /// to have a length of 300 instead of 255. At this point NHibernateUtil.String does not get you the /// correct IType. Instead use TypeFactory.GetString(300) and keep a local variable that holds /// a reference to the IType. /// </remarks> @@ -33,8 +33,8 @@ Length, PrecisionScale } + private static readonly string[] EmptyAliases= new string[0]; - private static readonly char[] PrecisionScaleSplit = new[] { '(', ')', ',' }; private static readonly char[] LengthSplit = new[] { '(', ')' }; private static readonly TypeFactory Instance; @@ -446,14 +446,25 @@ } /// <summary> - /// Uses heuristics to deduce a NHibernate type given a string naming the - /// type. + /// Uses heuristics to deduce a NHibernate type given a string naming the type. /// </summary> /// <param name="typeName">the type name</param> /// <param name="parameters">parameters for the type</param> /// <returns>An instance of <c>NHibernate.Type.IType</c></returns> public static IType HeuristicType(string typeName, IDictionary<string, string> parameters) { + return HeuristicType(typeName, parameters, null); + } + + /// <summary> + /// Uses heuristics to deduce a NHibernate type given a string naming the type. + /// </summary> + /// <param name="typeName">the type name</param> + /// <param name="parameters">parameters for the type</param> + /// <param name="length">optionally, the size of the type</param> + /// <returns></returns> + public static IType HeuristicType(string typeName, IDictionary<string, string> parameters, int? length) + { IType type = Basic(typeName); if (type == null) @@ -518,6 +529,10 @@ { type = GetSerializableType(typeClass, Int32.Parse(parsedTypeName[1])); } + else if (length != null) + { + type = GetSerializableType(typeClass, length.Value); + } else { type = GetSerializableType(typeClass); Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/DriverTest/SqlClientDriverFixture.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/DriverTest/SqlClientDriverFixture.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/DriverTest/SqlClientDriverFixture.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -29,10 +29,6 @@ [TestFixture] public class SqlClientDriverFixture : TestCase { - protected override void Configure(Configuration configuration) - { - configuration.SetProperty(Environment.PrepareSql, "true"); - } protected override string MappingsAssembly { get { return "NHibernate.Test"; } @@ -45,24 +41,28 @@ protected override bool AppliesTo(Dialect.Dialect dialect) { - return dialect is MsSql2000Dialect; + return dialect is MsSql2008Dialect; } [Test] public void Crud() { - // Should use default dimension for CRUD op and prepare_sql='true' because the mapping does not + // Should use default dimension for CRUD op because the mapping does not // have dimensions specified. object savedId; using (ISession s = OpenSession()) using (ITransaction t = s.BeginTransaction()) { savedId = s.Save(new MultiTypeEntity - { - StringProp = "a", StringClob = "a",BinaryBlob = new byte[]{1,2,3}, - Binary = new byte[] { 4, 5, 6 }, Currency = 123.4m, Double = 123.5d, - Decimal = 789.5m - }); + { + StringProp = "a", + StringClob = "a", + BinaryBlob = new byte[]{1,2,3}, + Binary = new byte[] { 4, 5, 6 }, + Currency = 123.4m, + Double = 123.5d, + Decimal = 789.5m + }); t.Commit(); } Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/Linq/ByMethod/AnyTests.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/Linq/ByMethod/AnyTests.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/Linq/ByMethod/AnyTests.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -9,11 +9,25 @@ [TestFixture] public class AnyTests : LinqTestCase { - [Test] - public void AnySublist() - { - var orders = db.Orders.Where(o => o.OrderLines.Any(ol => ol.Quantity == 5)).ToList(); - Assert.AreEqual(61, orders.Count); - } + [Test] + public void AnySublist() + { + var orders = db.Orders.Where(o => o.OrderLines.Any(ol => ol.Quantity == 5)).ToList(); + Assert.AreEqual(61, orders.Count); + + orders = db.Orders.Where(o => o.OrderLines.Any(ol => ol.Order == null)).ToList(); + Assert.AreEqual(0, orders.Count); + } + + [Test] + public void NestedAny() + { + var test = (from c in db.Customers + where c.ContactName == "Bob" && + (c.CompanyName == "NormalooCorp" || + c.Orders.Any(o => o.OrderLines.Any(ol => ol.Discount < 20 && ol.Discount >= 10))) + select c).ToList(); + Assert.AreEqual(0, test.Count); + } } } Modified: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/Linq/QueryCacheableTests.cs =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/Linq/QueryCacheableTests.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/Linq/QueryCacheableTests.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -85,5 +85,34 @@ Assert.That(Sfi.Statistics.QueryCachePutCount, Is.EqualTo(2)); Assert.That(Sfi.Statistics.QueryCacheHitCount, Is.EqualTo(1)); } + + [Test] + public void CacheableBeforeOtherClauses() + { + Sfi.Statistics.Clear(); + Sfi.QueryCache.Clear(); + + db.Customers.Cacheable().Where(c => c.ContactName != c.CompanyName).Take(1).ToList(); + db.Customers.Where(c => c.ContactName != c.CompanyName).Take(1).ToList(); + + Assert.That(Sfi.Statistics.QueryExecutionCount, Is.EqualTo(2)); + Assert.That(Sfi.Statistics.QueryCachePutCount, Is.EqualTo(1)); + Assert.That(Sfi.Statistics.QueryCacheHitCount, Is.EqualTo(0)); + } + + [Test] + public void CacheableRegionBeforeOtherClauses() + { + Sfi.Statistics.Clear(); + Sfi.QueryCache.Clear(); + + db.Customers.Cacheable().CacheRegion("test").Where(c => c.ContactName != c.CompanyName).Take(1).ToList(); + db.Customers.Cacheable().CacheRegion("test").Where(c => c.ContactName != c.CompanyName).Take(1).ToList(); + db.Customers.Cacheable().CacheRegion("other").Where(c => c.ContactName != c.CompanyName).Take(1).ToList(); + + Assert.That(Sfi.Statistics.QueryExecutionCount, Is.EqualTo(2)); + Assert.That(Sfi.Statistics.QueryCachePutCount, Is.EqualTo(2)); + Assert.That(Sfi.Statistics.QueryCacheHitCount, Is.EqualTo(1)); + } } } Deleted: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -1,48 +0,0 @@ - -using System.Collections; -using NUnit.Framework; - -namespace NHibernate.Test.NHSpecificTest.EntityNameAndInheritance -{ - public class Fixture : BugTestCase - { - private int id; - private const string entityName = "SuperClass"; - - protected override void OnSetUp() - { - using (var s = OpenSession()) - { - using (var tx = s.BeginTransaction()) - { - id = (int)s.Save(entityName, new Hashtable()); - tx.Commit(); - } - } - } - - [Test] - public void DoesNotCrash() - { - using (var s = OpenSession()) - { - using (s.BeginTransaction()) - { - Assert.IsNotNull(s.Get(entityName, id)); - } - } - } - - protected override void OnTearDown() - { - using (var s = OpenSession()) - { - using (var tx = s.BeginTransaction()) - { - s.CreateSQLQuery("delete from " + entityName).ExecuteUpdate(); - tx.Commit(); - } - } - } - } -} Copied: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs (from rev 5375, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs) =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs (rev 0) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -0,0 +1,48 @@ + +using System.Collections; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.EntityNameAndInheritance +{ + public class Fixture : BugTestCase + { + private int id; + private const string entityName = "SuperClass"; + + protected override void OnSetUp() + { + using (var s = OpenSession()) + { + using (var tx = s.BeginTransaction()) + { + id = (int)s.Save(entityName, new Hashtable()); + tx.Commit(); + } + } + } + + [Test] + public void DoesNotCrash() + { + using (var s = OpenSession()) + { + using (s.BeginTransaction()) + { + Assert.IsNotNull(s.Get(entityName, id)); + } + } + } + + protected override void OnTearDown() + { + using (var s = OpenSession()) + { + using (var tx = s.BeginTransaction()) + { + s.CreateSQLQuery("delete from " + entityName).ExecuteUpdate(); + tx.Commit(); + } + } + } + } +} Deleted: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml 2011-02-07 09:21:46 UTC (rev 5376) @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" - namespace="NHibernate.Test.NHSpecificTest.EntityNameAndCompositeId" - assembly="NHibernate.Test"> - <class entity-name="SuperClass"> - <id name="Id" type="int"> - <generator class="native"/> - </id> - <discriminator column="DISC" type="string" /> - <subclass entity-name="Subclass" discriminator-value="B" /> - </class> -</hibernate-mapping> Copied: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml (from rev 5375, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml) =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml (rev 0) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml 2011-02-07 09:21:46 UTC (rev 5376) @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.EntityNameAndCompositeId" + assembly="NHibernate.Test"> + <class entity-name="SuperClass"> + <id name="Id" type="int"> + <generator class="native"/> + </id> + <discriminator column="DISC" type="string" /> + <subclass entity-name="Subclass" discriminator-value="B" /> + </class> +</hibernate-mapping> Property changes on: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs:4593-4594,4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs:5306-5362 + /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs:4593-4594,4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs:5306-5375 Property changes on: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs:4593-4594,4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs:5306-5362 + /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs:4593-4594,4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs:5306-5375 Property changes on: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml:4593-4594,4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml:5306-5362 + /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml:4593-4594,4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml:5306-5375 Property changes on: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs:5306-5362 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Fixture.cs:4657 + /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs:5306-5375 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Fixture.cs:4657 Property changes on: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml:5306-5362 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Mappings.hbm.xml:4657 + /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml:5306-5375 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Mappings.hbm.xml:4657 Property changes on: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs:5306-5362 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Model.cs:4657 + /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs:5306-5375 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Model.cs:4657 Property changes on: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927 ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927:4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927:5306-5362 + /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927:4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927:5306-5375 Property changes on: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928 ___________________________________________________________________ Modified: svn:mergeinfo - /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928:5306-5362 + /branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928:4690-4691,4696-4697,4711,4715-4716,4905-4908 /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928:5306-5375 Deleted: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/DomainClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/DomainClass.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/DomainClass.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -1,20 +0,0 @@ - - -namespace NHibernate.Test.NHSpecificTest.NH2467 -{ - public class DomainClass - { - - public int Id - { - get; - set; - } - - public string Data - { - get; - set; - } - } -} Copied: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/DomainClass.cs (from rev 5375, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/DomainClass.cs) =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/DomainClass.cs (rev 0) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/DomainClass.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -0,0 +1,20 @@ + + +namespace NHibernate.Test.NHSpecificTest.NH2467 +{ + public class DomainClass + { + + public int Id + { + get; + set; + } + + public string Data + { + get; + set; + } + } +} Deleted: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/Mappings.hbm.xml 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/Mappings.hbm.xml 2011-02-07 09:21:46 UTC (rev 5376) @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" - namespace="NHibernate.Test.NHSpecificTest.NH2467" - default-lazy="false"> - <class name="DomainClass"> - <id name="Id"> - <generator class="assigned" /> - </id> - <property name="Data" /> - </class> -</hibernate-mapping> Copied: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/Mappings.hbm.xml (from rev 5375, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/Mappings.hbm.xml) =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/Mappings.hbm.xml (rev 0) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/Mappings.hbm.xml 2011-02-07 09:21:46 UTC (rev 5376) @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH2467" + default-lazy="false"> + <class name="DomainClass"> + <id name="Id"> + <generator class="assigned" /> + </id> + <property name="Data" /> + </class> +</hibernate-mapping> Deleted: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/NH2467Test.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/NH2467Test.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/NH2467Test.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -1,126 +0,0 @@ -using System.Linq; -using NHibernate.Criterion; -using NUnit.Framework; - -namespace NHibernate.Test.NHSpecificTest.NH2467 -{ - [TestFixture] - public class NH2467Test : BugTestCase - { - protected override void OnSetUp() - { - base.OnSetUp(); - using (var session = OpenSession()) - { - var entity = new DomainClass {Id = 1, Data = "Test"}; - session.Save(entity); - session.Flush(); - } - } - - protected override bool AppliesTo(Dialect.Dialect dialect) - { - return dialect.SupportsLimit && !dialect.BindLimitParametersFirst; - } - - protected override void OnTearDown() - { - base.OnTearDown(); - using (var session = OpenSession()) - { - session.Delete("from System.Object"); - session.Flush(); - } - } - - [Test] - public void ShouldNotThrowOnFuturePaging() - { - using (var session = OpenSession()) - { - - var contentQuery = session - .CreateCriteria<DomainClass>() - .Add(Restrictions.Eq("Data", "Test")); - contentQuery.SetMaxResults(2); - contentQuery.SetFirstResult(0); - var content = contentQuery.Future<DomainClass>(); - - var countQuery = session - .CreateCriteria<DomainClass>() - .Add(Restrictions.Eq("Data", "Test")); - countQuery.SetProjection(Projections.RowCount()); - var count = countQuery.FutureValue<int>(); - - // triggers batch operation, should not throw - var result = content.ToList(); - } - } - - [Test] - public void ShouldNotThrowOnReversedFuturePaging() - { - using (var session = OpenSession()) - { - - var countQuery = session - .CreateCriteria<DomainClass>() - .Add(Restrictions.Eq("Data", "Test")); - countQuery.SetProjection(Projections.RowCount()); - var count = countQuery.FutureValue<int>(); - - var contentQuery = session - .CreateCriteria<DomainClass>() - .Add(Restrictions.Eq("Data", "Test")); - contentQuery.SetMaxResults(2); - contentQuery.SetFirstResult(0); - var content = contentQuery.Future<DomainClass>(); - - // triggers batch operation, should not throw - var result = content.ToList(); - } - } - - [Test] - public void ShouldNotThrowOnFuturePagingUsingHql() - { - using (var session = OpenSession()) - { - - var contentQuery = session.CreateQuery("from DomainClass as d where d.Data = ?"); - contentQuery.SetString(0, "Test"); - contentQuery.SetMaxResults(2); - contentQuery.SetFirstResult(0); - var content = contentQuery.Future<DomainClass>(); - - var countQuery = session.CreateQuery("select count(d) from DomainClass as d where d.Data = ?"); - countQuery.SetString(0, "Test"); - var count = countQuery.FutureValue<long>(); - - Assert.AreEqual(1, content.ToList().Count); - Assert.AreEqual(1, count.Value); - } - } - - [Test] - public void ShouldNotThrowOnReversedFuturePagingUsingHql() - { - using (var session = OpenSession()) - { - - var contentQuery = session.CreateQuery("from DomainClass as d where d.Data = ?"); - contentQuery.SetString(0, "Test"); - contentQuery.SetMaxResults(2); - contentQuery.SetFirstResult(0); - var content = contentQuery.Future<DomainClass>(); - - var countQuery = session.CreateQuery("select count(d) from DomainClass as d where d.Data = ?"); - countQuery.SetString(0, "Test"); - var count = countQuery.FutureValue<long>(); - - Assert.AreEqual(1, content.ToList().Count); - Assert.AreEqual(1, count.Value); - } - } - } -} Copied: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/NH2467Test.cs (from rev 5375, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/NH2467Test.cs) =================================================================== --- branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/NH2467Test.cs (rev 0) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2467/NH2467Test.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -0,0 +1,126 @@ +using System.Linq; +using NHibernate.Criterion; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH2467 +{ + [TestFixture] + public class NH2467Test : BugTestCase + { + protected override void OnSetUp() + { + base.OnSetUp(); + using (var session = OpenSession()) + { + var entity = new DomainClass {Id = 1, Data = "Test"}; + session.Save(entity); + session.Flush(); + } + } + + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect.SupportsLimit && !dialect.BindLimitParametersFirst; + } + + protected override void OnTearDown() + { + base.OnTearDown(); + using (var session = OpenSession()) + { + session.Delete("from System.Object"); + session.Flush(); + } + } + + [Test] + public void ShouldNotThrowOnFuturePaging() + { + using (var session = OpenSession()) + { + + var contentQuery = session + .CreateCriteria<DomainClass>() + .Add(Restrictions.Eq("Data", "Test")); + contentQuery.SetMaxResults(2); + contentQuery.SetFirstResult(0); + var content = contentQuery.Future<DomainClass>(); + + var countQuery = session + .CreateCriteria<DomainClass>() + .Add(Restrictions.Eq("Data", "Test")); + countQuery.SetProjection(Projections.RowCount()); + var count = countQuery.FutureValue<int>(); + + // triggers batch operation, should not throw + var result = content.ToList(); + } + } + + [Test] + public void ShouldNotThrowOnReversedFuturePaging() + { + using (var session = OpenSession()) + { + + var countQuery = session + .CreateCriteria<DomainClass>() + .Add(Restrictions.Eq("Data", "Test")); + countQuery.SetProjection(Projections.RowCount()); + var count = countQuery.FutureValue<int>(); + + var contentQuery = session + .CreateCriteria<DomainClass>() + .Add(Restrictions.Eq("Data", "Test")); + contentQuery.SetMaxResults(2); + contentQuery.SetFirstResult(0); + var content = contentQuery.Future<DomainClass>(); + + // triggers batch operation, should not throw + var result = content.ToList(); + } + } + + [Test] + public void ShouldNotThrowOnFuturePagingUsingHql() + { + using (var session = OpenSession()) + { + + var contentQuery = session.CreateQuery("from DomainClass as d where d.Data = ?"); + contentQuery.SetString(0, "Test"); + contentQuery.SetMaxResults(2); + contentQuery.SetFirstResult(0); + var content = contentQuery.Future<DomainClass>(); + + var countQuery = session.CreateQuery("select count(d) from DomainClass as d where d.Data = ?"); + countQuery.SetString(0, "Test"); + var count = countQuery.FutureValue<long>(); + + Assert.AreEqual(1, content.ToList().Count); + Assert.AreEqual(1, count.Value); + } + } + + [Test] + public void ShouldNotThrowOnReversedFuturePagingUsingHql() + { + using (var session = OpenSession()) + { + + var contentQuery = session.CreateQuery("from DomainClass as d where d.Data = ?"); + contentQuery.SetString(0, "Test"); + contentQuery.SetMaxResults(2); + contentQuery.SetFirstResult(0); + var content = contentQuery.Future<DomainClass>(); + + var countQuery = session.CreateQuery("select count(d) from DomainClass as d where d.Data = ?"); + countQuery.SetString(0, "Test"); + var count = countQuery.FutureValue<long>(); + + Assert.AreEqual(1, content.ToList().Count); + Assert.AreEqual(1, count.Value); + } + } + } +} Deleted: branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2484/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2484/Fixture.cs 2011-02-05 23:18:25 UTC (rev 5375) +++ branches/ReadOnlyCriteria/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2484/Fixture.cs 2011-02-07 09:21:46 UTC (rev 5376) @@ -1,82 +0,0 @@ -using System; -using System.Drawing; -using System.Reflection; -using NUn... [truncated message content] |