From 10a5d4cc24d06afb03a311c09ec2df0a5f05d338 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delaporte?=
<12201973+fredericdelaporte@users.noreply.github.com>
Date: Sun, 24 Apr 2022 18:41:49 +0200
Subject: [PATCH 1/5] Fix many-to-one disabled filters for arbitrary joins
fix #3046
---
.../Async/NHSpecificTest/GH3046/Fixture.cs | 83 +++++++++++++++++++
.../NHSpecificTest/GH3046/Fixture.cs | 71 ++++++++++++++++
.../NHSpecificTest/GH3046/Mappings.hbm.xml | 26 ++++++
.../NHSpecificTest/GH3046/Model.cs | 15 ++++
src/NHibernate/Engine/JoinSequence.cs | 17 ++--
src/NHibernate/Loader/JoinWalker.cs | 5 +-
6 files changed, 210 insertions(+), 7 deletions(-)
create mode 100644 src/NHibernate.Test/Async/NHSpecificTest/GH3046/Fixture.cs
create mode 100644 src/NHibernate.Test/NHSpecificTest/GH3046/Fixture.cs
create mode 100644 src/NHibernate.Test/NHSpecificTest/GH3046/Mappings.hbm.xml
create mode 100644 src/NHibernate.Test/NHSpecificTest/GH3046/Model.cs
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/GH3046/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/GH3046/Fixture.cs
new file mode 100644
index 00000000000..fbb2f0c39a6
--- /dev/null
+++ b/src/NHibernate.Test/Async/NHSpecificTest/GH3046/Fixture.cs
@@ -0,0 +1,83 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by AsyncGenerator.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+using System.Linq;
+using NUnit.Framework;
+using NHibernate.Linq;
+
+namespace NHibernate.Test.NHSpecificTest.GH3046
+{
+ using System.Threading.Tasks;
+ // Duplicated from GH2549 with minor changes to trigger the trouble.
+ [TestFixture]
+ public class FixtureAsync : BugTestCase
+ {
+ protected override void OnSetUp()
+ {
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ s.Save(new Person {Id = 1, Name = "Name"});
+ s.Save(new Customer {Deleted = false, Name = "Name", Id = 1});
+ s.Save(new Customer {Deleted = true, Name = "Name", Id = 2});
+
+ t.Commit();
+ }
+ }
+
+ protected override void OnTearDown()
+ {
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ s.CreateQuery("delete from System.Object").ExecuteUpdate();
+ t.Commit();
+ }
+ }
+
+ [Test]
+ public async Task EntityJoinFilterLinqAsync()
+ {
+ using (var s = OpenSession())
+ {
+ var list = await ((from p in s.Query()
+ join c in s.Query() on p.Name equals c.Name
+ select p).ToListAsync());
+
+ s.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
+
+ var filteredList = await ((from p in s.Query()
+ join c in s.Query() on p.Name equals c.Name
+ select p).ToListAsync());
+
+ Assert.That(list, Has.Count.EqualTo(2));
+ Assert.That(filteredList, Has.Count.EqualTo(1));
+ }
+ }
+
+ [Test]
+ public async Task EntityJoinFilterQueryOverAsync()
+ {
+ using (var s = OpenSession())
+ {
+ Customer c = null;
+ Person p = null;
+ var list = await (s.QueryOver(() => p).JoinEntityAlias(() => c, () => c.Name == p.Name).ListAsync());
+
+ s.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
+
+ var filteredList = await (s.QueryOver(() => p).JoinEntityAlias(() => c, () => c.Name == p.Name).ListAsync());
+
+ Assert.That(list, Has.Count.EqualTo(2));
+ Assert.That(filteredList, Has.Count.EqualTo(1));
+ }
+ }
+ }
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/GH3046/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/GH3046/Fixture.cs
new file mode 100644
index 00000000000..dae831d082c
--- /dev/null
+++ b/src/NHibernate.Test/NHSpecificTest/GH3046/Fixture.cs
@@ -0,0 +1,71 @@
+using System.Linq;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.GH3046
+{
+ // Duplicated from GH2549 with minor changes to trigger the trouble.
+ [TestFixture]
+ public class Fixture : BugTestCase
+ {
+ protected override void OnSetUp()
+ {
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ s.Save(new Person {Id = 1, Name = "Name"});
+ s.Save(new Customer {Deleted = false, Name = "Name", Id = 1});
+ s.Save(new Customer {Deleted = true, Name = "Name", Id = 2});
+
+ t.Commit();
+ }
+ }
+
+ protected override void OnTearDown()
+ {
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ s.CreateQuery("delete from System.Object").ExecuteUpdate();
+ t.Commit();
+ }
+ }
+
+ [Test]
+ public void EntityJoinFilterLinq()
+ {
+ using (var s = OpenSession())
+ {
+ var list = (from p in s.Query()
+ join c in s.Query() on p.Name equals c.Name
+ select p).ToList();
+
+ s.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
+
+ var filteredList = (from p in s.Query()
+ join c in s.Query() on p.Name equals c.Name
+ select p).ToList();
+
+ Assert.That(list, Has.Count.EqualTo(2));
+ Assert.That(filteredList, Has.Count.EqualTo(1));
+ }
+ }
+
+ [Test]
+ public void EntityJoinFilterQueryOver()
+ {
+ using (var s = OpenSession())
+ {
+ Customer c = null;
+ Person p = null;
+ var list = s.QueryOver(() => p).JoinEntityAlias(() => c, () => c.Name == p.Name).List();
+
+ s.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
+
+ var filteredList = s.QueryOver(() => p).JoinEntityAlias(() => c, () => c.Name == p.Name).List();
+
+ Assert.That(list, Has.Count.EqualTo(2));
+ Assert.That(filteredList, Has.Count.EqualTo(1));
+ }
+ }
+ }
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/GH3046/Mappings.hbm.xml b/src/NHibernate.Test/NHSpecificTest/GH3046/Mappings.hbm.xml
new file mode 100644
index 00000000000..f643c12c8e3
--- /dev/null
+++ b/src/NHibernate.Test/NHSpecificTest/GH3046/Mappings.hbm.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/NHibernate.Test/NHSpecificTest/GH3046/Model.cs b/src/NHibernate.Test/NHSpecificTest/GH3046/Model.cs
new file mode 100644
index 00000000000..d02d100c9b2
--- /dev/null
+++ b/src/NHibernate.Test/NHSpecificTest/GH3046/Model.cs
@@ -0,0 +1,15 @@
+namespace NHibernate.Test.NHSpecificTest.GH3046
+{
+ public class Customer
+ {
+ public virtual int Id { get; set; }
+ public virtual bool Deleted { get; set; }
+ public virtual string Name { get; set; }
+ }
+
+ public class Person
+ {
+ public virtual int Id { get; set; }
+ public virtual string Name { get; set; }
+ }
+}
diff --git a/src/NHibernate/Engine/JoinSequence.cs b/src/NHibernate/Engine/JoinSequence.cs
index e706d97886e..12f227880dc 100644
--- a/src/NHibernate/Engine/JoinSequence.cs
+++ b/src/NHibernate/Engine/JoinSequence.cs
@@ -175,7 +175,7 @@ internal virtual JoinFragment ToJoinFragment(
{
Join join = joins[i];
string on = join.AssociationType.GetOnCondition(join.Alias, factory, enabledFilters);
- SqlString condition = new SqlString();
+ SqlString condition;
if (last != null &&
IsManyToManyRoot(last) &&
((IQueryableCollection)last).ElementType == join.AssociationType)
@@ -195,10 +195,17 @@ internal virtual JoinFragment ToJoinFragment(
{
// NH Different behavior : NH1179 and NH1293
// Apply filters for entity joins and Many-To-One association
- var enabledForManyToOne = FilterHelper.GetEnabledForManyToOne(enabledFilters);
- condition = new SqlString(string.IsNullOrEmpty(on) && (ForceFilter || enabledForManyToOne.Count > 0)
- ? join.Joinable.FilterFragment(join.Alias, enabledForManyToOne)
- : on);
+ if (string.IsNullOrEmpty(on))
+ {
+ var enabledFiltersForJoin = ForceFilter ? enabledFilters : FilterHelper.GetEnabledForManyToOne(enabledFilters);
+ condition = new SqlString(enabledFiltersForJoin.Count > 0
+ ? join.Joinable.FilterFragment(join.Alias, enabledFiltersForJoin)
+ : on);
+ }
+ else
+ {
+ condition = new SqlString(on);
+ }
}
if (withClauseFragment != null)
diff --git a/src/NHibernate/Loader/JoinWalker.cs b/src/NHibernate/Loader/JoinWalker.cs
index 1f1ed70fc56..83565345d00 100644
--- a/src/NHibernate/Loader/JoinWalker.cs
+++ b/src/NHibernate/Loader/JoinWalker.cs
@@ -853,9 +853,10 @@ protected JoinFragment MergeOuterJoins(IList associati
oj.AddJoins(outerjoin);
// NH Different behavior : NH1179 and NH1293
// Apply filters for entity joins and Many-To-One associations
- if (oj.ForceFilter || enabledFiltersForManyToOne.Count > 0)
+ var enabledFiltersForJoin = oj.ForceFilter ? enabledFilters : enabledFiltersForManyToOne;
+ if (enabledFiltersForJoin.Count > 0)
{
- string manyToOneFilterFragment = oj.Joinable.FilterFragment(oj.RHSAlias, enabledFiltersForManyToOne);
+ string manyToOneFilterFragment = oj.Joinable.FilterFragment(oj.RHSAlias, enabledFiltersForJoin);
bool joinClauseDoesNotContainsFilterAlready =
outerjoin.ToFromFragmentString.IndexOfCaseInsensitive(manyToOneFilterFragment) == -1;
if (joinClauseDoesNotContainsFilterAlready)
From 0eb73ae2f8cc61ccc565e6c19a650c4b352b32a3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delaporte?=
<12201973+fredericdelaporte@users.noreply.github.com>
Date: Sun, 24 Apr 2022 19:12:27 +0200
Subject: [PATCH 2/5] Refix discriminator cases
---
src/NHibernate/Engine/JoinSequence.cs | 2 +-
src/NHibernate/Loader/JoinWalker.cs | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/NHibernate/Engine/JoinSequence.cs b/src/NHibernate/Engine/JoinSequence.cs
index 12f227880dc..0682cc10df5 100644
--- a/src/NHibernate/Engine/JoinSequence.cs
+++ b/src/NHibernate/Engine/JoinSequence.cs
@@ -198,7 +198,7 @@ internal virtual JoinFragment ToJoinFragment(
if (string.IsNullOrEmpty(on))
{
var enabledFiltersForJoin = ForceFilter ? enabledFilters : FilterHelper.GetEnabledForManyToOne(enabledFilters);
- condition = new SqlString(enabledFiltersForJoin.Count > 0
+ condition = new SqlString(ForceFilter || enabledFiltersForJoin.Count > 0
? join.Joinable.FilterFragment(join.Alias, enabledFiltersForJoin)
: on);
}
diff --git a/src/NHibernate/Loader/JoinWalker.cs b/src/NHibernate/Loader/JoinWalker.cs
index 83565345d00..ff02c24306d 100644
--- a/src/NHibernate/Loader/JoinWalker.cs
+++ b/src/NHibernate/Loader/JoinWalker.cs
@@ -854,7 +854,7 @@ protected JoinFragment MergeOuterJoins(IList associati
// NH Different behavior : NH1179 and NH1293
// Apply filters for entity joins and Many-To-One associations
var enabledFiltersForJoin = oj.ForceFilter ? enabledFilters : enabledFiltersForManyToOne;
- if (enabledFiltersForJoin.Count > 0)
+ if (oj.ForceFilter || enabledFiltersForJoin.Count > 0)
{
string manyToOneFilterFragment = oj.Joinable.FilterFragment(oj.RHSAlias, enabledFiltersForJoin);
bool joinClauseDoesNotContainsFilterAlready =
From 9f991664ad078c5af4dfe13f5b37655df66c2330 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delaporte?=
<12201973+fredericdelaporte@users.noreply.github.com>
Date: Tue, 26 Apr 2022 21:47:09 +0200
Subject: [PATCH 3/5] Reuse original fixture class
---
.../Async/NHSpecificTest/GH3046/Fixture.cs | 66 +-----------------
.../NHSpecificTest/GH3046/Fixture.cs | 67 +------------------
.../NHSpecificTest/GH3046/Mappings.hbm.xml | 2 +-
.../NHSpecificTest/GH3046/Model.cs | 15 -----
4 files changed, 6 insertions(+), 144 deletions(-)
delete mode 100644 src/NHibernate.Test/NHSpecificTest/GH3046/Model.cs
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/GH3046/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/GH3046/Fixture.cs
index fbb2f0c39a6..434def8948a 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/GH3046/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/GH3046/Fixture.cs
@@ -8,76 +8,14 @@
//------------------------------------------------------------------------------
-using System.Linq;
using NUnit.Framework;
-using NHibernate.Linq;
namespace NHibernate.Test.NHSpecificTest.GH3046
{
using System.Threading.Tasks;
- // Duplicated from GH2549 with minor changes to trigger the trouble.
+ // Only the mapping needs a change for this test case. It is fetched by the fixture namespace, so it will use the mapping defined here.
[TestFixture]
- public class FixtureAsync : BugTestCase
+ public class FixtureAsync : GH2549.FixtureAsync
{
- protected override void OnSetUp()
- {
- using (var s = OpenSession())
- using (var t = s.BeginTransaction())
- {
- s.Save(new Person {Id = 1, Name = "Name"});
- s.Save(new Customer {Deleted = false, Name = "Name", Id = 1});
- s.Save(new Customer {Deleted = true, Name = "Name", Id = 2});
-
- t.Commit();
- }
- }
-
- protected override void OnTearDown()
- {
- using (var s = OpenSession())
- using (var t = s.BeginTransaction())
- {
- s.CreateQuery("delete from System.Object").ExecuteUpdate();
- t.Commit();
- }
- }
-
- [Test]
- public async Task EntityJoinFilterLinqAsync()
- {
- using (var s = OpenSession())
- {
- var list = await ((from p in s.Query()
- join c in s.Query() on p.Name equals c.Name
- select p).ToListAsync());
-
- s.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
-
- var filteredList = await ((from p in s.Query()
- join c in s.Query() on p.Name equals c.Name
- select p).ToListAsync());
-
- Assert.That(list, Has.Count.EqualTo(2));
- Assert.That(filteredList, Has.Count.EqualTo(1));
- }
- }
-
- [Test]
- public async Task EntityJoinFilterQueryOverAsync()
- {
- using (var s = OpenSession())
- {
- Customer c = null;
- Person p = null;
- var list = await (s.QueryOver(() => p).JoinEntityAlias(() => c, () => c.Name == p.Name).ListAsync());
-
- s.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
-
- var filteredList = await (s.QueryOver(() => p).JoinEntityAlias(() => c, () => c.Name == p.Name).ListAsync());
-
- Assert.That(list, Has.Count.EqualTo(2));
- Assert.That(filteredList, Has.Count.EqualTo(1));
- }
- }
}
}
diff --git a/src/NHibernate.Test/NHSpecificTest/GH3046/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/GH3046/Fixture.cs
index dae831d082c..452f1b83cb9 100644
--- a/src/NHibernate.Test/NHSpecificTest/GH3046/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/GH3046/Fixture.cs
@@ -1,71 +1,10 @@
-using System.Linq;
-using NUnit.Framework;
+using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.GH3046
{
- // Duplicated from GH2549 with minor changes to trigger the trouble.
+ // Only the mapping needs a change for this test case. It is fetched by the fixture namespace, so it will use the mapping defined here.
[TestFixture]
- public class Fixture : BugTestCase
+ public class Fixture : GH2549.Fixture
{
- protected override void OnSetUp()
- {
- using (var s = OpenSession())
- using (var t = s.BeginTransaction())
- {
- s.Save(new Person {Id = 1, Name = "Name"});
- s.Save(new Customer {Deleted = false, Name = "Name", Id = 1});
- s.Save(new Customer {Deleted = true, Name = "Name", Id = 2});
-
- t.Commit();
- }
- }
-
- protected override void OnTearDown()
- {
- using (var s = OpenSession())
- using (var t = s.BeginTransaction())
- {
- s.CreateQuery("delete from System.Object").ExecuteUpdate();
- t.Commit();
- }
- }
-
- [Test]
- public void EntityJoinFilterLinq()
- {
- using (var s = OpenSession())
- {
- var list = (from p in s.Query()
- join c in s.Query() on p.Name equals c.Name
- select p).ToList();
-
- s.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
-
- var filteredList = (from p in s.Query()
- join c in s.Query() on p.Name equals c.Name
- select p).ToList();
-
- Assert.That(list, Has.Count.EqualTo(2));
- Assert.That(filteredList, Has.Count.EqualTo(1));
- }
- }
-
- [Test]
- public void EntityJoinFilterQueryOver()
- {
- using (var s = OpenSession())
- {
- Customer c = null;
- Person p = null;
- var list = s.QueryOver(() => p).JoinEntityAlias(() => c, () => c.Name == p.Name).List();
-
- s.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
-
- var filteredList = s.QueryOver(() => p).JoinEntityAlias(() => c, () => c.Name == p.Name).List();
-
- Assert.That(list, Has.Count.EqualTo(2));
- Assert.That(filteredList, Has.Count.EqualTo(1));
- }
- }
}
}
diff --git a/src/NHibernate.Test/NHSpecificTest/GH3046/Mappings.hbm.xml b/src/NHibernate.Test/NHSpecificTest/GH3046/Mappings.hbm.xml
index f643c12c8e3..af5ee602af6 100644
--- a/src/NHibernate.Test/NHSpecificTest/GH3046/Mappings.hbm.xml
+++ b/src/NHibernate.Test/NHSpecificTest/GH3046/Mappings.hbm.xml
@@ -1,6 +1,6 @@
+ namespace="NHibernate.Test.NHSpecificTest.GH2549" >
diff --git a/src/NHibernate.Test/NHSpecificTest/GH3046/Model.cs b/src/NHibernate.Test/NHSpecificTest/GH3046/Model.cs
deleted file mode 100644
index d02d100c9b2..00000000000
--- a/src/NHibernate.Test/NHSpecificTest/GH3046/Model.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace NHibernate.Test.NHSpecificTest.GH3046
-{
- public class Customer
- {
- public virtual int Id { get; set; }
- public virtual bool Deleted { get; set; }
- public virtual string Name { get; set; }
- }
-
- public class Person
- {
- public virtual int Id { get; set; }
- public virtual string Name { get; set; }
- }
-}
From 042036240278640e9e9f54de9e976ab1642b38d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delaporte?=
<12201973+fredericdelaporte@users.noreply.github.com>
Date: Thu, 28 Apr 2022 01:26:37 +0200
Subject: [PATCH 4/5] Just extend GH2549 tests instead
---
.../Async/NHSpecificTest/GH2549/Fixture.cs | 13 +++++-----
.../Async/NHSpecificTest/GH3046/Fixture.cs | 21 ---------------
.../NHSpecificTest/GH2549/Fixture.cs | 13 +++++-----
.../NHSpecificTest/GH2549/Mappings.hbm.xml | 5 ++++
.../NHSpecificTest/GH3046/Fixture.cs | 10 -------
.../NHSpecificTest/GH3046/Mappings.hbm.xml | 26 -------------------
6 files changed, 19 insertions(+), 69 deletions(-)
delete mode 100644 src/NHibernate.Test/Async/NHSpecificTest/GH3046/Fixture.cs
delete mode 100644 src/NHibernate.Test/NHSpecificTest/GH3046/Fixture.cs
delete mode 100644 src/NHibernate.Test/NHSpecificTest/GH3046/Mappings.hbm.xml
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/GH2549/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/GH2549/Fixture.cs
index 82227867203..d1cba91d52c 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/GH2549/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/GH2549/Fixture.cs
@@ -15,6 +15,7 @@
namespace NHibernate.Test.NHSpecificTest.GH2549
{
using System.Threading.Tasks;
+ // Also test GH3046, when useManyToOne is true.
[TestFixture]
public class FixtureAsync : BugTestCase
{
@@ -41,8 +42,8 @@ protected override void OnTearDown()
}
}
- [Test]
- public async Task EntityJoinFilterLinqAsync()
+ [Theory]
+ public async Task EntityJoinFilterLinqAsync(bool useManyToOne)
{
using (var s = OpenSession())
{
@@ -50,7 +51,7 @@ public async Task EntityJoinFilterLinqAsync()
join c in s.Query() on p.Name equals c.Name
select p).ToListAsync());
- s.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
+ s.EnableFilter(useManyToOne ? "DeletedCustomer" : "DeletedCustomerNoManyToOne").SetParameter("deleted", false);
var filteredList = await ((from p in s.Query()
join c in s.Query() on p.Name equals c.Name
@@ -61,8 +62,8 @@ join c in s.Query() on p.Name equals c.Name
}
}
- [Test]
- public async Task EntityJoinFilterQueryOverAsync()
+ [Theory]
+ public async Task EntityJoinFilterQueryOverAsync(bool useManyToOne)
{
using (var s = OpenSession())
{
@@ -70,7 +71,7 @@ public async Task EntityJoinFilterQueryOverAsync()
Person p = null;
var list = await (s.QueryOver(() => p).JoinEntityAlias(() => c, () => c.Name == p.Name).ListAsync());
- s.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
+ s.EnableFilter(useManyToOne ? "DeletedCustomer" : "DeletedCustomerNoManyToOne").SetParameter("deleted", false);
var filteredList = await (s.QueryOver(() => p).JoinEntityAlias(() => c, () => c.Name == p.Name).ListAsync());
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/GH3046/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/GH3046/Fixture.cs
deleted file mode 100644
index 434def8948a..00000000000
--- a/src/NHibernate.Test/Async/NHSpecificTest/GH3046/Fixture.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by AsyncGenerator.
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-
-using NUnit.Framework;
-
-namespace NHibernate.Test.NHSpecificTest.GH3046
-{
- using System.Threading.Tasks;
- // Only the mapping needs a change for this test case. It is fetched by the fixture namespace, so it will use the mapping defined here.
- [TestFixture]
- public class FixtureAsync : GH2549.FixtureAsync
- {
- }
-}
diff --git a/src/NHibernate.Test/NHSpecificTest/GH2549/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/GH2549/Fixture.cs
index a01c1ec2572..f243773531d 100644
--- a/src/NHibernate.Test/NHSpecificTest/GH2549/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/GH2549/Fixture.cs
@@ -3,6 +3,7 @@
namespace NHibernate.Test.NHSpecificTest.GH2549
{
+ // Also test GH3046, when useManyToOne is true.
[TestFixture]
public class Fixture : BugTestCase
{
@@ -29,8 +30,8 @@ protected override void OnTearDown()
}
}
- [Test]
- public void EntityJoinFilterLinq()
+ [Theory]
+ public void EntityJoinFilterLinq(bool useManyToOne)
{
using (var s = OpenSession())
{
@@ -38,7 +39,7 @@ public void EntityJoinFilterLinq()
join c in s.Query() on p.Name equals c.Name
select p).ToList();
- s.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
+ s.EnableFilter(useManyToOne ? "DeletedCustomer" : "DeletedCustomerNoManyToOne").SetParameter("deleted", false);
var filteredList = (from p in s.Query()
join c in s.Query() on p.Name equals c.Name
@@ -49,8 +50,8 @@ join c in s.Query() on p.Name equals c.Name
}
}
- [Test]
- public void EntityJoinFilterQueryOver()
+ [Theory]
+ public void EntityJoinFilterQueryOver(bool useManyToOne)
{
using (var s = OpenSession())
{
@@ -58,7 +59,7 @@ public void EntityJoinFilterQueryOver()
Person p = null;
var list = s.QueryOver(() => p).JoinEntityAlias(() => c, () => c.Name == p.Name).List();
- s.EnableFilter("DeletedCustomer").SetParameter("deleted", false);
+ s.EnableFilter(useManyToOne ? "DeletedCustomer" : "DeletedCustomerNoManyToOne").SetParameter("deleted", false);
var filteredList = s.QueryOver(() => p).JoinEntityAlias(() => c, () => c.Name == p.Name).List();
diff --git a/src/NHibernate.Test/NHSpecificTest/GH2549/Mappings.hbm.xml b/src/NHibernate.Test/NHSpecificTest/GH2549/Mappings.hbm.xml
index 65b540b9202..de096391e88 100644
--- a/src/NHibernate.Test/NHSpecificTest/GH2549/Mappings.hbm.xml
+++ b/src/NHibernate.Test/NHSpecificTest/GH2549/Mappings.hbm.xml
@@ -10,6 +10,7 @@
+
@@ -23,4 +24,8 @@
+
+
+
+
diff --git a/src/NHibernate.Test/NHSpecificTest/GH3046/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/GH3046/Fixture.cs
deleted file mode 100644
index 452f1b83cb9..00000000000
--- a/src/NHibernate.Test/NHSpecificTest/GH3046/Fixture.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using NUnit.Framework;
-
-namespace NHibernate.Test.NHSpecificTest.GH3046
-{
- // Only the mapping needs a change for this test case. It is fetched by the fixture namespace, so it will use the mapping defined here.
- [TestFixture]
- public class Fixture : GH2549.Fixture
- {
- }
-}
diff --git a/src/NHibernate.Test/NHSpecificTest/GH3046/Mappings.hbm.xml b/src/NHibernate.Test/NHSpecificTest/GH3046/Mappings.hbm.xml
deleted file mode 100644
index af5ee602af6..00000000000
--- a/src/NHibernate.Test/NHSpecificTest/GH3046/Mappings.hbm.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
From 890a131cfc784460b7a0c13c75e4f88dca1d3079 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delaporte?=
<12201973+fredericdelaporte@users.noreply.github.com>
Date: Thu, 28 Apr 2022 01:31:32 +0200
Subject: [PATCH 5/5] Adjust a comment
---
src/NHibernate.Test/Async/NHSpecificTest/GH2549/Fixture.cs | 2 +-
src/NHibernate.Test/NHSpecificTest/GH2549/Fixture.cs | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/GH2549/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/GH2549/Fixture.cs
index d1cba91d52c..63ef36ffe09 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/GH2549/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/GH2549/Fixture.cs
@@ -15,7 +15,7 @@
namespace NHibernate.Test.NHSpecificTest.GH2549
{
using System.Threading.Tasks;
- // Also test GH3046, when useManyToOne is true.
+ // Test GH3046 too, when useManyToOne is true.
[TestFixture]
public class FixtureAsync : BugTestCase
{
diff --git a/src/NHibernate.Test/NHSpecificTest/GH2549/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/GH2549/Fixture.cs
index f243773531d..8912bec9a25 100644
--- a/src/NHibernate.Test/NHSpecificTest/GH2549/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/GH2549/Fixture.cs
@@ -3,7 +3,7 @@
namespace NHibernate.Test.NHSpecificTest.GH2549
{
- // Also test GH3046, when useManyToOne is true.
+ // Test GH3046 too, when useManyToOne is true.
[TestFixture]
public class Fixture : BugTestCase
{