From: <fab...@us...> - 2009-05-04 22:28:23
|
Revision: 4233 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4233&view=rev Author: fabiomaulo Date: 2009-05-04 22:28:11 +0000 (Mon, 04 May 2009) Log Message: ----------- Continue porting HQL executable (delete tests) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 22:19:42 UTC (rev 4232) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 22:28:11 UTC (rev 4233) @@ -34,6 +34,30 @@ #endregion [Test] + public void DeleteUnionSubclassLeafSubclass() + { + var data = new TestData(this); + data.Prepare(); + + // These should only affect the given table + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + int count = s.CreateQuery("delete Car where Owner = :owner") + .SetString("owner", "Kirsten") + .ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "incorrect restricted update count"); + + count = s.CreateQuery("delete Car").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(0), "incorrect update count"); + + t.Commit(); + s.Close(); + + data.Cleanup(); + } + + [Test] public void DeleteRestrictedOnManyToOne() { var data = new TestData(this); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-04 22:34:21
|
Revision: 4234 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4234&view=rev Author: fabiomaulo Date: 2009-05-04 22:34:13 +0000 (Mon, 04 May 2009) Log Message: ----------- Continue porting HQL executable (delete tests with union-subclass) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 22:28:11 UTC (rev 4233) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 22:34:13 UTC (rev 4234) @@ -34,6 +34,29 @@ #endregion [Test] + public void DeleteUnionSubclassConcreteSubclass() + { + var data = new TestData(this); + data.Prepare(); + + // These should only affect the given table + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + int count = s.CreateQuery("delete Truck where Owner = :owner") + .SetString("owner", "Steve") + .ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "incorrect restricted update count"); + + count = s.CreateQuery("delete Truck").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(2), "incorrect update count"); + t.Commit(); + s.Close(); + + data.Cleanup(); + } + + [Test] public void DeleteUnionSubclassLeafSubclass() { var data = new TestData(this); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-04 22:37:46
|
Revision: 4235 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4235&view=rev Author: fabiomaulo Date: 2009-05-04 22:37:36 +0000 (Mon, 04 May 2009) Log Message: ----------- Continue porting HQL executable (delete tests with union-subclass) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 22:34:13 UTC (rev 4234) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 22:37:36 UTC (rev 4235) @@ -34,6 +34,29 @@ #endregion [Test] + public void DeleteUnionSubclassAbstractRoot() + { + var data = new TestData(this); + data.Prepare(); + + // These should reach out into *all* subclass tables... + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + int count = s.CreateQuery("delete Vehicle where Owner = :owner") + .SetString("owner", "Steve").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "incorrect restricted update count"); + + count = s.CreateQuery("delete Vehicle").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(3), "incorrect update count"); + + t.Commit(); + s.Close(); + + data.Cleanup(); + } + + [Test] public void DeleteUnionSubclassConcreteSubclass() { var data = new TestData(this); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-04 22:45:31
|
Revision: 4236 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4236&view=rev Author: fabiomaulo Date: 2009-05-04 22:45:13 +0000 (Mon, 04 May 2009) Log Message: ----------- Continue porting HQL executable (delete tests with joined table) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 22:37:36 UTC (rev 4235) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 22:45:13 UTC (rev 4236) @@ -34,6 +34,25 @@ #endregion [Test] + public void DeleteOnMappedJoin() + { + var data = new TestData(this); + data.Prepare(); + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + int count = s.CreateQuery("delete Joiner where joinedName = :joinedName") + .SetString("joinedName", "joined-name").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "Incorrect deletion count on joined subclass"); + + t.Commit(); + s.Close(); + + data.Cleanup(); + } + + [Test] public void DeleteUnionSubclassAbstractRoot() { var data = new TestData(this); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-04 23:06:15
|
Revision: 4238 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4238&view=rev Author: fabiomaulo Date: 2009-05-04 23:06:06 +0000 (Mon, 04 May 2009) Log Message: ----------- Continue porting HQL executable (delete tests with subclass) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 23:03:21 UTC (rev 4237) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 23:06:06 UTC (rev 4238) @@ -32,7 +32,27 @@ } #endregion + [Test] + public void DeleteOnDiscriminatorSubclass() + { + var data = new TestData(this); + data.Prepare(); + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + int count = s.CreateQuery("delete PettingZoo").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "Incorrect discrim subclass delete count"); + + count = s.CreateQuery("delete Zoo").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "Incorrect discrim subclass delete count"); + + t.Commit(); + s.Close(); + + data.Cleanup(); + } + [Test] public void DeleteOnJoinedSubclass() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-04 23:18:18
|
Revision: 4239 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4239&view=rev Author: fabiomaulo Date: 2009-05-04 23:18:12 +0000 (Mon, 04 May 2009) Log Message: ----------- Continue porting HQL executable (delete tests) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 23:06:06 UTC (rev 4238) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 23:18:12 UTC (rev 4239) @@ -1,3 +1,5 @@ +using System.Collections; +using System.Diagnostics; using NUnit.Framework; using NHibernate.Hql.Ast.ANTLR; @@ -32,7 +34,51 @@ } #endregion + [Test] + public void SimpleDeleteOnAnimal() + { + if (Dialect.HasSelfReferentialForeignKeyBug) + { + Assert.Ignore("self referential FK bug", "HQL delete testing"); + return; + } + + var data = new TestData(this); + data.Prepare(); + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + int count = s.CreateQuery("delete from Animal as a where a.id = :id") + .SetInt64("id", data.Polliwog.Id) + .ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "Incorrect delete count"); + + count = s.CreateQuery("delete Animal where id = :id") + .SetInt64("id", data.Catepillar.Id) + .ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "Incorrect delete count"); + + // HHH-873... + if (Dialect.SupportsSubqueryOnMutatingTable) + { + count = s.CreateQuery("delete from User u where u not in (select u from User u)").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(0)); + } + + count = s.CreateQuery("delete Animal a").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(4), "Incorrect delete count"); + + IList list = s.CreateQuery("select a from Animal as a").List(); + Assert.That(list, Is.Empty, "table not empty"); + + t.Commit(); + s.Close(); + data.Cleanup(); + } + + [Test] public void DeleteOnDiscriminatorSubclass() { var data = new TestData(this); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-04 23:46:32
|
Revision: 4241 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4241&view=rev Author: fabiomaulo Date: 2009-05-04 23:46:25 +0000 (Mon, 04 May 2009) Log Message: ----------- Minor Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 23:45:28 UTC (rev 4240) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-04 23:46:25 UTC (rev 4241) @@ -1,5 +1,4 @@ using System.Collections; -using System.Diagnostics; using NUnit.Framework; using NHibernate.Hql.Ast.ANTLR; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-05 15:39:13
|
Revision: 4245 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4245&view=rev Author: fabiomaulo Date: 2009-05-05 15:38:45 +0000 (Tue, 05 May 2009) Log Message: ----------- Starting port of AST tests for Updates Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-05 13:34:01 UTC (rev 4244) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-05 15:38:45 UTC (rev 4245) @@ -34,6 +34,18 @@ #endregion + #region UPDATES + [Test] + public void IncorrectSyntax() + { + using(ISession s = OpenSession()) + { + Assert.Throws<QueryException>(() => s.CreateQuery("update Human set Human.description = 'xyz' where Human.id = 1 and Human.description is null")); + } + } + + #endregion + #region DELETES [Test] @@ -117,7 +129,7 @@ t.Commit(); s.Close(); data.Cleanup(); - } + } [Test] public void DeleteOnDiscriminatorSubclass() @@ -138,7 +150,7 @@ s.Close(); data.Cleanup(); - } + } [Test] public void DeleteOnJoinedSubclass() @@ -162,7 +174,7 @@ s.Close(); data.Cleanup(); - } + } [Test] public void DeleteOnMappedJoin() @@ -251,7 +263,7 @@ s.Close(); data.Cleanup(); - } + } [Test] public void DeleteRestrictedOnManyToOne() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-05 22:48:32
|
Revision: 4248 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4248&view=rev Author: fabiomaulo Date: 2009-05-05 22:48:27 +0000 (Tue, 05 May 2009) Log Message: ----------- Continue port of AST tests for Updates (versioned entity) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-05 22:37:54 UTC (rev 4247) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-05 22:48:27 UTC (rev 4248) @@ -1,5 +1,7 @@ +using System; using System.Collections; using System.Diagnostics; +using System.Threading; using NUnit.Framework; using NHibernate.Hql.Ast.ANTLR; @@ -136,6 +138,36 @@ s.Close(); } + [Test] + public void IncrementTimestampVersion() + { + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + var entity = new TimestampVersioned {Name = "ts-vers"}; + s.Save(entity); + t.Commit(); + s.Close(); + + DateTime initialVersion = entity.Version; + + Thread.Sleep(300); + + s = OpenSession(); + t = s.BeginTransaction(); + int count = s.CreateQuery("update versioned TimestampVersioned set name = name").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "incorrect exec count"); + t.Commit(); + + t = s.BeginTransaction(); + entity = s.Load<TimestampVersioned>(entity.Id); + Assert.That(entity.Version, Is.GreaterThan(initialVersion), "version not incremented"); + + s.Delete(entity); + t.Commit(); + s.Close(); + } + #endregion #region DELETES This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-06 14:22:17
|
Revision: 4250 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4250&view=rev Author: fabiomaulo Date: 2009-05-06 14:22:12 +0000 (Wed, 06 May 2009) Log Message: ----------- Continue port of AST tests for Updates (ManyToOne entity) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-06 06:12:21 UTC (rev 4249) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-06 14:22:12 UTC (rev 4250) @@ -2,6 +2,7 @@ using System.Collections; using System.Diagnostics; using System.Threading; +using NHibernate.Dialect; using NUnit.Framework; using NHibernate.Hql.Ast.ANTLR; @@ -200,6 +201,23 @@ s.Close(); } + [Test] + public void UpdateOnManyToOne() + { + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + s.CreateQuery("update Animal a set a.mother = null where a.id = 2").ExecuteUpdate(); + if (! (Dialect is MySQLDialect) ) + { + // MySQL does not support (even un-correlated) subqueries against the update-mutating table + s.CreateQuery("update Animal a set a.mother = (from Animal where id = 1) where a.id = 2").ExecuteUpdate(); + } + + t.Commit(); + s.Close(); + } + #endregion #region DELETES This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-06 14:32:13
|
Revision: 4251 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4251&view=rev Author: fabiomaulo Date: 2009-05-06 14:32:08 +0000 (Wed, 06 May 2009) Log Message: ----------- Continue port of AST tests for Updates (Implicit join fails) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-06 14:22:12 UTC (rev 4250) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-06 14:32:08 UTC (rev 4251) @@ -1,15 +1,14 @@ using System; using System.Collections; -using System.Diagnostics; using System.Threading; using NHibernate.Dialect; +using NHibernate.Hql.Ast.ANTLR; using NUnit.Framework; -using NHibernate.Hql.Ast.ANTLR; namespace NHibernate.Test.HQL.Ast { [TestFixture] - public class BulkManipulation: BaseFixture + public class BulkManipulation : BaseFixture { public ISession OpenNewSession() { @@ -32,19 +31,22 @@ { using (ISession s = OpenSession()) { - Assert.Throws<QuerySyntaxException>(() => s.CreateQuery("update NonExistentEntity e set e.someProp = ?").ExecuteUpdate()); + Assert.Throws<QuerySyntaxException>( + () => s.CreateQuery("update NonExistentEntity e set e.someProp = ?").ExecuteUpdate()); } } #endregion #region UPDATES + [Test] public void IncorrectSyntax() { - using(ISession s = OpenSession()) + using (ISession s = OpenSession()) { - Assert.Throws<QueryException>(() => s.CreateQuery("update Human set Human.description = 'xyz' where Human.id = 1 and Human.description is null")); + Assert.Throws<QueryException>( + () => s.CreateQuery("update Human set Human.description = 'xyz' where Human.id = 1 and Human.description is null")); } } @@ -90,20 +92,19 @@ t = s.BeginTransaction(); // one-to-many test updateQryString = "update SimpleEntityWithAssociation e set e.Name = 'updated' where " - + "exists(select a.id from e.AssociatedEntities a " - + "where a.Name = 'one-to-many-association')"; + + "exists(select a.id from e.AssociatedEntities a " + "where a.Name = 'one-to-many-association')"; count = s.CreateQuery(updateQryString).ExecuteUpdate(); Assert.That(count, Is.EqualTo(1)); // many-to-many test if (Dialect.SupportsSubqueryOnMutatingTable) { updateQryString = "update SimpleEntityWithAssociation e set e.Name = 'updated' where " - + "exists(select a.id from e.ManyToManyAssociatedEntities a " + + "exists(select a.id from e.ManyToManyAssociatedEntities a " + "where a.Name = 'many-to-many-association')"; count = s.CreateQuery(updateQryString).ExecuteUpdate(); Assert.That(count, Is.EqualTo(1)); } - var mtm = entity.ManyToManyAssociatedEntities.GetEnumerator(); + IEnumerator mtm = entity.ManyToManyAssociatedEntities.GetEnumerator(); mtm.MoveNext(); s.Delete(mtm.Current); s.Delete(entity); @@ -117,7 +118,7 @@ ISession s = OpenSession(); ITransaction t = s.BeginTransaction(); - var entity = new IntegerVersioned{Name = "int-vers"}; + var entity = new IntegerVersioned {Name = "int-vers"}; s.Save(entity); t.Commit(); s.Close(); @@ -184,9 +185,8 @@ t = s.BeginTransaction(); int count = - s.CreateQuery("update Human set name.first = :correction where id = :id") - .SetString("correction", correctName) - .SetInt64("id", human.Id).ExecuteUpdate(); + s.CreateQuery("update Human set name.first = :correction where id = :id").SetString("correction", correctName). + SetInt64("id", human.Id).ExecuteUpdate(); Assert.That(count, Is.EqualTo(1), "incorrect update count"); t.Commit(); @@ -208,7 +208,7 @@ ITransaction t = s.BeginTransaction(); s.CreateQuery("update Animal a set a.mother = null where a.id = 2").ExecuteUpdate(); - if (! (Dialect is MySQLDialect) ) + if (! (Dialect is MySQLDialect)) { // MySQL does not support (even un-correlated) subqueries against the update-mutating table s.CreateQuery("update Animal a set a.mother = (from Animal where id = 1) where a.id = 2").ExecuteUpdate(); @@ -218,6 +218,35 @@ s.Close(); } + [Test] + public void UpdateOnImplicitJoinFails() + { + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + var human = new Human {Name = new Name {First = "Steve", Initial = 'E', Last = null}}; + + var mother = new Human {Name = new Name {First = "Jane", Initial = 'E', Last = null}}; + human.Mother = (mother); + + s.Save(human); + s.Save(mother); + s.Flush(); + + t.Commit(); + + t = s.BeginTransaction(); + var e = + Assert.Throws<QueryException>( + () => s.CreateQuery("update Human set mother.name.initial = :initial").SetString("initial", "F").ExecuteUpdate()); + Assert.That(e.Message, Text.StartsWith("Implied join paths are not assignable in update")); + + s.CreateQuery("delete Human where mother is not null").ExecuteUpdate(); + s.CreateQuery("delete Human").ExecuteUpdate(); + t.Commit(); + s.Close(); + } + #endregion #region DELETES @@ -228,18 +257,18 @@ // setup the test data... ISession s = OpenSession(); s.BeginTransaction(); - var owner = new SimpleEntityWithAssociation { Name = "myEntity-1" }; + var owner = new SimpleEntityWithAssociation {Name = "myEntity-1"}; owner.AddAssociation("assoc-1"); owner.AddAssociation("assoc-2"); owner.AddAssociation("assoc-3"); s.Save(owner); - var owner2 = new SimpleEntityWithAssociation { Name = "myEntity-2" }; + var owner2 = new SimpleEntityWithAssociation {Name = "myEntity-2"}; owner2.AddAssociation("assoc-1"); owner2.AddAssociation("assoc-2"); owner2.AddAssociation("assoc-3"); owner2.AddAssociation("assoc-4"); s.Save(owner2); - var owner3 = new SimpleEntityWithAssociation { Name = "myEntity-3" }; + var owner3 = new SimpleEntityWithAssociation {Name = "myEntity-3"}; s.Save(owner3); s.Transaction.Commit(); s.Close(); @@ -247,8 +276,9 @@ // now try the bulk delete s = OpenSession(); s.BeginTransaction(); - int count = s.CreateQuery("delete SimpleEntityWithAssociation e where size(e.AssociatedEntities ) = 0 and e.Name like '%'") - .ExecuteUpdate(); + int count = + s.CreateQuery("delete SimpleEntityWithAssociation e where size(e.AssociatedEntities ) = 0 and e.Name like '%'"). + ExecuteUpdate(); Assert.That(count, Is.EqualTo(1), "Incorrect delete count"); s.Transaction.Commit(); s.Close(); @@ -277,14 +307,11 @@ ISession s = OpenSession(); ITransaction t = s.BeginTransaction(); - int count = s.CreateQuery("delete from Animal as a where a.id = :id") - .SetInt64("id", data.Polliwog.Id) - .ExecuteUpdate(); + int count = + s.CreateQuery("delete from Animal as a where a.id = :id").SetInt64("id", data.Polliwog.Id).ExecuteUpdate(); Assert.That(count, Is.EqualTo(1), "Incorrect delete count"); - count = s.CreateQuery("delete Animal where id = :id") - .SetInt64("id", data.Catepillar.Id) - .ExecuteUpdate(); + count = s.CreateQuery("delete Animal where id = :id").SetInt64("id", data.Catepillar.Id).ExecuteUpdate(); Assert.That(count, Is.EqualTo(1), "Incorrect delete count"); // HHH-873... @@ -359,8 +386,8 @@ ISession s = OpenSession(); ITransaction t = s.BeginTransaction(); - int count = s.CreateQuery("delete Joiner where joinedName = :joinedName") - .SetString("joinedName", "joined-name").ExecuteUpdate(); + int count = + s.CreateQuery("delete Joiner where joinedName = :joinedName").SetString("joinedName", "joined-name").ExecuteUpdate(); Assert.That(count, Is.EqualTo(1), "Incorrect deletion count on joined class"); t.Commit(); @@ -379,8 +406,7 @@ ISession s = OpenSession(); ITransaction t = s.BeginTransaction(); - int count = s.CreateQuery("delete Vehicle where Owner = :owner") - .SetString("owner", "Steve").ExecuteUpdate(); + int count = s.CreateQuery("delete Vehicle where Owner = :owner").SetString("owner", "Steve").ExecuteUpdate(); Assert.That(count, Is.EqualTo(1), "incorrect restricted update count"); count = s.CreateQuery("delete Vehicle").ExecuteUpdate(); @@ -402,9 +428,7 @@ ISession s = OpenSession(); ITransaction t = s.BeginTransaction(); - int count = s.CreateQuery("delete Truck where Owner = :owner") - .SetString("owner", "Steve") - .ExecuteUpdate(); + int count = s.CreateQuery("delete Truck where Owner = :owner").SetString("owner", "Steve").ExecuteUpdate(); Assert.That(count, Is.EqualTo(1), "incorrect restricted update count"); count = s.CreateQuery("delete Truck").ExecuteUpdate(); @@ -425,9 +449,7 @@ ISession s = OpenSession(); ITransaction t = s.BeginTransaction(); - int count = s.CreateQuery("delete Car where Owner = :owner") - .SetString("owner", "Kirsten") - .ExecuteUpdate(); + int count = s.CreateQuery("delete Car where Owner = :owner").SetString("owner", "Kirsten").ExecuteUpdate(); Assert.That(count, Is.EqualTo(1), "incorrect restricted update count"); count = s.CreateQuery("delete Car").ExecuteUpdate(); @@ -448,9 +470,7 @@ ISession s = OpenSession(); ITransaction t = s.BeginTransaction(); - int count = s.CreateQuery("delete Animal where mother = :mother") - .SetEntity("mother", data.Butterfly) - .ExecuteUpdate(); + int count = s.CreateQuery("delete Animal where mother = :mother").SetEntity("mother", data.Butterfly).ExecuteUpdate(); Assert.That(count, Is.EqualTo(1)); t.Commit(); @@ -496,16 +516,16 @@ ISession s = tc.OpenNewSession(); ITransaction txn = s.BeginTransaction(); - Polliwog = new Animal { BodyWeight = 12, Description = "Polliwog" }; + Polliwog = new Animal {BodyWeight = 12, Description = "Polliwog"}; - Catepillar = new Animal { BodyWeight = 10, Description = "Catepillar" }; + Catepillar = new Animal {BodyWeight = 10, Description = "Catepillar"}; - Frog = new Animal { BodyWeight = 34, Description = "Frog" }; + Frog = new Animal {BodyWeight = 34, Description = "Frog"}; Polliwog.Father = Frog; Frog.AddOffspring(Polliwog); - Butterfly = new Animal { BodyWeight = 9, Description = "Butterfly" }; + Butterfly = new Animal {BodyWeight = 9, Description = "Butterfly"}; Catepillar.Mother = Butterfly; Butterfly.AddOffspring(Catepillar); @@ -515,36 +535,36 @@ s.Save(Butterfly); s.Save(Catepillar); - var dog = new Dog { BodyWeight = 200, Description = "dog" }; + var dog = new Dog {BodyWeight = 200, Description = "dog"}; s.Save(dog); - var cat = new Cat { BodyWeight = 100, Description = "cat" }; + var cat = new Cat {BodyWeight = 100, Description = "cat"}; s.Save(cat); - Zoo = new Zoo { Name = "Zoo" }; - var add = new Address { City = "MEL", Country = "AU", Street = "Main st", PostalCode = "3000" }; + Zoo = new Zoo {Name = "Zoo"}; + var add = new Address {City = "MEL", Country = "AU", Street = "Main st", PostalCode = "3000"}; Zoo.Address = add; - PettingZoo = new PettingZoo { Name = "Petting Zoo" }; - var addr = new Address { City = "Sydney", Country = "AU", Street = "High st", PostalCode = "2000" }; + PettingZoo = new PettingZoo {Name = "Petting Zoo"}; + var addr = new Address {City = "Sydney", Country = "AU", Street = "High st", PostalCode = "2000"}; PettingZoo.Address = addr; s.Save(Zoo); s.Save(PettingZoo); - var joiner = new Joiner { JoinedName = "joined-name", Name = "name" }; + var joiner = new Joiner {JoinedName = "joined-name", Name = "name"}; s.Save(joiner); - var car = new Car { Vin = "123c", Owner = "Kirsten" }; + var car = new Car {Vin = "123c", Owner = "Kirsten"}; s.Save(car); - var truck = new Truck { Vin = "123t", Owner = "Steve" }; + var truck = new Truck {Vin = "123t", Owner = "Steve"}; s.Save(truck); - var suv = new SUV { Vin = "123s", Owner = "Joe" }; + var suv = new SUV {Vin = "123s", Owner = "Joe"}; s.Save(suv); - var pickup = new Pickup { Vin = "123p", Owner = "Cecelia" }; + var pickup = new Pickup {Vin = "123p", Owner = "Cecelia"}; s.Save(pickup); var b = new BooleanLiteralEntity(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-06 14:38:07
|
Revision: 4252 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4252&view=rev Author: fabiomaulo Date: 2009-05-06 14:38:06 +0000 (Wed, 06 May 2009) Log Message: ----------- Continue port of AST tests for Updates (Discriminator entity) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-06 14:32:08 UTC (rev 4251) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-06 14:38:06 UTC (rev 4252) @@ -245,6 +245,48 @@ s.CreateQuery("delete Human").ExecuteUpdate(); t.Commit(); s.Close(); + } + + [Test] + public void UpdateOnDiscriminatorSubclass() + { + var data = new TestData(this); + data.Prepare(); + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + int count = s.CreateQuery("update PettingZoo set name = name").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "Incorrect discrim subclass update count"); + + t.Rollback(); + t = s.BeginTransaction(); + + count = s.CreateQuery("update PettingZoo pz set pz.name = pz.name where pz.id = :id") + .SetInt64("id", data.PettingZoo.Id) + .ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "Incorrect discrim subclass update count"); + + t.Rollback(); + t = s.BeginTransaction(); + + count = s.CreateQuery("update Zoo as z set z.name = z.name").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(2), "Incorrect discrim subclass update count"); + + t.Rollback(); + t = s.BeginTransaction(); + + // TODO : not so sure this should be allowed. Seems to me that if they specify an alias, + // property-refs should be required to be qualified. + count = s.CreateQuery("update Zoo as z set name = name where id = :id") + .SetInt64("id", data.Zoo.Id) + .ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "Incorrect discrim subclass update count"); + + t.Commit(); + s.Close(); + + data.Cleanup(); } #endregion This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-05-06 14:54:57
|
Revision: 4253 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4253&view=rev Author: fabiomaulo Date: 2009-05-06 14:54:55 +0000 (Wed, 06 May 2009) Log Message: ----------- Continue port of AST tests for Updates (base entity) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-06 14:38:06 UTC (rev 4252) +++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BulkManipulation.cs 2009-05-06 14:54:55 UTC (rev 4253) @@ -262,9 +262,9 @@ t.Rollback(); t = s.BeginTransaction(); - count = s.CreateQuery("update PettingZoo pz set pz.name = pz.name where pz.id = :id") - .SetInt64("id", data.PettingZoo.Id) - .ExecuteUpdate(); + count = + s.CreateQuery("update PettingZoo pz set pz.name = pz.name where pz.id = :id").SetInt64("id", data.PettingZoo.Id). + ExecuteUpdate(); Assert.That(count, Is.EqualTo(1), "Incorrect discrim subclass update count"); t.Rollback(); @@ -278,9 +278,7 @@ // TODO : not so sure this should be allowed. Seems to me that if they specify an alias, // property-refs should be required to be qualified. - count = s.CreateQuery("update Zoo as z set name = name where id = :id") - .SetInt64("id", data.Zoo.Id) - .ExecuteUpdate(); + count = s.CreateQuery("update Zoo as z set name = name where id = :id").SetInt64("id", data.Zoo.Id).ExecuteUpdate(); Assert.That(count, Is.EqualTo(1), "Incorrect discrim subclass update count"); t.Commit(); @@ -289,6 +287,78 @@ data.Cleanup(); } + [Test] + public void UpdateOnAnimal() + { + var data = new TestData(this); + data.Prepare(); + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + int count = + s.CreateQuery("update Animal set description = description where description = :desc") + .SetString("desc", data.Frog.Description) + .ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "Incorrect entity-updated count"); + + count = + s.CreateQuery("update Animal set description = :newDesc where description = :desc") + .SetString("desc",data.Polliwog.Description) + .SetString("newDesc", "Tadpole") + .ExecuteUpdate(); + Assert.That(count, Is.EqualTo(1), "Incorrect entity-updated count"); + + var tadpole = s.Load<Animal>(data.Polliwog.Id); + + Assert.That(tadpole.Description, Is.EqualTo("Tadpole"), "Update did not take effect"); + + count = + s.CreateQuery("update Animal set bodyWeight = bodyWeight + :w1 + :w2") + .SetDouble("w1", 1) + .SetDouble("w2", 2) + .ExecuteUpdate(); + Assert.That(count, Is.EqualTo(6), "incorrect count on 'complex' update assignment"); + + if (! (Dialect is MySQLDialect)) + { + // MySQL does not support (even un-correlated) subqueries against the update-mutating table + s.CreateQuery("update Animal set bodyWeight = ( select max(bodyWeight) from Animal )").ExecuteUpdate(); + } + + t.Commit(); + s.Close(); + + data.Cleanup(); + } + + [Test] + public void UpdateOnMammal() + { + var data = new TestData(this); + data.Prepare(); + + ISession s = OpenSession(); + ITransaction t = s.BeginTransaction(); + + int count = s.CreateQuery("update Mammal set description = description").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(2), "incorrect update count against 'middle' of joined-subclass hierarchy"); + + count = s.CreateQuery("update Mammal set bodyWeight = 25").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(2), "incorrect update count against 'middle' of joined-subclass hierarchy"); + + if (! (Dialect is MySQLDialect)) + { + // MySQL does not support (even un-correlated) subqueries against the update-mutating table + count = s.CreateQuery("update Mammal set bodyWeight = ( select max(bodyWeight) from Animal )").ExecuteUpdate(); + Assert.That(count, Is.EqualTo(2), "incorrect update count against 'middle' of joined-subclass hierarchy"); + } + + t.Commit(); + s.Close(); + + data.Cleanup(); + } + #endregion #region DELETES This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |