From: <te...@us...> - 2008-10-03 21:11:54
|
Revision: 3810 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3810&view=rev Author: tehlike Date: 2008-10-03 21:11:48 +0000 (Fri, 03 Oct 2008) Log Message: ----------- Added throw NotSupportedException statement when ISQLQuery is added. This fix doesn't solve the issue NH-1508, just temporarily let the user know about situation. Modified Paths: -------------- branches/2.0.x/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs branches/2.0.x/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj Added Paths: ----------- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Document.cs branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Mappings.hbm.xml branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Person.cs Modified: branches/2.0.x/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2008-10-03 14:57:14 UTC (rev 3809) +++ branches/2.0.x/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2008-10-03 21:11:48 UTC (rev 3810) @@ -291,7 +291,8 @@ public IMultiQuery Add(IQuery query) { - ((AbstractQueryImpl)query).SetIgnoreUknownNamedParameters(true); + ThrowNotSupportedIfSqlQuery(query); + ((AbstractQueryImpl) query).SetIgnoreUknownNamedParameters(true); queries.Add(query); return this; } @@ -523,20 +524,28 @@ sqlString = new SqlString(); foreach (AbstractQueryImpl query in queries) { - QueryParameters queryParameters = query.GetQueryParameters(); - queryParameters.ValidateParameters(); - query.VerifyParameters(); - IQueryTranslator[] queryTranslators = - session.GetQueries(query.ExpandParameterLists(queryParameters.NamedParameters), false); - foreach (QueryTranslator translator in queryTranslators) + if (query is ISQLQuery) { - translators.Add(translator); - parameters.Add(queryParameters); - queryParameters = GetFilteredQueryParameters(queryParameters, translator); - SqlCommandInfo commandInfo = translator.GetQueryStringAndTypes(session, queryParameters); - sqlString = sqlString.Append(commandInfo.Text).Append(dialect.MultipleQueriesSeparator).Append(Environment.NewLine); - types.AddRange(commandInfo.ParameterTypes); + } + else + { + QueryParameters queryParameters = query.GetQueryParameters(); + queryParameters.ValidateParameters(); + query.VerifyParameters(); + IQueryTranslator[] queryTranslators = + session.GetQueries(query.ExpandParameterLists(queryParameters.NamedParameters), false); + foreach (QueryTranslator translator in queryTranslators) + { + translators.Add(translator); + parameters.Add(queryParameters); + queryParameters = GetFilteredQueryParameters(queryParameters, translator); + SqlCommandInfo commandInfo = translator.GetQueryStringAndTypes(session, queryParameters); + sqlString = sqlString.Append(commandInfo.Text).Append(dialect.MultipleQueriesSeparator).Append(Environment.NewLine); + types.AddRange(commandInfo.ParameterTypes); + } + } + } } @@ -733,7 +742,11 @@ } return false; } - + protected void ThrowNotSupportedIfSqlQuery(IQuery query) + { + if (query is ISQLQuery) + throw new NotSupportedException("Sql queries in MultiQuery is currently not supported."); + } #endregion } } Copied: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Document.cs (from rev 3807, branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1499/Document.cs) =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Document.cs (rev 0) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Document.cs 2008-10-03 21:11:48 UTC (rev 3810) @@ -0,0 +1,27 @@ +namespace NHibernate.Test.NHSpecificTest.NH1508 +{ + public class Document + { + private int id; + private Person person; + private string title; + + public virtual int Id + { + get { return id; } + set { id = value; } + } + + public virtual string Title + { + get { return title; } + set { title = value; } + } + + public virtual Person Person + { + get { return person; } + set { person = value; } + } + } +} Property changes on: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Document.cs ___________________________________________________________________ Added: svn:mergeinfo + Copied: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs (from rev 3807, branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1499/Fixture.cs) =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs (rev 0) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs 2008-10-03 21:11:48 UTC (rev 3810) @@ -0,0 +1,92 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +using NHibernate.Criterion; + +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1508 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void OnSetUp() + { + Person john = new Person(); + john.Name = "John"; + + Document doc1 = new Document(); + doc1.Person = john; + doc1.Title = "John's Doc"; + + Document doc2 = new Document(); + doc2.Title = "Spec"; + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + session.Save(john); + session.Save(doc1); + session.Save(doc2); + + tx.Commit(); + } + } + + protected override void OnTearDown() + { + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + session.Delete("from Person"); + session.Delete("from Document"); + tx.Commit(); + } + } + + [Test] + public void DoesntThrowExceptionWhenHqlQueryIsGiven() + { + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + IQuery sqlQuery = session.CreateQuery("from Document"); + IMultiQuery q = session + .CreateMultiQuery() + .Add(sqlQuery); + q.List(); + } + } + + [Test] + [ExpectedException(typeof(NotSupportedException))] + public void ThrowsExceptionWhenSqlQueryIsGiven() + { + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + ISQLQuery sqlQuery = session.CreateSQLQuery("select * from Document"); + IMultiQuery q = session + .CreateMultiQuery() + .Add(sqlQuery); + q.List(); + } + } + + [Test] + [ExpectedException(typeof(NotSupportedException))] + public void ThrowsExceptionWhenNamedSqlQueryIsGiven() + { + using (ISession session = OpenSession()) + using (ITransaction tx = session.BeginTransaction()) + { + + IMultiQuery q = session + .CreateMultiQuery() + .AddNamedQuery("SampleSqlQuery"); + q.List(); + } + } + + } +} Property changes on: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs ___________________________________________________________________ Added: svn:mergeinfo + Copied: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Mappings.hbm.xml (from rev 3807, branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1499/Mappings.hbm.xml) =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Mappings.hbm.xml (rev 0) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Mappings.hbm.xml 2008-10-03 21:11:48 UTC (rev 3810) @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1508"> + + <class name="Document"> + <id name="Id"> + <generator class="native"/> + </id> + <many-to-one name="Person" column="PersonID"/> + <property name="Title"/> + </class> + + <class name="Person"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="Name"/> + </class> + <sql-query name="SampleSqlQuery"> + <![CDATA[ + SELECT PersonId from Document + ]]> + </sql-query> + <query name="SampleHqlQuery"> + <![CDATA[ + from Document + ]]> + </query> +</hibernate-mapping> Property changes on: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Mappings.hbm.xml ___________________________________________________________________ Added: svn:mergeinfo + Copied: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Person.cs (from rev 3807, branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1499/Person.cs) =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Person.cs (rev 0) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Person.cs 2008-10-03 21:11:48 UTC (rev 3810) @@ -0,0 +1,20 @@ +namespace NHibernate.Test.NHSpecificTest.NH1508 +{ + public class Person + { + private int id; + private string name; + + public virtual int Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + } +} Property changes on: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Person.cs ___________________________________________________________________ Added: svn:mergeinfo + Modified: branches/2.0.x/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-10-03 14:57:14 UTC (rev 3809) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-10-03 21:11:48 UTC (rev 3810) @@ -383,6 +383,9 @@ <Compile Include="NHSpecificTest\NH1499\Document.cs" /> <Compile Include="NHSpecificTest\NH1499\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1499\Person.cs" /> + <Compile Include="NHSpecificTest\NH1508\Document.cs" /> + <Compile Include="NHSpecificTest\NH1508\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1508\Person.cs" /> <Compile Include="NHSpecificTest\NH280\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Foo.cs" /> <Compile Include="NHSpecificTest\NH1018\Employee.cs" /> @@ -1357,6 +1360,9 @@ <EmbeddedResource Include="NHSpecificTest\NH1293\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH1508\Mappings.hbm.xml" /> + </ItemGroup> + <ItemGroup> <Folder Include="Properties\" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |