From: <aye...@us...> - 2009-06-23 05:57:26
|
Revision: 4513 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4513&view=rev Author: ayenderahien Date: 2009-06-23 05:57:17 +0000 (Tue, 23 Jun 2009) Log Message: ----------- Made openCommandCount and openReaderCount thread safe Fixed NH-1850 NHibernate should log query duration Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs branches/2.1.x/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml Modified: branches/2.1.x/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs 2009-06-23 05:55:51 UTC (rev 4512) +++ branches/2.1.x/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs 2009-06-23 05:57:17 UTC (rev 4513) @@ -12,6 +12,10 @@ namespace NHibernate.AdoNet { + using System.Collections.Generic; + using System.Diagnostics; + using System.Threading; + /// <summary> /// Manages prepared statements and batching. Class exists to enforce separation of concerns /// </summary> @@ -34,6 +38,7 @@ private readonly ISet<IDbCommand> commandsToClose = new HashedSet<IDbCommand>(); private readonly ISet<IDataReader> readersToClose = new HashedSet<IDataReader>(); + private readonly IDictionary<IDataReader, Stopwatch> readersDuration = new Dictionary<IDataReader, Stopwatch>(); private IDbCommand lastQuery; private bool releasing; @@ -197,7 +202,10 @@ { CheckReaders(); Prepare(cmd); - try + Stopwatch duration = null; + if(log.IsDebugEnabled) + duration = Stopwatch.StartNew(); + try { return cmd.ExecuteNonQuery(); } @@ -207,14 +215,21 @@ log.Error("Could not execute command: " + cmd.CommandText, e); throw; } + finally + { + if (log.IsDebugEnabled && duration != null) + log.DebugFormat("ExecuteNonQuery took {0} ms", duration.ElapsedMilliseconds); + } } public IDataReader ExecuteReader(IDbCommand cmd) { CheckReaders(); Prepare(cmd); - - IDataReader reader; + Stopwatch duration = null; + if (log.IsDebugEnabled) + duration = Stopwatch.StartNew(); + IDataReader reader = null; try { reader = cmd.ExecuteReader(); @@ -225,6 +240,14 @@ log.Error("Could not execute query: " + cmd.CommandText, e); throw; } + finally + { + if(log.IsDebugEnabled && duration != null && reader != null) + { + log.DebugFormat("ExecuteReader took {0} ms", duration.ElapsedMilliseconds); + readersDuration[reader] = duration; + } + } if (!factory.ConnectionProvider.Driver.SupportsMultipleOpenReaders) { @@ -259,19 +282,17 @@ releasing = true; try { - foreach (IDataReader reader in readersToClose) + foreach (IDataReader reader in new HashedSet<IDataReader>(readersToClose)) { try { - LogCloseReader(); - reader.Dispose(); + CloseReader(reader); } catch (Exception e) { log.Warn("Could not close IDataReader", e); } } - readersToClose.Clear(); foreach (IDbCommand cmd in commandsToClose) { @@ -343,18 +364,26 @@ */ // TODO NH: Study a way to use directly IDbCommand.ExecuteReader() outsite the batcher // An example of it's use is the management of generated ID. - if (reader != null) - { - ResultSetWrapper rsw = reader as ResultSetWrapper; - readersToClose.Remove(rsw == null ? reader : rsw.Target); - CloseDataReader(reader); - } - } + if (reader == null) + return; - private void CloseDataReader(IDataReader reader) - { + ResultSetWrapper rsw = reader as ResultSetWrapper; + var actualReader = rsw == null ? reader : rsw.Target; + readersToClose.Remove(actualReader); reader.Dispose(); LogCloseReader(); + + if (!log.IsDebugEnabled) + return; + + var nhReader = actualReader as NHybridDataReader; + actualReader = nhReader == null ? actualReader : nhReader.Target; + + Stopwatch duration; + if (readersDuration.TryGetValue(actualReader, out duration)==false) + return; + readersDuration.Remove(actualReader); + log.DebugFormat("DataReader was closed after {0} ms", duration.ElapsedMilliseconds); } /// <summary></summary> @@ -434,8 +463,8 @@ { if (log.IsDebugEnabled) { - openCommandCount++; - log.Debug("Opened new IDbCommand, open IDbCommands: " + openCommandCount); + int currentOpenCommandCount = Interlocked.Increment(ref openCommandCount); + log.Debug("Opened new IDbCommand, open IDbCommands: " + currentOpenCommandCount); } if (factory.Statistics.IsStatisticsEnabled) @@ -448,8 +477,8 @@ { if (log.IsDebugEnabled) { - openCommandCount--; - log.Debug("Closed IDbCommand, open IDbCommands: " + openCommandCount); + int currentOpenCommandCount = Interlocked.Decrement(ref openCommandCount); + log.Debug("Closed IDbCommand, open IDbCommands: " + currentOpenCommandCount); } if (factory.Statistics.IsStatisticsEnabled) @@ -462,8 +491,8 @@ { if (log.IsDebugEnabled) { - openReaderCount++; - log.Debug("Opened IDataReader, open IDataReaders: " + openReaderCount); + int currentOpenReaderCount = Interlocked.Increment(ref openReaderCount); + log.Debug("Opened IDataReader, open IDataReaders: " + currentOpenReaderCount); } } @@ -471,8 +500,8 @@ { if (log.IsDebugEnabled) { - openReaderCount--; - log.Debug("Closed IDataReader, open IDataReaders :" + openReaderCount); + int currentOpenReaderCount = Interlocked.Decrement(ref openReaderCount); + log.Debug("Closed IDataReader, open IDataReaders :" + currentOpenReaderCount); } } Modified: branches/2.1.x/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs 2009-06-23 05:55:51 UTC (rev 4512) +++ branches/2.1.x/nhibernate/src/NHibernate/Driver/NHybridDataReader.cs 2009-06-23 05:57:17 UTC (rev 4513) @@ -27,6 +27,8 @@ private IDataReader _reader; private bool _isMidstream = false; + public IDataReader Target { get { return _reader; } } + /// <summary> /// Initializes a new instance of the <see cref="NHybridDataReader"/> class. /// </summary> Copied: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs (from rev 4508, branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Customer.cs) =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs 2009-06-23 05:57:17 UTC (rev 4513) @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1850 +{ + public class Customer + { + public virtual int Id { get; set; } + public virtual string Name { get; set; } + } +} Property changes on: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Customer.cs ___________________________________________________________________ Added: svn:mergeinfo + Copied: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs (from rev 4508, branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Fixture.cs) =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs 2009-06-23 05:57:17 UTC (rev 4513) @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Text; +using NHibernate.Criterion; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1850 +{ + using AdoNet; + + [TestFixture] + public class Fixture:BugTestCase + { + [Test] + public void CanGetQueryDurationForDelete() + { + using (LogSpy spy = new LogSpy(typeof(AbstractBatcher))) + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + session.CreateQuery("delete Customer").ExecuteUpdate(); + + var wholeLog = spy.GetWholeLog(); + Assert.True( + wholeLog.Contains("ExecuteNonQuery took") + ); + + tx.Rollback(); + } + } + + [Test] + public void CanGetQueryDurationForSelect() + { + using (LogSpy spy = new LogSpy(typeof(AbstractBatcher))) + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + session.CreateQuery("from Customer").List(); + + var wholeLog = spy.GetWholeLog(); + Assert.True( + wholeLog.Contains("ExecuteReader took") + ); + Assert.True( + wholeLog.Contains("DataReader was closed after") + ); + + tx.Rollback(); + } + } + } +} Property changes on: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs ___________________________________________________________________ Added: svn:mergeinfo + Copied: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml (from rev 4508, branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1837/Mappings.hbm.xml) =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml 2009-06-23 05:57:17 UTC (rev 4513) @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1850" + default-lazy="false"> + + <class name="Customer"> + <id name="Id"> + <generator class="native"/> + </id> + <property name="Name"/> + + </class> +</hibernate-mapping> \ No newline at end of file Property changes on: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Mappings.hbm.xml ___________________________________________________________________ Added: svn:mergeinfo + Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-23 05:55:51 UTC (rev 4512) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-23 05:57:17 UTC (rev 4513) @@ -521,6 +521,8 @@ <Compile Include="NHSpecificTest\NH1837\Customer.cs" /> <Compile Include="NHSpecificTest\NH1837\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1837\Order.cs" /> + <Compile Include="NHSpecificTest\NH1850\Customer.cs" /> + <Compile Include="NHSpecificTest\NH1850\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> <Compile Include="NHSpecificTest\NH473\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Parent.cs" /> @@ -1931,6 +1933,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1850\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1192\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1734\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1097\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aye...@us...> - 2009-06-28 13:22:26
|
Revision: 4538 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4538&view=rev Author: ayenderahien Date: 2009-06-28 12:19:32 +0000 (Sun, 28 Jun 2009) Log Message: ----------- More fixes for NH 1850 Will now also report timing for batched statements execution Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs branches/2.1.x/nhibernate/src/NHibernate/AdoNet/NonBatchingBatcher.cs branches/2.1.x/nhibernate/src/NHibernate/AdoNet/OracleDataClientBatchingBatcher.cs branches/2.1.x/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs 2009-06-27 14:50:53 UTC (rev 4537) +++ branches/2.1.x/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs 2009-06-28 12:19:32 UTC (rev 4538) @@ -397,7 +397,7 @@ InvalidateBatchCommand(); try { - DoExecuteBatch(ps); + ExecuteBatchWithTiming(ps); } finally { @@ -406,12 +406,27 @@ } } + protected void ExecuteBatchWithTiming(IDbCommand ps) + { + Stopwatch duration = null; + if (log.IsDebugEnabled) + duration = Stopwatch.StartNew(); + var countBeforeExecutingBatch = CountOfStatementsInCurrentBatch; + DoExecuteBatch(ps); + if (log.IsDebugEnabled && duration != null) + log.DebugFormat("ExecuteBatch for {0} statements took {1} ms", + countBeforeExecutingBatch, + duration.ElapsedMilliseconds); + } + /// <summary> /// /// </summary> /// <param name="ps"></param> protected abstract void DoExecuteBatch(IDbCommand ps); + protected abstract int CountOfStatementsInCurrentBatch { get; } + /// <summary> /// Gets or sets the size of the batch, this can change dynamically by /// calling the session's SetBatchSize. Modified: branches/2.1.x/nhibernate/src/NHibernate/AdoNet/NonBatchingBatcher.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/AdoNet/NonBatchingBatcher.cs 2009-06-27 14:50:53 UTC (rev 4537) +++ branches/2.1.x/nhibernate/src/NHibernate/AdoNet/NonBatchingBatcher.cs 2009-06-28 12:19:32 UTC (rev 4538) @@ -9,7 +9,7 @@ /// An implementation of the <see cref="IBatcher" /> /// interface that does no batching. /// </summary> - internal class NonBatchingBatcher : AbstractBatcher + public class NonBatchingBatcher : AbstractBatcher { /// <summary> /// Initializes a new instance of the <see cref="NonBatchingBatcher"/> class. @@ -50,7 +50,12 @@ { } + protected override int CountOfStatementsInCurrentBatch + { + get { return 1; } + } + public override int BatchSize { get { return 1; } Modified: branches/2.1.x/nhibernate/src/NHibernate/AdoNet/OracleDataClientBatchingBatcher.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/AdoNet/OracleDataClientBatchingBatcher.cs 2009-06-27 14:50:53 UTC (rev 4537) +++ branches/2.1.x/nhibernate/src/NHibernate/AdoNet/OracleDataClientBatchingBatcher.cs 2009-06-28 12:19:32 UTC (rev 4538) @@ -72,7 +72,7 @@ if (countOfCommands >= batchSize) { - DoExecuteBatch(currentBatch); + ExecuteBatchWithTiming(currentBatch); } } @@ -108,6 +108,11 @@ } } + protected override int CountOfStatementsInCurrentBatch + { + get { return countOfCommands; } + } + private void SetObjectParam(Object obj, string paramName, object paramValue) { System.Type objType = obj.GetType(); Modified: branches/2.1.x/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs 2009-06-27 14:50:53 UTC (rev 4537) +++ branches/2.1.x/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs 2009-06-28 12:19:32 UTC (rev 4538) @@ -4,10 +4,12 @@ namespace NHibernate.AdoNet { + using System; + /// <summary> /// Summary description for SqlClientBatchingBatcher. /// </summary> - internal class SqlClientBatchingBatcher : AbstractBatcher + public class SqlClientBatchingBatcher : AbstractBatcher { private int batchSize; private int totalExpectedRowsAffected; @@ -32,6 +34,11 @@ set { batchSize = value; } } + protected override int CountOfStatementsInCurrentBatch + { + get { return currentBatch.CountOfCommands; } + } + public override void AddToBatch(IExpectation expectation) { totalExpectedRowsAffected += expectation.ExpectedRowCount; @@ -39,7 +46,7 @@ string lineWithParameters = null; var sqlStatementLogger = Factory.Settings.SqlStatementLogger; - if (sqlStatementLogger.IsDebugEnabled) + if (sqlStatementLogger.IsDebugEnabled || log.IsDebugEnabled) { lineWithParameters = sqlStatementLogger.GetCommandLineWithParameters(batchUpdate); var formatStyle = sqlStatementLogger.DetermineActualStyle(FormatStyle.Basic); @@ -57,13 +64,13 @@ if (currentBatch.CountOfCommands >= batchSize) { - DoExecuteBatch(batchUpdate); + ExecuteBatchWithTiming(batchUpdate); } } protected override void DoExecuteBatch(IDbCommand ps) { - log.Debug("Executing batch"); + log.DebugFormat("Executing batch"); CheckReaders(); Prepare(currentBatch.BatchCommand); if (Factory.Settings.SqlStatementLogger.IsDebugEnabled) Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs 2009-06-27 14:50:53 UTC (rev 4537) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs 2009-06-28 12:19:32 UTC (rev 4538) @@ -1,16 +1,19 @@ -using System; -using System.Collections.Generic; -using System.Text; -using NHibernate.Criterion; -using NUnit.Framework; +using NUnit.Framework; namespace NHibernate.Test.NHSpecificTest.NH1850 { + using System; using AdoNet; + using Environment=NHibernate.Cfg.Environment; [TestFixture] public class Fixture:BugTestCase { + protected override void Configure(NHibernate.Cfg.Configuration configuration) + { + configuration.SetProperty(Environment.BatchSize, "1"); + } + [Test] public void CanGetQueryDurationForDelete() { @@ -30,6 +33,38 @@ } [Test] + public void CanGetQueryDurationForBatch() + { + using (LogSpy spy = new LogSpy(typeof(AbstractBatcher))) + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + for (int i = 0; i < 3; i++) + { + var customer = new Customer + { + Name = "foo" + }; + session.Save(customer); + session.Delete(customer); + } + session.Flush(); + + var wholeLog = spy.GetWholeLog(); + var lines = wholeLog.Split(new[]{System.Environment.NewLine},StringSplitOptions.RemoveEmptyEntries); + int batches = 0; + foreach (var line in lines) + { + if (line.Contains("ExecuteBatch for 1 statements took ")) + batches += 1; + } + Assert.AreEqual(3, batches); + + tx.Rollback(); + } + } + + [Test] public void CanGetQueryDurationForSelect() { using (LogSpy spy = new LogSpy(typeof(AbstractBatcher))) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-07-04 05:03:59
|
Revision: 4567 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4567&view=rev Author: fabiomaulo Date: 2009-07-04 05:03:54 +0000 (Sat, 04 Jul 2009) Log Message: ----------- Fix NH-1864 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Model.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs 2009-07-03 22:41:57 UTC (rev 4566) +++ branches/2.1.x/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs 2009-07-04 05:03:54 UTC (rev 4567) @@ -69,18 +69,22 @@ public void AdjustNamedParameterLocationsForQueryParameters(QueryParameters parameters) { - foreach (int existingParameterLocation in parameters.FilteredParameterLocations) + // NH Different behaviour NH-1776 + // Analyze all named parameters declared after filters + //in general all named parameters but depend on the complexity of the query + foreach (ParameterInfo entry in _namedParameters.Values) { - foreach (ParameterInfo entry in _namedParameters.Values) + int amountOfPush = 0; + foreach (int existingParameterLocation in parameters.FilteredParameterLocations) { - for (int index = 0; index < entry.SqlLocations.Length; index++) + // a parameter span, at least, one value; where span more than one all values are cosecutive + // the first position determines the position of the others values + if (entry.SqlLocations[0] >= existingParameterLocation) { - if (entry.SqlLocations[index] >= existingParameterLocation) - { - entry.IncrementLocation(index); - } + amountOfPush++; } } + entry.IncrementLocation(amountOfPush); } } @@ -165,9 +169,16 @@ public IType ExpectedType { get; private set; } - public void IncrementLocation(int index) + public void IncrementLocation(int amountOfPush) { - sqlLocations[index] = originalLocation[index] + 1; + if(amountOfPush <= 0) + { + return; // short cut + } + for (int i = 0; i < sqlLocations.Length; i++) + { + sqlLocations[i] = originalLocation[i] + amountOfPush; + } } } } \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Fixture.cs 2009-07-04 05:03:54 UTC (rev 4567) @@ -0,0 +1,50 @@ +using System; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1864 +{ + [TestFixture] + public class Fixture : BugTestCase + { + [Test] + public void ExecuteQuery(Action<ISession> sessionModifier) + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + sessionModifier(session); + session.CreateQuery( + @"select cat + from Invoice inv, Category cat + where cat.ValidUntil = :now and inv.Foo = :foo + ") + .SetInt32("foo", 42).SetDateTime("now", DateTime.Now).List(); + + tx.Commit(); + } + } + } + + [Test] + public void Bug() + { + Assert.DoesNotThrow(() => ExecuteQuery(s=> s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + } + + [Test] + public void FilterOnOffOn() + { + Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + Assert.DoesNotThrow(() => ExecuteQuery(s => { })); + Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + } + + [Test] + public void FilterQueryTwice() + { + Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Mappings.hbm.xml 2009-07-04 05:03:54 UTC (rev 4567) @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1864"> + + <class name="Category"> + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + <property name="ValidUntil" type="DateTime" /> + <filter name="validity" condition="ValidUntil > :date" /> + </class> + + <class name="Invoice"> + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + <property name="Foo" type="Int32" /> + <property name="ValidUntil" type="DateTime" /> + <filter name="validity" condition="ValidUntil > :date" /> + </class> + + <filter-def name="validity"> + <filter-param name="date" type="DateTime"/> + </filter-def> + +</hibernate-mapping> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Model.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Model.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Model.cs 2009-07-04 05:03:54 UTC (rev 4567) @@ -0,0 +1,17 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1864 +{ + public class Category + { + public virtual int ID { get; private set; } + public virtual DateTime ValidUntil { get; set; } + } + + public class Invoice + { + public virtual int ID { get; private set; } + public virtual DateTime ValidUntil { get; set; } + public virtual int Foo { get; set; } + } +} \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-03 22:41:57 UTC (rev 4566) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-04 05:03:54 UTC (rev 4567) @@ -523,6 +523,8 @@ <Compile Include="NHSpecificTest\NH1837\Order.cs" /> <Compile Include="NHSpecificTest\NH1850\Customer.cs" /> <Compile Include="NHSpecificTest\NH1850\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1864\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1864\Model.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> <Compile Include="NHSpecificTest\NH473\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Parent.cs" /> @@ -1933,6 +1935,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1864\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1850\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1192\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1734\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-07-04 15:42:37
|
Revision: 4569 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4569&view=rev Author: fabiomaulo Date: 2009-07-04 15:42:33 +0000 (Sat, 04 Jul 2009) Log Message: ----------- Fix NH-1859 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/ParameterParser.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/DomainClass.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/SampleTest.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/ParameterParser.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/ParameterParser.cs 2009-07-04 05:06:59 UTC (rev 4568) +++ branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/ParameterParser.cs 2009-07-04 15:42:33 UTC (rev 4569) @@ -56,7 +56,7 @@ // check comments if (indx + 1 < stringLength && sqlString.Substring(indx,2) == "/*") { - var closeCommentIdx = sqlString.IndexOf("*/"); + var closeCommentIdx = sqlString.IndexOf("*/", indx+2); recognizer.Other(sqlString.Substring(indx, (closeCommentIdx- indx)+2)); indx = closeCommentIdx + 1; continue; Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/DomainClass.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/DomainClass.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/DomainClass.cs 2009-07-04 15:42:33 UTC (rev 4569) @@ -0,0 +1,7 @@ +namespace NHibernate.Test.NHSpecificTest.NH1859 +{ + public class DomainClass + { + public int Id { get; set; } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/Mappings.hbm.xml 2009-07-04 15:42:33 UTC (rev 4569) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1859" + default-lazy="false"> + <class name="DomainClass"> + <id name="Id"> + <generator class="assigned" /> + </id> + </class> +</hibernate-mapping> \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/SampleTest.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/SampleTest.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1859/SampleTest.cs 2009-07-04 15:42:33 UTC (rev 4569) @@ -0,0 +1,40 @@ +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1859 +{ + [TestFixture] + public class SampleTest : BugTestCase + { + protected override void OnSetUp() + { + base.OnSetUp(); + using (ISession session = OpenSession()) + { + session.Save(new DomainClass {Id = 1}); + session.Flush(); + } + } + + protected override void OnTearDown() + { + base.OnTearDown(); + using (ISession session = OpenSession()) + { + session.Delete("from DomainClass"); + session.Flush(); + } + } + + [Test] + public void NativeQueryWithTwoComments() + { + using (ISession session = OpenSession()) + { + IQuery qry = session.CreateSQLQuery("select /* first comment */ o.* /* second comment*/ from domainclass o") + .AddEntity("o", typeof (DomainClass)); + var res = qry.List<DomainClass>(); + Assert.AreEqual(res[0].Id, 1); + } + } + } +} \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-04 05:06:59 UTC (rev 4568) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-04 15:42:33 UTC (rev 4569) @@ -523,6 +523,8 @@ <Compile Include="NHSpecificTest\NH1837\Order.cs" /> <Compile Include="NHSpecificTest\NH1850\Customer.cs" /> <Compile Include="NHSpecificTest\NH1850\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1859\DomainClass.cs" /> + <Compile Include="NHSpecificTest\NH1859\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1864\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1864\Model.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> @@ -1935,6 +1937,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1859\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1864\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1850\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1192\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-07-04 18:53:10
|
Revision: 4572 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4572&view=rev Author: fabiomaulo Date: 2009-07-04 18:53:07 +0000 (Sat, 04 Jul 2009) Log Message: ----------- Fix NH-1857 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/JoinProcessor.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/Department.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/Employee.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/FullJoinTest.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/Mappings.hbm.xml Modified: branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/JoinProcessor.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/JoinProcessor.cs 2009-07-04 18:17:15 UTC (rev 4571) +++ branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/JoinProcessor.cs 2009-07-04 18:53:07 UTC (rev 4572) @@ -54,6 +54,8 @@ return JoinType.InnerJoin; case HqlSqlWalker.RIGHT_OUTER: return JoinType.RightOuterJoin; + case HqlSqlWalker.FULL: + return JoinType.FullJoin; default: throw new AssertionFailure("undefined join type " + astJoinType); } Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/Department.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/Department.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/Department.cs 2009-07-04 18:53:07 UTC (rev 4572) @@ -0,0 +1,37 @@ +using System.Collections.Generic; +using System.Collections.ObjectModel; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1857 +{ + public class Department + { + private Department() {} + + public Department(int id, string name) + { + Id = id; + Name = name; + } + + public int Id { get; private set; } + + public string Name { get; set; } + + private ISet<Employee> _employees = new HashedSet<Employee>(); + + public ReadOnlyCollection<Employee> Employees + { + get { return new List<Employee>(_employees).AsReadOnly(); } + } + + public void AddEmployee(Employee e) + { + if (e != null && !_employees.Contains(e)) + { + e.Department = this; + _employees.Add(e); + } + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/Employee.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/Employee.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/Employee.cs 2009-07-04 18:53:07 UTC (rev 4572) @@ -0,0 +1,24 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1857 +{ + public class Employee + { + private Employee() {} + + public Employee(int id, string name, DateTime d) + { + Id = id; + Name = name; + CompanyJoinDate = d; + } + + public int Id { get; private set; } + + public string Name { get; set; } + + public DateTime CompanyJoinDate { get; set; } + + public Department Department { get; internal set; } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/FullJoinTest.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/FullJoinTest.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/FullJoinTest.cs 2009-07-04 18:53:07 UTC (rev 4572) @@ -0,0 +1,58 @@ +using System; +using System.Collections; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1857 +{ + [TestFixture] + public class FullJoinTest : BugTestCase + { + protected override void OnSetUp() + { + base.OnSetUp(); + using (ISession session = OpenSession()) + { + var e1 = new Employee(1, "Employee1", new DateTime(1995, 1, 1)); + var e2 = new Employee(2, "Employee2", new DateTime(2007, 8, 1)); + var e3 = new Employee(3, "Employee3", new DateTime(2009, 5, 1)); + + var d1 = new Department(1, "Department S"); + + d1.AddEmployee(e1); + d1.AddEmployee(e2); + + session.SaveOrUpdate(d1); + session.SaveOrUpdate(e1); + session.SaveOrUpdate(e2); + session.SaveOrUpdate(e3); + + session.Flush(); + } + } + + protected override void OnTearDown() + { + base.OnTearDown(); + using (ISession session = OpenSession()) + using (ITransaction t = session.BeginTransaction()) + { + session.CreateQuery("delete from Employee").ExecuteUpdate(); + session.CreateQuery("delete from Department").ExecuteUpdate(); + t.Commit(); + } + } + + [Test] + public void TestFullJoin() + { + using (ISession s = OpenSession()) + { + IQuery q = s.CreateQuery("from Employee as e full join e.Department"); + + IList result = q.List(); + + Assert.AreEqual(3, result.Count); + } + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1857/Mappings.hbm.xml 2009-07-04 18:53:07 UTC (rev 4572) @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1857" + default-lazy="false"> + <class name="Department"> + <id name="Id"> + <generator class="assigned" /> + </id> + + <property name="Name" /> + + <set name="Employees" access="field.camelcase-underscore" inverse="true" + cascade="all-delete-orphan" lazy="false"> + <key column="DepartmentId" /> + <one-to-many class="Employee"/> + </set> + </class> + + <class name="Employee"> + <id name="Id"> + <generator class="assigned" /> + </id> + + <property name="Name" /> + + <property name="CompanyJoinDate" /> + + <many-to-one name="Department" class="Department" /> + </class> + +</hibernate-mapping> Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-04 18:17:15 UTC (rev 4571) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-04 18:53:07 UTC (rev 4572) @@ -523,6 +523,9 @@ <Compile Include="NHSpecificTest\NH1837\Order.cs" /> <Compile Include="NHSpecificTest\NH1850\Customer.cs" /> <Compile Include="NHSpecificTest\NH1850\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1857\Department.cs" /> + <Compile Include="NHSpecificTest\NH1857\Employee.cs" /> + <Compile Include="NHSpecificTest\NH1857\FullJoinTest.cs" /> <Compile Include="NHSpecificTest\NH1859\DomainClass.cs" /> <Compile Include="NHSpecificTest\NH1859\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1864\Fixture.cs" /> @@ -1937,6 +1940,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1857\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1859\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1864\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1850\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ste...@us...> - 2009-07-05 01:22:15
|
Revision: 4576 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4576&view=rev Author: steverstrong Date: 2009-07-05 00:15:04 +0000 (Sun, 05 Jul 2009) Log Message: ----------- Fix for NH1849 plus some improvement to AST error reporting Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlParser.cs branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlSqlWalker.cs branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/SqlGenerator.cs branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlToken.cs branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1849/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1849/Customer.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1849/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1849/Mappings.hbm.xml Modified: branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs 2009-07-04 23:39:49 UTC (rev 4575) +++ branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlLexer.cs 2009-07-05 00:15:04 UTC (rev 4576) @@ -1,4 +1,4 @@ -// $ANTLR 3.1.2 /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g 2009-06-20 02:19:06 +// $ANTLR 3.1.2 /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g 2009-07-05 01:43:43 // The variable 'variable' is assigned but its value is never used. #pragma warning disable 168, 219 @@ -165,7 +165,7 @@ override public string GrammarFileName { - get { return "/Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g";} + get { return "/Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g";} } // $ANTLR start "ALL" @@ -175,8 +175,8 @@ { int _type = ALL; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:9:5: ( 'all' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:9:7: 'all' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:9:5: ( 'all' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:9:7: 'all' { Match("all"); if (state.failed) return ; @@ -199,8 +199,8 @@ { int _type = ANY; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:10:5: ( 'any' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:10:7: 'any' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:10:5: ( 'any' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:10:7: 'any' { Match("any"); if (state.failed) return ; @@ -223,8 +223,8 @@ { int _type = AND; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:11:5: ( 'and' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:11:7: 'and' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:11:5: ( 'and' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:11:7: 'and' { Match("and"); if (state.failed) return ; @@ -247,8 +247,8 @@ { int _type = AS; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:12:4: ( 'as' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:12:6: 'as' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:12:4: ( 'as' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:12:6: 'as' { Match("as"); if (state.failed) return ; @@ -271,8 +271,8 @@ { int _type = ASCENDING; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:13:11: ( 'asc' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:13:13: 'asc' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:13:11: ( 'asc' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:13:13: 'asc' { Match("asc"); if (state.failed) return ; @@ -295,8 +295,8 @@ { int _type = AVG; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:14:5: ( 'avg' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:14:7: 'avg' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:14:5: ( 'avg' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:14:7: 'avg' { Match("avg"); if (state.failed) return ; @@ -319,8 +319,8 @@ { int _type = BETWEEN; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:15:9: ( 'between' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:15:11: 'between' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:15:9: ( 'between' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:15:11: 'between' { Match("between"); if (state.failed) return ; @@ -343,8 +343,8 @@ { int _type = CLASS; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:16:7: ( 'class' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:16:9: 'class' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:16:7: ( 'class' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:16:9: 'class' { Match("class"); if (state.failed) return ; @@ -367,8 +367,8 @@ { int _type = COUNT; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:17:7: ( 'count' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:17:9: 'count' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:17:7: ( 'count' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:17:9: 'count' { Match("count"); if (state.failed) return ; @@ -391,8 +391,8 @@ { int _type = DELETE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:18:8: ( 'delete' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:18:10: 'delete' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:18:8: ( 'delete' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:18:10: 'delete' { Match("delete"); if (state.failed) return ; @@ -415,8 +415,8 @@ { int _type = DESCENDING; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:19:12: ( 'desc' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:19:14: 'desc' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:19:12: ( 'desc' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:19:14: 'desc' { Match("desc"); if (state.failed) return ; @@ -439,8 +439,8 @@ { int _type = DISTINCT; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:20:10: ( 'distinct' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:20:12: 'distinct' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:20:10: ( 'distinct' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:20:12: 'distinct' { Match("distinct"); if (state.failed) return ; @@ -463,8 +463,8 @@ { int _type = ELEMENTS; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:21:10: ( 'elements' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:21:12: 'elements' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:21:10: ( 'elements' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:21:12: 'elements' { Match("elements"); if (state.failed) return ; @@ -487,8 +487,8 @@ { int _type = ESCAPE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:22:8: ( 'escape' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:22:10: 'escape' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:22:8: ( 'escape' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:22:10: 'escape' { Match("escape"); if (state.failed) return ; @@ -511,8 +511,8 @@ { int _type = EXISTS; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:23:8: ( 'exists' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:23:10: 'exists' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:23:8: ( 'exists' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:23:10: 'exists' { Match("exists"); if (state.failed) return ; @@ -535,8 +535,8 @@ { int _type = FALSE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:24:7: ( 'false' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:24:9: 'false' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:24:7: ( 'false' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:24:9: 'false' { Match("false"); if (state.failed) return ; @@ -559,8 +559,8 @@ { int _type = FETCH; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:25:7: ( 'fetch' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:25:9: 'fetch' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:25:7: ( 'fetch' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:25:9: 'fetch' { Match("fetch"); if (state.failed) return ; @@ -583,8 +583,8 @@ { int _type = FROM; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:26:6: ( 'from' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:26:8: 'from' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:26:6: ( 'from' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:26:8: 'from' { Match("from"); if (state.failed) return ; @@ -607,8 +607,8 @@ { int _type = FULL; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:27:6: ( 'full' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:27:8: 'full' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:27:6: ( 'full' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:27:8: 'full' { Match("full"); if (state.failed) return ; @@ -631,8 +631,8 @@ { int _type = GROUP; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:28:7: ( 'group' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:28:9: 'group' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:28:7: ( 'group' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:28:9: 'group' { Match("group"); if (state.failed) return ; @@ -655,8 +655,8 @@ { int _type = HAVING; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:29:8: ( 'having' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:29:10: 'having' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:29:8: ( 'having' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:29:10: 'having' { Match("having"); if (state.failed) return ; @@ -679,8 +679,8 @@ { int _type = IN; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:30:4: ( 'in' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:30:6: 'in' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:30:4: ( 'in' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:30:6: 'in' { Match("in"); if (state.failed) return ; @@ -703,8 +703,8 @@ { int _type = INDICES; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:31:9: ( 'indices' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:31:11: 'indices' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:31:9: ( 'indices' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:31:11: 'indices' { Match("indices"); if (state.failed) return ; @@ -727,8 +727,8 @@ { int _type = INNER; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:32:7: ( 'inner' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:32:9: 'inner' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:32:7: ( 'inner' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:32:9: 'inner' { Match("inner"); if (state.failed) return ; @@ -751,8 +751,8 @@ { int _type = INSERT; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:33:8: ( 'insert' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:33:10: 'insert' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:33:8: ( 'insert' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:33:10: 'insert' { Match("insert"); if (state.failed) return ; @@ -775,8 +775,8 @@ { int _type = INTO; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:34:6: ( 'into' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:34:8: 'into' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:34:6: ( 'into' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:34:8: 'into' { Match("into"); if (state.failed) return ; @@ -799,8 +799,8 @@ { int _type = IS; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:35:4: ( 'is' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:35:6: 'is' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:35:4: ( 'is' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:35:6: 'is' { Match("is"); if (state.failed) return ; @@ -823,8 +823,8 @@ { int _type = JOIN; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:36:6: ( 'join' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:36:8: 'join' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:36:6: ( 'join' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:36:8: 'join' { Match("join"); if (state.failed) return ; @@ -847,8 +847,8 @@ { int _type = LEFT; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:37:6: ( 'left' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:37:8: 'left' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:37:6: ( 'left' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:37:8: 'left' { Match("left"); if (state.failed) return ; @@ -871,8 +871,8 @@ { int _type = LIKE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:38:6: ( 'like' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:38:8: 'like' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:38:6: ( 'like' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:38:8: 'like' { Match("like"); if (state.failed) return ; @@ -895,8 +895,8 @@ { int _type = MAX; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:39:5: ( 'max' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:39:7: 'max' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:39:5: ( 'max' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:39:7: 'max' { Match("max"); if (state.failed) return ; @@ -919,8 +919,8 @@ { int _type = MIN; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:40:5: ( 'min' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:40:7: 'min' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:40:5: ( 'min' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:40:7: 'min' { Match("min"); if (state.failed) return ; @@ -943,8 +943,8 @@ { int _type = NEW; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:41:5: ( 'new' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:41:7: 'new' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:41:5: ( 'new' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:41:7: 'new' { Match("new"); if (state.failed) return ; @@ -967,8 +967,8 @@ { int _type = NOT; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:42:5: ( 'not' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:42:7: 'not' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:42:5: ( 'not' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:42:7: 'not' { Match("not"); if (state.failed) return ; @@ -991,8 +991,8 @@ { int _type = NULL; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:43:6: ( 'null' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:43:8: 'null' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:43:6: ( 'null' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:43:8: 'null' { Match("null"); if (state.failed) return ; @@ -1015,8 +1015,8 @@ { int _type = OR; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:44:4: ( 'or' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:44:6: 'or' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:44:4: ( 'or' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:44:6: 'or' { Match("or"); if (state.failed) return ; @@ -1039,8 +1039,8 @@ { int _type = ORDER; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:45:7: ( 'order' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:45:9: 'order' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:45:7: ( 'order' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:45:9: 'order' { Match("order"); if (state.failed) return ; @@ -1063,8 +1063,8 @@ { int _type = OUTER; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:46:7: ( 'outer' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:46:9: 'outer' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:46:7: ( 'outer' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:46:9: 'outer' { Match("outer"); if (state.failed) return ; @@ -1087,8 +1087,8 @@ { int _type = PROPERTIES; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:47:12: ( 'properties' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:47:14: 'properties' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:47:12: ( 'properties' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:47:14: 'properties' { Match("properties"); if (state.failed) return ; @@ -1111,8 +1111,8 @@ { int _type = RIGHT; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:48:7: ( 'right' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:48:9: 'right' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:48:7: ( 'right' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:48:9: 'right' { Match("right"); if (state.failed) return ; @@ -1135,8 +1135,8 @@ { int _type = SELECT; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:49:8: ( 'select' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:49:10: 'select' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:49:8: ( 'select' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:49:10: 'select' { Match("select"); if (state.failed) return ; @@ -1159,8 +1159,8 @@ { int _type = SET; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:50:5: ( 'set' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:50:7: 'set' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:50:5: ( 'set' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:50:7: 'set' { Match("set"); if (state.failed) return ; @@ -1183,8 +1183,8 @@ { int _type = SOME; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:51:6: ( 'some' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:51:8: 'some' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:51:6: ( 'some' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:51:8: 'some' { Match("some"); if (state.failed) return ; @@ -1207,8 +1207,8 @@ { int _type = SUM; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:52:5: ( 'sum' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:52:7: 'sum' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:52:5: ( 'sum' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:52:7: 'sum' { Match("sum"); if (state.failed) return ; @@ -1231,8 +1231,8 @@ { int _type = TRUE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:53:6: ( 'true' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:53:8: 'true' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:53:6: ( 'true' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:53:8: 'true' { Match("true"); if (state.failed) return ; @@ -1255,8 +1255,8 @@ { int _type = UNION; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:54:7: ( 'union' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:54:9: 'union' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:54:7: ( 'union' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:54:9: 'union' { Match("union"); if (state.failed) return ; @@ -1279,8 +1279,8 @@ { int _type = UPDATE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:55:8: ( 'update' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:55:10: 'update' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:55:8: ( 'update' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:55:10: 'update' { Match("update"); if (state.failed) return ; @@ -1303,8 +1303,8 @@ { int _type = VERSIONED; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:56:11: ( 'versioned' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:56:13: 'versioned' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:56:11: ( 'versioned' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:56:13: 'versioned' { Match("versioned"); if (state.failed) return ; @@ -1327,8 +1327,8 @@ { int _type = WHERE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:57:7: ( 'where' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:57:9: 'where' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:57:7: ( 'where' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:57:9: 'where' { Match("where"); if (state.failed) return ; @@ -1351,8 +1351,8 @@ { int _type = LITERAL_by; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:58:12: ( 'by' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:58:14: 'by' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:58:12: ( 'by' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:58:14: 'by' { Match("by"); if (state.failed) return ; @@ -1375,8 +1375,8 @@ { int _type = CASE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:59:6: ( 'case' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:59:8: 'case' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:59:6: ( 'case' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:59:8: 'case' { Match("case"); if (state.failed) return ; @@ -1399,8 +1399,8 @@ { int _type = END; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:60:5: ( 'end' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:60:7: 'end' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:60:5: ( 'end' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:60:7: 'end' { Match("end"); if (state.failed) return ; @@ -1423,8 +1423,8 @@ { int _type = ELSE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:61:6: ( 'else' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:61:8: 'else' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:61:6: ( 'else' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:61:8: 'else' { Match("else"); if (state.failed) return ; @@ -1447,8 +1447,8 @@ { int _type = THEN; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:62:6: ( 'then' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:62:8: 'then' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:62:6: ( 'then' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:62:8: 'then' { Match("then"); if (state.failed) return ; @@ -1471,8 +1471,8 @@ { int _type = WHEN; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:63:6: ( 'when' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:63:8: 'when' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:63:6: ( 'when' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:63:8: 'when' { Match("when"); if (state.failed) return ; @@ -1495,8 +1495,8 @@ { int _type = ON; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:64:4: ( 'on' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:64:6: 'on' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:64:4: ( 'on' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:64:6: 'on' { Match("on"); if (state.failed) return ; @@ -1519,8 +1519,8 @@ { int _type = WITH; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:65:6: ( 'with' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:65:8: 'with' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:65:6: ( 'with' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:65:8: 'with' { Match("with"); if (state.failed) return ; @@ -1543,8 +1543,8 @@ { int _type = BOTH; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:66:6: ( 'both' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:66:8: 'both' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:66:6: ( 'both' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:66:8: 'both' { Match("both"); if (state.failed) return ; @@ -1567,8 +1567,8 @@ { int _type = EMPTY; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:67:7: ( 'empty' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:67:9: 'empty' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:67:7: ( 'empty' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:67:9: 'empty' { Match("empty"); if (state.failed) return ; @@ -1591,8 +1591,8 @@ { int _type = LEADING; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:68:9: ( 'leading' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:68:11: 'leading' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:68:9: ( 'leading' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:68:11: 'leading' { Match("leading"); if (state.failed) return ; @@ -1615,8 +1615,8 @@ { int _type = MEMBER; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:69:8: ( 'member' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:69:10: 'member' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:69:8: ( 'member' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:69:10: 'member' { Match("member"); if (state.failed) return ; @@ -1639,8 +1639,8 @@ { int _type = OBJECT; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:70:8: ( 'object' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:70:10: 'object' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:70:8: ( 'object' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:70:10: 'object' { Match("object"); if (state.failed) return ; @@ -1663,8 +1663,8 @@ { int _type = OF; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:71:4: ( 'of' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:71:6: 'of' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:71:4: ( 'of' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:71:6: 'of' { Match("of"); if (state.failed) return ; @@ -1687,8 +1687,8 @@ { int _type = TRAILING; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:72:10: ( 'trailing' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:72:12: 'trailing' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:72:10: ( 'trailing' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:72:12: 'trailing' { Match("trailing"); if (state.failed) return ; @@ -1711,8 +1711,8 @@ { int _type = T__130; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:73:8: ( 'ascending' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:73:10: 'ascending' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:73:8: ( 'ascending' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:73:10: 'ascending' { Match("ascending"); if (state.failed) return ; @@ -1735,8 +1735,8 @@ { int _type = T__131; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:74:8: ( 'descending' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:74:10: 'descending' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:74:8: ( 'descending' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:74:10: 'descending' { Match("descending"); if (state.failed) return ; @@ -1759,8 +1759,8 @@ { int _type = EQ; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:670:3: ( '=' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:670:5: '=' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:670:3: ( '=' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:670:5: '=' { Match('='); if (state.failed) return ; @@ -1782,8 +1782,8 @@ { int _type = LT; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:671:3: ( '<' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:671:5: '<' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:671:3: ( '<' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:671:5: '<' { Match('<'); if (state.failed) return ; @@ -1805,8 +1805,8 @@ { int _type = GT; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:672:3: ( '>' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:672:5: '>' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:672:3: ( '>' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:672:5: '>' { Match('>'); if (state.failed) return ; @@ -1828,8 +1828,8 @@ { int _type = SQL_NE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:673:7: ( '<>' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:673:9: '<>' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:673:7: ( '<>' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:673:9: '<>' { Match("<>"); if (state.failed) return ; @@ -1852,7 +1852,7 @@ { int _type = NE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:674:3: ( '!=' | '^=' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:674:3: ( '!=' | '^=' ) int alt1 = 2; int LA1_0 = input.LA(1); @@ -1875,7 +1875,7 @@ switch (alt1) { case 1 : - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:674:5: '!=' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:674:5: '!=' { Match("!="); if (state.failed) return ; @@ -1883,7 +1883,7 @@ } break; case 2 : - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:674:12: '^=' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:674:12: '^=' { Match("^="); if (state.failed) return ; @@ -1908,8 +1908,8 @@ { int _type = LE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:675:3: ( '<=' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:675:5: '<=' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:675:3: ( '<=' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:675:5: '<=' { Match("<="); if (state.failed) return ; @@ -1932,8 +1932,8 @@ { int _type = GE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:676:3: ( '>=' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:676:5: '>=' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:676:3: ( '>=' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:676:5: '>=' { Match(">="); if (state.failed) return ; @@ -1956,8 +1956,8 @@ { int _type = BOR; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:678:5: ( '|' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:678:8: '|' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:678:5: ( '|' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:678:8: '|' { Match('|'); if (state.failed) return ; @@ -1979,8 +1979,8 @@ { int _type = BXOR; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:679:6: ( '^' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:679:8: '^' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:679:6: ( '^' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:679:8: '^' { Match('^'); if (state.failed) return ; @@ -2002,8 +2002,8 @@ { int _type = BAND; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:680:6: ( '&' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:680:8: '&' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:680:6: ( '&' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:680:8: '&' { Match('&'); if (state.failed) return ; @@ -2025,8 +2025,8 @@ { int _type = BNOT; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:681:6: ( '!' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:681:8: '!' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:681:6: ( '!' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:681:8: '!' { Match('!'); if (state.failed) return ; @@ -2048,8 +2048,8 @@ { int _type = COMMA; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:683:6: ( ',' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:683:8: ',' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:683:6: ( ',' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:683:8: ',' { Match(','); if (state.failed) return ; @@ -2071,8 +2071,8 @@ { int _type = OPEN; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:685:5: ( '(' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:685:7: '(' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:685:5: ( '(' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:685:7: '(' { Match('('); if (state.failed) return ; @@ -2094,8 +2094,8 @@ { int _type = CLOSE; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:686:6: ( ')' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:686:8: ')' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:686:6: ( ')' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:686:8: ')' { Match(')'); if (state.failed) return ; @@ -2117,8 +2117,8 @@ { int _type = OPEN_BRACKET; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:687:13: ( '[' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:687:15: '[' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:687:13: ( '[' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:687:15: '[' { Match('['); if (state.failed) return ; @@ -2140,8 +2140,8 @@ { int _type = CLOSE_BRACKET; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:688:14: ( ']' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:688:16: ']' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:688:14: ( ']' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:688:16: ']' { Match(']'); if (state.failed) return ; @@ -2163,8 +2163,8 @@ { int _type = CONCAT; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:690:7: ( '||' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:690:9: '||' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:690:7: ( '||' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:690:9: '||' { Match("||"); if (state.failed) return ; @@ -2187,8 +2187,8 @@ { int _type = PLUS; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:691:5: ( '+' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:691:7: '+' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:691:5: ( '+' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:691:7: '+' { Match('+'); if (state.failed) return ; @@ -2210,8 +2210,8 @@ { int _type = MINUS; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:692:6: ( '-' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:692:8: '-' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:692:6: ( '-' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:692:8: '-' { Match('-'); if (state.failed) return ; @@ -2233,8 +2233,8 @@ { int _type = STAR; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:693:5: ( '*' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:693:7: '*' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:693:5: ( '*' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:693:7: '*' { Match('*'); if (state.failed) return ; @@ -2256,8 +2256,8 @@ { int _type = DIV; int _channel = DEFAULT_TOKEN_CHANNEL; - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:694:4: ( '/' ) - // /Users/Steve/Projects/NHibernate/Trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:694:6: '/' + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:694:4: ( '/' ) + // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Hql.g:694:6: '/' { Match('/'); if (state.failed) return ; @@ -2279,8 +2279,8 @@ { int _type = COLON; int _channel = DEFAULT_TOKEN... [truncated message content] |
From: <fab...@us...> - 2009-07-05 16:52:07
|
Revision: 4582 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4582&view=rev Author: fabiomaulo Date: 2009-07-05 16:52:07 +0000 (Sun, 05 Jul 2009) Log Message: ----------- Partially Fix NH-1867 (when the user send us a valid mapping, perhaps, we can fix the other part) Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Util/TypeNameParser.cs branches/2.1.x/nhibernate/src/NHibernate.Test/UtilityTest/TypeNameParserFixture.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Util/TypeNameParser.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Util/TypeNameParser.cs 2009-07-05 04:45:50 UTC (rev 4581) +++ branches/2.1.x/nhibernate/src/NHibernate/Util/TypeNameParser.cs 2009-07-05 16:52:07 UTC (rev 4582) @@ -65,7 +65,8 @@ { throw new ParserException("Invalid generic fully-qualified type name:" + type); } - string cardinalityString = type.Substring(genericTypeCardinalityIdx + 1, genericTypeArgsStartIdx - genericTypeCardinalityIdx - 1); + // the follow will fail with a generic class with more the 9 type-args (I would see that entity class) + string cardinalityString = type.Substring(genericTypeCardinalityIdx + 1, 1); int genericTypeCardinality = int.Parse(cardinalityString); // get the FullName of the non-generic type Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/UtilityTest/TypeNameParserFixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/UtilityTest/TypeNameParserFixture.cs 2009-07-05 04:45:50 UTC (rev 4581) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/UtilityTest/TypeNameParserFixture.cs 2009-07-05 16:52:07 UTC (rev 4582) @@ -265,5 +265,34 @@ var a = TypeNameParser.Parse(typeName); Assert.That(a.ToString(), Is.EqualTo(expected)); } + + private class A<T> + { + public class B { } + } + + private class Aa<T> + { + public class Bb<TX, TJ, TZ> + { + public class C { } + } + } + + [Test] + [Description("Parser multiple nested classes with a generic in the middle.")] + public void ParseNestedWithinGeneric() + { + // NH-1867 + CheckInput(typeof(A<int>.B).FullName, typeof(A<int>.B).FullName, null); + } + + [Test] + [Description("Parser multiple nested classes with a generics.")] + public void ComplexNestedWithGeneric() + { + CheckInput(typeof(Aa<int>.Bb<int, short, string>).FullName, typeof(Aa<int>.Bb<int, short, string>).FullName, null); + CheckInput(typeof(Aa<int>.Bb<int, short, string>.C).FullName, typeof(Aa<int>.Bb<int, short, string>.C).FullName, null); + } } } \ 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-07-05 18:48:09
|
Revision: 4584 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4584&view=rev Author: fabiomaulo Date: 2009-07-05 18:48:06 +0000 (Sun, 05 Jul 2009) Log Message: ----------- Fix NH-1868 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Model.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs 2009-07-05 16:55:21 UTC (rev 4583) +++ branches/2.1.x/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs 2009-07-05 18:48:06 UTC (rev 4584) @@ -71,7 +71,7 @@ { // NH Different behaviour NH-1776 // Analyze all named parameters declared after filters - //in general all named parameters but depend on the complexity of the query + // in general all named parameters but depend on the complexity of the query (see sub query) foreach (ParameterInfo entry in _namedParameters.Values) { int amountOfPush = 0; @@ -79,7 +79,7 @@ { // a parameter span, at least, one value; where span more than one all values are cosecutive // the first position determines the position of the others values - if (entry.SqlLocations[0] >= existingParameterLocation) + if (entry.SqlLocations[0]+amountOfPush >= existingParameterLocation) { amountOfPush++; } Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Fixture.cs 2009-07-05 18:48:06 UTC (rev 4584) @@ -0,0 +1,103 @@ +using System; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1868 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void OnSetUp() + { + base.OnSetUp(); + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + cat = new Category {ValidUntil = DateTime.Now}; + session.Save(cat); + + package = new Package {ValidUntil = DateTime.Now}; + session.Save(package); + + tx.Commit(); + } + } + } + + private Category cat; + private Package package; + + protected override void OnTearDown() + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.Delete("from Category"); + session.Delete("from Package"); + tx.Commit(); + } + } + base.OnTearDown(); + } + + public void ExecuteQuery(Action<ISession> sessionModifier) + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + sessionModifier(session); + session.Refresh(cat); + session.Refresh(package); + + session.CreateQuery( + @" + select + inv + from + Invoice inv + , Package p + where + p = :package + and inv.Category = :cat + and inv.ValidUntil > :now + and inv.Package = :package + ") + .SetEntity("cat", cat).SetEntity("package", package).SetDateTime("now", DateTime.Now).UniqueResult<Invoice>(); + + tx.Commit(); + } + } + } + + [Test] + public void Bug() + { + Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + } + + [Test] + public void FilterOnOffOn() + { + Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + Assert.DoesNotThrow(() => ExecuteQuery(s => { })); + Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + } + + [Test] + public void FilterQueryTwice() + { + Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + } + + [Test] + public void FilterQuery3() + { + Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Mappings.hbm.xml 2009-07-05 18:48:06 UTC (rev 4584) @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1868"> + + <class name="Category"> + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + <property name="ValidUntil" type="DateTime" /> + <filter name="validity" condition="ValidUntil > :date" /> + </class> + + <class name="Package"> + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + <property name="ValidUntil" type="DateTime" /> + <filter name="validity" condition="ValidUntil > :date" /> + </class> + + <class name="Invoice"> + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + + <many-to-one name="Category" column="CategoryId" class="Category" /> + <many-to-one name="Package" column="PacakgeId" class="Package" /> + <property name="ValidUntil" type="DateTime" /> + <filter name="validity" condition="ValidUntil > :date" /> + </class> + + <filter-def name="validity"> + <filter-param name="date" type="DateTime"/> + </filter-def> + +</hibernate-mapping> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Model.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Model.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Model.cs 2009-07-05 18:48:06 UTC (rev 4584) @@ -0,0 +1,24 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1868 +{ + public class Category + { + public virtual int ID { get; private set; } + public virtual DateTime ValidUntil { get; set; } + } + + public class Package + { + public virtual int ID { get; private set; } + public virtual DateTime ValidUntil { get; set; } + } + + public class Invoice + { + public virtual int ID { get; private set; } + public virtual DateTime ValidUntil { get; set; } + public virtual Category Category { get; set; } + public virtual Package Package { get; set; } + } +} \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-05 16:55:21 UTC (rev 4583) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-05 18:48:06 UTC (rev 4584) @@ -532,6 +532,8 @@ <Compile Include="NHSpecificTest\NH1859\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1864\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1864\Model.cs" /> + <Compile Include="NHSpecificTest\NH1868\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1868\Model.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> <Compile Include="NHSpecificTest\NH473\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Parent.cs" /> @@ -1942,6 +1944,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1868\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1849\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1857\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1859\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-07-05 22:32:52
|
Revision: 4586 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4586&view=rev Author: fabiomaulo Date: 2009-07-05 22:32:50 +0000 (Sun, 05 Jul 2009) Log Message: ----------- Fix NH-1867 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Util/StringHelper.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1867/ Modified: branches/2.1.x/nhibernate/src/NHibernate/Util/StringHelper.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Util/StringHelper.cs 2009-07-05 18:50:45 UTC (rev 4585) +++ branches/2.1.x/nhibernate/src/NHibernate/Util/StringHelper.cs 2009-07-05 22:32:50 UTC (rev 4586) @@ -213,6 +213,14 @@ /// <returns></returns> public static string Unqualify(string qualifiedName) { + if(qualifiedName.IndexOf('`') > 0) + { + // less performance but correctly manage generics classes + // where the entity-name was not specified + // Note: the enitty-name is mandatory when the user want work with different type-args + // for the same generic-entity implementation + return GetClassname(qualifiedName); + } return Unqualify(qualifiedName, "."); } Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-05 18:50:45 UTC (rev 4585) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-05 22:32:50 UTC (rev 4586) @@ -532,6 +532,7 @@ <Compile Include="NHSpecificTest\NH1859\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1864\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1864\Model.cs" /> + <Compile Include="NHSpecificTest\NH1867\AddMappingTest.cs" /> <Compile Include="NHSpecificTest\NH1868\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1868\Model.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <te...@us...> - 2009-07-09 10:00:12
|
Revision: 4593 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4593&view=rev Author: tehlike Date: 2009-07-09 10:00:00 +0000 (Thu, 09 Jul 2009) Log Message: ----------- Fix for NH-1877 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Criterion/Projections.cs branches/2.1.x/nhibernate/src/NHibernate/NHibernate.csproj branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate/Criterion/GroupedProjection.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Person.cs Added: branches/2.1.x/nhibernate/src/NHibernate/Criterion/GroupedProjection.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Criterion/GroupedProjection.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate/Criterion/GroupedProjection.cs 2009-07-09 10:00:00 UTC (rev 4593) @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Text; +using NHibernate.Engine; +using NHibernate.SqlCommand; +using NHibernate.Type; +using NHibernate.Util; + +namespace NHibernate.Criterion +{ + public class GroupedProjection:IProjection + { + private readonly IProjection projection; + + public GroupedProjection(IProjection projection) + { + this.projection = projection; + } + + public virtual SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters) + { + return projection.ToSqlString(criteria, position, criteriaQuery, enabledFilters); + } + + public virtual SqlString ToGroupSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters) + { + return StringHelper.RemoveAsAliasesFromSql(this.projection.ToSqlString(criteria, 0, criteriaQuery, enabledFilters)); + } + + public virtual IType[] GetTypes(ICriteria criteria, ICriteriaQuery criteriaQuery) + { + return projection.GetTypes(criteria, criteriaQuery); + } + + public virtual IType[] GetTypes(String alias, ICriteria criteria, ICriteriaQuery criteriaQuery) + { + return this.projection.GetTypes(alias,criteria,criteriaQuery); + } + + public virtual string[] GetColumnAliases(int loc) + { + return projection.GetColumnAliases(loc); + } + + public virtual string[] GetColumnAliases(string alias, int loc) + { + return null; + } + + public virtual string[] Aliases + { + get { return new string[] { }; } + } + + public virtual bool IsGrouped + { + get { return true; } + } + + public bool IsAggregate + { + get { return projection.IsAggregate; } + } + + /// <summary> + /// Gets the typed values for parameters in this projection + /// </summary> + /// <param name="criteria">The criteria.</param> + /// <param name="criteriaQuery">The criteria query.</param> + /// <returns></returns> + public TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery) + { + return projection.GetTypedValues(criteria, criteriaQuery); + } + + public override string ToString() + { + return projection.ToString(); + } + } +} Modified: branches/2.1.x/nhibernate/src/NHibernate/Criterion/Projections.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Criterion/Projections.cs 2009-07-08 17:07:02 UTC (rev 4592) +++ branches/2.1.x/nhibernate/src/NHibernate/Criterion/Projections.cs 2009-07-09 10:00:00 UTC (rev 4593) @@ -202,6 +202,16 @@ } /// <summary> + /// A grouping projection value + /// </summary> + /// <param name="projection"></param> + /// <returns></returns> + public static GroupedProjection GroupProperty(IProjection projection) + { + return new GroupedProjection(projection); + } + + /// <summary> /// A projected property value /// </summary> /// <param name="propertyName"></param> Modified: branches/2.1.x/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/NHibernate.csproj 2009-07-08 17:07:02 UTC (rev 4592) +++ branches/2.1.x/nhibernate/src/NHibernate/NHibernate.csproj 2009-07-09 10:00:00 UTC (rev 4593) @@ -460,6 +460,7 @@ <Compile Include="Cfg\MappingSchema\HbmTimestamp.cs" /> <Compile Include="Cfg\MappingSchema\HbmVersion.cs" /> <Compile Include="Cfg\MappingSchema\IDecoratable.cs" /> + <Compile Include="Criterion\GroupedProjection.cs" /> <Compile Include="Criterion\IPropertyProjection.cs" /> <Compile Include="Dialect\MsSql2008Dialect.cs" /> <Compile Include="Dialect\InformixDialect0940.cs" /> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Fixture.cs 2009-07-09 10:00:00 UTC (rev 4593) @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Text; +using NHibernate.Criterion; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1877 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void OnSetUp() + { + using(var session=OpenSession()) + using(var tran=session.BeginTransaction()) + { + session.Save(new Person {BirthDate = new DateTime(1988, 7, 21)}); + session.Save(new Person { BirthDate = new DateTime(1987, 7, 22) }); + session.Save(new Person { BirthDate = new DateTime(1986, 7, 23) }); + session.Save(new Person { BirthDate = new DateTime(1987, 7, 24) }); + session.Save(new Person { BirthDate = new DateTime(1988, 7, 25) }); + tran.Commit(); + } + } + + protected override void OnTearDown() + { + using (var session = OpenSession()) + using (var tran = session.BeginTransaction()) + { + session.CreateQuery("delete from Person").ExecuteUpdate(); + tran.Commit(); + } + } + + [Test] + public void CanGroupByWithPropertyName() + { + using(var session=OpenSession()) + { + var crit = session.CreateCriteria(typeof (Person)) + .SetProjection(Projections.GroupProperty("BirthDate"), + Projections.Count("Id")); + var result = crit.List(); + Assert.That(result,Has.Count.EqualTo(5)); + } + } + + [Test] + public void CanGroupByWithSqlFunctionProjection() + { + using (var session = OpenSession()) + { + var crit = session.CreateCriteria(typeof (Person)) + .SetProjection( + Projections.GroupProperty(Projections.SqlFunction("month", NHibernateUtil.Int32, Projections.Property("BirthDate")))); + + var result = crit.UniqueResult(); + Assert.That(result, Has.Count.EqualTo(1)); + Assert.That(result,Is.EqualTo(7)); + } + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Mappings.hbm.xml 2009-07-09 10:00:00 UTC (rev 4593) @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1877" + default-lazy="false"> + + <class name="Person"> + <id name="Id"> + <generator class="hilo"/> + </id> + <property name="BirthDate"/> + + </class> +</hibernate-mapping> \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Person.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Person.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Person.cs 2009-07-09 10:00:00 UTC (rev 4593) @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1877 +{ + public class Person + { + public virtual long Id { get; set; } + public virtual DateTime BirthDate { get; set; } + } +} Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-08 17:07:02 UTC (rev 4592) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-09 10:00:00 UTC (rev 4593) @@ -535,6 +535,8 @@ <Compile Include="NHSpecificTest\NH1867\AddMappingTest.cs" /> <Compile Include="NHSpecificTest\NH1868\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1868\Model.cs" /> + <Compile Include="NHSpecificTest\NH1877\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1877\Person.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> <Compile Include="NHSpecificTest\NH473\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Parent.cs" /> @@ -1945,6 +1947,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1877\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1868\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1849\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1857\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <te...@us...> - 2009-07-09 10:46:23
|
Revision: 4594 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4594&view=rev Author: tehlike Date: 2009-07-09 10:46:19 +0000 (Thu, 09 Jul 2009) Log Message: ----------- Fixing my broken commit. Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Criterion/GroupedProjection.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Fixture.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Criterion/GroupedProjection.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Criterion/GroupedProjection.cs 2009-07-09 10:00:00 UTC (rev 4593) +++ branches/2.1.x/nhibernate/src/NHibernate/Criterion/GroupedProjection.cs 2009-07-09 10:46:19 UTC (rev 4594) @@ -8,6 +8,7 @@ namespace NHibernate.Criterion { + [Serializable] public class GroupedProjection:IProjection { private readonly IProjection projection; Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Fixture.cs 2009-07-09 10:00:00 UTC (rev 4593) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1877/Fixture.cs 2009-07-09 10:46:19 UTC (rev 4594) @@ -56,7 +56,6 @@ Projections.GroupProperty(Projections.SqlFunction("month", NHibernateUtil.Int32, Projections.Property("BirthDate")))); var result = crit.UniqueResult(); - Assert.That(result, Has.Count.EqualTo(1)); Assert.That(result,Is.EqualTo(7)); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-07-09 16:45:18
|
Revision: 4599 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4599&view=rev Author: fabiomaulo Date: 2009-07-09 16:45:16 +0000 (Thu, 09 Jul 2009) Log Message: ----------- Fix NH-1876 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Id/TableGenerator.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/TableGeneratorFixture.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Id/TableGenerator.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Id/TableGenerator.cs 2009-07-09 16:10:33 UTC (rev 4598) +++ branches/2.1.x/nhibernate/src/NHibernate/Id/TableGenerator.cs 2009-07-09 16:45:16 UTC (rev 4599) @@ -92,9 +92,17 @@ tableName = dialect.Qualify(catalogName, schemaName, tableName); } - query = "select " + columnName + " from " + dialect.AppendLockHint(LockMode.Upgrade, tableName) - + dialect.ForUpdateString; + var selectBuilder = new SqlStringBuilder(100); + selectBuilder.Add("select " + columnName) + .Add(" from " + dialect.AppendLockHint(LockMode.Upgrade, tableName)); + if (string.IsNullOrEmpty(whereClause) == false) + { + selectBuilder.Add(" where ").Add(whereClause); + } + selectBuilder.Add(dialect.ForUpdateString); + query = selectBuilder.ToString(); + columnType = type as PrimitiveType; if (columnType == null) { @@ -118,9 +126,11 @@ parameterTypes = new[] {columnSqlType, columnSqlType}; - var builder = new SqlStringBuilder(); - builder.Add("update " + tableName + " set ").Add(columnName).Add(" = ").Add(Parameter.Placeholder).Add(" where ").Add - (columnName).Add(" = ").Add(Parameter.Placeholder); + var builder = new SqlStringBuilder(100); + builder.Add("update " + tableName + " set ") + .Add(columnName).Add(" = ").Add(Parameter.Placeholder) + .Add(" where ") + .Add(columnName).Add(" = ").Add(Parameter.Placeholder); if (string.IsNullOrEmpty(whereClause) == false) { builder.Add(" and ").Add(whereClause); Added: branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/TableGeneratorFixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/TableGeneratorFixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/TableGeneratorFixture.cs 2009-07-09 16:45:16 UTC (rev 4599) @@ -0,0 +1,29 @@ +using System.Collections.Generic; +using System.Reflection; +using NHibernate.Dialect; +using NHibernate.Id; +using NUnit.Framework; + +namespace NHibernate.Test.IdTest +{ + [TestFixture] + public class TableGeneratorFixture + { + private const BindingFlags Flags = + BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly; + + private readonly FieldInfo updateSql = typeof (TableGenerator).GetField("updateSql", Flags); + private readonly FieldInfo selectSql = typeof (TableGenerator).GetField("query", Flags); + + [Test] + public void SelectAndUpdateStringContainCustomWhere() + { + const string customWhere = "table_name='second'"; + var dialect = new MsSql2005Dialect(); + var tg = new TableGenerator(); + tg.Configure(NHibernateUtil.Int64, new Dictionary<string, string> {{"where", customWhere}}, dialect); + Assert.That(selectSql.GetValue(tg).ToString(), Text.Contains(customWhere)); + Assert.That(updateSql.GetValue(tg).ToString(), Text.Contains(customWhere)); + } + } +} \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-09 16:10:33 UTC (rev 4598) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-09 16:45:16 UTC (rev 4599) @@ -341,6 +341,7 @@ <Compile Include="HQL\Ast\WithClauseFixture.cs" /> <Compile Include="HQL\Ast\Zoo.cs" /> <Compile Include="HQL\BaseFunctionFixture.cs" /> + <Compile Include="IdTest\TableGeneratorFixture.cs" /> <Compile Include="LazyOneToOne\Employee.cs" /> <Compile Include="LazyOneToOne\Employment.cs" /> <Compile Include="LazyOneToOne\LazyOneToOneTest.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-07-17 14:24:32
|
Revision: 4647 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4647&view=rev Author: fabiomaulo Date: 2009-07-17 14:24:31 +0000 (Fri, 17 Jul 2009) Log Message: ----------- perhaps fix of NH-1865 (can't recreate the issue in .NET). Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Cfg/MappingSchema/AbstractDecoratable.cs branches/2.1.x/nhibernate/src/NHibernate.Test/MappingTest/NonReflectiveBinderFixture.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Cfg/MappingSchema/AbstractDecoratable.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Cfg/MappingSchema/AbstractDecoratable.cs 2009-07-17 12:59:43 UTC (rev 4646) +++ branches/2.1.x/nhibernate/src/NHibernate/Cfg/MappingSchema/AbstractDecoratable.cs 2009-07-17 14:24:31 UTC (rev 4647) @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Xml.Serialization; using NHibernate.Mapping; using NHibernate.Util; @@ -10,7 +11,12 @@ { private static readonly IDictionary<string, MetaAttribute> EmptyMetaData = new CollectionHelper.EmptyMapClass<string, MetaAttribute>(); + [NonSerialized] + [XmlIgnore] private IDictionary<string, MetaAttribute> mappedMetaData; + + [NonSerialized] + [XmlIgnore] private IDictionary<string, MetaAttribute> inheritableMetaData; public virtual IDictionary<string, MetaAttribute> MappedMetaData Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/MappingTest/NonReflectiveBinderFixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/MappingTest/NonReflectiveBinderFixture.cs 2009-07-17 12:59:43 UTC (rev 4646) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/MappingTest/NonReflectiveBinderFixture.cs 2009-07-17 14:24:31 UTC (rev 4647) @@ -1,4 +1,6 @@ +using System.IO; using NHibernate.Cfg; +using NHibernate.Cfg.MappingSchema; using NHibernate.Mapping; using NUnit.Framework; @@ -180,5 +182,17 @@ metaAttribute = cm.GetMetaAttribute("Auditable"); Assert.That(metaAttribute, Is.Not.Null); } + + [Test] + public void XmlSerialization() + { + // NH-1865 (have a look to comments in JIRA) + var mdp = new MappingDocumentParser(); + using (Stream stream = GetType().Assembly.GetManifestResourceStream("NHibernate.Test.MappingTest.Wicked.hbm.xml")) + { + HbmMapping mapping = mdp.Parse(stream); + Assert.That(mapping, Is.XmlSerializable); + } + } } } \ 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: <dav...@us...> - 2009-07-26 15:43:22
|
Revision: 4659 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4659&view=rev Author: davybrion Date: 2009-07-26 15:43:11 +0000 (Sun, 26 Jul 2009) Log Message: ----------- applying patch from 'Dima' to fix NH1899 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Type/GenericMapType.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/DomainClass.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/SampleTest.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Type/GenericMapType.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Type/GenericMapType.cs 2009-07-26 15:24:33 UTC (rev 4658) +++ branches/2.1.x/nhibernate/src/NHibernate/Type/GenericMapType.cs 2009-07-26 15:43:11 UTC (rev 4659) @@ -71,7 +71,7 @@ IDictionary<TKey, TValue> result = (IDictionary<TKey, TValue>)target; result.Clear(); - IEnumerable iter = (IDictionary)original; + IEnumerable<KeyValuePair<TKey, TValue>> iter = (IDictionary<TKey, TValue>)original; foreach (KeyValuePair<TKey, TValue> me in iter) { TKey key = (TKey)cp.IndexType.Replace(me.Key, null, session, owner, copyCache); Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/DomainClass.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/DomainClass.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/DomainClass.cs 2009-07-26 15:43:11 UTC (rev 4659) @@ -0,0 +1,33 @@ + + +using System.Collections; +using System.Collections.Generic; +namespace NHibernate.Test.NHSpecificTest.NH1899 +{ + public class Parent + { + private int id; + private IDictionary<Key, Value> _relations; + + public int Id + { + get { return id; } + set { id = value; } + } + + public IDictionary<Key, Value> Relations { + get { return _relations; } + set { _relations = value; } + } + } + + public enum Key { + One, + Two + } + + public enum Value { + ValOne, + ValTwo + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/Mappings.hbm.xml 2009-07-26 15:43:11 UTC (rev 4659) @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1899" default-access="field.camelcase" + default-lazy="false"> + <class name="Parent"> + <id name="Id"> + <generator class="assigned" /> + </id> + <map name="_relations" table="RelationsTable" lazy="false" cascade="all-delete-orphan"> + <key column="ParentID" /> + <index column="KeyId" type="NHibernate.Test.NHSpecificTest.NH1899.Key, NHibernate.Test" /> + <element column="Value" type="NHibernate.Test.NHSpecificTest.NH1899.Value, NHibernate.Test" /> + </map> + </class> +</hibernate-mapping> \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/SampleTest.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/SampleTest.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1899/SampleTest.cs 2009-07-26 15:43:11 UTC (rev 4659) @@ -0,0 +1,55 @@ +using System.Collections.Generic; + +using NHibernate.Dialect; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1899 +{ + [TestFixture] + public class SampleTest : BugTestCase + { + protected override void OnSetUp() + { + base.OnSetUp(); + using (ISession session = OpenSession()) + { + Parent entity = new Parent(); + entity.Id = 1; + entity.Relations = new Dictionary<Key, Value>(); + entity.Relations.Add(Key.One, Value.ValOne); + entity.Relations.Add(Key.Two, Value.ValTwo); + session.Save(entity); + session.Flush(); + } + } + + protected override void OnTearDown() + { + base.OnTearDown(); + using (ISession session = OpenSession()) + { + string hql = "from System.Object"; + session.Delete(hql); + session.Flush(); + } + } + + [Test] + public void ShouldNotThrowOnSaveUpdateCopy() + { + Parent entity; + + using (ISession session = OpenSession()) + { + entity = session.Get<Parent>(1); + session.Close(); + session.Dispose(); + } + + using (ISession session2 = OpenSession()) + { + entity = (Parent)session2.SaveOrUpdateCopy(entity); + } + } + } +} Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-26 15:24:33 UTC (rev 4658) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-26 15:43:11 UTC (rev 4659) @@ -538,6 +538,8 @@ <Compile Include="NHSpecificTest\NH1868\Model.cs" /> <Compile Include="NHSpecificTest\NH1877\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1877\Person.cs" /> + <Compile Include="NHSpecificTest\NH1899\DomainClass.cs" /> + <Compile Include="NHSpecificTest\NH1899\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> <Compile Include="NHSpecificTest\NH473\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Parent.cs" /> @@ -1948,6 +1950,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1899\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1877\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1868\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1849\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dav...@us...> - 2009-08-02 16:27:14
|
Revision: 4671 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4671&view=rev Author: davybrion Date: 2009-08-02 16:26:52 +0000 (Sun, 02 Aug 2009) Log Message: ----------- applied patch from Jimmy Bogard for NH-1903 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Collection/Generic/PersistentGenericMap.cs branches/2.1.x/nhibernate/src/NHibernate.Test/GenericTest/MapGeneric/MapGenericFixture.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Collection/Generic/PersistentGenericMap.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Collection/Generic/PersistentGenericMap.cs 2009-07-30 16:10:11 UTC (rev 4670) +++ branches/2.1.x/nhibernate/src/NHibernate/Collection/Generic/PersistentGenericMap.cs 2009-08-02 16:26:52 UTC (rev 4671) @@ -16,13 +16,13 @@ /// <typeparam name="TKey">The type of the keys in the IDictionary.</typeparam> /// <typeparam name="TValue">The type of the elements in the IDictionary.</typeparam> [Serializable] - [DebuggerTypeProxy(typeof (DictionaryProxy<,>))] + [DebuggerTypeProxy(typeof(DictionaryProxy<,>))] public class PersistentGenericMap<TKey, TValue> : PersistentMap, IDictionary<TKey, TValue> { // TODO NH: find a way to writeonce (no duplicated code from PersistentMap) protected IDictionary<TKey, TValue> gmap; - public PersistentGenericMap() {} - public PersistentGenericMap(ISessionImplementor session) : base(session) {} + public PersistentGenericMap() { } + public PersistentGenericMap(ISessionImplementor session) : base(session) { } public PersistentGenericMap(ISessionImplementor session, IDictionary<TKey, TValue> map) : base(session, map as IDictionary) @@ -37,15 +37,15 @@ foreach (KeyValuePair<TKey, TValue> e in gmap) { object copy = persister.ElementType.DeepCopy(e.Value, entityMode, persister.Factory); - clonedMap[e.Key] = (TValue) copy; + clonedMap[e.Key] = (TValue)copy; } return clonedMap; } public override void BeforeInitialize(ICollectionPersister persister, int anticipatedSize) { - gmap = (IDictionary<TKey, TValue>) persister.CollectionType.Instantiate(anticipatedSize); - map = (IDictionary) gmap; + gmap = (IDictionary<TKey, TValue>)persister.CollectionType.Instantiate(anticipatedSize); + map = (IDictionary)gmap; } public override IEnumerable GetDeletes(ICollectionPersister persister, bool indexIsFormula) @@ -156,7 +156,7 @@ } else { - value = (TValue) result; + value = (TValue)result; return true; } } @@ -166,7 +166,7 @@ get { object result = ReadElementByIndex(key); - return result == Unknown ? gmap[key] : (TValue) result; + return result == Unknown ? gmap[key] : (TValue)result; } set { @@ -234,7 +234,7 @@ { if (exists.Value) { - TValue x = ((IDictionary<TKey, TValue>) this)[item.Key]; + TValue x = ((IDictionary<TKey, TValue>)this)[item.Key]; TValue y = item.Value; return EqualityComparer<TValue>.Default.Equals(x, y); } @@ -269,7 +269,7 @@ bool ICollection<KeyValuePair<TKey, TValue>>.Remove(KeyValuePair<TKey, TValue> item) { - if (((ICollection<KeyValuePair<TKey, TValue>>) this).Contains(item)) + if (((ICollection<KeyValuePair<TKey, TValue>>)this).Contains(item)) { Remove(item.Key); return true; @@ -291,5 +291,15 @@ } #endregion + + #region IEnumerable Members + + IEnumerator IEnumerable.GetEnumerator() + { + Read(); + return gmap.GetEnumerator(); + } + + #endregion } } \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/GenericTest/MapGeneric/MapGenericFixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/GenericTest/MapGeneric/MapGenericFixture.cs 2009-07-30 16:10:11 UTC (rev 4670) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/GenericTest/MapGeneric/MapGenericFixture.cs 2009-08-02 16:26:52 UTC (rev 4671) @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Collections.Generic; using System.Text; using NHibernate.Engine; @@ -78,6 +79,51 @@ } } + [Test] + public void SimpleTypes() + { + A a = new A(); + a.Name = "first generic type"; + a.Items = new Dictionary<string, B>(); + B firstB = new B(); + firstB.Name = "first b"; + B secondB = new B(); + secondB.Name = "second b"; + B thirdB = new B(); + thirdB.Name = "third b"; + + a.Items.Add("first", firstB); + a.Items.Add("second", secondB); + a.Items.Add("third", thirdB); + + using (ISession s = OpenSession()) + { + s.SaveOrUpdate(a); + s.Flush(); + } + + using (ISession s = OpenSession()) + { + a = s.Load<A>(a.Id); + IDictionary<string, B> genericDict = a.Items; + IEnumerable<KeyValuePair<string, B>> genericEnum = a.Items; + IEnumerable nonGenericEnum = a.Items; + + foreach (var enumerable in genericDict) + { + Assert.That(enumerable, Is.InstanceOf<KeyValuePair<string, B>>()); + } + foreach (var enumerable in genericEnum) + { + Assert.That(enumerable, Is.InstanceOf<KeyValuePair<string, B>>()); + } + foreach (var enumerable in nonGenericEnum) + { + Assert.That(enumerable, Is.InstanceOf<KeyValuePair<string, B>>()); + } + } + } + // NH-669 [Test] public void UpdatesToSimpleMap() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-08-02 19:50:04
|
Revision: 4673 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4673&view=rev Author: fabiomaulo Date: 2009-08-02 19:49:56 +0000 (Sun, 02 Aug 2009) Log Message: ----------- Fix NH-1907 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/MyType.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs 2009-08-02 16:46:25 UTC (rev 4672) +++ branches/2.1.x/nhibernate/src/NHibernate/Impl/AbstractQueryImpl.cs 2009-08-02 19:49:56 UTC (rev 4673) @@ -260,14 +260,7 @@ public IQuery SetParameter(int position, object val, IType type) { - if (parameterMetadata.OrdinalParameterCount == 0) - { - throw new ArgumentException("No positional parameters in query: " + QueryString); - } - if (position < 0 || position > parameterMetadata.OrdinalParameterCount - 1) - { - throw new ArgumentException("Positional parameter does not exist: " + position + " in query: " + QueryString); - } + CheckPositionalParameter(position); int size = values.Count; if (position < size) { @@ -305,12 +298,26 @@ public IQuery SetParameter<T>(int position, T val) { - return SetParameter(position, val, GuessType(typeof (T))); + CheckPositionalParameter(position); + + return SetParameter(position, val, parameterMetadata.GetOrdinalParameterExpectedType(position + 1) ?? GuessType(typeof(T))); } + private void CheckPositionalParameter(int position) + { + if (parameterMetadata.OrdinalParameterCount == 0) + { + throw new ArgumentException("No positional parameters in query: " + QueryString); + } + if (position < 0 || position > parameterMetadata.OrdinalParameterCount - 1) + { + throw new ArgumentException("Positional parameter does not exist: " + position + " in query: " + QueryString); + } + } + public IQuery SetParameter<T>(string name, T val) { - return SetParameter(name, val, GuessType(typeof (T))); + return SetParameter(name, val, parameterMetadata.GetNamedParameterExpectedType(name) ?? GuessType(typeof (T))); } public IQuery SetParameter(string name, object val) Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/Fixture.cs 2009-08-02 19:49:56 UTC (rev 4673) @@ -0,0 +1,34 @@ +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1907 +{ + public class Something + { + public virtual string Name { get; set; } + public virtual MyType Relation { get; set; } + } + [TestFixture] + public class Fixture: BugTestCase + { + [Test] + public void CanSetParameterQueryByName() + { + using (ISession s = OpenSession()) + { + var q = s.CreateQuery("from Something s where s.Relation = :aParam"); + Assert.DoesNotThrow(()=>q.SetParameter("aParam", new MyType{ ToPersist = 1})); + } + } + + [Test] + public void CanSetParameterQueryByPosition() + { + using (ISession s = OpenSession()) + { + var q = s.CreateQuery("from Something s where s.Relation = ?"); + q.SetParameter(0, new MyType {ToPersist = 1}); + Assert.DoesNotThrow(() => q.SetParameter(0, new MyType { ToPersist = 1 })); + } + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/Mappings.hbm.xml 2009-08-02 19:49:56 UTC (rev 4673) @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1907"> + + <class name="Something"> + <id type="int"> + <generator class="hilo"/> + </id> + <property name="Name"/> + <property name="Relation" type="NHibernate.Test.NHSpecificTest.NH1907.SimpleCustomType, NHibernate.Test"/> + </class> +</hibernate-mapping> \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/MyType.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/MyType.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1907/MyType.cs 2009-08-02 19:49:56 UTC (rev 4673) @@ -0,0 +1,115 @@ +using System; +using System.Data; +using NHibernate.SqlTypes; +using NHibernate.UserTypes; + +namespace NHibernate.Test.NHSpecificTest.NH1907 +{ + public class MyType + { + public int ToPersist { get; set; } + + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + var other = (MyType)obj; + return ToPersist == other.ToPersist; + } + + public override int GetHashCode() + { + return ToPersist.GetHashCode(); + } + } + + public class SimpleCustomType : IUserType + { + private static readonly SqlType[] ReturnSqlTypes = { SqlTypeFactory.Int32 }; + + + #region IUserType Members + + public new bool Equals(object x, object y) + { + if (ReferenceEquals(x, y)) + { + return true; + } + if (ReferenceEquals(null, x) || ReferenceEquals(null, y)) + { + return false; + } + + return x.Equals(y); + } + + public int GetHashCode(object x) + { + return (x == null) ? 0 : x.GetHashCode(); + } + + public SqlType[] SqlTypes + { + get { return ReturnSqlTypes; } + } + + public object DeepCopy(object value) + { + return value; + } + + public void NullSafeSet(IDbCommand cmd, object value, int index) + { + if (value == null) + { + ((IDbDataParameter)cmd.Parameters[index]).Value = DBNull.Value; + } + else + { + ((IDbDataParameter)cmd.Parameters[index]).Value = ((MyType)value).ToPersist; + } + } + + public System.Type ReturnedType + { + get { return typeof(Int32); } + } + + public object NullSafeGet(IDataReader rs, string[] names, object owner) + { + int index0 = rs.GetOrdinal(names[0]); + if (rs.IsDBNull(index0)) + { + return null; + } + int value = rs.GetInt32(index0); + return new MyType { ToPersist = value}; + } + + public bool IsMutable + { + get { return false; } + } + + public object Replace(object original, object target, object owner) + { + return original; + } + + public object Assemble(object cached, object owner) + { + return cached; + } + + public object Disassemble(object value) + { + return value; + } + + #endregion + } + +} \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-02 16:46:25 UTC (rev 4672) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-02 19:49:56 UTC (rev 4673) @@ -540,6 +540,8 @@ <Compile Include="NHSpecificTest\NH1877\Person.cs" /> <Compile Include="NHSpecificTest\NH1899\DomainClass.cs" /> <Compile Include="NHSpecificTest\NH1899\SampleTest.cs" /> + <Compile Include="NHSpecificTest\NH1907\MyType.cs" /> + <Compile Include="NHSpecificTest\NH1907\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> <Compile Include="NHSpecificTest\NH473\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Parent.cs" /> @@ -1950,6 +1952,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1907\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1899\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1877\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1868\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-08-02 22:31:20
|
Revision: 4675 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4675&view=rev Author: fabiomaulo Date: 2009-08-02 22:31:07 +0000 (Sun, 02 Aug 2009) Log Message: ----------- Fix NH-1898 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/BasicExecutor.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj branches/2.1.x/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/DomainClass.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/SampleTest.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2009-08-02 19:55:57 UTC (rev 4674) +++ branches/2.1.x/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2009-08-02 22:31:07 UTC (rev 4675) @@ -126,6 +126,7 @@ 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"); Modified: branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/BasicExecutor.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/BasicExecutor.cs 2009-08-02 19:55:57 UTC (rev 4674) +++ branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/BasicExecutor.cs 2009-08-02 22:31:07 UTC (rev 4675) @@ -58,6 +58,7 @@ { try { + CheckParametersExpectedType(parameters); // NH Different behavior (NH-1898) var parameterTypes = new List<SqlType>(Parameters.Count); foreach (var parameterSpecification in Parameters) { @@ -100,6 +101,33 @@ } } + private void CheckParametersExpectedType(QueryParameters parameters) + { + foreach (var specification in Parameters) + { + if (specification.ExpectedType == null) + { + var namedSpec = specification as NamedParameterSpecification; + if (namedSpec != null) + { + TypedValue tv; + if(parameters.NamedParameters.TryGetValue(namedSpec.Name, out tv)) + { + specification.ExpectedType = tv.Type; + } + } + else + { + var posSpec = specification as PositionalParameterSpecification; + if (posSpec != null) + { + specification.ExpectedType = parameters.PositionalParameterTypes[posSpec.HqlPosition]; + } + } + } + } + } + protected override IQueryable[] AffectedQueryables { get { return new[] { persister }; } Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/DomainClass.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/DomainClass.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/DomainClass.cs 2009-08-02 22:31:07 UTC (rev 4675) @@ -0,0 +1,9 @@ +namespace NHibernate.Test.NHSpecificTest.NH1898 +{ + public class DomainClass + { + public int Id { get; set; } + + public string Data { get; set; } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/Mappings.hbm.xml 2009-08-02 22:31:07 UTC (rev 4675) @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1898" + default-lazy="false"> + <class name="DomainClass"> + <id name="Id"> + <generator class="assigned" /> + </id> + <property name="Data" /> + </class> + <query name='replaceQuery'> + <query-param name='old' type='String'/> + <query-param name='new' type='String'/> + <![CDATA[ + update DomainClass set + Data = replace(Data,:old, :new) + ]]> + </query> +</hibernate-mapping> \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/SampleTest.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/SampleTest.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1898/SampleTest.cs 2009-08-02 22:31:07 UTC (rev 4675) @@ -0,0 +1,44 @@ +using NHibernate.Dialect; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1898 +{ + [TestFixture] + public class SampleTest : BugTestCase + { + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect as MsSql2005Dialect != null; + } + + [Test] + public void TypeOfParametersShouldBeSetCorrectly() + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + var entity = new DomainClass {Id = 1, Data = "some oldValue data"}; + session.Save(entity); + tx.Commit(); + } + } + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.GetNamedQuery("replaceQuery").SetString("old", "oldValue").SetString("new", "newValue").ExecuteUpdate(); + tx.Commit(); + } + using (ITransaction tx = session.BeginTransaction()) + { + var entity = session.Get<DomainClass>(1); + + Assert.AreEqual("some newValue data", entity.Data); + session.Delete(entity); + tx.Commit(); + } + } + } + } +} \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-02 19:55:57 UTC (rev 4674) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-02 22:31:07 UTC (rev 4675) @@ -538,6 +538,8 @@ <Compile Include="NHSpecificTest\NH1868\Model.cs" /> <Compile Include="NHSpecificTest\NH1877\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1877\Person.cs" /> + <Compile Include="NHSpecificTest\NH1898\DomainClass.cs" /> + <Compile Include="NHSpecificTest\NH1898\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1899\DomainClass.cs" /> <Compile Include="NHSpecificTest\NH1899\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1907\MyType.cs" /> @@ -1952,6 +1954,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1898\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1907\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1899\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1877\Mappings.hbm.xml" /> Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs 2009-08-02 19:55:57 UTC (rev 4674) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs 2009-08-02 22:31:07 UTC (rev 4675) @@ -1,7 +1,6 @@ using System; using System.Collections; using System.Threading; -using NHibernate.Hql.Ast.ANTLR; using NUnit.Framework; namespace NHibernate.Test.Stateless @@ -119,27 +118,6 @@ } [Test] - public void HqlBulkWithErrorInPropertyName() - { - using (IStatelessSession ss = sessions.OpenStatelessSession()) - { - ITransaction tx = ss.BeginTransaction(); - var doc = new Document("blah blah blah", "Blahs"); - ss.Insert(doc); - var paper = new Paper {Color = "White"}; - ss.Insert(paper); - tx.Commit(); - - Assert.Throws<QuerySyntaxException>(()=> - ss.CreateQuery("update Document set name = :newName where name = :oldName").SetString("newName", "Foos").SetString - ("oldName", "Blahs").ExecuteUpdate()); - tx = ss.BeginTransaction(); - ss.CreateQuery("delete Document").ExecuteUpdate(); - ss.CreateQuery("delete Paper").ExecuteUpdate(); - tx.Commit(); - } - } - [Test] public void InitId() { Paper paper; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-08-03 22:25:40
|
Revision: 4677 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4677&view=rev Author: fabiomaulo Date: 2009-08-03 22:25:32 +0000 (Mon, 03 Aug 2009) Log Message: ----------- Refactoring filter-def check first step (removed a very old TODO and removed the problem of filter-def mappings inspection order) Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Cfg/Configuration.cs branches/2.1.x/nhibernate/src/NHibernate/Cfg/Mappings.cs branches/2.1.x/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs branches/2.1.x/nhibernate/src/NHibernate/NHibernate.csproj branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/defs.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate/Cfg/FilterSecondPassArgs.cs branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/ConfigFixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/FilterSecondPassArgsFixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/SimpleFiltered.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/SimpleFilteredFiltersDefsOk.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/WrongFilterDefInClass.hbm.xml Modified: branches/2.1.x/nhibernate/src/NHibernate/Cfg/Configuration.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Cfg/Configuration.cs 2009-08-02 22:35:41 UTC (rev 4676) +++ branches/2.1.x/nhibernate/src/NHibernate/Cfg/Configuration.cs 2009-08-03 22:25:32 UTC (rev 4677) @@ -5,6 +5,7 @@ using System.Diagnostics; using System.IO; using System.Reflection; +using System.Text; using System.Xml; using System.Xml.Schema; using Iesi.Collections; @@ -61,6 +62,7 @@ protected IDictionary<string, NHibernate.Mapping.Collection> collections; protected IDictionary<string, Table> tables; protected IList<SecondPassCommand> secondPasses; + protected Queue<FilterSecondPassArgs> filtersSecondPasses; protected IList<Mappings.PropertyReference> propertyReferences; private IInterceptor interceptor; private IDictionary<string, string> properties; @@ -113,12 +115,7 @@ this.tableNameBinding = GetSerialedObject<IDictionary<string, Mappings.TableDescription>>(info, "tableNameBinding"); this.tables = GetSerialedObject<IDictionary<string, Table>>(info, "tables"); this.typeDefs = GetSerialedObject<IDictionary<string, TypeDef>>(info, "typeDefs"); - - - - - - + filtersSecondPasses = GetSerialedObject<Queue<FilterSecondPassArgs>>(info, "filtersSecondPasses"); } private T GetSerialedObject<T>(SerializationInfo info, string name) { @@ -157,6 +154,7 @@ info.AddValue("tableNameBinding", this.tableNameBinding); info.AddValue("tables", this.tables); info.AddValue("typeDefs", this.typeDefs); + info.AddValue("filtersSecondPasses", filtersSecondPasses); } #endregion @@ -185,8 +183,9 @@ extendsQueue = new HashedSet<ExtendsQueueEntry>(); tableNameBinding = new Dictionary<string, Mappings.TableDescription>(); columnNameBindingPerTable = new Dictionary<Table, Mappings.ColumnNames>(); + filtersSecondPasses = new Queue<FilterSecondPassArgs>(); + } - } [Serializable] private class Mapping : IMapping { @@ -526,7 +525,7 @@ { ProcessPreMappingBuildProperties(); return new Mappings(classes, collections, tables, NamedQueries, NamedSQLQueries, SqlResultSetMappings, Imports, - secondPasses, propertyReferences, namingStrategy, typeDefs, FilterDefinitions, extendsQueue, + secondPasses, filtersSecondPasses, propertyReferences, namingStrategy, typeDefs, FilterDefinitions, extendsQueue, auxiliaryDatabaseObjects, tableNameBinding, columnNameBindingPerTable, defaultAssembly, defaultNamespace, dialect); } @@ -910,6 +909,69 @@ private void Validate() { + ValidateEntities(); + + ValidateCollections(); + + ValidateFilterDefs(); + } + + private void ValidateFilterDefs() + { + var filterNames = new HashedSet<string>(); + foreach (var filterDefinition in FilterDefinitions) + { + if(filterDefinition.Value == null) + { + // a class/collection has a filter but the filter-def was not added. + filterNames.Add(filterDefinition.Key); + } + } + if(filterNames.Count > 0) + { + var message = new StringBuilder(); + message.Append("filter-def for filter named "); + foreach (var filterName in filterNames) + { + message.AppendLine(filterName); + } + message.AppendLine("was not found."); + throw new MappingException(message.ToString()); + } + + // check filter-def without reference + if (FilterDefinitions.Count > 0) + { + filterNames.Clear(); + var filterables = new JoinedEnumerable(ClassMappings, CollectionMappings); + foreach (IFilterable filterable in filterables) + { + filterNames.AddAll(filterable.FilterMap.Keys); + } + foreach (var filterName in FilterDefinitions.Keys) + { + if (!filterNames.Contains(filterName)) + { + // if you are going to remove this exception at least add a log.Error + // because the usage of filter-def, outside its scope, may cause unexpected behaviour + // during queries. + throw new MappingException("filter-def for filter named '" + filterName + + "' was never used to filter classes nor collections."); + } + } + } + } + + private void ValidateCollections() + { + foreach (var col in collections.Values) + { + col.Validate(mapping); + } + } + + private void ValidateEntities() + { bool validateProxy = PropertiesHelper.GetBoolean(Environment.UseProxyValidator, properties, true); HashedSet<string> allProxyErrors = null; IProxyValidator pvalidator = Environment.BytecodeProvider.ProxyFactoryFactory.ProxyValidator; @@ -917,7 +979,7 @@ foreach (var clazz in classes.Values) { clazz.Validate(mapping); - + if (validateProxy) { ICollection<string> errors = ValidateProxyInterface(clazz, pvalidator); @@ -939,11 +1001,6 @@ { throw new InvalidProxyTypeException(allProxyErrors); } - - foreach (var col in collections.Values) - { - col.Validate(mapping); - } } private static ICollection<string> ValidateProxyInterface(PersistentClass persistentClass, IProxyValidator validator) @@ -1013,6 +1070,23 @@ { SecondPassCompileForeignKeys(table, done); } + + log.Info("processing filters (second pass)"); + foreach (var filterSecondPassArgs in filtersSecondPasses) + { + FilterDefinition filterDef; + var filterName = filterSecondPassArgs.FilterName; + FilterDefinitions.TryGetValue(filterName, out filterDef); + if(filterDef == null) + { + throw new MappingException("filter-def for filter named " + filterName + " was not found."); + } + if(string.IsNullOrEmpty(filterDef.DefaultFilterCondition)) + { + throw new MappingException("no filter condition found for filter: " + filterName); + } + filterSecondPassArgs.Filterable.FilterMap[filterName] = filterDef.DefaultFilterCondition; + } } private void SecondPassCompileForeignKeys(Table table, ISet done) Added: branches/2.1.x/nhibernate/src/NHibernate/Cfg/FilterSecondPassArgs.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Cfg/FilterSecondPassArgs.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate/Cfg/FilterSecondPassArgs.cs 2009-08-03 22:25:32 UTC (rev 4677) @@ -0,0 +1,28 @@ +using System; +using NHibernate.Mapping; + +namespace NHibernate.Cfg +{ + [Serializable] + public class FilterSecondPassArgs + { + // this class is NH specific to solve problems generated by 'order of mapping-doc' + // to assign the condition of a filter. + public FilterSecondPassArgs(IFilterable filterable, string filterName) + { + if (filterable == null) + { + throw new ArgumentNullException("filterable"); + } + if (string.IsNullOrEmpty(filterName)) + { + throw new ArgumentNullException("filterName"); + } + Filterable = filterable; + FilterName = filterName; + } + + public IFilterable Filterable{ get; private set;} + public string FilterName { get; private set; } + } +} \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate/Cfg/Mappings.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Cfg/Mappings.cs 2009-08-02 22:35:41 UTC (rev 4676) +++ branches/2.1.x/nhibernate/src/NHibernate/Cfg/Mappings.cs 2009-08-03 22:25:32 UTC (rev 4677) @@ -69,6 +69,7 @@ private readonly IList<PropertyReference> propertyReferences; private readonly IDictionary<string, FilterDefinition> filterDefinitions; private readonly IList<IAuxiliaryDatabaseObject> auxiliaryDatabaseObjects; + private readonly Queue<FilterSecondPassArgs> filtersSecondPasses; private readonly INamingStrategy namingStrategy; @@ -98,6 +99,7 @@ IDictionary<string, ResultSetMappingDefinition> resultSetMappings, IDictionary<string, string> imports, IList<SecondPassCommand> secondPasses, + Queue<FilterSecondPassArgs> filtersSecondPasses, IList<PropertyReference> propertyReferences, INamingStrategy namingStrategy, IDictionary<string, TypeDef> typeDefs, @@ -108,7 +110,7 @@ IDictionary<Table, ColumnNames> columnNameBindingPerTable, string defaultAssembly, string defaultNamespace, - Dialect.Dialect dialect) + Dialect.Dialect dialect) { this.classes = classes; this.collections = collections; @@ -129,6 +131,7 @@ this.defaultAssembly = defaultAssembly; this.defaultNamespace = defaultNamespace; this.dialect = dialect; + this.filtersSecondPasses = filtersSecondPasses; } /// <summary> @@ -454,12 +457,22 @@ public void AddFilterDefinition(FilterDefinition definition) { - filterDefinitions.Add(definition.FilterName, definition); + FilterDefinition fd; + if (filterDefinitions.TryGetValue(definition.FilterName, out fd)) + { + if(fd!=null) + { + throw new MappingException("Duplicated filter-def named: " + definition.FilterName); + } + } + filterDefinitions[definition.FilterName] = definition; } public FilterDefinition GetFilterDefinition(string name) { - return filterDefinitions[name]; + FilterDefinition result; + filterDefinitions.TryGetValue(name, out result); + return result; } public void AddAuxiliaryDatabaseObject(IAuxiliaryDatabaseObject auxiliaryDatabaseObject) @@ -638,6 +651,34 @@ return persistentClass; } + public void ExpectedFilterDefinition(IFilterable filterable, string filterName, string condition) + { + var fdef = GetFilterDefinition(filterName); + if (string.IsNullOrEmpty(condition)) + { + if (fdef != null) + { + // where immediately available, apply the condition + condition = fdef.DefaultFilterCondition; + } + } + if (string.IsNullOrEmpty(condition) && fdef == null) + { + log.Debug(string.Format("Adding filter second pass [{0}]", filterName)); + filtersSecondPasses.Enqueue(new FilterSecondPassArgs(filterable, filterName)); + } + else if (string.IsNullOrEmpty(condition) && fdef != null) + { + // Both sides does not have condition + throw new MappingException("no filter condition found for filter: " + filterName); + } + + if (fdef == null) + { + // if not available add an expected filter definition + FilterDefinitions[filterName] = null; + } + } } public delegate void SecondPassCommand(IDictionary<string, PersistentClass> persistentClasses); Modified: branches/2.1.x/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs 2009-08-02 22:35:41 UTC (rev 4676) +++ branches/2.1.x/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs 2009-08-03 22:25:32 UTC (rev 4677) @@ -1017,17 +1017,19 @@ condition = (propertyNameNode == null) ? null : propertyNameNode.Value; } - //TODO: bad implementation, cos it depends upon ordering of mapping doc - // fixing this requires that Collection/PersistentClass gain access - // to the Mappings reference from Configuration (or the filterDefinitions - // map directly) sometime during Configuration.buildSessionFactory - // (after all the types/filter-defs are known and before building - // persisters). if (StringHelper.IsEmpty(condition)) - condition = mappings.GetFilterDefinition(name).DefaultFilterCondition; - if (condition == null) - throw new MappingException("no filter condition found for filter: " + name); - log.Debug("Applying filter [" + name + "] as [" + condition + "]"); + { + var fdef = mappings.GetFilterDefinition(name); + if (fdef != null) + { + // where immediately available, apply the condition + condition = fdef.DefaultFilterCondition; + } + } + + mappings.ExpectedFilterDefinition(filterable, name, condition); + + log.Debug(string.Format("Applying filter [{0}] as [{1}]", name, condition)); filterable.AddFilter(name, condition); } Modified: branches/2.1.x/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/NHibernate.csproj 2009-08-02 22:35:41 UTC (rev 4676) +++ branches/2.1.x/nhibernate/src/NHibernate/NHibernate.csproj 2009-08-03 22:25:32 UTC (rev 4677) @@ -456,6 +456,7 @@ <Compile Include="Bytecode\ProxyFactoryFactoryNotConfiguredException.cs" /> <Compile Include="Bytecode\UnableToLoadProxyFactoryFactoryException.cs" /> <Compile Include="Cache\FakeCache.cs" /> + <Compile Include="Cfg\FilterSecondPassArgs.cs" /> <Compile Include="Cfg\MappingSchema\AbstractDecoratable.cs" /> <Compile Include="Cfg\MappingSchema\HbmTimestamp.cs" /> <Compile Include="Cfg\MappingSchema\HbmVersion.cs" /> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/ConfigFixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/ConfigFixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/ConfigFixture.cs 2009-08-03 22:25:32 UTC (rev 4677) @@ -0,0 +1,244 @@ +using System.Collections.Generic; +using NHibernate.Cfg; +using NUnit.Framework; + +namespace NHibernate.Test.FilterTest +{ + [TestFixture] + public class ConfigFixture + { + private class ConfigurationStub: Configuration + { + public Queue<FilterSecondPassArgs> FiltersSecondPasses { get { return filtersSecondPasses; } } + } + + private static ConfigurationStub GetConfiguration() + { + var result = new ConfigurationStub(); + if (TestConfigurationHelper.hibernateConfigFile != null) + result.Configure(TestConfigurationHelper.hibernateConfigFile); + return result; + } + + [Test] + [Description("Add a class with filters without condition should not Throw exceptions and add secondpass tasks.")] + public void AddClassWithFilters() + { + var cfg = GetConfiguration(); + Assert.DoesNotThrow(() => cfg.AddResource("NHibernate.Test.FilterTest.SimpleFiltered.hbm.xml", GetType().Assembly)); + Assert.That(cfg.FiltersSecondPasses.Count, Is.EqualTo(2)); + } + + [Test] + [Description("Add filters-def should change conditions of class filters")] + public void AddFilterDefToClassWithFilters() + { + var cfg = GetConfiguration(); + cfg.AddResource("NHibernate.Test.FilterTest.SimpleFiltered.hbm.xml", GetType().Assembly); + cfg.AddResource("NHibernate.Test.FilterTest.SimpleFilteredFiltersDefsOk.hbm.xml", GetType().Assembly); + Assert.That(cfg.FilterDefinitions, Is.Not.Empty); + cfg.BuildMappings(); + var pc = cfg.GetClassMapping(typeof (TestClass)); + foreach (var filterMap in pc.FilterMap) + { + Assert.That(filterMap.Value, Is.Not.Null & Is.Not.Empty, "filtername:" + filterMap.Key); + } + } + + [Test] + [Description("Filter def without condition in both sides should throw exception")] + public void WrongFilterDefInClass() + { + var cfg = GetConfiguration(); + var e = Assert.Throws<MappingException>(() => cfg.AddResource("NHibernate.Test.FilterTest.WrongFilterDefInClass.hbm.xml", GetType().Assembly)); + Assert.That(e.InnerException, Is.Not.Null); + Assert.That(e.InnerException.Message, Text.StartsWith("no filter condition").IgnoreCase); + } + + [Test] + [Description("Filter def without condition in both sides should throw exception even in secondpass")] + public void WrongFilterDefInClassSeconPass() + { + const string wrongClassMap = @"<hibernate-mapping xmlns='urn:nhibernate-mapping-2.2' + default-lazy='false' + assembly='NHibernate.Test' + namespace='NHibernate.Test.FilterTest' > + + <class name='TestClass'> + <id name='Id' column='id'> + <generator class='assigned' /> + </id> + <property name='Name'/> + + <property name='Live'/> + <filter name='LiveFilter'/> + </class> + +</hibernate-mapping>"; + + const string wrongFilterDef = @"<hibernate-mapping xmlns='urn:nhibernate-mapping-2.2' > + + <filter-def name='LiveFilter'> + <filter-param name='LiveParam' type='boolean'/> + </filter-def> + +</hibernate-mapping>"; + + var cfg = GetConfiguration(); + cfg.AddXmlString(wrongClassMap); + cfg.AddXmlString(wrongFilterDef); + var e = Assert.Throws<MappingException>(cfg.BuildMappings); + Assert.That(e.Message, Text.StartsWith("no filter condition").IgnoreCase); + } + + [Test] + [Description("Add a class with filters without condition should Throw exceptions at secondpass.")] + public void AddClassWithFiltersWithoutFilterDef() + { + var cfg = GetConfiguration(); + cfg.AddResource("NHibernate.Test.FilterTest.SimpleFiltered.hbm.xml", GetType().Assembly); + var e = Assert.Throws<MappingException>(cfg.BuildMappings); + Assert.That(e.Message, Text.StartsWith("filter-def for filter named")); + Assert.That(e.Message, Text.Contains("was not found")); + } + + [Test] + [Description("Class filter with condition does not add secondpass and add an invalid filter-def")] + public void ClassNoSecondPass() + { + const string classMap = @"<hibernate-mapping xmlns='urn:nhibernate-mapping-2.2' + default-lazy='false' + assembly='NHibernate.Test' + namespace='NHibernate.Test.FilterTest' > + + <class name='TestClass'> + <id name='Id' column='id'> + <generator class='assigned' /> + </id> + <property name='Name'/> + + <property name='Live'/> + <filter name='LiveFilter' condition=':LiveParam = Live'/> + </class> + +</hibernate-mapping>"; + + var cfg = GetConfiguration(); + cfg.AddXmlString(classMap); + Assert.That(cfg.FiltersSecondPasses.Count, Is.EqualTo(0)); + Assert.That(cfg.FilterDefinitions.Keys, Has.Member("LiveFilter")); + Assert.That(cfg.FilterDefinitions["LiveFilter"], Is.Null); + } + + [Test] + [Description("Writing the condition in both sides should not change the condition defined in the class.")] + public void ClassConditionInBothSides() + { + const string classMap = @"<hibernate-mapping xmlns='urn:nhibernate-mapping-2.2' + default-lazy='false' + assembly='NHibernate.Test' + namespace='NHibernate.Test.FilterTest' > + + <class name='TestClass'> + <id name='Id' column='id'> + <generator class='assigned' /> + </id> + <property name='Name'/> + + <property name='Live'/> + <filter name='LiveFilter' condition='Live = 1'/> + </class> + +</hibernate-mapping>"; + + const string filterDef = @"<hibernate-mapping xmlns='urn:nhibernate-mapping-2.2' > + + <filter-def name='LiveFilter' condition=':LiveParam = Live'> + <filter-param name='LiveParam' type='boolean'/> + </filter-def> + +</hibernate-mapping>"; + + var cfg = GetConfiguration(); + cfg.AddXmlString(classMap); + cfg.AddXmlString(filterDef); + Assert.That(cfg.FiltersSecondPasses.Count, Is.EqualTo(0)); + Assert.That(cfg.FilterDefinitions.Keys, Has.Member("LiveFilter")); + Assert.That(cfg.FilterDefinitions["LiveFilter"], Is.Not.Null); + + cfg.BuildMappings(); + Assert.That(cfg.FilterDefinitions.Count, Is.EqualTo(1)); + + var pc = cfg.GetClassMapping(typeof(TestClass)); + Assert.That(pc.FilterMap["LiveFilter"], Is.EqualTo("Live = 1")); + } + + [Test] + [Description("Filter-def duplication should Throw exception")] + public void DuplicatedFilterDef() + { + const string filterDef = @"<hibernate-mapping xmlns='urn:nhibernate-mapping-2.2' > + + <filter-def name='LiveFilter'> + <filter-param name='LiveParam' type='boolean'/> + </filter-def> + + <filter-def name='LiveFilter'> + <filter-param name='LiveParam' type='boolean'/> + </filter-def> + +</hibernate-mapping>"; + + var cfg = GetConfiguration(); + var e = Assert.Throws<MappingException>(() => cfg.AddXmlString(filterDef)); + Assert.That(e.InnerException, Is.Not.Null); + Assert.That(e.InnerException.Message, Text.Contains("Duplicated filter-def")); + } + + [Test] + [Description("Add a filtered class with condition but without a filter-def should Throw exception")] + public void MissedFilterDef() + { + const string classMap = @"<hibernate-mapping xmlns='urn:nhibernate-mapping-2.2' + default-lazy='false' + assembly='NHibernate.Test' + namespace='NHibernate.Test.FilterTest' > + + <class name='TestClass'> + <id name='Id' column='id'> + <generator class='assigned' /> + </id> + <property name='Name'/> + + <property name='Live'/> + <filter name='LiveFilter' condition='Live = 1'/> + </class> + +</hibernate-mapping>"; + var cfg = GetConfiguration(); + cfg.AddXmlString(classMap); + var e = Assert.Throws<MappingException>(()=>cfg.BuildSessionFactory()); + Assert.That(e.Message, Text.StartsWith("filter-def for filter named")); + Assert.That(e.Message, Text.Contains("was not found")); + } + + [Test] + [Description("Filter-def without reference to it should Throw exception")] + public void FilterDefWithoutReference() + { + const string filterDef = @"<hibernate-mapping xmlns='urn:nhibernate-mapping-2.2' > + + <filter-def name='LiveFilter'> + <filter-param name='LiveParam' type='boolean'/> + </filter-def> + +</hibernate-mapping>"; + + var cfg = GetConfiguration(); + cfg.AddXmlString(filterDef); + var e = Assert.Throws<MappingException>(() => cfg.BuildSessionFactory()); + Assert.That(e.Message, Text.StartsWith("filter-def for filter named")); + Assert.That(e.Message, Text.Contains("was never used to filter classes nor collections.")); + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/FilterSecondPassArgsFixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/FilterSecondPassArgsFixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/FilterSecondPassArgsFixture.cs 2009-08-03 22:25:32 UTC (rev 4677) @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using NHibernate.Mapping; +using NUnit.Framework; +using NHibernate.Cfg; + +namespace NHibernate.Test.FilterTest +{ + [TestFixture] + public class FilterSecondPassArgsFixture + { + public class FakeFilterable: IFilterable + { + public void AddFilter(string name, string condition) + { + throw new NotImplementedException(); + } + + public IDictionary<string, string> FilterMap + { + get { throw new NotImplementedException(); } + } + } + [Test] + public void CtorProtection() + { + Assert.Throws<ArgumentNullException>(() => new FilterSecondPassArgs(null, "")); + Assert.Throws<ArgumentNullException>(() => new FilterSecondPassArgs(null, "a>1")); + Assert.Throws<ArgumentNullException>(() => new FilterSecondPassArgs(new FakeFilterable(), null)); + Assert.Throws<ArgumentNullException>(() => new FilterSecondPassArgs(new FakeFilterable(), "")); + Assert.DoesNotThrow(() => new FilterSecondPassArgs(new FakeFilterable(), "a>1")); + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/SimpleFiltered.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/SimpleFiltered.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/SimpleFiltered.hbm.xml 2009-08-03 22:25:32 UTC (rev 4677) @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + default-lazy="false" + assembly="NHibernate.Test" + namespace="NHibernate.Test.FilterTest" > + + <class name="TestClass"> + <id name="Id" column="id"> + <generator class="assigned" /> + </id> + <property name="Name"/> + <property name="Live" type="Boolean" /> + <filter name="LiveFilter" /> + <filter name="LiveFilter2" /> + </class> + +</hibernate-mapping> \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/SimpleFilteredFiltersDefsOk.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/SimpleFilteredFiltersDefsOk.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/SimpleFilteredFiltersDefsOk.hbm.xml 2009-08-03 22:25:32 UTC (rev 4677) @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> + + <filter-def name="LiveFilter" condition=":LiveParam = Live"> + <filter-param name="LiveParam" type="boolean"/> + </filter-def> + + <filter-def name="LiveFilter2"> + <![CDATA[Name = :LiveParam2]]> + <filter-param name="LiveParam2" type="string"/> + </filter-def> +</hibernate-mapping> \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/WrongFilterDefInClass.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/WrongFilterDefInClass.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/WrongFilterDefInClass.hbm.xml 2009-08-03 22:25:32 UTC (rev 4677) @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + default-lazy="false" + assembly="NHibernate.Test" + namespace="NHibernate.Test.FilterTest" > + + <class name="TestClass"> + <id name="Id" column="id"> + <generator class="assigned" /> + </id> + <property name="Name" type="StringClob" length="100000" /> + + <property name="Live" type="Boolean" /> + <filter name="LiveFilter"/> + </class> + + <filter-def name="LiveFilter"> + <filter-param name="LiveParam" type="boolean"/> + </filter-def> + +</hibernate-mapping> \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/defs.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/defs.hbm.xml 2009-08-02 22:35:41 UTC (rev 4676) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/FilterTest/defs.hbm.xml 2009-08-03 22:25:32 UTC (rev 4677) @@ -19,8 +19,4 @@ <filter-def name="seniorSalespersons"> <filter-param name="asOfDate" type="DateTime"/> </filter-def> - - <filter-def name="cat"> - <filter-param name="catId" type="long"/> - </filter-def> </hibernate-mapping> \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-02 22:35:41 UTC (rev 4676) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-03 22:25:32 UTC (rev 4677) @@ -105,6 +105,8 @@ <Compile Include="CfgTest\ConfigurationSchemaFixture.cs" /> <Compile Include="CfgTest\ConfigurationSerializationTests.cs" /> <Compile Include="CfgTest\DefaultNsAssmFixture.cs" /> + <Compile Include="FilterTest\ConfigFixture.cs" /> + <Compile Include="FilterTest\FilterSecondPassArgsFixture.cs" /> <Compile Include="CfgTest\HbmBinderFixture.cs" /> <Compile Include="CfgTest\HbmOrderingFixture.cs" /> <Compile Include="CfgTest\LocatedInTestAssembly.cs" /> @@ -1954,6 +1956,9 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="FilterTest\WrongFilterDefInClass.hbm.xml" /> + <EmbeddedResource Include="FilterTest\SimpleFiltered.hbm.xml" /> + <EmbeddedResource Include="FilterTest\SimpleFilteredFiltersDefsOk.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1898\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1907\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1899\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2009-08-04 12:49:55
|
Revision: 4679 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4679&view=rev Author: ricbrown Date: 2009-08-04 12:49:38 +0000 (Tue, 04 Aug 2009) Log Message: ----------- Fix NH-1908 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Model.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs 2009-08-03 22:45:29 UTC (rev 4678) +++ branches/2.1.x/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs 2009-08-04 12:49:38 UTC (rev 4679) @@ -72,19 +72,13 @@ // NH Different behaviour NH-1776 // Analyze all named parameters declared after filters // in general all named parameters but depend on the complexity of the query (see sub query) - foreach (ParameterInfo entry in _namedParameters.Values) + RestoreOriginalParameterLocations(); + foreach (int filterParameterLocation in parameters.FilteredParameterLocations) { - int amountOfPush = 0; - foreach (int existingParameterLocation in parameters.FilteredParameterLocations) + foreach (ParameterInfo entry in _namedParameters.Values) { - // a parameter span, at least, one value; where span more than one all values are cosecutive - // the first position determines the position of the others values - if (entry.SqlLocations[0]+amountOfPush >= existingParameterLocation) - { - amountOfPush++; - } + entry.IncrementLocationAfterFilterLocation(filterParameterLocation); } - entry.IncrementLocation(amountOfPush); } } @@ -123,6 +117,14 @@ get { return _ordinalParameters.Length; } } + private void RestoreOriginalParameterLocations() + { + foreach (ParameterInfo entry in _namedParameters.Values) + { + entry.RestoreOriginalParameterLocations(); + } + } + private ParameterInfo GetOrdinalParameterInfo(int ordinalPosition) { // remember that ordinal parameters numbers are 1-based!!! @@ -169,15 +171,22 @@ public IType ExpectedType { get; private set; } - public void IncrementLocation(int amountOfPush) + public void RestoreOriginalParameterLocations() { - if(amountOfPush <= 0) + for (int i = 0; i < sqlLocations.Length; i++) { - return; // short cut + sqlLocations[i] = originalLocation[i]; } + } + + public void IncrementLocationAfterFilterLocation(int filterParameterLocation) + { for (int i = 0; i < sqlLocations.Length; i++) { - sqlLocations[i] = originalLocation[i] + amountOfPush; + if (sqlLocations[i] >= filterParameterLocation) + { + sqlLocations[i]++; + } } } } Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Fixture.cs 2009-08-04 12:49:38 UTC (rev 4679) @@ -0,0 +1,35 @@ +using System; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1908 +{ + [TestFixture] + public class Fixture : BugTestCase + { + + [Test] + public void QueryPropertyInBothFilterAndQuery() + { + using (ISession s = OpenSession()) + { + s.EnableFilter("validity") + .SetParameter("date", DateTime.Now); + + s.CreateQuery(@" + select + inv.ID + from + Invoice inv + join inv.Category cat with cat.ValidUntil > :now + left join cat.ParentCategory parentCat + where + inv.ID = :invId + and inv.Issued < :now + ") + .SetDateTime("now", DateTime.Now) + .SetInt32("invId", -999) + .List(); + } + } + } +} Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Mappings.hbm.xml 2009-08-04 12:49:38 UTC (rev 4679) @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1908"> + + <class name="Category"> + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + <property name="ValidUntil" type="DateTime" /> + <many-to-one name="ParentCategory" column="CategoryId" class="Category" /> + <filter name="validity" condition="ValidUntil > :date" /> + </class> + + <class name="Invoice"> + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + + <many-to-one name="Category" column="CategoryId" class="Category" /> + <property name="Issued" type="DateTime" /> + </class> + + <filter-def name="validity"> + <filter-param name="date" type="DateTime"/> + </filter-def> + +</hibernate-mapping> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Model.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Model.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Model.cs 2009-08-04 12:49:38 UTC (rev 4679) @@ -0,0 +1,18 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1908 +{ + public class Category + { + public virtual int ID { get; private set; } + public virtual Category ParentCategory { get; set; } + public virtual DateTime ValidUntil { get; set; } + } + + public class Invoice + { + public virtual int ID { get; private set; } + public virtual DateTime Issued { get; set; } + public virtual Category Category { get; set; } + } +} Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-03 22:45:29 UTC (rev 4678) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-04 12:49:38 UTC (rev 4679) @@ -546,6 +546,8 @@ <Compile Include="NHSpecificTest\NH1899\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1907\MyType.cs" /> <Compile Include="NHSpecificTest\NH1907\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1908\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1908\Model.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> <Compile Include="NHSpecificTest\NH473\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Parent.cs" /> @@ -1956,6 +1958,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1908\Mappings.hbm.xml" /> <EmbeddedResource Include="FilterTest\WrongFilterDefInClass.hbm.xml" /> <EmbeddedResource Include="FilterTest\SimpleFiltered.hbm.xml" /> <EmbeddedResource Include="FilterTest\SimpleFilteredFiltersDefsOk.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dav...@us...> - 2009-08-04 19:35:30
|
Revision: 4681 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4681&view=rev Author: davybrion Date: 2009-08-04 19:35:21 +0000 (Tue, 04 Aug 2009) Log Message: ----------- fix NH-1904 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Properties/BasicPropertyAccessor.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Properties/BasicPropertyAccessor.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Properties/BasicPropertyAccessor.cs 2009-08-04 12:51:17 UTC (rev 4680) +++ branches/2.1.x/nhibernate/src/NHibernate/Properties/BasicPropertyAccessor.cs 2009-08-04 19:35:21 UTC (rev 4681) @@ -130,13 +130,18 @@ return null; } - // the BindingFlags.IgnoreCase is important here because if type is a struct, the GetProperty method does - // not ignore case by default. If type is a class, it _does_ ignore case... we're better off explicitly - // stating that casing should be ignored so we get the same behavior for both structs and classes - PropertyInfo property = - type.GetProperty(propertyName, - BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.IgnoreCase); + BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly; + if (type.IsValueType) + { + // the BindingFlags.IgnoreCase is important here because if type is a struct, the GetProperty method does + // not ignore case by default. If type is a class, it _does_ ignore case... we're better off explicitly + // stating that casing should be ignored so we get the same behavior for both structs and classes + bindingFlags = bindingFlags | BindingFlags.IgnoreCase; + } + + PropertyInfo property = type.GetProperty(propertyName, bindingFlags); + if (property != null && property.CanWrite) { return new BasicSetter(type, property, propertyName); Copied: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs (from rev 4680, branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Fixture.cs) =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs 2009-08-04 19:35:21 UTC (rev 4681) @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; + +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1904 +{ + [TestFixture] + public class Fixture : BugTestCase + { + [Test] + public void ExecuteQuery() + { + using (ISession session = OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + Invoice invoice = new Invoice(); + invoice.Issued = DateTime.Now; + + session.Save(invoice); + transaction.Commit(); + } + + using (ISession session = OpenSession()) + { + IList<Invoice> invoices = session.CreateCriteria<Invoice>().List<Invoice>(); + } + } + + protected override void OnTearDown() + { + base.OnTearDown(); + using (ISession session = OpenSession()) + { + session.CreateQuery("delete from Invoice").ExecuteUpdate(); + session.Flush(); + } + } + } +} Property changes on: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Fixture.cs ___________________________________________________________________ Added: svn:mergeinfo + /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Fixture.cs:4657 Copied: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml (from rev 4680, branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Mappings.hbm.xml) =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml 2009-08-04 19:35:21 UTC (rev 4681) @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1904"> + + <class name="Invoice"> + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + + <property name="Issued" type="DateTime" /> + </class> + +</hibernate-mapping> Property changes on: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Mappings.hbm.xml ___________________________________________________________________ Added: svn:mergeinfo + /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Mappings.hbm.xml:4657 Copied: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs (from rev 4680, branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Model.cs) =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs 2009-08-04 19:35:21 UTC (rev 4681) @@ -0,0 +1,12 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1904 +{ + public class Invoice + { + public virtual int ID { get; private set; } + public virtual DateTime Issued { get; set; } + + protected virtual DateTime issued { get; set; } + } +} Property changes on: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1904/Model.cs ___________________________________________________________________ Added: svn:mergeinfo + /trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1908/Model.cs:4657 Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-04 12:51:17 UTC (rev 4680) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-04 19:35:21 UTC (rev 4681) @@ -544,6 +544,8 @@ <Compile Include="NHSpecificTest\NH1898\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1899\DomainClass.cs" /> <Compile Include="NHSpecificTest\NH1899\SampleTest.cs" /> + <Compile Include="NHSpecificTest\NH1904\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1904\Model.cs" /> <Compile Include="NHSpecificTest\NH1907\MyType.cs" /> <Compile Include="NHSpecificTest\NH1907\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1908\Fixture.cs" /> @@ -1958,6 +1960,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1904\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1908\Mappings.hbm.xml" /> <EmbeddedResource Include="FilterTest\WrongFilterDefInClass.hbm.xml" /> <EmbeddedResource Include="FilterTest\SimpleFiltered.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2009-08-10 15:31:30
|
Revision: 4687 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4687&view=rev Author: ricbrown Date: 2009-08-10 15:31:22 +0000 (Mon, 10 Aug 2009) Log Message: ----------- Fix NH-1914 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Engine/ForeignKeys.cs branches/2.1.x/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/AssignedClass.cs branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/AssignedClass.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/AssignedFixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/Model.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Engine/ForeignKeys.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Engine/ForeignKeys.cs 2009-08-08 17:49:24 UTC (rev 4686) +++ branches/2.1.x/nhibernate/src/NHibernate/Engine/ForeignKeys.cs 2009-08-10 15:31:22 UTC (rev 4687) @@ -1,3 +1,5 @@ +using log4net; +using NHibernate.Id; using NHibernate.Persister.Entity; using NHibernate.Proxy; using NHibernate.Type; @@ -7,6 +9,8 @@ /// <summary> Algorithms related to foreign key constraint transparency </summary> public static class ForeignKeys { + private static readonly ILog log = LogManager.GetLogger(typeof(ForeignKeys)); + public class Nullifier { private readonly bool isDelete; @@ -195,6 +199,17 @@ if (assumed.HasValue) return assumed.Value; + if (persister.IdentifierGenerator is Assigned) + { + // When using assigned identifiers we cannot tell if an entity + // is transient or detached without querying the database. + // This could potentially cause Select N+1 in cascaded saves, so warn the user. + log.Warn("Unable to determine if " + entity.ToString() + + " with assigned identifier " + persister.GetIdentifier(entity, session.EntityMode) + + " is transient or detached; querying the database." + + " Use explicit Save() or Update() in session to prevent this."); + } + // hit the database, after checking the session cache for a snapshot System.Object[] snapshot = session.PersistenceContext.GetDatabaseSnapshot(persister.GetIdentifier(entity, session.EntityMode), persister); Modified: branches/2.1.x/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2009-08-08 17:49:24 UTC (rev 4686) +++ branches/2.1.x/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2009-08-10 15:31:22 UTC (rev 4687) @@ -3630,7 +3630,19 @@ // check the id unsaved-value bool? result2 = entityMetamodel.IdentifierProperty.UnsavedValue.IsUnsaved(id); if (result2.HasValue) - return result2; + { + if (IdentifierGenerator is Assigned) + { + // if using assigned identifier, we can only make assumptions + // if the value is a known unsaved-value + if (result2.Value) + return true; + } + else + { + return result2; + } + } // check to see if it is in the second-level cache if (HasCache) Added: branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/AssignedClass.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/AssignedClass.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/AssignedClass.cs 2009-08-10 15:31:22 UTC (rev 4687) @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace NHibernate.Test.IdTest +{ + public class Parent + { + public string Id { get; set; } + public string Name { get; set; } + public IList<Child> Children { get; set; } + } + + public class Child + { + public string Id { get; set; } + public Parent Parent { get; set; } + } +} Added: branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/AssignedClass.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/AssignedClass.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/AssignedClass.hbm.xml 2009-08-10 15:31:22 UTC (rev 4687) @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false"> + + <class name="NHibernate.Test.IdTest.Parent, NHibernate.Test"> + <id name="Id"> + <generator class="assigned" /> + </id> + + <property name="Name" /> + + <bag name="Children" inverse="true" cascade="all"> + <key column="Parent"/> + <one-to-many class="NHibernate.Test.IdTest.Child, NHibernate.Test"/> + </bag> + </class> + + <class name="NHibernate.Test.IdTest.Child, NHibernate.Test"> + <id name="Id"> + <generator class="assigned" /> + </id> + + <many-to-one name="Parent" class="NHibernate.Test.IdTest.Parent, NHibernate.Test" /> + </class> + +</hibernate-mapping> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/AssignedFixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/AssignedFixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/IdTest/AssignedFixture.cs 2009-08-10 15:31:22 UTC (rev 4687) @@ -0,0 +1,255 @@ +using System; +using System.Collections.Generic; +using log4net; +using log4net.Core; +using NUnit.Framework; + +namespace NHibernate.Test.IdTest +{ + + [TestFixture] + public class AssignedFixture : IdFixtureBase + { + + private string[] GetAssignedIdentifierWarnings(LogSpy ls) + { + List<string> warnings = new List<string>(); + + foreach (string logEntry in ls.GetWholeLog().Split('\n')) + if (logEntry.Contains("Unable to determine if") && logEntry.Contains("is transient or detached")) + warnings.Add(logEntry); + + return warnings.ToArray(); + } + + protected override string TypeName + { + get { return "Assigned"; } + } + + protected override void OnTearDown() + { + base.OnTearDown(); + + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.CreateQuery("delete from Child").ExecuteUpdate(); + s.CreateQuery("delete from Parent").ExecuteUpdate(); + t.Commit(); + } + } + + [Test] + public void SaveOrUpdate_Save() + { + using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + + Parent parent = + new Parent() + { + Id = "parent", + Children = new List<Child>(), + }; + + s.SaveOrUpdate(parent); + t.Commit(); + + long actual = s.CreateQuery("select count(p) from Parent p").UniqueResult<long>(); + Assert.That(actual, Is.EqualTo(1)); + + string[] warnings = GetAssignedIdentifierWarnings(ls); + Assert.That(warnings.Length, Is.EqualTo(1)); + Assert.IsTrue(warnings[0].Contains("parent")); + } + } + + [Test] + public void SaveNoWarning() + { + using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + + Parent parent = + new Parent() + { + Id = "parent", + Children = new List<Child>(), + }; + + s.Save(parent); + t.Commit(); + + long actual = s.CreateQuery("select count(p) from Parent p").UniqueResult<long>(); + Assert.That(actual, Is.EqualTo(1)); + + string[] warnings = GetAssignedIdentifierWarnings(ls); + Assert.That(warnings.Length, Is.EqualTo(0)); + } + } + + [Test] + public void SaveOrUpdate_Update() + { + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + + s.Save(new Parent() { Id = "parent", Name = "before" }); + t.Commit(); + } + + using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + + Parent parent = + new Parent() + { + Id = "parent", + Name = "after", + }; + + s.SaveOrUpdate(parent); + t.Commit(); + + string[] warnings = GetAssignedIdentifierWarnings(ls); + Assert.That(warnings.Length, Is.EqualTo(1)); + Assert.IsTrue(warnings[0].Contains("parent")); + } + + using (ISession s = OpenSession()) + { + Parent parent = s.CreateQuery("from Parent").UniqueResult<Parent>(); + Assert.That(parent.Name, Is.EqualTo("after")); + } + } + + [Test] + public void UpdateNoWarning() + { + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + + s.Save(new Parent() { Id = "parent", Name = "before" }); + t.Commit(); + } + + using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + + Parent parent = + new Parent() + { + Id = "parent", + Name = "after", + }; + + s.Update(parent); + t.Commit(); + + string[] warnings = GetAssignedIdentifierWarnings(ls); + Assert.That(warnings.Length, Is.EqualTo(0)); + } + + using (ISession s = OpenSession()) + { + Parent parent = s.CreateQuery("from Parent").UniqueResult<Parent>(); + Assert.That(parent.Name, Is.EqualTo("after")); + } + } + + [Test] + public void InsertCascade() + { + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + + s.Save(new Child() { Id = "detachedChild" }); + t.Commit(); + } + + using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + + Parent parent = + new Parent() + { + Id = "parent", + Children = new List<Child>(), + }; + + parent.Children.Add(new Child() { Id = "detachedChild", Parent = parent }); + parent.Children.Add(new Child() { Id = "transientChild", Parent = parent }); + + s.Save(parent); + t.Commit(); + + long actual = s.CreateQuery("select count(c) from Child c").UniqueResult<long>(); + Assert.That(actual, Is.EqualTo(2)); + + string[] warnings = GetAssignedIdentifierWarnings(ls); + Assert.That(warnings.Length, Is.EqualTo(2)); + Assert.IsTrue(warnings[0].Contains("detachedChild")); + Assert.IsTrue(warnings[1].Contains("transientChild")); + } + } + + [Test] + public void InsertCascadeNoWarning() + { + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + + s.Save(new Child() { Id = "persistedChild" }); + t.Commit(); + } + + using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + + Parent parent = + new Parent() + { + Id = "parent", + Children = new List<Child>(), + }; + + s.Save(parent); + + Child child1 = s.Load<Child>("persistedChild"); + child1.Parent = parent; + parent.Children.Add(child1); + + Child child2 = new Child() { Id = "transientChild", Parent = parent }; + s.Save(child2); + parent.Children.Add(child2); + + t.Commit(); + + long actual = s.CreateQuery("select count(c) from Child c").UniqueResult<long>(); + Assert.That(actual, Is.EqualTo(2)); + + string[] warnings = GetAssignedIdentifierWarnings(ls); + Assert.That(warnings.Length, Is.EqualTo(0)); + } + } + + } + +} Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/Fixture.cs 2009-08-10 15:31:22 UTC (rev 4687) @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1914 +{ + [TestFixture] + public class Fixture : BugTestCase + { + + [Test] + public void CascadeInsertAssigned() + { + IDS _IDS = new IDS(); + _IDS.Identifier = Guid.NewGuid().ToString(); + _IDS.Name = "IDS"; + _IDS.CRSPLUTs = new Dictionary<String, ListOfHLUT>(); + _IDS.CRSPLUTs.Add("a", new ListOfHLUT()); + + + HLUT _HLUT = new HLUT(); + _HLUT.Identifier = 1123; + _HLUT.Name = "HLUT"; + _HLUT.Entries = new List<Entry>(); + _HLUT.Entries.Add(new Entry(1.1, .1)); + _HLUT.Entries.Add(new Entry(2.2, .2)); + + _IDS.CRSPLUTs["a"].Values.Add(_HLUT); + + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + s.Save(_IDS); + t.Commit(); + } + + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + IDS _IDSRead = s.Load<IDS>(_IDS.Identifier); + + Assert.IsNotNull(_IDSRead); + Assert.IsNotNull(_IDSRead.CRSPLUTs); + Assert.IsNotNull(_IDSRead.CRSPLUTs["a"]); + Assert.IsNotNull(_IDSRead.CRSPLUTs["a"].Values[0]); + Assert.IsNotNull(_IDSRead.CRSPLUTs["a"].Values[0].Entries); + + s.Delete(_IDSRead); + t.Commit(); + } + } + + } +} Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/Mappings.hbm.xml 2009-08-10 15:31:22 UTC (rev 4687) @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1914" + default-lazy="false"> + + <class name="IDS" table="IDS"> + <id name="Identifier"> + <generator class="assigned" /> + </id> + <property name="Name" not-null="true" /> + <map name="CRSPLUTs" table="CRSPLUTs" cascade="all-delete-orphan"> + <key column="ParentID"/> + <index column="OrganID" type="String"/> + <one-to-many class="ListOfHLUT"/> + </map> + </class> + + <class name="ListOfHLUT" table="ListOfHLUT"> + <id name="ID" column="CollectionID"> + <generator class="native" /> + </id> + <list name="Values" table="CustomValues" cascade="all"> + <key column="ParentID"/> + <index column="Indexer" type="Int32"/> + <one-to-many class="HLUT"/> + </list> + </class> + + <class name="HLUT" table="HLUT"> + + <!--NotWorking with below id generation.--> + <id name="Identifier" unsaved-value="0"> + <generator class="assigned" /> + </id> + + <!--Working with below id generation.--> + <!-- + <id name="Identifier" unsaved-value="any"> + <generator class="native" /> + </id>--> + + <property name="Name" not-null="true" /> + <list name="Entries" table="Entries" cascade="all"> + <key column="ParentID"/> + <index column="Indexer" type="Int32"/> + <composite-element class="Entry"> + <property name="Key1" type="Double" access="field" /> + <property name="Value" type="Double" access="field"/> + </composite-element> + </list> + </class> + +</hibernate-mapping> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/Model.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/Model.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1914/Model.cs 2009-08-10 15:31:22 UTC (rev 4687) @@ -0,0 +1,269 @@ +using System; +using System.Xml.Serialization; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +using NHibernate; +using NHibernate.Classic; + +namespace NHibernate.Test.NHSpecificTest.NH1914 +{ + public class IDS + { + public String Identifier { get; set; } + + public String Name { get; set; } + + public IDictionary<String,ListOfHLUT> CRSPLUTs { get; set; } + } + + public class ListOfHLUT : CustomList<HLUT> + { + public ListOfHLUT() : base() { } + public ListOfHLUT(IEnumerable<HLUT> theValues) : base(theValues) { } + } + + public class HLUT : LUT + { + public String Name { get; set; } + } + + public class LUT + { + public long Identifier { get; set; } + + public IList<Entry> Entries { get; set; } + } + + public struct Entry + { + public Entry(Double theKey, Double theValue) + { + Key1 = theKey; + Value = theValue; + } + + public Double Key1; + + public Double Value; + } + + public class CustomList<T> : IList<T>, IList, ILifecycle + { + #region Constructors + + public CustomList() + { + myValues = new List<T>(); + } + + public CustomList(IEnumerable<T> theValues) + { + myValues = new List<T>(theValues); + } + #endregion + + #region Member Variables + protected IList<T> myValues; + #endregion + + #region NHibernate Members + [XmlIgnore] + public virtual String Identifier { get; set; } + + [XmlIgnore] + public virtual long ID { get; set; } + + [XmlIgnore] + public virtual IList<T> Values + { + get + { + return myValues; + } + set + { + myValues = value; + } + } + #endregion + + #region ILifecycle Members + + public LifecycleVeto OnDelete(ISession s) + { + return LifecycleVeto.NoVeto; + } + + public void OnLoad(ISession s, object id) + { + + } + + public LifecycleVeto OnSave(ISession s) + { + return LifecycleVeto.NoVeto; + } + + public LifecycleVeto OnUpdate(ISession s) + { + return LifecycleVeto.NoVeto; + } + + #endregion + + #region IList<T> Members + + public int IndexOf(T item) + { + return myValues.IndexOf(item); + } + + public void Insert(int index, T item) + { + myValues.Insert(index, item); + } + + public void RemoveAt(int index) + { + myValues.RemoveAt(index); + } + + public T this[int index] + { + get + { + return myValues[index]; + } + set + { + myValues[index] = value; + } + } + + #endregion + + #region ICollection<T> Members + + public void Add(T item) + { + myValues.Add(item); + } + + public void Clear() + { + myValues.Clear(); + } + + public bool Contains(T item) + { + return myValues.Contains(item); + } + + public void CopyTo(T[] array, int arrayIndex) + { + myValues.CopyTo(array, arrayIndex); + } + + public int Count + { + get { return myValues.Count; } + } + + public bool IsReadOnly + { + get { return myValues.IsReadOnly; } + } + + public bool Remove(T item) + { + return myValues.Remove(item); + } + + #endregion + + #region IEnumerable<T> Members + + public IEnumerator<T> GetEnumerator() + { + return myValues.GetEnumerator(); + } + + #endregion + + #region IEnumerable Members + + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + #endregion + + #region IList Members + + public int Add(object value) + { + return ((IList)myValues).Add(value); + } + + public bool Contains(object value) + { + return ((IList)myValues).Contains(value); + } + + public int IndexOf(object value) + { + return ((IList)myValues).IndexOf(value); + } + + public void Insert(int index, object value) + { + ((IList)myValues).Insert(index, value); + } + + public bool IsFixedSize + { + get { return ((IList)myValues).IsFixedSize; } + } + + public void Remove(object value) + { + ((IList)myValues).Remove(value); + } + + object IList.this[int index] + { + get + { + return ((IList)myValues)[index]; + } + set + { + ((IList)myValues)[index] = value; + } + } + + #endregion + + #region ICollection Members + + public void CopyTo(Array array, int index) + { + ((IList)myValues).CopyTo(array, index); + } + + public bool IsSynchronized + { + get { return ((IList)myValues).IsSynchronized; } + } + + public object SyncRoot + { + get { return ((IList)myValues).SyncRoot; } + } + + #endregion + } +} Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-08 17:49:24 UTC (rev 4686) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-10 15:31:22 UTC (rev 4687) @@ -343,6 +343,8 @@ <Compile Include="HQL\Ast\WithClauseFixture.cs" /> <Compile Include="HQL\Ast\Zoo.cs" /> <Compile Include="HQL\BaseFunctionFixture.cs" /> + <Compile Include="IdTest\AssignedClass.cs" /> + <Compile Include="IdTest\AssignedFixture.cs" /> <Compile Include="IdTest\TableGeneratorFixture.cs" /> <Compile Include="LazyOneToOne\Employee.cs" /> <Compile Include="LazyOneToOne\Employment.cs" /> @@ -550,6 +552,8 @@ <Compile Include="NHSpecificTest\NH1907\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1908\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1908\Model.cs" /> + <Compile Include="NHSpecificTest\NH1914\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1914\Model.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> <Compile Include="NHSpecificTest\NH473\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Parent.cs" /> @@ -1960,6 +1964,8 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1914\Mappings.hbm.xml" /> + <EmbeddedResource Include="IdTest\AssignedClass.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1904\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1908\Mappings.hbm.xml" /> <EmbeddedResource Include="FilterTest\WrongFilterDefInClass.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aye...@us...> - 2009-08-14 05:26:30
|
Revision: 4690 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4690&view=rev Author: ayenderahien Date: 2009-08-14 05:26:21 +0000 (Fri, 14 Aug 2009) Log Message: ----------- Fixing NH-1928 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/ParameterParser.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/Model.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/ParameterParser.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/ParameterParser.cs 2009-08-13 11:56:42 UTC (rev 4689) +++ branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/ParameterParser.cs 2009-08-14 05:26:21 UTC (rev 4690) @@ -64,7 +64,17 @@ if (afterNewLine && (indx + 1 < stringLength) && sqlString.Substring(indx, 2) == "--") { var closeCommentIdx = sqlString.IndexOf(Environment.NewLine, indx + 2); - recognizer.Other(sqlString.Substring(indx, closeCommentIdx - indx)); + string comment; + if (closeCommentIdx == -1) + { + closeCommentIdx = sqlString.Length; + comment = sqlString.Substring(indx); + } + else + { + comment = sqlString.Substring(indx, closeCommentIdx - indx + Environment.NewLine.Length); + } + recognizer.Other(comment); indx = closeCommentIdx + NewLineLength - 1; continue; } Property changes on: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928 ___________________________________________________________________ Added: svn:mergeinfo + Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/Fixture.cs 2009-08-14 05:26:21 UTC (rev 4690) @@ -0,0 +1,73 @@ +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1928 +{ + [TestFixture] + public class Fixture : BugTestCase + { + [Test] + public void SqlCommentAtBeginningOfLine() + { + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + var query = session.CreateSQLQuery( + @" +select 1 +from + Customer +where +-- this is a comment + Name = 'Joe' + and Age > 50 +"); + + Assert.DoesNotThrow(() => query.List()); + tx.Commit(); + } + } + + [Test] + public void SqlCommentAtBeginningOfLastLine() + { + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + var query = session.CreateSQLQuery( + @" +select 1 +from + Customer +where + Name = 'Joe' + and Age > 50 +-- this is a comment"); + + Assert.DoesNotThrow(() => query.List()); + tx.Commit(); + } + } + + [Test] + public void SqlCommentAfterBeginningOfLine() + { + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + var query = session.CreateSQLQuery( + @" +select 1 +from + Customer +where + -- this is a comment + Name = 'Joe' + and Age > 50 +"); + + Assert.DoesNotThrow(() => query.List()); + tx.Commit(); + } + } + } +} Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/Mappings.hbm.xml 2009-08-14 05:26:21 UTC (rev 4690) @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1928"> + + <class name="Customer" > + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + + <property name="Age" type="Int32" /> + <property name="Name" type="String" /> + </class> + +</hibernate-mapping> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/Model.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/Model.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1928/Model.cs 2009-08-14 05:26:21 UTC (rev 4690) @@ -0,0 +1,9 @@ +namespace NHibernate.Test.NHSpecificTest.NH1928 +{ + public class Customer + { + public virtual int ID { get; private set; } + public virtual string Name { get; set; } + public virtual int Age { get; set; } + } +} Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-13 11:56:42 UTC (rev 4689) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-14 05:26:21 UTC (rev 4690) @@ -359,6 +359,8 @@ <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagPartialNameFixture.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagFixture.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\Something.cs" /> + <Compile Include="NHSpecificTest\NH1928\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1928\Model.cs" /> <Compile Include="NHSpecificTest\NH1044\Domain.cs" /> <Compile Include="NHSpecificTest\NH1044\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1069\Domain.cs" /> @@ -1964,6 +1966,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1928\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1914\Mappings.hbm.xml" /> <EmbeddedResource Include="IdTest\AssignedClass.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1904\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aye...@us...> - 2009-08-14 06:58:09
|
Revision: 4691 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4691&view=rev Author: ayenderahien Date: 2009-08-14 06:57:52 +0000 (Fri, 14 Aug 2009) Log Message: ----------- Fixing NH-1927, will not duplicate filter condition to where clause if it is already on the join clause. Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Loader/JoinWalker.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/Model.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Loader/JoinWalker.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Loader/JoinWalker.cs 2009-08-14 05:26:21 UTC (rev 4690) +++ branches/2.1.x/nhibernate/src/NHibernate/Loader/JoinWalker.cs 2009-08-14 06:57:52 UTC (rev 4691) @@ -575,7 +575,9 @@ if (enabledFilters.Count > 0) { var manyToOneFilterFragment = oj.Joinable.FilterFragment(oj.RHSAlias, enabledFilters); - outerjoin.AddCondition(manyToOneFilterFragment); + var joinClauseDoesNotContainsFilterAlready = outerjoin.ToFromFragmentString.IndexOfCaseInsensitive(manyToOneFilterFragment) == -1; + if(joinClauseDoesNotContainsFilterAlready) + outerjoin.AddCondition(manyToOneFilterFragment); } } last = oj; Property changes on: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927 ___________________________________________________________________ Added: svn:mergeinfo + Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/Fixture.cs 2009-08-14 06:57:52 UTC (rev 4691) @@ -0,0 +1,105 @@ +using System; +using NHibernate.Criterion; +using NHibernate.SqlCommand; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1927 +{ + [TestFixture] + public class Fixture : BugTestCase + { + private static readonly DateTime MAX_DATE = new DateTime(3000, 1, 1); + private static readonly DateTime VALID_DATE = new DateTime(2000, 1, 1); + + protected override void OnSetUp() + { + base.OnSetUp(); + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + var joe = new Customer() {ValidUntil = MAX_DATE}; + session.Save(joe); + + tx.Commit(); + } + } + } + + protected override void OnTearDown() + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.Delete("from Invoice"); + session.Delete("from Customer"); + tx.Commit(); + } + } + base.OnTearDown(); + } + + private delegate Customer QueryFactoryFunc(ISession session); + + private void TestQuery(QueryFactoryFunc queryFactoryFunc) + { + // test without filter + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + Assert.That(queryFactoryFunc(session), Is.Not.Null, "failed with filter off"); + tx.Commit(); + } + + // test with the validity filter + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + session.EnableFilter("validity").SetParameter("date", VALID_DATE); + Assert.That(queryFactoryFunc(session), Is.Not.Null, "failed with filter on"); + tx.Commit(); + } + + } + + [Test] + public void CriteriaWithEagerFetch() + { + TestQuery(s => s.CreateCriteria(typeof (Customer)) + .SetFetchMode("Invoices", FetchMode.Eager) + .UniqueResult<Customer>() + ); + } + + [Test] + public void CriteriaWithoutEagerFetch() + { + TestQuery(s => s + .CreateCriteria(typeof(Customer)) + .UniqueResult<Customer>() + ); + } + + [Test] + public void HqlWithEagerFetch() + { + TestQuery(s => s.CreateQuery(@" + select c + from Customer c + left join fetch c.Invoices" + ) + .UniqueResult<Customer>()); + } + + [Test] + public void HqlWithoutEagerFetch() + { + TestQuery(s => s.CreateQuery(@" + select c + from Customer c" + ) + .UniqueResult<Customer>()); + } + } +} Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/Mappings.hbm.xml 2009-08-14 06:57:52 UTC (rev 4691) @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1927"> + + <class name="Customer" > + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + + <set name="Invoices" inverse="true" lazy="true" > + <key column="CustomerID"/> + <one-to-many class="Invoice"/> + <filter name="validity" condition="ValidUntil > :date" /> + </set> + + <property name="ValidUntil" type="DateTime" /> + <filter name="validity" condition="ValidUntil > :date" /> + </class> + + <class name="Invoice"> + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + + <property name="ValidUntil" type="DateTime" /> + <many-to-one name="Customer" column="CustomerID" class="Customer"/> + <filter name="validity" condition="ValidUntil > :date" /> + </class> + + <filter-def name="validity"> + <filter-param name="date" type="DateTime"/> + </filter-def> +</hibernate-mapping> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/Model.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/Model.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1927/Model.cs 2009-08-14 06:57:52 UTC (rev 4691) @@ -0,0 +1,19 @@ +using System; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1927 +{ + public class Customer + { + public virtual int ID { get; private set; } + public virtual ISet<Invoice> Invoices { get; set; } + public virtual DateTime ValidUntil { get; set; } + } + + public class Invoice + { + public virtual int ID { get; private set; } + public virtual DateTime ValidUntil { get; set; } + public virtual Customer Customer { get; set; } + } +} Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-14 05:26:21 UTC (rev 4690) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-14 06:57:52 UTC (rev 4691) @@ -359,6 +359,10 @@ <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagPartialNameFixture.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagFixture.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\Something.cs" /> + <Compile Include="NHSpecificTest\NH1919\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1919\Model.cs" /> + <Compile Include="NHSpecificTest\NH1927\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1927\Model.cs" /> <Compile Include="NHSpecificTest\NH1928\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1928\Model.cs" /> <Compile Include="NHSpecificTest\NH1044\Domain.cs" /> @@ -1966,6 +1970,8 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1919\Mappings.hbm.xml" /> + <EmbeddedResource Include="NHSpecificTest\NH1927\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1928\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1914\Mappings.hbm.xml" /> <EmbeddedResource Include="IdTest\AssignedClass.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2009-08-14 16:53:36
|
Revision: 4692 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4692&view=rev Author: ricbrown Date: 2009-08-14 16:53:29 +0000 (Fri, 14 Aug 2009) Log Message: ----------- Fix NH-1920 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/Model.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs 2009-08-14 06:57:52 UTC (rev 4691) +++ branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs 2009-08-14 16:53:29 UTC (rev 4692) @@ -106,21 +106,6 @@ return dialect.ApplyLocksToSql(sql, aliasedLockModes, keyColumnNames); } - protected override int BindParameterValues(IDbCommand statement, QueryParameters queryParameters, int startIndex, - ISessionImplementor session) - { - int position = startIndex; - - IList<IParameterSpecification> parameterSpecs = _queryTranslator.CollectedParameterSpecifications; - - foreach (var spec in parameterSpecs) - { - position += spec.Bind(statement, queryParameters, session, position); - } - - return position - startIndex; - } - protected override string[] Aliases { get { return _sqlAliases; } Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/Fixture.cs 2009-08-14 16:53:29 UTC (rev 4692) @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1920 +{ + [TestFixture] + public class Fixture : BugTestCase + { + + [Test] + public void Can_Query_Without_Collection_Size_Condition() + { + using (ISession sess = OpenSession()) + using (ITransaction tx = sess.BeginTransaction()) + { + sess.SaveOrUpdate(new Customer() { IsDeleted = false }); + tx.Commit(); + } + using (ISession sess = OpenSession()) + using (ITransaction tx = sess.BeginTransaction()) + { + sess.EnableFilter("state").SetParameter("deleted", false); + var result = sess + .CreateQuery("from Customer c join c.Orders o where c.id > :cid") + .SetParameter("cid", 0) + .List(); + Assert.That(result.Count == 0); + tx.Commit(); + } + using (ISession sess = OpenSession()) + using (ITransaction tx = sess.BeginTransaction()) + { + sess.Delete("from System.Object"); + tx.Commit(); + } + } + + [Test] + public void Can_Query_With_Collection_Size_Condition() + { + using (ISession sess = OpenSession()) + using (ITransaction tx = sess.BeginTransaction()) + { + sess.SaveOrUpdate(new Customer() { IsDeleted = false }); + tx.Commit(); + } + using (ISession sess = OpenSession()) + using (ITransaction tx = sess.BeginTransaction()) + { + sess.EnableFilter("state").SetParameter("deleted", false); + var result = sess + .CreateQuery("from Customer c join c.Orders o where c.id > :cid and c.Orders.size > 0") + .SetParameter("cid", 0) + .List(); + Assert.That(result.Count == 0); + tx.Commit(); + } + using (ISession sess = OpenSession()) + using (ITransaction tx = sess.BeginTransaction()) + { + sess.Delete("from System.Object"); + tx.Commit(); + } + } + + } +} Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/Mappings.hbm.xml 2009-08-14 16:53:29 UTC (rev 4692) @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1920"> + + <class name="Customer" table="Customers"> + <id name="Id"> + <generator class="native" /> + </id> + <bag name="Orders"> + <key column="Customer_Id" /> + <one-to-many class="Order" /> + <filter name="state" condition=":deleted = IsDeleted" /> + </bag> + <property name="IsDeleted" not-null="true" /> + </class> + + <class name="Order" table="Orders"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="IsDeleted" not-null="true" /> + <property name="Memo" not-null="false" /> + <many-to-one name="Customer" class="Customer" column="Customer_Id" /> + <filter name="state" condition=":deleted = IsDeleted" /> + </class> + + <filter-def name="state" condition=":deleted = IsDeleted"> + <filter-param name="deleted" type="Boolean"/> + </filter-def> + +</hibernate-mapping> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/Model.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/Model.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1920/Model.cs 2009-08-14 16:53:29 UTC (rev 4692) @@ -0,0 +1,28 @@ +using System; +using System.Xml.Serialization; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +using NHibernate; +using NHibernate.Classic; + +namespace NHibernate.Test.NHSpecificTest.NH1920 +{ + + public class Customer + { + public virtual int Id { get; set; } + public virtual bool IsDeleted { get; set; } + public virtual IList<Order> Orders { get; set; } + } + + public class Order + { + public virtual int Id { get; set; } + public virtual bool IsDeleted { get; set; } + public virtual string Memo { get; set; } + public virtual Customer Customer { get; set; } + } + +} Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-14 06:57:52 UTC (rev 4691) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-14 16:53:29 UTC (rev 4692) @@ -359,8 +359,8 @@ <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagPartialNameFixture.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagFixture.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\Something.cs" /> - <Compile Include="NHSpecificTest\NH1919\Fixture.cs" /> - <Compile Include="NHSpecificTest\NH1919\Model.cs" /> + <Compile Include="NHSpecificTest\NH1920\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1920\Model.cs" /> <Compile Include="NHSpecificTest\NH1927\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1927\Model.cs" /> <Compile Include="NHSpecificTest\NH1928\Fixture.cs" /> @@ -1970,7 +1970,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> - <EmbeddedResource Include="NHSpecificTest\NH1919\Mappings.hbm.xml" /> + <EmbeddedResource Include="NHSpecificTest\NH1920\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1927\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1928\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1914\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ric...@us...> - 2009-08-17 20:40:48
|
Revision: 4694 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4694&view=rev Author: ricbrown Date: 2009-08-17 20:40:40 +0000 (Mon, 17 Aug 2009) Log Message: ----------- Fix NH-1911 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Criterion/AggregateProjection.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/Model.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Criterion/AggregateProjection.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Criterion/AggregateProjection.cs 2009-08-14 17:06:41 UTC (rev 4693) +++ branches/2.1.x/nhibernate/src/NHibernate/Criterion/AggregateProjection.cs 2009-08-17 20:40:40 UTC (rev 4694) @@ -57,7 +57,7 @@ { aggregate, "(", StringHelper.RemoveAsAliasesFromSql(projection.ToSqlString(criteria, loc, criteriaQuery, - enabledFilters)).ToString(), ") as y", + enabledFilters)), ") as y", loc.ToString(), "_" }); } Property changes on: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911 ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/Fixture.cs 2009-08-17 20:40:40 UTC (rev 4694) @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using NUnit.Framework; +using NHibernate.Criterion; + +namespace NHibernate.Test.NHSpecificTest.NH1911 +{ + + [TestFixture] + public class Fixture : BugTestCase + { + + protected override void OnSetUp() + { + base.OnSetUp(); + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + s.Save(new LogEvent() { Name = "name parameter", Level = "Fatal" }); + s.Save(new LogEvent() { Name = "name parameter", Level = "NonFatal" }); + s.Save(new LogEvent() { Name = "name parameter", Level = "Fatal" }); + t.Commit(); + } + } + + protected override void OnTearDown() + { + base.OnTearDown(); + base.OnSetUp(); + using (ISession s = OpenSession()) + { + ITransaction t = s.BeginTransaction(); + s.CreateQuery("delete from System.Object").ExecuteUpdate(); + t.Commit(); + } + } + + [Test] + public void ConditionalAggregateProjection() + { + IProjection isError = + Projections.Conditional( + Expression.Eq("Level", "Fatal"), + Projections.Constant(1), + Projections.Constant(0)); + + using (ISession s = OpenSession()) + { + IList<object[]> actual = + s.CreateCriteria<LogEvent>() + .Add(Expression.Eq("Name", "name parameter")) + .SetProjection(Projections.ProjectionList() + .Add(Projections.RowCount()) + .Add(Projections.Sum(isError))) + .List<object[]>(); + + Assert.That(actual.Count, Is.EqualTo(1)); + Assert.That(actual[0][0], Is.EqualTo(3)); + Assert.That(actual[0][1], Is.EqualTo(2)); + } + } + + } + +} Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/Mappings.hbm.xml 2009-08-17 20:40:40 UTC (rev 4694) @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1911"> + + <class name="LogEvent"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="Name" /> + <property name="Level" /> + </class> + +</hibernate-mapping> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/Model.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/Model.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1911/Model.cs 2009-08-17 20:40:40 UTC (rev 4694) @@ -0,0 +1,20 @@ +using System; +using System.Xml.Serialization; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +using NHibernate; +using NHibernate.Classic; + +namespace NHibernate.Test.NHSpecificTest.NH1911 +{ + + public class LogEvent + { + public virtual int Id { get; set; } + public virtual string Name { get; set; } + public virtual string Level { get; set; } + } + +} Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-14 17:06:41 UTC (rev 4693) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-08-17 20:40:40 UTC (rev 4694) @@ -359,6 +359,8 @@ <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagPartialNameFixture.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagFixture.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\Something.cs" /> + <Compile Include="NHSpecificTest\NH1911\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1911\Model.cs" /> <Compile Include="NHSpecificTest\NH1920\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1920\Model.cs" /> <Compile Include="NHSpecificTest\NH1927\Fixture.cs" /> @@ -1970,6 +1972,7 @@ <EmbeddedResource Include="Bytecode\Lightweight\ProductLine.hbm.xml" /> <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1911\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1920\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1927\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1928\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |