diff --git a/ShowBuildMenu.bat b/ShowBuildMenu.bat
index dfa71036ecf..2e7d4e10380 100644
--- a/ShowBuildMenu.bat
+++ b/ShowBuildMenu.bat
@@ -51,12 +51,14 @@ echo E. Add a test configuration for Oracle.
echo F. Add a test configuration for Oracle with managed driver.
echo G. Add a test configuration for SQL Server Compact.
echo H. Add a test configuration for MySql.
+echo I. Add a test configuration for SAP HANA.
echo.
echo X. Exit to main menu.
echo.
-%BUILDTOOL% prompt ABCDEFGHX
-if errorlevel 8 goto main-menu
+%BUILDTOOL% prompt ABCDEFGHIX
+if errorlevel 9 goto main-menu
+if errorlevel 8 goto test-setup-hana
if errorlevel 7 goto test-setup-mysql
if errorlevel 6 goto test-setup-sqlserverce
if errorlevel 5 goto test-setup-oracle-managed
@@ -122,6 +124,13 @@ set LIB_FILES=
set LIB_FILES2=
goto test-setup-generic
+:test-setup-hana
+set CONFIG_NAME=HANA
+set TEST_PLATFORM=AnyCPU
+set LIB_FILES=
+set LIB_FILES2=
+goto test-setup-generic
+
:test-setup-generic
set CFGNAME=
set /p CFGNAME=Enter a name for your test configuration or press enter to use default name:
diff --git a/src/NHibernate.Config.Templates/HANA.cfg.xml b/src/NHibernate.Config.Templates/HANA.cfg.xml
new file mode 100644
index 00000000000..f2131496105
--- /dev/null
+++ b/src/NHibernate.Config.Templates/HANA.cfg.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ NHibernate.Driver.HanaColumnStoreDriver
+
+
+ Server=localhost:39015;UserID=nhibernate;Password=;
+ Enlist=false;
+
+ NHibernate.Dialect.HanaColumnStoreDialect
+
+
diff --git a/src/NHibernate.Test/Ado/GenericBatchingBatcherFixture.cs b/src/NHibernate.Test/Ado/GenericBatchingBatcherFixture.cs
index a8b66b34f7e..de94a8f86a8 100644
--- a/src/NHibernate.Test/Ado/GenericBatchingBatcherFixture.cs
+++ b/src/NHibernate.Test/Ado/GenericBatchingBatcherFixture.cs
@@ -28,7 +28,8 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
{
return !(dialect is FirebirdDialect) &&
!(dialect is Oracle8iDialect) &&
- !(dialect is MsSqlCeDialect);
+ !(dialect is MsSqlCeDialect) &&
+ !(dialect is HanaDialectBase);
}
[Test]
diff --git a/src/NHibernate.Test/Async/Ado/GenericBatchingBatcherFixture.cs b/src/NHibernate.Test/Async/Ado/GenericBatchingBatcherFixture.cs
index 8392263894f..f2889d53c44 100644
--- a/src/NHibernate.Test/Async/Ado/GenericBatchingBatcherFixture.cs
+++ b/src/NHibernate.Test/Async/Ado/GenericBatchingBatcherFixture.cs
@@ -41,7 +41,8 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
{
return !(dialect is FirebirdDialect) &&
!(dialect is Oracle8iDialect) &&
- !(dialect is MsSqlCeDialect);
+ !(dialect is MsSqlCeDialect) &&
+ !(dialect is HanaDialectBase);
}
[Test]
diff --git a/src/NHibernate.Test/Async/Criteria/Lambda/IntegrationFixture.cs b/src/NHibernate.Test/Async/Criteria/Lambda/IntegrationFixture.cs
index 5e6e76b5884..434563e7856 100644
--- a/src/NHibernate.Test/Async/Criteria/Lambda/IntegrationFixture.cs
+++ b/src/NHibernate.Test/Async/Criteria/Lambda/IntegrationFixture.cs
@@ -264,6 +264,9 @@ public async Task IsTypeAsync()
[Test]
public async Task OverrideEagerJoinAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
using (ISession s = OpenSession())
using (ITransaction t = s.BeginTransaction())
{
@@ -455,4 +458,4 @@ public async Task StatelessSessionAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/Events/Collections/AbstractCollectionEventFixture.cs b/src/NHibernate.Test/Async/Events/Collections/AbstractCollectionEventFixture.cs
index d5c4a55210b..9f6e691d52c 100644
--- a/src/NHibernate.Test/Async/Events/Collections/AbstractCollectionEventFixture.cs
+++ b/src/NHibernate.Test/Async/Events/Collections/AbstractCollectionEventFixture.cs
@@ -12,7 +12,6 @@
using System.Collections.Generic;
using NHibernate.Collection;
using NHibernate.Collection.Generic;
-using NHibernate.Event;
using NHibernate.Test.Events.Collections.Association.Bidirectional.ManyToMany;
using NUnit.Framework;
@@ -23,6 +22,11 @@ namespace NHibernate.Test.Events.Collections
[TestFixture]
public abstract class AbstractCollectionEventFixtureAsync : TestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override string MappingsAssembly
{
get { return "NHibernate.Test"; }
diff --git a/src/NHibernate.Test/Async/Generatedkeys/Seqidentity/SequenceIdentityFixture.cs b/src/NHibernate.Test/Async/Generatedkeys/Seqidentity/SequenceIdentityFixture.cs
index e753de8f0f7..3a6e766c567 100644
--- a/src/NHibernate.Test/Async/Generatedkeys/Seqidentity/SequenceIdentityFixture.cs
+++ b/src/NHibernate.Test/Async/Generatedkeys/Seqidentity/SequenceIdentityFixture.cs
@@ -29,7 +29,9 @@ protected override string MappingsAssembly
protected override bool AppliesTo(Dialect.Dialect dialect)
{
- return dialect.SupportsSequences && !(dialect is Dialect.MsSql2012Dialect);
+ return dialect.SupportsSequences &&
+ !(dialect is Dialect.MsSql2012Dialect) &&
+ !(dialect is Dialect.HanaDialectBase); // SAP HANA does not support a syntax allowing to return the inserted id as an output parameter or a return value
}
[Test]
@@ -49,4 +51,4 @@ public async Task SequenceIdentityGeneratorAsync()
session.Close();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/GenericTest/Overall/Fixture.cs b/src/NHibernate.Test/Async/GenericTest/Overall/Fixture.cs
index 9c6cbd4816d..4293af51d2a 100644
--- a/src/NHibernate.Test/Async/GenericTest/Overall/Fixture.cs
+++ b/src/NHibernate.Test/Async/GenericTest/Overall/Fixture.cs
@@ -53,6 +53,9 @@ public async Task CRUDAsync()
[Test]
public async Task CRUDABAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
var entity = new A
{
Property = new B { Prop = 2 },
diff --git a/src/NHibernate.Test/Async/Hql/HQLFunctions.cs b/src/NHibernate.Test/Async/Hql/HQLFunctions.cs
index c7212067625..b1f3c6daea4 100644
--- a/src/NHibernate.Test/Async/Hql/HQLFunctions.cs
+++ b/src/NHibernate.Test/Async/Hql/HQLFunctions.cs
@@ -947,6 +947,13 @@ public async Task CastAsync()
throw;
}
}
+ else if (Dialect is HanaDialectBase)
+ {
+ string msgToCheck =
+ "not a GROUP BY expression: 'ANIMAL0_.BODYWEIGHT' must be in group by clause";
+ if (!ex.InnerException.Message.Contains(msgToCheck))
+ throw;
+ }
else
{
string msgToCheck =
@@ -1144,7 +1151,7 @@ public async Task StrAsync()
[Test]
public async Task IifAsync()
{
- AssumeFunctionSupported("Iif");
+ AssumeFunctionSupported("iif");
using (ISession s = OpenSession())
{
await (s.SaveAsync(new MaterialResource("Flash card 512MB", "A001/07", MaterialResource.MaterialState.Available)));
diff --git a/src/NHibernate.Test/Async/Insertordering/FamilyModel/Fixture.cs b/src/NHibernate.Test/Async/Insertordering/FamilyModel/Fixture.cs
index 44441799c8d..759d0621f85 100644
--- a/src/NHibernate.Test/Async/Insertordering/FamilyModel/Fixture.cs
+++ b/src/NHibernate.Test/Async/Insertordering/FamilyModel/Fixture.cs
@@ -29,6 +29,11 @@ protected override string MappingsAssembly
get { return "NHibernate.Test"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsBatchingDependentDML;
+ }
+
protected override void Configure(Configuration configuration)
{
configuration.DataBaseIntegration(x =>
@@ -105,4 +110,4 @@ public async System.Threading.Tasks.Task CircularReferencesAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/Legacy/FooBarTest.cs b/src/NHibernate.Test/Async/Legacy/FooBarTest.cs
index d148a732bf6..4af220a1377 100644
--- a/src/NHibernate.Test/Async/Legacy/FooBarTest.cs
+++ b/src/NHibernate.Test/Async/Legacy/FooBarTest.cs
@@ -2490,7 +2490,7 @@ public async Task CollectionsInSelectAsync()
// probably the conversion ProxyArray.id (to_number ensuring a not null value)
// Indeed, ProxyArray.id is Glarch.tha_key which is a string filled with a Guid. It does
// not fail with most engine likely because there are no results thanks to other conditions.
- if (!(Dialect is Oracle8iDialect) && !(Dialect is MsSqlCeDialect))
+ if (!(Dialect is Oracle8iDialect) && !(Dialect is MsSqlCeDialect) && !(Dialect is HanaDialectBase))
{
await (s.CreateQuery(
"select count(*) from Bar as bar join bar.Component.Glarch.ProxyArray as g where cast(g.id as Int32) in indices(bar.Baz.FooArray)").
@@ -4103,6 +4103,9 @@ public async Task UpdateOrderAsync()
[Test]
public async Task UpdateFromTransientAsync()
{
+ if (!TestDialect.SupportsBatchingDependentDML)
+ Assert.Ignore($"Dialect {Dialect} does not support batching of dependent DML (fee update on related fee)");
+
ISession s = OpenSession();
Fee fee1 = new Fee();
await (s.SaveAsync(fee1));
diff --git a/src/NHibernate.Test/Async/Legacy/FumTest.cs b/src/NHibernate.Test/Async/Legacy/FumTest.cs
index 779c374d42d..a947a8a1229 100644
--- a/src/NHibernate.Test/Async/Legacy/FumTest.cs
+++ b/src/NHibernate.Test/Async/Legacy/FumTest.cs
@@ -727,4 +727,4 @@ private ISession SpoofSerialization(ISession session)
return (ISession) formatter.Deserialize(stream);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/Legacy/MasterDetailTest.cs b/src/NHibernate.Test/Async/Legacy/MasterDetailTest.cs
index 3639e821c88..4482ecdf91d 100644
--- a/src/NHibernate.Test/Async/Legacy/MasterDetailTest.cs
+++ b/src/NHibernate.Test/Async/Legacy/MasterDetailTest.cs
@@ -52,6 +52,9 @@ protected override IList Mappings
[Test]
public async Task ParentChildrenAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession session = OpenSession();
M parent = new M();
@@ -842,6 +845,9 @@ public async Task MixNativeAssignedAsync()
[Test]
public async Task CollectionReplaceOnUpdateAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Category c = new Category();
@@ -887,6 +893,9 @@ public async Task CollectionReplaceOnUpdateAsync()
[Test]
public async Task CollectionReplace2Async()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Category c = new Category();
@@ -926,6 +935,9 @@ public async Task CollectionReplace2Async()
[Test]
public async Task CollectionReplaceAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Category c = new Category();
@@ -971,6 +983,9 @@ public async Task CollectionReplaceAsync()
[Test]
public async Task CategoriesAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
Category c = new Category();
c.Name = Category.RootCategory;
Category c1 = new Category();
@@ -1012,6 +1027,9 @@ public async Task CategoriesAsync()
[Test]
public async Task CollectionRefreshAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
Category c = new Category();
IList list = new List();
@@ -1055,6 +1073,9 @@ public async Task CollectionRefreshAsync()
[Test]
public async Task CachedCollectionRefreshAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
Category c = new Category();
IList list = new List();
@@ -1240,6 +1261,9 @@ public async Task QueuedBagAddsAsync()
[Test]
public async Task PolymorphicCriteriaAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction txn = s.BeginTransaction();
Category f = new Category();
diff --git a/src/NHibernate.Test/Async/Legacy/MultiTableTest.cs b/src/NHibernate.Test/Async/Legacy/MultiTableTest.cs
index 0a2abcd1882..6eed8f4564f 100644
--- a/src/NHibernate.Test/Async/Legacy/MultiTableTest.cs
+++ b/src/NHibernate.Test/Async/Legacy/MultiTableTest.cs
@@ -148,7 +148,7 @@ public async Task QueriesAsync()
ISession s = OpenSession();
long id = 1L;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
id = (long) await (s.SaveAsync(new TrivialClass()));
}
@@ -184,7 +184,7 @@ public async Task ConstraintsAsync()
ITransaction t = s.BeginTransaction();
SubMulti sm = new SubMulti();
sm.Amount = 66.5f;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
await (s.SaveAsync(sm));
}
@@ -215,7 +215,7 @@ public async Task MultiTableAsync()
simp.Name = "simp";
object mid;
object sid;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
mid = await (s.SaveAsync(multi));
sid = await (s.SaveAsync(simp));
@@ -230,7 +230,7 @@ public async Task MultiTableAsync()
SubMulti sm = new SubMulti();
sm.Amount = 66.5f;
object smid;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
smid = await (s.SaveAsync(sm));
}
@@ -464,7 +464,7 @@ public async Task MultiTableCollectionsAsync()
simp.Name = "simp";
object mid;
object sid;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
mid = await (s.SaveAsync(multi));
sid = await (s.SaveAsync(simp));
@@ -484,7 +484,7 @@ public async Task MultiTableCollectionsAsync()
ls.Set = new HashSet { multi, simp };
object id;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
id = await (s.SaveAsync(ls));
}
@@ -541,7 +541,7 @@ public async Task MultiTableManyToOneAsync()
simp.Name = "simp";
object mid;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
mid = await (s.SaveAsync(multi));
}
@@ -556,7 +556,7 @@ public async Task MultiTableManyToOneAsync()
ls.YetAnother = ls;
ls.Name = "Less Simple";
object id;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
id = await (s.SaveAsync(ls));
}
@@ -602,6 +602,9 @@ public async Task MultiTableNativeIdAsync()
[Test]
public async Task CollectionAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Multi multi1 = new Multi();
@@ -701,4 +704,4 @@ public async Task DynamicUpdateAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/Legacy/ParentChildTest.cs b/src/NHibernate.Test/Async/Legacy/ParentChildTest.cs
index 543391b7136..5a6f6b6fd10 100644
--- a/src/NHibernate.Test/Async/Legacy/ParentChildTest.cs
+++ b/src/NHibernate.Test/Async/Legacy/ParentChildTest.cs
@@ -55,6 +55,9 @@ protected override IList Mappings
[Test]
public async Task ReplicateAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
Container baz = new Container();
Contained f = new Contained();
@@ -353,6 +356,9 @@ public async Task ClassWhereAsync()
[Test]
public async Task CollectionQueryAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
@@ -510,6 +516,9 @@ public async Task ParentNullChildAsync()
[Test]
public async Task ManyToManyAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
// if( dialect is Dialect.HSQLDialect) return;
ISession s = OpenSession();
@@ -567,6 +576,9 @@ public async Task ManyToManyAsync()
[Test]
public async Task ContainerAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Container c = new Container();
@@ -699,6 +711,9 @@ public async Task ContainerAsync()
[Test]
public async Task CascadeCompositeElementsAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
Container c = new Container();
c.Cascades = new List();
@@ -760,6 +775,9 @@ public async Task CascadeCompositeElementsAsync()
[Test]
public async Task BagAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
//if( dialect is Dialect.HSQLDialect ) return;
ISession s = OpenSession();
diff --git a/src/NHibernate.Test/Async/Linq/ByMethod/OrderByTests.cs b/src/NHibernate.Test/Async/Linq/ByMethod/OrderByTests.cs
index 207f713d47f..9a959e1865b 100644
--- a/src/NHibernate.Test/Async/Linq/ByMethod/OrderByTests.cs
+++ b/src/NHibernate.Test/Async/Linq/ByMethod/OrderByTests.cs
@@ -72,8 +72,8 @@ orderby c.CustomerId descending
[Test]
public async Task OrderByCalculatedAggregatedSubselectPropertyAsync()
{
- if (!Dialect.SupportsScalarSubSelects)
- Assert.Ignore("Dialect does not support scalar sub-selects");
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
//NH-2781
var result = await (db.Orders
@@ -93,8 +93,8 @@ public async Task OrderByCalculatedAggregatedSubselectPropertyAsync()
[Test]
public async Task AggregateAscendingOrderByClauseAsync()
{
- if (!Dialect.SupportsScalarSubSelects)
- Assert.Ignore("Dialect does not support scalar sub-selects");
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
var query = from c in db.Customers
orderby c.Orders.Count
@@ -109,8 +109,8 @@ orderby c.Orders.Count
[Test]
public async Task AggregateDescendingOrderByClauseAsync()
{
- if (!Dialect.SupportsScalarSubSelects)
- Assert.Ignore("Dialect does not support scalar sub-selects");
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
var query = from c in db.Customers
orderby c.Orders.Count descending
@@ -191,6 +191,9 @@ public async Task OrderByWithSelfReferencedSubquery1Async()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore("Dialect does not support scalar sub-selects");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
if (Dialect is Oracle8iDialect)
Assert.Ignore("On Oracle this generates a correlated subquery two levels deep which isn't supported until Oracle 10g.");
@@ -209,6 +212,9 @@ public async Task OrderByWithSelfReferencedSubquery2Async()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore("Dialect does not support scalar sub-selects");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
if (Dialect is Oracle8iDialect)
Assert.Ignore("On Oracle this generates a correlated subquery two levels deep which isn't supported until Oracle 10g.");
@@ -251,4 +257,4 @@ public Task OrderByWithSelectDistinctAndTakeAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/Linq/PropertyMethodMappingTests.cs b/src/NHibernate.Test/Async/Linq/PropertyMethodMappingTests.cs
index 9a5d5ec73ba..127593a0ec4 100644
--- a/src/NHibernate.Test/Async/Linq/PropertyMethodMappingTests.cs
+++ b/src/NHibernate.Test/Async/Linq/PropertyMethodMappingTests.cs
@@ -27,7 +27,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
public async Task CanExecuteCountInSelectClauseAsync()
{
var results = await (db.Timesheets
- .Select(t => t.Entries.Count).ToListAsync());
+ .Select(t => t.Entries.Count).OrderBy(s => s).ToListAsync());
Assert.AreEqual(3, results.Count);
Assert.AreEqual(0, results[0]);
@@ -44,4 +44,4 @@ public async Task CanExecuteCountInWhereClauseAsync()
Assert.AreEqual(2, results.Count);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/Linq/WhereSubqueryTests.cs b/src/NHibernate.Test/Async/Linq/WhereSubqueryTests.cs
index 6c980702a96..7ec1685319a 100644
--- a/src/NHibernate.Test/Async/Linq/WhereSubqueryTests.cs
+++ b/src/NHibernate.Test/Async/Linq/WhereSubqueryTests.cs
@@ -613,6 +613,9 @@ public async Task SubqueryWhereFailingTestAsync()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support subquery in select clause");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
var list = await ((db.OrderLines
.Select(ol => new
{
@@ -632,6 +635,9 @@ public async Task SubqueryWhereFailingTest2Async()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support subquery in select clause");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
var list = await (db.OrderLines
.Select(ol => new
{
@@ -651,6 +657,9 @@ public async Task SubqueryWhereFailingTest3Async()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support subquery in select clause");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
var list = await (db.OrderLines
.Select(ol => new
{
@@ -670,6 +679,9 @@ public async Task ProductsWithSubqueryReturningBoolFirstOrDefaultEqAsync()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
var result = await ((from p in db.Products
where (from c in db.Categories
where c.Name == "Confections"
@@ -687,6 +699,9 @@ public async Task SubselectCanHaveBoolResultAsync()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
var result = await ((from c in db.Categories
where c.Products.OrderBy(p => p.ProductId).Select(p => p.Discontinued).FirstOrDefault() == false
select c).ToListAsync());
@@ -701,6 +716,9 @@ public async Task ProductsWithSubqueryReturningProjectionBoolFirstOrDefaultEqAsy
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
//NH-3190
var result = await ((from p in db.Products
where (from c in db.Categories
@@ -719,6 +737,9 @@ public async Task ProductsWithSubqueryReturningStringFirstOrDefaultEqAsync()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
var result = await ((from p in db.Products
where (from c in db.Categories
where c.Name == "Confections"
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/CollectionFixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/CollectionFixture.cs
index 53b47cad6c5..6f03d76326d 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/CollectionFixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/CollectionFixture.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System;
using System.Collections;
using NHibernate.DomainModel.NHSpecific;
using NUnit.Framework;
@@ -36,6 +35,11 @@ protected override void OnTearDown()
}
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task TestLoadParentFirstAsync()
{
@@ -96,4 +100,4 @@ public async Task TestLoadChildFirstAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/Docs/Associations/BiM21/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/Docs/Associations/BiM21/Fixture.cs
index bd04b885705..5da8738d3f0 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/Docs/Associations/BiM21/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/Docs/Associations/BiM21/Fixture.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System;
using System.Collections;
using NUnit.Framework;
@@ -28,6 +27,11 @@ protected override IList Mappings
get { return new string[] {"NHSpecificTest.Docs.Associations.BiM21.Mappings.hbm.xml"}; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task TestCorrectUseAsync()
{
@@ -73,4 +77,4 @@ public void TestErrorUsageAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/Docs/ExampleParentChild/UpdateFixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/Docs/ExampleParentChild/UpdateFixture.cs
index 03b397df003..a08fa8b4b13 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/Docs/ExampleParentChild/UpdateFixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/Docs/ExampleParentChild/UpdateFixture.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System;
using System.Collections;
using NUnit.Framework;
@@ -28,6 +27,11 @@ protected override IList Mappings
get { return new string[] {"NHSpecificTest.Docs.ExampleParentChild.Mappings.hbm.xml"}; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task UpdateAsync()
{
@@ -64,4 +68,4 @@ public async Task UpdateAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/GH1565/LockEntityWithOuterJoinTest.cs b/src/NHibernate.Test/Async/NHSpecificTest/GH1565/LockEntityWithOuterJoinTest.cs
index 56e189e798f..48d02c3df07 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/GH1565/LockEntityWithOuterJoinTest.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/GH1565/LockEntityWithOuterJoinTest.cs
@@ -55,5 +55,10 @@ protected override void OnTearDown()
session.CreateSQLQuery("delete from MainEntity").ExecuteUpdate();
}
}
+
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
}
}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/LazyLoadBugTest.cs b/src/NHibernate.Test/Async/NHSpecificTest/LazyLoadBugTest.cs
index 4c92593e0bf..4c1540df513 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/LazyLoadBugTest.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/LazyLoadBugTest.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System;
using System.Collections;
using NHibernate.DomainModel.NHSpecific;
using NUnit.Framework;
@@ -24,6 +23,11 @@ protected override IList Mappings
get { return new string[] {"NHSpecific.LazyLoadBug.hbm.xml"}; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task TestLazyLoadAsync()
{
@@ -102,4 +106,4 @@ public async Task TestLazyLoadNoAddAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/ListsWithHoles/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/ListsWithHoles/Fixture.cs
index a1d00969f4a..160622f9b90 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/ListsWithHoles/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/ListsWithHoles/Fixture.cs
@@ -8,12 +8,6 @@
//------------------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Text;
-using log4net.Appender;
-using log4net.Core;
-using log4net.Repository.Hierarchy;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.ListsWithHoles
@@ -24,6 +18,10 @@ namespace NHibernate.Test.NHSpecificTest.ListsWithHoles
[TestFixture]
public class FixtureAsync : TestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
protected override IList Mappings
{
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/LoadingNullEntityInSet/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/LoadingNullEntityInSet/Fixture.cs
index caf304b69ec..58e5c02b4b0 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/LoadingNullEntityInSet/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/LoadingNullEntityInSet/Fixture.cs
@@ -32,6 +32,11 @@ protected override string MappingsAssembly
get { return "NHibernate.Test"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override DebugSessionFactory BuildSessionFactory()
{
cfg.GetCollectionMapping(typeof (Employee).FullName + ".Primaries")
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/Logs/LogsFixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/Logs/LogsFixture.cs
index 71ada7ac57e..928af230f23 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/Logs/LogsFixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/Logs/LogsFixture.cs
@@ -147,6 +147,11 @@ public async Task WillGetSessionIdFromInterlacedSessionsLogsAsync()
[Test]
public async Task WillGetSessionIdFromSessionLogsConcurrentAsync()
{
+ if (!TestDialect.SupportsConcurrencyTests)
+ {
+ Assert.Ignore($"Dialect {Dialect} does not supports concurrency tests");
+ }
+
GlobalContext.Properties["sessionId"] = new SessionIdCapturer();
// Do not use a ManualResetEventSlim, it does not support async and exhausts the task thread pool in the
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1274ExportExclude/NH1274ExportExcludeFixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1274ExportExclude/NH1274ExportExcludeFixture.cs
index 66480289864..bb8093267c8 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1274ExportExclude/NH1274ExportExcludeFixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1274ExportExclude/NH1274ExportExcludeFixture.cs
@@ -69,8 +69,8 @@ public async Task SchemaExport_Export_CreatesExportScriptAsync()
Assert.IsTrue(s.Contains("drop table Home_All"));
}
- Assert.IsTrue(s.Contains("create table Home_All"));
- Assert.IsTrue(s.Contains("create table Home_Export"));
+ Assert.That(s, Does.Match("create ((column|row) )?table Home_All"));
+ Assert.That(s, Does.Match("create ((column|row) )?table Home_Export"));
}
[Test]
@@ -82,8 +82,8 @@ public async Task SchemaExport_Update_CreatesUpdateScriptAsync()
await (update.ExecuteAsync(tw.WriteLine, false));
string s = tw.ToString();
- Assert.IsTrue(s.Contains("create table Home_Update"));
- Assert.IsTrue(s.Contains("create table Home_All"));
+ Assert.That(s, Does.Match("create ((column|row) )?table Home_Update"));
+ Assert.That(s, Does.Match("create ((column|row) )?table Home_All"));
}
[Test]
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1301/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1301/Fixture.cs
index 32e7d3b1d68..273ca58ad53 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1301/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1301/Fixture.cs
@@ -21,6 +21,11 @@ public override string BugNumber
get { return "NH1301"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task TestAsync()
{
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1388/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1388/Fixture.cs
index 73bea822439..fe29f63e407 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1388/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1388/Fixture.cs
@@ -18,6 +18,11 @@ namespace NHibernate.Test.NHSpecificTest.NH1388
[TestFixture]
public class FixtureAsync : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task BagTestAsync()
{
@@ -110,4 +115,4 @@ protected override string CacheConcurrencyStrategy
get { return null; }
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1394/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1394/Fixture.cs
index 6429fd501f0..641113b1e29 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1394/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1394/Fixture.cs
@@ -85,8 +85,8 @@ public async Task CanOrderByPropertyProjectionAsync()
[Test]
public async Task CanOrderBySubqueryProjectionAsync()
{
- if (!Dialect.SupportsScalarSubSelects)
- Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
using (ISession s = OpenSession())
{
@@ -115,8 +115,8 @@ public async Task CanOrderBySubqueryProjectionAsync()
[Test]
public async Task CanOrderBySubqueryProjectionDescAsync()
{
- if (!Dialect.SupportsScalarSubSelects)
- Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
using (ISession s = OpenSession())
{
@@ -177,4 +177,4 @@ public async Task CanOrderBySqlProjectionDescAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1443/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1443/Fixture.cs
index ff1267b5d3a..39b677047e1 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1443/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1443/Fixture.cs
@@ -33,7 +33,7 @@ public class FixtureAsync
else
Assert.That(script, Does.Match("drop table nhibernate.dbo.Aclass"));
- Assert.That(script, Does.Match("create table nhibernate.dbo.Aclass"));
+ Assert.That(script, Does.Match("create ((column|row) )?table nhibernate.dbo.Aclass"));
}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1601/Fixture1.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1601/Fixture1.cs
index 06fe6fbf288..d249389ec0a 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1601/Fixture1.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1601/Fixture1.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System.Collections.Generic;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH1601
@@ -18,6 +17,11 @@ namespace NHibernate.Test.NHSpecificTest.NH1601
[TestFixture]
public class Fixture1Async : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
///
/// Loads the project do not call Count on the list assigned.
///
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1601/Fixture2.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1601/Fixture2.cs
index 9eae4b87fc6..d5c4d00461b 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1601/Fixture2.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1601/Fixture2.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System.Collections.Generic;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH1601
@@ -18,6 +17,11 @@ namespace NHibernate.Test.NHSpecificTest.NH1601
[TestFixture]
public class Fixture2Async : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
///
/// Loads the project and when Scenario2 and Scenario3 are set calls Count on the list assigned.
///
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1609/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1609/Fixture.cs
index 403b3d74483..f64a4444dbd 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1609/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1609/Fixture.cs
@@ -83,4 +83,4 @@ public async Task TestAsync()
return b;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1691/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1691/Fixture.cs
index dae60e7b972..cdc7387a376 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1691/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1691/Fixture.cs
@@ -17,6 +17,11 @@ namespace NHibernate.Test.NHSpecificTest.NH1691
[TestFixture]
public class FixtureAsync : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
private static Component GetInitializedComponent()
{
var component = new Component();
@@ -123,4 +128,4 @@ public async Task NestedComponentCollectionAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1869/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1869/Fixture.cs
index bed8bab3850..0137e1fcc94 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1869/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1869/Fixture.cs
@@ -83,4 +83,4 @@ public async Task TestAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1914/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1914/Fixture.cs
index 053ba28dd26..d6fcf07b29a 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1914/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1914/Fixture.cs
@@ -18,6 +18,10 @@ namespace NHibernate.Test.NHSpecificTest.NH1914
[TestFixture]
public class FixtureAsync : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
[Test]
public async Task CascadeInsertAssignedAsync()
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2328/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2328/Fixture.cs
index a0b90579258..ecc820d6547 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2328/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2328/Fixture.cs
@@ -9,8 +9,8 @@
using System.Linq;
-using NHibernate.Linq;
using NUnit.Framework;
+using NHibernate.Linq;
namespace NHibernate.Test.NHSpecificTest.NH2328
{
@@ -18,6 +18,11 @@ namespace NHibernate.Test.NHSpecificTest.NH2328
[TestFixture]
public class FixtureAsync : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override void OnSetUp()
{
base.OnSetUp();
@@ -109,4 +114,4 @@ public async Task AnyIs_HqlWorksWithClassNameInTheLeftAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2409/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2409/Fixture.cs
index 3c2b8f2e190..4318e325157 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2409/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2409/Fixture.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System;
using System.Linq;
using NHibernate.Criterion;
using NHibernate.SqlCommand;
@@ -20,6 +19,11 @@ namespace NHibernate.Test.NHSpecificTest.NH2409
[TestFixture]
public class FixtureAsync : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task BugAsync()
{
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2703/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2703/Fixture.cs
index 011d0b4c6ec..43e122587e8 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2703/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2703/Fixture.cs
@@ -18,6 +18,11 @@ public class FixtureAsync : BugTestCase
{
Parent RootElement = null;
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override void OnSetUp()
{
using (ISession session = Sfi.OpenSession())
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2705/Test.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2705/Test.cs
index 6159e3b0515..f81135448a8 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2705/Test.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2705/Test.cs
@@ -94,4 +94,4 @@ public void LinqQueryWithFetch_WhenDerivedClassesUseComponentAndEagerFetchManyTo
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2760/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2760/Fixture.cs
index c56740a391d..8c5a23a67ec 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2760/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2760/Fixture.cs
@@ -68,6 +68,9 @@ protected override void OnTearDown()
[Test]
public async Task ShouldBeAbleToSelectUserGroupAndOrderByUserCountAsync()
{
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
+
using (ISession session = base.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
@@ -136,6 +139,9 @@ from ug in session.Query()
[Test]
public async Task ShouldBeAbleToSelectUserGroupAndOrderByUserCountWithHqlAsync()
{
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
+
using (ISession session = base.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
@@ -151,4 +157,4 @@ public async Task ShouldBeAbleToSelectUserGroupAndOrderByUserCountWithHqlAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH280/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH280/Fixture.cs
index b91759d98e4..28733b03c12 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH280/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH280/Fixture.cs
@@ -37,16 +37,21 @@ public async Task ConstInSelectAsync()
await (s.SaveAsync(f));
await (s.FlushAsync());
- IList l = await (s.CreateQuery("select 'TextConst', 123, 123.5, .5 from Foo").ListAsync());
- IList result = l[0] as IList;
- Assert.AreEqual(typeof(string), result[0].GetType());
- Assert.AreEqual(typeof(Int32), result[1].GetType());
- Assert.AreEqual(typeof(Double), result[2].GetType());
- Assert.AreEqual(typeof(Double), result[3].GetType());
- Assert.AreEqual("TextConst", result[0]);
- Assert.AreEqual(123, result[1]);
- Assert.AreEqual(123.5D, result[2]);
- Assert.AreEqual(0.5D, result[3]);
+ IList l;
+ IList result;
+ if (TestDialect.SupportsSelectingDoubleLiteral)
+ {
+ l = await (s.CreateQuery("select 'TextConst', 123, 123.5, .5 from Foo").ListAsync());
+ result = l[0] as IList;
+ Assert.AreEqual(typeof(string), result[0].GetType());
+ Assert.AreEqual(typeof(Int32), result[1].GetType());
+ Assert.AreEqual(typeof(Double), result[2].GetType());
+ Assert.AreEqual(typeof(Double), result[3].GetType());
+ Assert.AreEqual("TextConst", result[0]);
+ Assert.AreEqual(123, result[1]);
+ Assert.AreEqual(123.5D, result[2]);
+ Assert.AreEqual(0.5D, result[3]);
+ }
l = await (s.CreateQuery("select 123, f from Foo f").ListAsync());
result = l[0] as IList;
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3141/ProxyIdFixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3141/ProxyIdFixture.cs
index 122f3a27e82..933db3dc476 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH3141/ProxyIdFixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3141/ProxyIdFixture.cs
@@ -21,6 +21,11 @@ public class ProxyIdFixtureAsync : BugTestCase
{
private int id;
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override void OnSetUp()
{
using (var s = OpenSession())
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH315/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH315/Fixture.cs
index a4b7caf3376..67d731e834d 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH315/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH315/Fixture.cs
@@ -25,6 +25,11 @@ public override string BugNumber
get { return "NH315"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task SaveClientAsync()
{
@@ -54,4 +59,4 @@ public async Task SaveClientAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3414/FixtureByCode.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3414/FixtureByCode.cs
index e507d77fd62..51eae05506e 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH3414/FixtureByCode.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3414/FixtureByCode.cs
@@ -23,7 +23,7 @@ public class ByCodeFixtureAsync : TestCaseMappingByCode
protected override bool AppliesTo(Dialect.Dialect dialect)
{
// Test ordering by a scalar sub-select.
- return Dialect.SupportsScalarSubSelects;
+ return TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy;
}
protected override HbmMapping GetMappings()
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH386/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH386/Fixture.cs
index 5c40c9f04c6..96f71b7d62d 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH386/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH386/Fixture.cs
@@ -32,4 +32,4 @@ public async Task QueryAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH440/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH440/Fixture.cs
index 105576c0948..3bec8c77eec 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH440/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH440/Fixture.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System;
using System.Collections;
using NUnit.Framework;
@@ -32,6 +31,11 @@ protected override IList Mappings
get { return new string[] {"NHSpecificTest.NH440.Fruit.hbm.xml", "NHSpecificTest.NH440.Apple.hbm.xml"}; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override void OnSetUp()
{
@@ -150,4 +154,4 @@ public async Task StoreWithLinksAndLookupWithQueryFromFruitAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH473/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH473/Fixture.cs
index de8d562a02e..cb8c96d7c6e 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH473/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH473/Fixture.cs
@@ -8,9 +8,6 @@
//------------------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Text;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH473
@@ -19,6 +16,11 @@ namespace NHibernate.Test.NHSpecificTest.NH473
[TestFixture]
public class FixtureAsync:BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override void OnSetUp()
{
using(var session=this.OpenSession())
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH479/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH479/Fixture.cs
index 444737bc6b8..4888f4a7c7a 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH479/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH479/Fixture.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH479
@@ -22,6 +21,11 @@ public override string BugNumber
get { return "NH479"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task MergeTestAsync()
{
@@ -57,4 +61,4 @@ public async Task MergeTestAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH521/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH521/Fixture.cs
index 37f17159a17..0c2e46b13d1 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH521/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH521/Fixture.cs
@@ -21,6 +21,11 @@ public override string BugNumber
get { return "NH521"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task AttachUninitProxyCausesInitAsync()
{
@@ -68,4 +73,4 @@ public async Task AttachUninitProxyCausesInitAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH607/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH607/Fixture.cs
index ea368b7749b..553ba575773 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH607/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH607/Fixture.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH607
@@ -22,6 +21,11 @@ public override string BugNumber
get { return "NH607"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task TestAsync()
{
@@ -54,4 +58,4 @@ public async Task TestAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH623/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH623/Fixture.cs
index 1bf9b24000e..b570712dbdd 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH623/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH623/Fixture.cs
@@ -10,6 +10,7 @@
using System;
using System.Collections;
+using NHibernate.Dialect;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH623
@@ -23,6 +24,11 @@ public override string BugNumber
get { return "NH623"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return !(dialect is HanaDialectBase); // The WHERE clause "isactive = '1'" doesn't work on HANA because idactive is a boolean
+ }
+
private ISession session;
private ITransaction tran;
@@ -82,4 +88,4 @@ public async Task WhereAttributesOnBagsAsync()
Assert.AreEqual(1, d.Pages.Count);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH643/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH643/Fixture.cs
index 89165be75f2..9edf70f29c1 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH643/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH643/Fixture.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH643
@@ -23,6 +22,11 @@ public override string BugNumber
get { return "NH643"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
private object parentId;
[Test]
@@ -84,4 +88,4 @@ public async Task CacheAndLazyCollectionsAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH687/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH687/Fixture.cs
index 23395ae2d78..413e8b3759a 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH687/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH687/Fixture.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH687
@@ -22,6 +21,11 @@ public override string BugNumber
get { return "NH687"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task GetQueryTestAsync()
{
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH704/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH704/Fixture.cs
index 7b9a60e7115..a29d68852c0 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH704/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH704/Fixture.cs
@@ -8,7 +8,6 @@
//------------------------------------------------------------------------------
-using System;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH704
@@ -22,6 +21,11 @@ public override string BugNumber
get { return "NH704"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task ReAttachCatTestAsync()
{
@@ -46,4 +50,4 @@ public async Task ReAttachCatTestAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH826/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH826/Fixture.cs
index 9670b8e1e80..9acffe78e89 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH826/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH826/Fixture.cs
@@ -17,6 +17,11 @@ namespace NHibernate.Test.NHSpecificTest.NH826
[TestFixture]
public class FixtureAsync : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task BugAsync()
{
@@ -59,4 +64,4 @@ public async Task BugAsync()
session.Close();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH830/AutoFlushTestFixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH830/AutoFlushTestFixture.cs
index afa5931b2f2..f0d9984e77c 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH830/AutoFlushTestFixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH830/AutoFlushTestFixture.cs
@@ -18,6 +18,11 @@ namespace NHibernate.Test.NHSpecificTest.NH830
[TestFixture]
public class AutoFlushTestFixtureAsync : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task AutoFlushTestAsync()
{
@@ -50,4 +55,4 @@ public async Task AutoFlushTestAsync()
sess.Close();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH898/NH898Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH898/NH898Fixture.cs
index 0b385e8f0ea..e30e7c6bb37 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH898/NH898Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH898/NH898Fixture.cs
@@ -10,7 +10,6 @@
using System;
using System.Collections;
-
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH898
@@ -33,6 +32,11 @@ protected override IList Mappings
}
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public async Task BugAsync()
{
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/Properties/CompositePropertyRefTest.cs b/src/NHibernate.Test/Async/NHSpecificTest/Properties/CompositePropertyRefTest.cs
index 35d73040c17..31de09b83e7 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/Properties/CompositePropertyRefTest.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/Properties/CompositePropertyRefTest.cs
@@ -21,6 +21,11 @@ public class CompositePropertyRefTestAsync : BugTestCase
private long p_id;
private long p2_id;
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsFKOnCompositeKeyWithBoolean;
+ }
+
protected override void OnSetUp()
{
using (var s = OpenSession())
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/Properties/DynamicEntityTest.cs b/src/NHibernate.Test/Async/NHSpecificTest/Properties/DynamicEntityTest.cs
index 90fa8b3a468..21c46451346 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/Properties/DynamicEntityTest.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/Properties/DynamicEntityTest.cs
@@ -18,6 +18,11 @@ namespace NHibernate.Test.NHSpecificTest.Properties
[TestFixture]
public class DynamicEntityTestAsync : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsFKOnCompositeKeyWithBoolean;
+ }
+
protected override void OnSetUp()
{
using (var s = OpenSession())
diff --git a/src/NHibernate.Test/Async/Operations/MergeFixture.cs b/src/NHibernate.Test/Async/Operations/MergeFixture.cs
index f8864afcde5..125950bd47d 100644
--- a/src/NHibernate.Test/Async/Operations/MergeFixture.cs
+++ b/src/NHibernate.Test/Async/Operations/MergeFixture.cs
@@ -399,6 +399,9 @@ public async Task MergeManagedAsync()
[Test]
public async Task MergeManyToManyWithCollectionDeferenceAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
// setup base data...
Competition competition;
using (ISession s = OpenSession())
@@ -823,6 +826,9 @@ public async Task PersistThenMergeInSameTxnWithVersionAsync()
[Test]
public async Task RecursiveMergeTransientAsync()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
using (ISession s = OpenSession())
{
using (ITransaction tx = s.BeginTransaction())
diff --git a/src/NHibernate.Test/Async/Stateless/StatelessSessionQueryFixture.cs b/src/NHibernate.Test/Async/Stateless/StatelessSessionQueryFixture.cs
index 817c41bc38e..8a25d5c7ef4 100644
--- a/src/NHibernate.Test/Async/Stateless/StatelessSessionQueryFixture.cs
+++ b/src/NHibernate.Test/Async/Stateless/StatelessSessionQueryFixture.cs
@@ -35,6 +35,11 @@ protected override void Configure(Configuration configuration)
cfg.SetProperty(Environment.MaxFetchDepth, 1.ToString());
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
private class TestData
{
internal readonly IList list = new ArrayList();
@@ -127,4 +132,4 @@ public async Task HqlAsync()
await (testData.cleanDataAsync());
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/SystemTransactions/SystemTransactionFixture.cs b/src/NHibernate.Test/Async/SystemTransactions/SystemTransactionFixture.cs
index c9dc337df13..ff3ea86958f 100644
--- a/src/NHibernate.Test/Async/SystemTransactions/SystemTransactionFixture.cs
+++ b/src/NHibernate.Test/Async/SystemTransactions/SystemTransactionFixture.cs
@@ -190,8 +190,14 @@ public async Task CanUseSessionWithManyScopesAsync(bool explicitFlush)
// ODBC with SQL-Server always causes scopes to go distributed, which causes their transaction completion to run
// asynchronously. But ODBC enlistment also check the previous transaction in a way that do not guard against it
// being concurrently disposed of. See https://github.com/nhibernate/nhibernate-core/pull/1505 for more details.
- Assume.That(!(Sfi.ConnectionProvider.Driver is OdbcDriver),
- "ODBC sometimes fails on second scope by checking the previous transaction status, which may yield an object disposed exception");
+ if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ Assert.Ignore("ODBC sometimes fails on second scope by checking the previous transaction status, which may yield an object disposed exception");
+ // SAP HANA .Net provider always causes system transactions to be distributed, causing them to complete
+ // on concurrent threads. This creates race conditions when chaining scopes, the subsequent scope usage
+ // finding the connection still enlisted in the previous transaction, its complete being still not finished
+ // on its own thread.
+ if (Sfi.ConnectionProvider.Driver is HanaDriverBase)
+ Assert.Ignore("SAP HANA scope handling causes concurrency issues preventing chaining scope usages.");
using (var s = WithOptions().ConnectionReleaseMode(ConnectionReleaseMode.OnClose).OpenSession())
{
diff --git a/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs b/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs
index 9dac8b5ea81..6adbb11f0b1 100644
--- a/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs
+++ b/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs
@@ -252,6 +252,9 @@ public void IsType()
[Test]
public void OverrideEagerJoin()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
using (ISession s = OpenSession())
using (ITransaction t = s.BeginTransaction())
{
@@ -443,4 +446,4 @@ public void StatelessSession()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/DialectTest/FunctionTests/SubstringSupportFixture.cs b/src/NHibernate.Test/DialectTest/FunctionTests/SubstringSupportFixture.cs
index a2361535c1f..8644493b502 100644
--- a/src/NHibernate.Test/DialectTest/FunctionTests/SubstringSupportFixture.cs
+++ b/src/NHibernate.Test/DialectTest/FunctionTests/SubstringSupportFixture.cs
@@ -34,18 +34,28 @@ public void DialectShouldUseCorrectSubstringImplementation(System.Type dialectTy
var substringFunction = dialect.Functions["substring"];
- if (dialect is MsSql2000Dialect || dialect is MsSqlCeDialect || dialect is SybaseASE15Dialect)
- Assert.That(substringFunction, Is.TypeOf());
- else if (dialect is DB2Dialect)
- Assert.That(substringFunction, Is.TypeOf());
- else if (dialect is SybaseSQLAnywhere10Dialect)
- Assert.That(substringFunction, Is.TypeOf());
- else if (dialect is Oracle8iDialect)
- Assert.That(substringFunction, Is.TypeOf());
- else if (dialect is SQLiteDialect)
- Assert.That(substringFunction, Is.TypeOf());
- else
- Assert.That(substringFunction, Is.TypeOf());
+ switch (dialect)
+ {
+ case MsSql2000Dialect _:
+ case MsSqlCeDialect _:
+ case SybaseASE15Dialect _:
+ Assert.That(substringFunction, Is.TypeOf());
+ break;
+ case DB2Dialect _:
+ Assert.That(substringFunction, Is.TypeOf());
+ break;
+ case SybaseSQLAnywhere10Dialect _:
+ Assert.That(substringFunction, Is.TypeOf());
+ break;
+ case Oracle8iDialect _:
+ case SQLiteDialect _:
+ case HanaDialectBase _:
+ Assert.That(substringFunction, Is.TypeOf());
+ break;
+ default:
+ Assert.That(substringFunction, Is.TypeOf());
+ break;
+ }
}
}
diff --git a/src/NHibernate.Test/Events/Collections/AbstractCollectionEventFixture.cs b/src/NHibernate.Test/Events/Collections/AbstractCollectionEventFixture.cs
index 1d19a566322..3c6549f4c83 100644
--- a/src/NHibernate.Test/Events/Collections/AbstractCollectionEventFixture.cs
+++ b/src/NHibernate.Test/Events/Collections/AbstractCollectionEventFixture.cs
@@ -2,7 +2,6 @@
using System.Collections.Generic;
using NHibernate.Collection;
using NHibernate.Collection.Generic;
-using NHibernate.Event;
using NHibernate.Test.Events.Collections.Association.Bidirectional.ManyToMany;
using NUnit.Framework;
@@ -11,6 +10,11 @@ namespace NHibernate.Test.Events.Collections
[TestFixture]
public abstract class AbstractCollectionEventFixture : TestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override string MappingsAssembly
{
get { return "NHibernate.Test"; }
diff --git a/src/NHibernate.Test/Generatedkeys/Seqidentity/SequenceIdentityFixture.cs b/src/NHibernate.Test/Generatedkeys/Seqidentity/SequenceIdentityFixture.cs
index 6bb032a5b19..88584e51366 100644
--- a/src/NHibernate.Test/Generatedkeys/Seqidentity/SequenceIdentityFixture.cs
+++ b/src/NHibernate.Test/Generatedkeys/Seqidentity/SequenceIdentityFixture.cs
@@ -18,7 +18,9 @@ protected override string MappingsAssembly
protected override bool AppliesTo(Dialect.Dialect dialect)
{
- return dialect.SupportsSequences && !(dialect is Dialect.MsSql2012Dialect);
+ return dialect.SupportsSequences &&
+ !(dialect is Dialect.MsSql2012Dialect) &&
+ !(dialect is Dialect.HanaDialectBase); // SAP HANA does not support a syntax allowing to return the inserted id as an output parameter or a return value
}
[Test]
@@ -38,4 +40,4 @@ public void SequenceIdentityGenerator()
session.Close();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/GenericTest/Overall/Fixture.cs b/src/NHibernate.Test/GenericTest/Overall/Fixture.cs
index b4c6b31e5cb..95d1f068b4a 100644
--- a/src/NHibernate.Test/GenericTest/Overall/Fixture.cs
+++ b/src/NHibernate.Test/GenericTest/Overall/Fixture.cs
@@ -42,6 +42,9 @@ public void CRUD()
[Test]
public void CRUDAB()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
var entity = new A
{
Property = new B { Prop = 2 },
diff --git a/src/NHibernate.Test/Hql/HQLFunctions.cs b/src/NHibernate.Test/Hql/HQLFunctions.cs
index 2d54fc6ebaf..35a447cbbfd 100644
--- a/src/NHibernate.Test/Hql/HQLFunctions.cs
+++ b/src/NHibernate.Test/Hql/HQLFunctions.cs
@@ -936,6 +936,13 @@ public void Cast()
throw;
}
}
+ else if (Dialect is HanaDialectBase)
+ {
+ string msgToCheck =
+ "not a GROUP BY expression: 'ANIMAL0_.BODYWEIGHT' must be in group by clause";
+ if (!ex.InnerException.Message.Contains(msgToCheck))
+ throw;
+ }
else
{
string msgToCheck =
@@ -1133,7 +1140,7 @@ public void Str()
[Test]
public void Iif()
{
- AssumeFunctionSupported("Iif");
+ AssumeFunctionSupported("iif");
using (ISession s = OpenSession())
{
s.Save(new MaterialResource("Flash card 512MB", "A001/07", MaterialResource.MaterialState.Available));
diff --git a/src/NHibernate.Test/Insertordering/FamilyModel/Fixture.cs b/src/NHibernate.Test/Insertordering/FamilyModel/Fixture.cs
index 845dc19d58e..8f85ad8ee20 100644
--- a/src/NHibernate.Test/Insertordering/FamilyModel/Fixture.cs
+++ b/src/NHibernate.Test/Insertordering/FamilyModel/Fixture.cs
@@ -19,6 +19,11 @@ protected override string MappingsAssembly
get { return "NHibernate.Test"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsBatchingDependentDML;
+ }
+
protected override void Configure(Configuration configuration)
{
configuration.DataBaseIntegration(x =>
@@ -95,4 +100,4 @@ public void CircularReferences()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Legacy/FooBarTest.cs b/src/NHibernate.Test/Legacy/FooBarTest.cs
index 0a05c46e884..7be39e672f8 100644
--- a/src/NHibernate.Test/Legacy/FooBarTest.cs
+++ b/src/NHibernate.Test/Legacy/FooBarTest.cs
@@ -2478,7 +2478,7 @@ public void CollectionsInSelect()
// probably the conversion ProxyArray.id (to_number ensuring a not null value)
// Indeed, ProxyArray.id is Glarch.tha_key which is a string filled with a Guid. It does
// not fail with most engine likely because there are no results thanks to other conditions.
- if (!(Dialect is Oracle8iDialect) && !(Dialect is MsSqlCeDialect))
+ if (!(Dialect is Oracle8iDialect) && !(Dialect is MsSqlCeDialect) && !(Dialect is HanaDialectBase))
{
s.CreateQuery(
"select count(*) from Bar as bar join bar.Component.Glarch.ProxyArray as g where cast(g.id as Int32) in indices(bar.Baz.FooArray)").
@@ -4091,6 +4091,9 @@ public void UpdateOrder()
[Test]
public void UpdateFromTransient()
{
+ if (!TestDialect.SupportsBatchingDependentDML)
+ Assert.Ignore($"Dialect {Dialect} does not support batching of dependent DML (fee update on related fee)");
+
ISession s = OpenSession();
Fee fee1 = new Fee();
s.Save(fee1);
diff --git a/src/NHibernate.Test/Legacy/FumTest.cs b/src/NHibernate.Test/Legacy/FumTest.cs
index ab43bed1595..d1373873159 100644
--- a/src/NHibernate.Test/Legacy/FumTest.cs
+++ b/src/NHibernate.Test/Legacy/FumTest.cs
@@ -716,4 +716,4 @@ private ISession SpoofSerialization(ISession session)
return (ISession) formatter.Deserialize(stream);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Legacy/MasterDetailTest.cs b/src/NHibernate.Test/Legacy/MasterDetailTest.cs
index 6d3e7b4e067..5b6fb4eba27 100644
--- a/src/NHibernate.Test/Legacy/MasterDetailTest.cs
+++ b/src/NHibernate.Test/Legacy/MasterDetailTest.cs
@@ -41,6 +41,9 @@ protected override IList Mappings
[Test]
public void ParentChildren()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession session = OpenSession();
M parent = new M();
@@ -841,6 +844,9 @@ public void MixNativeAssigned()
[Test]
public void CollectionReplaceOnUpdate()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Category c = new Category();
@@ -886,6 +892,9 @@ public void CollectionReplaceOnUpdate()
[Test]
public void CollectionReplace2()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Category c = new Category();
@@ -925,6 +934,9 @@ public void CollectionReplace2()
[Test]
public void CollectionReplace()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Category c = new Category();
@@ -970,6 +982,9 @@ public void CollectionReplace()
[Test]
public void Categories()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
Category c = new Category();
c.Name = Category.RootCategory;
Category c1 = new Category();
@@ -1011,6 +1026,9 @@ public void Categories()
[Test]
public void CollectionRefresh()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
Category c = new Category();
IList list = new List();
@@ -1054,6 +1072,9 @@ public void CollectionRefresh()
[Test]
public void CachedCollectionRefresh()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
Category c = new Category();
IList list = new List();
@@ -1239,6 +1260,9 @@ public void QueuedBagAdds()
[Test]
public void PolymorphicCriteria()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction txn = s.BeginTransaction();
Category f = new Category();
diff --git a/src/NHibernate.Test/Legacy/MultiTableTest.cs b/src/NHibernate.Test/Legacy/MultiTableTest.cs
index ee9841eb1c4..30ecf60edb7 100644
--- a/src/NHibernate.Test/Legacy/MultiTableTest.cs
+++ b/src/NHibernate.Test/Legacy/MultiTableTest.cs
@@ -149,7 +149,7 @@ public void Queries()
ISession s = OpenSession();
long id = 1L;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
id = (long) s.Save(new TrivialClass());
}
@@ -185,7 +185,7 @@ public void Constraints()
ITransaction t = s.BeginTransaction();
SubMulti sm = new SubMulti();
sm.Amount = 66.5f;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
s.Save(sm);
}
@@ -216,7 +216,7 @@ public void MultiTable()
simp.Name = "simp";
object mid;
object sid;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
mid = s.Save(multi);
sid = s.Save(simp);
@@ -231,7 +231,7 @@ public void MultiTable()
SubMulti sm = new SubMulti();
sm.Amount = 66.5f;
object smid;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
smid = s.Save(sm);
}
@@ -465,7 +465,7 @@ public void MultiTableCollections()
simp.Name = "simp";
object mid;
object sid;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
mid = s.Save(multi);
sid = s.Save(simp);
@@ -485,7 +485,7 @@ public void MultiTableCollections()
ls.Set = new HashSet { multi, simp };
object id;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
id = s.Save(ls);
}
@@ -542,7 +542,7 @@ public void MultiTableManyToOne()
simp.Name = "simp";
object mid;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
mid = s.Save(multi);
}
@@ -557,7 +557,7 @@ public void MultiTableManyToOne()
ls.YetAnother = ls;
ls.Name = "Less Simple";
object id;
- if (Dialect is MsSql2000Dialect)
+ if (TestDialect.HasIdentityNativeGenerator)
{
id = s.Save(ls);
}
@@ -603,6 +603,9 @@ public void MultiTableNativeId()
[Test]
public void Collection()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Multi multi1 = new Multi();
@@ -702,4 +705,4 @@ public void DynamicUpdate()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Legacy/ParentChildTest.cs b/src/NHibernate.Test/Legacy/ParentChildTest.cs
index fbc6d5913be..2790357ad8a 100644
--- a/src/NHibernate.Test/Legacy/ParentChildTest.cs
+++ b/src/NHibernate.Test/Legacy/ParentChildTest.cs
@@ -44,6 +44,9 @@ protected override IList Mappings
[Test]
public void Replicate()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
Container baz = new Container();
Contained f = new Contained();
@@ -342,6 +345,9 @@ public void ClassWhere()
[Test]
public void CollectionQuery()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
@@ -499,6 +505,9 @@ public void ParentNullChild()
[Test]
public void ManyToMany()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
// if( dialect is Dialect.HSQLDialect) return;
ISession s = OpenSession();
@@ -556,6 +565,9 @@ public void ManyToMany()
[Test]
public void Container()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Container c = new Container();
@@ -688,6 +700,9 @@ public void Container()
[Test]
public void CascadeCompositeElements()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
Container c = new Container();
c.Cascades = new List();
@@ -749,6 +764,9 @@ public void CascadeCompositeElements()
[Test]
public void Bag()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
//if( dialect is Dialect.HSQLDialect ) return;
ISession s = OpenSession();
diff --git a/src/NHibernate.Test/Linq/ByMethod/OrderByTests.cs b/src/NHibernate.Test/Linq/ByMethod/OrderByTests.cs
index 7f19c1bdc73..0a4f0ade222 100644
--- a/src/NHibernate.Test/Linq/ByMethod/OrderByTests.cs
+++ b/src/NHibernate.Test/Linq/ByMethod/OrderByTests.cs
@@ -60,8 +60,8 @@ orderby c.CustomerId descending
[Test]
public void OrderByCalculatedAggregatedSubselectProperty()
{
- if (!Dialect.SupportsScalarSubSelects)
- Assert.Ignore("Dialect does not support scalar sub-selects");
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
//NH-2781
var result = db.Orders
@@ -81,8 +81,8 @@ public void OrderByCalculatedAggregatedSubselectProperty()
[Test]
public void AggregateAscendingOrderByClause()
{
- if (!Dialect.SupportsScalarSubSelects)
- Assert.Ignore("Dialect does not support scalar sub-selects");
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
var query = from c in db.Customers
orderby c.Orders.Count
@@ -97,8 +97,8 @@ orderby c.Orders.Count
[Test]
public void AggregateDescendingOrderByClause()
{
- if (!Dialect.SupportsScalarSubSelects)
- Assert.Ignore("Dialect does not support scalar sub-selects");
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
var query = from c in db.Customers
orderby c.Orders.Count descending
@@ -179,6 +179,9 @@ public void OrderByWithSelfReferencedSubquery1()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore("Dialect does not support scalar sub-selects");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
if (Dialect is Oracle8iDialect)
Assert.Ignore("On Oracle this generates a correlated subquery two levels deep which isn't supported until Oracle 10g.");
@@ -197,6 +200,9 @@ public void OrderByWithSelfReferencedSubquery2()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore("Dialect does not support scalar sub-selects");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
if (Dialect is Oracle8iDialect)
Assert.Ignore("On Oracle this generates a correlated subquery two levels deep which isn't supported until Oracle 10g.");
@@ -225,4 +231,4 @@ public void OrderByWithSelectDistinctAndTake()
db.Orders.Select(o => o.ShippedTo).Distinct().OrderBy(o => o).Take(1000).ToList();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Linq/PropertyMethodMappingTests.cs b/src/NHibernate.Test/Linq/PropertyMethodMappingTests.cs
index b425f1ee0c8..5881e3abba4 100644
--- a/src/NHibernate.Test/Linq/PropertyMethodMappingTests.cs
+++ b/src/NHibernate.Test/Linq/PropertyMethodMappingTests.cs
@@ -15,7 +15,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
public void CanExecuteCountInSelectClause()
{
var results = db.Timesheets
- .Select(t => t.Entries.Count).ToList();
+ .Select(t => t.Entries.Count).OrderBy(s => s).ToList();
Assert.AreEqual(3, results.Count);
Assert.AreEqual(0, results[0]);
@@ -32,4 +32,4 @@ public void CanExecuteCountInWhereClause()
Assert.AreEqual(2, results.Count);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Linq/SelectionTests.cs b/src/NHibernate.Test/Linq/SelectionTests.cs
index a8cb1692af8..3873558badf 100644
--- a/src/NHibernate.Test/Linq/SelectionTests.cs
+++ b/src/NHibernate.Test/Linq/SelectionTests.cs
@@ -286,7 +286,7 @@ public void CanSelectWithAggregateSubQuery()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
- var timesheets = (from timesheet in db.Timesheets
+ var timesheets = (from timesheet in db.Timesheets orderby timesheet.Id
select new
{
timesheet.Id,
diff --git a/src/NHibernate.Test/Linq/WhereSubqueryTests.cs b/src/NHibernate.Test/Linq/WhereSubqueryTests.cs
index 15fcec0ef36..060d6bc1710 100644
--- a/src/NHibernate.Test/Linq/WhereSubqueryTests.cs
+++ b/src/NHibernate.Test/Linq/WhereSubqueryTests.cs
@@ -601,6 +601,9 @@ public void SubqueryWhereFailingTest()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support subquery in select clause");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
var list = (db.OrderLines
.Select(ol => new
{
@@ -620,6 +623,9 @@ public void SubqueryWhereFailingTest2()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support subquery in select clause");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
var list = db.OrderLines
.Select(ol => new
{
@@ -639,6 +645,9 @@ public void SubqueryWhereFailingTest3()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support subquery in select clause");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
var list = db.OrderLines
.Select(ol => new
{
@@ -658,6 +667,9 @@ public void ProductsWithSubqueryReturningBoolFirstOrDefaultEq()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
var result = (from p in db.Products
where (from c in db.Categories
where c.Name == "Confections"
@@ -675,6 +687,9 @@ public void SubselectCanHaveBoolResult()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
var result = (from c in db.Categories
where c.Products.OrderBy(p => p.ProductId).Select(p => p.Discontinued).FirstOrDefault() == false
select c).ToList();
@@ -689,6 +704,9 @@ public void ProductsWithSubqueryReturningProjectionBoolFirstOrDefaultEq()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
//NH-3190
var result = (from p in db.Products
where (from c in db.Categories
@@ -707,6 +725,9 @@ public void ProductsWithSubqueryReturningStringFirstOrDefaultEq()
if (!Dialect.SupportsScalarSubSelects)
Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
+ if (!TestDialect.SupportsOrderByAndLimitInSubQueries)
+ Assert.Ignore("Dialect does not support sub-selects with order by or limit/top");
+
var result = (from p in db.Products
where (from c in db.Categories
where c.Name == "Confections"
diff --git a/src/NHibernate.Test/NHSpecificTest/CollectionFixture.cs b/src/NHibernate.Test/NHSpecificTest/CollectionFixture.cs
index ebe24a0164c..e400f72cd3a 100644
--- a/src/NHibernate.Test/NHSpecificTest/CollectionFixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/CollectionFixture.cs
@@ -1,4 +1,3 @@
-using System;
using System.Collections;
using NHibernate.DomainModel.NHSpecific;
using NUnit.Framework;
@@ -25,6 +24,11 @@ protected override void OnTearDown()
}
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void TestLoadParentFirst()
{
@@ -85,4 +89,4 @@ public void TestLoadChildFirst()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/Docs/Associations/BiM21/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/Docs/Associations/BiM21/Fixture.cs
index 6abbe6da8ec..713c96c5784 100644
--- a/src/NHibernate.Test/NHSpecificTest/Docs/Associations/BiM21/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/Docs/Associations/BiM21/Fixture.cs
@@ -1,4 +1,3 @@
-using System;
using System.Collections;
using NUnit.Framework;
@@ -17,6 +16,11 @@ protected override IList Mappings
get { return new string[] {"NHSpecificTest.Docs.Associations.BiM21.Mappings.hbm.xml"}; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void TestCorrectUse()
{
@@ -62,4 +66,4 @@ public void TestErrorUsage()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/Docs/ExampleParentChild/UpdateFixture.cs b/src/NHibernate.Test/NHSpecificTest/Docs/ExampleParentChild/UpdateFixture.cs
index e9be1db91ad..5460d27ed96 100644
--- a/src/NHibernate.Test/NHSpecificTest/Docs/ExampleParentChild/UpdateFixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/Docs/ExampleParentChild/UpdateFixture.cs
@@ -1,4 +1,3 @@
-using System;
using System.Collections;
using NUnit.Framework;
@@ -17,6 +16,11 @@ protected override IList Mappings
get { return new string[] {"NHSpecificTest.Docs.ExampleParentChild.Mappings.hbm.xml"}; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void Update()
{
@@ -53,4 +57,4 @@ public void Update()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/GH1565/LockEntityWithOuterJoinTest.cs b/src/NHibernate.Test/NHSpecificTest/GH1565/LockEntityWithOuterJoinTest.cs
index 2815ff61c20..4e957f99ba6 100644
--- a/src/NHibernate.Test/NHSpecificTest/GH1565/LockEntityWithOuterJoinTest.cs
+++ b/src/NHibernate.Test/NHSpecificTest/GH1565/LockEntityWithOuterJoinTest.cs
@@ -44,6 +44,11 @@ protected override void OnTearDown()
session.CreateSQLQuery("delete from MainEntity").ExecuteUpdate();
}
}
+
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
}
public class MainEntity
diff --git a/src/NHibernate.Test/NHSpecificTest/LazyLoadBugTest.cs b/src/NHibernate.Test/NHSpecificTest/LazyLoadBugTest.cs
index b16ba8f4140..f131bf5cf3f 100644
--- a/src/NHibernate.Test/NHSpecificTest/LazyLoadBugTest.cs
+++ b/src/NHibernate.Test/NHSpecificTest/LazyLoadBugTest.cs
@@ -1,4 +1,3 @@
-using System;
using System.Collections;
using NHibernate.DomainModel.NHSpecific;
using NUnit.Framework;
@@ -13,6 +12,11 @@ protected override IList Mappings
get { return new string[] {"NHSpecific.LazyLoadBug.hbm.xml"}; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void TestLazyLoad()
{
@@ -91,4 +95,4 @@ public void TestLazyLoadNoAdd()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/ListsWithHoles/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/ListsWithHoles/Fixture.cs
index 9c5a81b9046..1ca671df404 100644
--- a/src/NHibernate.Test/NHSpecificTest/ListsWithHoles/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/ListsWithHoles/Fixture.cs
@@ -1,9 +1,3 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using log4net.Appender;
-using log4net.Core;
-using log4net.Repository.Hierarchy;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.ListsWithHoles
@@ -13,6 +7,10 @@ namespace NHibernate.Test.NHSpecificTest.ListsWithHoles
[TestFixture]
public class Fixture : TestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
protected override IList Mappings
{
diff --git a/src/NHibernate.Test/NHSpecificTest/LoadingNullEntityInSet/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/LoadingNullEntityInSet/Fixture.cs
index edd65f33634..3acdfcb0b76 100644
--- a/src/NHibernate.Test/NHSpecificTest/LoadingNullEntityInSet/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/LoadingNullEntityInSet/Fixture.cs
@@ -21,6 +21,11 @@ protected override string MappingsAssembly
get { return "NHibernate.Test"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override DebugSessionFactory BuildSessionFactory()
{
cfg.GetCollectionMapping(typeof (Employee).FullName + ".Primaries")
diff --git a/src/NHibernate.Test/NHSpecificTest/Logs/LogsFixture.cs b/src/NHibernate.Test/NHSpecificTest/Logs/LogsFixture.cs
index 525535fbbb0..144f6002f10 100644
--- a/src/NHibernate.Test/NHSpecificTest/Logs/LogsFixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/Logs/LogsFixture.cs
@@ -136,6 +136,11 @@ public void WillGetSessionIdFromInterlacedSessionsLogs()
[Test]
public void WillGetSessionIdFromSessionLogsConcurrent()
{
+ if (!TestDialect.SupportsConcurrencyTests)
+ {
+ Assert.Ignore($"Dialect {Dialect} does not supports concurrency tests");
+ }
+
GlobalContext.Properties["sessionId"] = new SessionIdCapturer();
// Do not use a ManualResetEventSlim, it does not support async and exhausts the task thread pool in the
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1274ExportExclude/NH1274ExportExcludeFixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1274ExportExclude/NH1274ExportExcludeFixture.cs
index 1af7989aa05..4433f923f47 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1274ExportExclude/NH1274ExportExcludeFixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1274ExportExclude/NH1274ExportExcludeFixture.cs
@@ -58,8 +58,8 @@ public void SchemaExport_Export_CreatesExportScript()
Assert.IsTrue(s.Contains("drop table Home_All"));
}
- Assert.IsTrue(s.Contains("create table Home_All"));
- Assert.IsTrue(s.Contains("create table Home_Export"));
+ Assert.That(s, Does.Match("create ((column|row) )?table Home_All"));
+ Assert.That(s, Does.Match("create ((column|row) )?table Home_Export"));
}
[Test]
@@ -71,8 +71,8 @@ public void SchemaExport_Update_CreatesUpdateScript()
update.Execute(tw.WriteLine, false);
string s = tw.ToString();
- Assert.IsTrue(s.Contains("create table Home_Update"));
- Assert.IsTrue(s.Contains("create table Home_All"));
+ Assert.That(s, Does.Match("create ((column|row) )?table Home_Update"));
+ Assert.That(s, Does.Match("create ((column|row) )?table Home_All"));
}
[Test]
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1301/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1301/Fixture.cs
index f4cc7773dfd..529b7909599 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1301/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1301/Fixture.cs
@@ -10,6 +10,11 @@ public override string BugNumber
get { return "NH1301"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void Test()
{
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1388/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1388/Fixture.cs
index 2a7a94a7550..7a7afd596e4 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1388/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1388/Fixture.cs
@@ -37,6 +37,11 @@ public class Major
[TestFixture]
public class Fixture : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void BagTest()
{
@@ -129,4 +134,4 @@ protected override string CacheConcurrencyStrategy
get { return null; }
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1394/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1394/Fixture.cs
index 90b7ee820b2..0bad20e6fc7 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1394/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1394/Fixture.cs
@@ -74,8 +74,8 @@ public void CanOrderByPropertyProjection()
[Test]
public void CanOrderBySubqueryProjection()
{
- if (!Dialect.SupportsScalarSubSelects)
- Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
using (ISession s = OpenSession())
{
@@ -104,8 +104,8 @@ public void CanOrderBySubqueryProjection()
[Test]
public void CanOrderBySubqueryProjectionDesc()
{
- if (!Dialect.SupportsScalarSubSelects)
- Assert.Ignore(Dialect.GetType().Name + " does not support scalar sub-queries");
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
using (ISession s = OpenSession())
{
@@ -166,4 +166,4 @@ public void CanOrderBySqlProjectionDesc()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1443/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1443/Fixture.cs
index 6efebb7ace0..7613aa9cfdd 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1443/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1443/Fixture.cs
@@ -21,7 +21,7 @@ private static void Bug(Configuration cfg)
else
Assert.That(script, Does.Match("drop table nhibernate.dbo.Aclass"));
- Assert.That(script, Does.Match("create table nhibernate.dbo.Aclass"));
+ Assert.That(script, Does.Match("create ((column|row) )?table nhibernate.dbo.Aclass"));
}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1601/Fixture1.cs b/src/NHibernate.Test/NHSpecificTest/NH1601/Fixture1.cs
index f801ed475f9..c7077c576d7 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1601/Fixture1.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1601/Fixture1.cs
@@ -1,4 +1,3 @@
-using System.Collections.Generic;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH1601
@@ -6,6 +5,11 @@ namespace NHibernate.Test.NHSpecificTest.NH1601
[TestFixture]
public class Fixture1 : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
///
/// Loads the project do not call Count on the list assigned.
///
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1601/Fixture2.cs b/src/NHibernate.Test/NHSpecificTest/NH1601/Fixture2.cs
index f629eff9eac..dd860d3d778 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1601/Fixture2.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1601/Fixture2.cs
@@ -1,4 +1,3 @@
-using System.Collections.Generic;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH1601
@@ -6,6 +5,11 @@ namespace NHibernate.Test.NHSpecificTest.NH1601
[TestFixture]
public class Fixture2 : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
///
/// Loads the project and when Scenario2 and Scenario3 are set calls Count on the list assigned.
///
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1609/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1609/Fixture.cs
index 5fb0474b9f6..6b8141f40db 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1609/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1609/Fixture.cs
@@ -71,4 +71,4 @@ private EntityB CreateEntityB(ISession session, EntityA a, EntityC c)
return b;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1691/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1691/Fixture.cs
index 68b364eb2be..00132cfed28 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1691/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1691/Fixture.cs
@@ -6,6 +6,11 @@ namespace NHibernate.Test.NHSpecificTest.NH1691
[TestFixture]
public class Fixture : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
private static Component GetInitializedComponent()
{
var component = new Component();
@@ -112,4 +117,4 @@ public void NestedComponentCollection()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1812/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1812/Fixture.cs
index 2d71ab1fc44..0eca9db58c0 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1812/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1812/Fixture.cs
@@ -38,7 +38,7 @@ left outer join p.PeriodCollection p1
protected override bool AppliesTo(Dialect.Dialect dialect)
{
- return Dialect.SupportsScalarSubSelects;
+ return Dialect.SupportsScalarSubSelects && TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
}
protected override void OnTearDown()
@@ -53,4 +53,4 @@ protected override void OnTearDown()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1869/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1869/Fixture.cs
index d69c8a630d6..db540190871 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1869/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1869/Fixture.cs
@@ -64,4 +64,4 @@ private IList GetResult(ISession session)
return multi.List();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Fixture.cs
index ee56f076a3f..6daf21a77a6 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1908ThreadSafety/Fixture.cs
@@ -12,10 +12,11 @@ public class Fixture : BugTestCase
{
protected override bool AppliesTo(Dialect.Dialect dialect)
{
- return !(dialect is Oracle8iDialect);
// Oracle sometimes causes: ORA-12520: TNS:listener could not find available handler for requested type of server
// Following links bizarrely suggest it's an Oracle limitation under load:
// http://www.orafaq.com/forum/t/60019/2/ & http://www.ispirer.com/wiki/sqlways/troubleshooting-guide/oracle/import/tns_listener
+ return !(dialect is Oracle8iDialect) &&
+ TestDialect.SupportsConcurrencyTests;
}
[Test]
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1914/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1914/Fixture.cs
index 9c87004392b..529347170bb 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1914/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1914/Fixture.cs
@@ -7,6 +7,10 @@ namespace NHibernate.Test.NHSpecificTest.NH1914
[TestFixture]
public class Fixture : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
[Test]
public void CascadeInsertAssigned()
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2192/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH2192/Fixture.cs
index b0a895a0b63..9ec01b44380 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2192/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2192/Fixture.cs
@@ -9,6 +9,11 @@ namespace NHibernate.Test.NHSpecificTest.NH2192
[TestFixture]
public class Fixture : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsConcurrencyTests;
+ }
+
protected override void OnSetUp()
{
base.OnSetUp();
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2328/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH2328/Fixture.cs
index a0dcb58b148..2ad2d25d5dc 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2328/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2328/Fixture.cs
@@ -1,5 +1,4 @@
using System.Linq;
-using NHibernate.Linq;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH2328
@@ -7,6 +6,11 @@ namespace NHibernate.Test.NHSpecificTest.NH2328
[TestFixture]
public class Fixture : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override void OnSetUp()
{
base.OnSetUp();
@@ -98,4 +102,4 @@ public void AnyIs_HqlWorksWithClassNameInTheLeft()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2409/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH2409/Fixture.cs
index bb12d516a2c..af5110215ba 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2409/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2409/Fixture.cs
@@ -1,4 +1,3 @@
-using System;
using System.Linq;
using NHibernate.Criterion;
using NHibernate.SqlCommand;
@@ -9,6 +8,11 @@ namespace NHibernate.Test.NHSpecificTest.NH2409
[TestFixture]
public class Fixture : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void Bug()
{
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2703/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH2703/Fixture.cs
index 6cb1673da80..418d30fd051 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2703/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2703/Fixture.cs
@@ -7,6 +7,11 @@ public class Fixture : BugTestCase
{
Parent RootElement = null;
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override void OnSetUp()
{
using (ISession session = Sfi.OpenSession())
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2705/Test.cs b/src/NHibernate.Test/NHSpecificTest/NH2705/Test.cs
index e70545a672b..bec7503160f 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2705/Test.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2705/Test.cs
@@ -82,4 +82,4 @@ public void LinqQueryWithFetch_WhenDerivedClassesUseComponentAndEagerFetchManyTo
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2760/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH2760/Fixture.cs
index c11ad466463..30bf81f82c5 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2760/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2760/Fixture.cs
@@ -57,6 +57,9 @@ protected override void OnTearDown()
[Test]
public void ShouldBeAbleToSelectUserGroupAndOrderByUserCount()
{
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
+
using (ISession session = base.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
@@ -125,6 +128,9 @@ from ug in session.Query()
[Test]
public void ShouldBeAbleToSelectUserGroupAndOrderByUserCountWithHql()
{
+ if (!TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy)
+ Assert.Ignore("Dialect does not support aggregating scalar sub-selects in order by");
+
using (ISession session = base.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
@@ -140,4 +146,4 @@ public void ShouldBeAbleToSelectUserGroupAndOrderByUserCountWithHql()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH280/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH280/Fixture.cs
index 459ffdf2f42..d5a5c45a9cf 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH280/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH280/Fixture.cs
@@ -26,16 +26,21 @@ public void ConstInSelect()
s.Save(f);
s.Flush();
- IList l = s.CreateQuery("select 'TextConst', 123, 123.5, .5 from Foo").List();
- IList result = l[0] as IList;
- Assert.AreEqual(typeof(string), result[0].GetType());
- Assert.AreEqual(typeof(Int32), result[1].GetType());
- Assert.AreEqual(typeof(Double), result[2].GetType());
- Assert.AreEqual(typeof(Double), result[3].GetType());
- Assert.AreEqual("TextConst", result[0]);
- Assert.AreEqual(123, result[1]);
- Assert.AreEqual(123.5D, result[2]);
- Assert.AreEqual(0.5D, result[3]);
+ IList l;
+ IList result;
+ if (TestDialect.SupportsSelectingDoubleLiteral)
+ {
+ l = s.CreateQuery("select 'TextConst', 123, 123.5, .5 from Foo").List();
+ result = l[0] as IList;
+ Assert.AreEqual(typeof(string), result[0].GetType());
+ Assert.AreEqual(typeof(Int32), result[1].GetType());
+ Assert.AreEqual(typeof(Double), result[2].GetType());
+ Assert.AreEqual(typeof(Double), result[3].GetType());
+ Assert.AreEqual("TextConst", result[0]);
+ Assert.AreEqual(123, result[1]);
+ Assert.AreEqual(123.5D, result[2]);
+ Assert.AreEqual(0.5D, result[3]);
+ }
l = s.CreateQuery("select 123, f from Foo f").List();
result = l[0] as IList;
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3141/ProxyIdFixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3141/ProxyIdFixture.cs
index d43a3aaf481..a1dfcdef4e3 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3141/ProxyIdFixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3141/ProxyIdFixture.cs
@@ -9,6 +9,11 @@ public class ProxyIdFixture : BugTestCase
{
private int id;
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override void OnSetUp()
{
using (var s = OpenSession())
diff --git a/src/NHibernate.Test/NHSpecificTest/NH315/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH315/Fixture.cs
index 5b5279d0c8a..2adcae544c5 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH315/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH315/Fixture.cs
@@ -14,6 +14,11 @@ public override string BugNumber
get { return "NH315"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void SaveClient()
{
@@ -43,4 +48,4 @@ public void SaveClient()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3414/FixtureByCode.cs b/src/NHibernate.Test/NHSpecificTest/NH3414/FixtureByCode.cs
index c58d1768136..8fc7299d3b6 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3414/FixtureByCode.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3414/FixtureByCode.cs
@@ -12,7 +12,7 @@ public class ByCodeFixture : TestCaseMappingByCode
protected override bool AppliesTo(Dialect.Dialect dialect)
{
// Test ordering by a scalar sub-select.
- return Dialect.SupportsScalarSubSelects;
+ return TestDialect.SupportsAggregatingScalarSubSelectsInOrderBy;
}
protected override HbmMapping GetMappings()
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3436/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3436/Fixture.cs
index be1ac06dc84..88b3a0a67d3 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3436/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3436/Fixture.cs
@@ -54,6 +54,11 @@ protected override void OnTearDown()
[Test]
public void TestQueryWithContainsInParallel()
{
+ if (!TestDialect.SupportsConcurrencyTests)
+ {
+ Assert.Ignore($"Dialect {Dialect} does not supports concurrency tests");
+ }
+
var ids = new List
{
Guid.NewGuid(),
diff --git a/src/NHibernate.Test/NHSpecificTest/NH386/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH386/Fixture.cs
index 174af83a6b0..10352cac845 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH386/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH386/Fixture.cs
@@ -21,4 +21,4 @@ public void Query()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH440/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH440/Fixture.cs
index 32080c5fa3d..c40c1d4b6f2 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH440/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH440/Fixture.cs
@@ -1,4 +1,3 @@
-using System;
using System.Collections;
using NUnit.Framework;
@@ -21,6 +20,11 @@ protected override IList Mappings
get { return new string[] {"NHSpecificTest.NH440.Fruit.hbm.xml", "NHSpecificTest.NH440.Apple.hbm.xml"}; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override void OnSetUp()
{
@@ -139,4 +143,4 @@ public void StoreWithLinksAndLookupWithQueryFromFruit()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH473/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH473/Fixture.cs
index cae122f1407..e80bef95b52 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH473/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH473/Fixture.cs
@@ -1,13 +1,15 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using NUnit.Framework;
+using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH473
{
[TestFixture]
public class Fixture:BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
protected override void OnSetUp()
{
using(var session=this.OpenSession())
diff --git a/src/NHibernate.Test/NHSpecificTest/NH479/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH479/Fixture.cs
index f28fcc5ed40..d88498d957e 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH479/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH479/Fixture.cs
@@ -1,4 +1,3 @@
-using System;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH479
@@ -11,6 +10,11 @@ public override string BugNumber
get { return "NH479"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void MergeTest()
{
@@ -46,4 +50,4 @@ public void MergeTest()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH521/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH521/Fixture.cs
index 793b3cd568f..6333bcf5a36 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH521/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH521/Fixture.cs
@@ -10,6 +10,11 @@ public override string BugNumber
get { return "NH521"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void AttachUninitProxyCausesInit()
{
@@ -57,4 +62,4 @@ public void AttachUninitProxyCausesInit()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH607/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH607/Fixture.cs
index 1e5045c17d3..756e1da1252 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH607/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH607/Fixture.cs
@@ -1,4 +1,3 @@
-using System;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH607
@@ -11,6 +10,11 @@ public override string BugNumber
get { return "NH607"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void Test()
{
@@ -43,4 +47,4 @@ public void Test()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH623/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH623/Fixture.cs
index 5bb1c16ee9f..371adb5cf2f 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH623/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH623/Fixture.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections;
+using NHibernate.Dialect;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH623
@@ -12,6 +13,11 @@ public override string BugNumber
get { return "NH623"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return !(dialect is HanaDialectBase); // The WHERE clause "isactive = '1'" doesn't work on HANA because idactive is a boolean
+ }
+
private ISession session;
private ITransaction tran;
@@ -71,4 +77,4 @@ public void WhereAttributesOnBags()
Assert.AreEqual(1, d.Pages.Count);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH643/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH643/Fixture.cs
index 8967d4356c8..e2fe3b8dbfc 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH643/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH643/Fixture.cs
@@ -1,4 +1,3 @@
-using System;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH643
@@ -11,6 +10,11 @@ public override string BugNumber
get { return "NH643"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
private object parentId;
[Test]
@@ -72,4 +76,4 @@ private void CheckChildrenCount(int count)
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH687/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH687/Fixture.cs
index 843640e7c7d..4fd1bca6d9b 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH687/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH687/Fixture.cs
@@ -1,4 +1,3 @@
-using System;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH687
@@ -11,6 +10,11 @@ public override string BugNumber
get { return "NH687"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void GetQueryTest()
{
diff --git a/src/NHibernate.Test/NHSpecificTest/NH704/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH704/Fixture.cs
index be2482e3fad..e539583d2e5 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH704/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH704/Fixture.cs
@@ -1,4 +1,3 @@
-using System;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH704
@@ -11,6 +10,11 @@ public override string BugNumber
get { return "NH704"; }
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void ReAttachCatTest()
{
@@ -35,4 +39,4 @@ public void ReAttachCatTest()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH826/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH826/Fixture.cs
index 88103136994..1c5d0c6d210 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH826/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH826/Fixture.cs
@@ -6,6 +6,11 @@ namespace NHibernate.Test.NHSpecificTest.NH826
[TestFixture]
public class Fixture : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void Bug()
{
@@ -48,4 +53,4 @@ public void Bug()
session.Close();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH830/AutoFlushTestFixture.cs b/src/NHibernate.Test/NHSpecificTest/NH830/AutoFlushTestFixture.cs
index 15ee45a0f22..52dafb0a139 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH830/AutoFlushTestFixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH830/AutoFlushTestFixture.cs
@@ -7,6 +7,11 @@ namespace NHibernate.Test.NHSpecificTest.NH830
[TestFixture]
public class AutoFlushTestFixture : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void AutoFlushTest()
{
@@ -39,4 +44,4 @@ public void AutoFlushTest()
sess.Close();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH898/NH898Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH898/NH898Fixture.cs
index f77717854bc..978de34368d 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH898/NH898Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH898/NH898Fixture.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections;
-
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH898
@@ -22,6 +21,11 @@ protected override IList Mappings
}
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
[Test]
public void Bug()
{
diff --git a/src/NHibernate.Test/NHSpecificTest/Properties/CompositePropertyRefTest.cs b/src/NHibernate.Test/NHSpecificTest/Properties/CompositePropertyRefTest.cs
index 77893017777..4bbcca81380 100644
--- a/src/NHibernate.Test/NHSpecificTest/Properties/CompositePropertyRefTest.cs
+++ b/src/NHibernate.Test/NHSpecificTest/Properties/CompositePropertyRefTest.cs
@@ -10,6 +10,11 @@ public class CompositePropertyRefTest : BugTestCase
private long p_id;
private long p2_id;
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsFKOnCompositeKeyWithBoolean;
+ }
+
protected override void OnSetUp()
{
using (var s = OpenSession())
diff --git a/src/NHibernate.Test/NHSpecificTest/Properties/DynamicEntityTest.cs b/src/NHibernate.Test/NHSpecificTest/Properties/DynamicEntityTest.cs
index 7c5a7ba4b16..f981231b461 100644
--- a/src/NHibernate.Test/NHSpecificTest/Properties/DynamicEntityTest.cs
+++ b/src/NHibernate.Test/NHSpecificTest/Properties/DynamicEntityTest.cs
@@ -7,6 +7,11 @@ namespace NHibernate.Test.NHSpecificTest.Properties
[TestFixture]
public class DynamicEntityTest : BugTestCase
{
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsFKOnCompositeKeyWithBoolean;
+ }
+
protected override void OnSetUp()
{
using (var s = OpenSession())
diff --git a/src/NHibernate.Test/Operations/MergeFixture.cs b/src/NHibernate.Test/Operations/MergeFixture.cs
index 201d3ee7233..66c4367f82d 100644
--- a/src/NHibernate.Test/Operations/MergeFixture.cs
+++ b/src/NHibernate.Test/Operations/MergeFixture.cs
@@ -361,6 +361,9 @@ public void MergeManaged()
[Test]
public void MergeManyToManyWithCollectionDeference()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
// setup base data...
Competition competition;
using (ISession s = OpenSession())
@@ -785,6 +788,9 @@ public void PersistThenMergeInSameTxnWithVersion()
[Test]
public void RecursiveMergeTransient()
{
+ if (!TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator)
+ Assert.Ignore("Support of empty inserts is required");
+
using (ISession s = OpenSession())
{
using (ITransaction tx = s.BeginTransaction())
diff --git a/src/NHibernate.Test/ReadOnly/TextHolder.cs b/src/NHibernate.Test/ReadOnly/TextHolder.cs
index 8b17f5107c1..f0561a59d5d 100644
--- a/src/NHibernate.Test/ReadOnly/TextHolder.cs
+++ b/src/NHibernate.Test/ReadOnly/TextHolder.cs
@@ -10,7 +10,7 @@ public class TextHolder
///
public static bool SupportedForDialect(Dialect.Dialect dialect)
{
- return !(dialect is FirebirdDialect || dialect is Oracle8iDialect || dialect is MsSqlCeDialect);
+ return !(dialect is FirebirdDialect || dialect is Oracle8iDialect || dialect is MsSqlCeDialect || dialect is HanaRowStoreDialect);
}
diff --git a/src/NHibernate.Test/Stateless/StatelessSessionQueryFixture.cs b/src/NHibernate.Test/Stateless/StatelessSessionQueryFixture.cs
index 562d0e56328..c20e8c2bea6 100644
--- a/src/NHibernate.Test/Stateless/StatelessSessionQueryFixture.cs
+++ b/src/NHibernate.Test/Stateless/StatelessSessionQueryFixture.cs
@@ -23,6 +23,11 @@ protected override void Configure(Configuration configuration)
cfg.SetProperty(Environment.MaxFetchDepth, 1.ToString());
}
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return TestDialect.SupportsEmptyInsertsOrHasNonIdentityNativeGenerator;
+ }
+
private class TestData
{
internal readonly IList list = new ArrayList();
@@ -115,4 +120,4 @@ public void Hql()
testData.cleanData();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/SystemTransactions/SystemTransactionFixture.cs b/src/NHibernate.Test/SystemTransactions/SystemTransactionFixture.cs
index 12c4cc12d1d..cf0fe078414 100644
--- a/src/NHibernate.Test/SystemTransactions/SystemTransactionFixture.cs
+++ b/src/NHibernate.Test/SystemTransactions/SystemTransactionFixture.cs
@@ -179,8 +179,14 @@ public void CanUseSessionWithManyScopes(bool explicitFlush)
// ODBC with SQL-Server always causes scopes to go distributed, which causes their transaction completion to run
// asynchronously. But ODBC enlistment also check the previous transaction in a way that do not guard against it
// being concurrently disposed of. See https://github.com/nhibernate/nhibernate-core/pull/1505 for more details.
- Assume.That(!(Sfi.ConnectionProvider.Driver is OdbcDriver),
- "ODBC sometimes fails on second scope by checking the previous transaction status, which may yield an object disposed exception");
+ if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ Assert.Ignore("ODBC sometimes fails on second scope by checking the previous transaction status, which may yield an object disposed exception");
+ // SAP HANA .Net provider always causes system transactions to be distributed, causing them to complete
+ // on concurrent threads. This creates race conditions when chaining scopes, the subsequent scope usage
+ // finding the connection still enlisted in the previous transaction, its complete being still not finished
+ // on its own thread.
+ if (Sfi.ConnectionProvider.Driver is HanaDriverBase)
+ Assert.Ignore("SAP HANA scope handling causes concurrency issues preventing chaining scope usages.");
using (var s = WithOptions().ConnectionReleaseMode(ConnectionReleaseMode.OnClose).OpenSession())
{
diff --git a/src/NHibernate.Test/SystemTransactions/SystemTransactionFixtureBase.cs b/src/NHibernate.Test/SystemTransactions/SystemTransactionFixtureBase.cs
index 6a13a609c2a..5e587563a64 100644
--- a/src/NHibernate.Test/SystemTransactions/SystemTransactionFixtureBase.cs
+++ b/src/NHibernate.Test/SystemTransactions/SystemTransactionFixtureBase.cs
@@ -39,8 +39,12 @@ protected void DisableConnectionAutoEnlist(Configuration configuration)
}
// Purge any previous enlist
connectionString = Regex.Replace(
- connectionString, $"[^;\"a-zA-Z]*{autoEnlistmentKeywordPattern}=[^;\"]*", string.Empty,
- RegexOptions.IgnoreCase | RegexOptions.Multiline);
+ connectionString, $"[^;\"a-zA-Z]*{autoEnlistmentKeywordPattern}=[^;\"]*;?", string.Empty,
+ RegexOptions.IgnoreCase);
+ // Avoid redundant semi-colon
+ connectionString = Regex.Replace(
+ connectionString, $";[/s]*$", string.Empty,
+ RegexOptions.IgnoreCase);
connectionString += $";{autoEnlistmentKeyword}=false;";
configuration.SetProperty(Cfg.Environment.ConnectionString, connectionString);
}
@@ -143,4 +147,4 @@ public override void AfterTransactionCompletion(ITransaction tx)
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/SystemTransactions/TransactionNotificationFixture.cs b/src/NHibernate.Test/SystemTransactions/TransactionNotificationFixture.cs
index 8960ce31d1b..5a8da0fc3fa 100644
--- a/src/NHibernate.Test/SystemTransactions/TransactionNotificationFixture.cs
+++ b/src/NHibernate.Test/SystemTransactions/TransactionNotificationFixture.cs
@@ -182,7 +182,6 @@ public void ShouldNotifyAfterDistributedTransactionWithOwnConnection(bool doComm
{
using (var tx = new TransactionScope())
{
- ownConnection1.EnlistTransaction(System.Transactions.Transaction.Current);
using (s1 = Sfi.WithOptions().Connection(ownConnection1).Interceptor(interceptor).OpenSession())
{
s1.CreateCriteria