From 769581afecc0c43ecea0af54aee4541caa4e1270 Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Sun, 11 Jul 2021 18:53:41 +0300 Subject: [PATCH 1/8] Add Oracle --- .github/workflows/NetCoreTests.yml | 7 +++++++ psake.ps1 | 4 ++++ src/NHibernate.Test/NHibernate.Test.csproj | 1 + 3 files changed, 12 insertions(+) diff --git a/.github/workflows/NetCoreTests.yml b/.github/workflows/NetCoreTests.yml index a0bf0f39801..583a53b891e 100644 --- a/.github/workflows/NetCoreTests.yml +++ b/.github/workflows/NetCoreTests.yml @@ -16,6 +16,8 @@ jobs: CONNECTION_STRING: "DataSource=localhost;Database=nhibernate;User=SYSDBA;Password=nhibernate;charset=utf8;" - DB: MySQL CONNECTION_STRING: "Server=localhost;Uid=root;Password=nhibernate;Database=nhibernate;Old Guids=True;" + - DB: Oracle + CONNECTION_STRING: "User ID=nhibernate;Password=nhibernate;Metadata Pooling=false;Self Tuning=false;Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XEPDB1)))" - DB: SQLite runs-on: ubuntu-latest continue-on-error: ${{matrix.ALLOW_FAILURE == true}} @@ -45,6 +47,11 @@ jobs: run: | docker run --name firebird -e EnableWireCrypt=true -e FIREBIRD_USER=nhibernate -e FIREBIRD_PASSWORD=nhibernate -e ISC_PASSWORD=nhibernate -e FIREBIRD_DATABASE=nhibernate -p 3050:3050 -d jacobalberty/firebird:v3.0 + - name: Set up Oracle + if: matrix.DB == 'Oracle' + run: | + docker run -d -p 1521:1521 -e APP_USER=nhibernate -e APP_USER_PASSWORD=nhibernate -e ORACLE_PASSWORD=nhibernate gvenzl/oracle-xe:18-slim + - uses: actions/checkout@v2 - name: Setup .NET uses: actions/setup-dotnet@v1.8.0 diff --git a/psake.ps1 b/psake.ps1 index e9cd52d7081..6daa902ebfe 100644 --- a/psake.ps1 +++ b/psake.ps1 @@ -62,6 +62,10 @@ Task Set-Configuration { 'SqlServer2012' = @{ 'connection.connection_string' = 'Server=(local)\SQL2017;User ID=sa;Password=Password12!;initial catalog=nhibernate;'; 'dialect' = 'NHibernate.Dialect.MsSql2012Dialect' + }; + 'Oracle' = @{ + 'connection.driver_class' = 'NHibernate.Driver.OracleManagedDataClientDriver'; + 'dialect' = 'NHibernate.Dialect.Oracle12cDialect' } } #Settings for current build diff --git a/src/NHibernate.Test/NHibernate.Test.csproj b/src/NHibernate.Test/NHibernate.Test.csproj index 27b8bf16823..6a8cbef7a6f 100644 --- a/src/NHibernate.Test/NHibernate.Test.csproj +++ b/src/NHibernate.Test/NHibernate.Test.csproj @@ -80,6 +80,7 @@ + From ee450b1bbf57708316f311f278a8d23c9aeea576 Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Sun, 11 Jul 2021 20:52:55 +0300 Subject: [PATCH 2/8] Try with 10g dialect --- psake.ps1 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/psake.ps1 b/psake.ps1 index 6daa902ebfe..bdf0a2a5519 100644 --- a/psake.ps1 +++ b/psake.ps1 @@ -64,8 +64,9 @@ Task Set-Configuration { 'dialect' = 'NHibernate.Dialect.MsSql2012Dialect' }; 'Oracle' = @{ - 'connection.driver_class' = 'NHibernate.Driver.OracleManagedDataClientDriver'; - 'dialect' = 'NHibernate.Dialect.Oracle12cDialect' + 'connection.connection_string' = 'User ID=nhibernate;Password=nhibernate;Metadata Pooling=false;Self Tuning=false;Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XEPDB1)))'; + 'connection.driver_class' = 'NHibernate.Driver.OracleManagedDataClientDriver'; + 'dialect' = 'NHibernate.Dialect.Oracle10gDialect' } } #Settings for current build From f52eccdfbcc2240bc9926692b85ef52c7f71769b Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Mon, 12 Jul 2021 21:55:39 +0300 Subject: [PATCH 3/8] Fix tests --- src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs | 7 ++++++- src/NHibernate.Test/Async/NHSpecificTest/NH1693/Fixture.cs | 4 ++-- src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs | 7 ++++++- src/NHibernate.Test/NHSpecificTest/NH1693/Fixture.cs | 4 ++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs index 115c94e1a9a..31f6d238019 100644 --- a/src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs +++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs @@ -21,7 +21,12 @@ public class FixtureAsync : BugTestCase protected override bool AppliesTo(Dialect.Dialect dialect) { // Firebird has issues with comments containing apostrophes - return !(dialect is FirebirdDialect); + return !(dialect is FirebirdDialect) +#if !NETFX + //Oracle Core client throws Oracle.ManagedDataAccess.Client.OracleException : ORA-01008: not all variables bound + && !(dialect is Oracle10gDialect) +#endif + ; } protected override void Configure(NHibernate.Cfg.Configuration configuration) diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1693/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1693/Fixture.cs index 5c73e3d25d4..33387963580 100644 --- a/src/NHibernate.Test/Async/NHSpecificTest/NH1693/Fixture.cs +++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1693/Fixture.cs @@ -49,7 +49,7 @@ public async Task without_filterAsync() using (var tx = session.BeginTransaction()) { var q1 = - "from Invoice i where i.Mode='a' and i.Category=:cat and not exists (from Invoice i2 where i2.Mode='a' and i2.Category=:cat and i2.Num=i.Num+1)"; + "from Invoice i where i.Mode='a' and i.Category=:cat and not exists (from Invoice i2 where i2.Mode='a' and i2.Category=:cat and i2.Num=i.Num+1) order by i.Num"; var list = await (session.CreateQuery(q1) .SetParameter("cat", 10) .ListAsync()); @@ -70,7 +70,7 @@ public async Task with_filterAsync() session.EnableFilter("modeFilter").SetParameter("currentMode", "a"); var q1 = - "from Invoice i where i.Category=:cat and not exists (from Invoice i2 where i2.Category=:cat and i2.Num=i.Num+1)"; + "from Invoice i where i.Category=:cat and not exists (from Invoice i2 where i2.Category=:cat and i2.Num=i.Num+1) order by i.Num"; var list = await (session.CreateQuery(q1) .SetParameter("cat", 10) .ListAsync()); diff --git a/src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs index b164b2967eb..8f9fc2be8cb 100644 --- a/src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs +++ b/src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs @@ -10,7 +10,12 @@ public class Fixture : BugTestCase protected override bool AppliesTo(Dialect.Dialect dialect) { // Firebird has issues with comments containing apostrophes - return !(dialect is FirebirdDialect); + return !(dialect is FirebirdDialect) +#if !NETFX + //Oracle Core client throws Oracle.ManagedDataAccess.Client.OracleException : ORA-01008: not all variables bound + && !(dialect is Oracle10gDialect) +#endif + ; } protected override void Configure(NHibernate.Cfg.Configuration configuration) diff --git a/src/NHibernate.Test/NHSpecificTest/NH1693/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1693/Fixture.cs index aec13abcc00..b706e9ee232 100644 --- a/src/NHibernate.Test/NHSpecificTest/NH1693/Fixture.cs +++ b/src/NHibernate.Test/NHSpecificTest/NH1693/Fixture.cs @@ -38,7 +38,7 @@ public void without_filter() using (var tx = session.BeginTransaction()) { var q1 = - "from Invoice i where i.Mode='a' and i.Category=:cat and not exists (from Invoice i2 where i2.Mode='a' and i2.Category=:cat and i2.Num=i.Num+1)"; + "from Invoice i where i.Mode='a' and i.Category=:cat and not exists (from Invoice i2 where i2.Mode='a' and i2.Category=:cat and i2.Num=i.Num+1) order by i.Num"; var list = session.CreateQuery(q1) .SetParameter("cat", 10) .List(); @@ -59,7 +59,7 @@ public void with_filter() session.EnableFilter("modeFilter").SetParameter("currentMode", "a"); var q1 = - "from Invoice i where i.Category=:cat and not exists (from Invoice i2 where i2.Category=:cat and i2.Num=i.Num+1)"; + "from Invoice i where i.Category=:cat and not exists (from Invoice i2 where i2.Category=:cat and i2.Num=i.Num+1) order by i.Num"; var list = session.CreateQuery(q1) .SetParameter("cat", 10) .List(); From 70da1a0ca4575de8437d77f3678a1c8937dad66f Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Mon, 12 Jul 2021 22:40:40 +0300 Subject: [PATCH 4/8] Fix tests --- .../SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs | 2 +- .../SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NHibernate.Test/Async/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs b/src/NHibernate.Test/Async/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs index 9e8f4dcf332..3ffd4a82e98 100644 --- a/src/NHibernate.Test/Async/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs +++ b/src/NHibernate.Test/Async/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs @@ -254,7 +254,7 @@ public async Task WhenConfiguredOnlyExplicitAutoQuoteAsync() // Test uses the default dialect driver, which will not accept Odbc or OleDb connection strings. if (typeof(OdbcDriver).IsAssignableFrom(driverClass) || typeof(OleDbDriver).IsAssignableFrom(driverClass)) Assert.Ignore("Test is not compatible with OleDb or ODBC driver connection strings"); - var configuredDialect = Dialect.Dialect.GetDialect(); + var configuredDialect = Dialect.Dialect.GetDialect(configuration.Properties); if(!configuredDialect.DefaultProperties.ContainsKey(Environment.ConnectionDriver)) { Assert.Ignore(GetType() + " does not apply to " + configuredDialect); diff --git a/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs b/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs index 62141b92a21..519650e5ba5 100644 --- a/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs +++ b/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs @@ -259,7 +259,7 @@ public void WhenConfiguredOnlyExplicitAutoQuote() // Test uses the default dialect driver, which will not accept Odbc or OleDb connection strings. if (typeof(OdbcDriver).IsAssignableFrom(driverClass) || typeof(OleDbDriver).IsAssignableFrom(driverClass)) Assert.Ignore("Test is not compatible with OleDb or ODBC driver connection strings"); - var configuredDialect = Dialect.Dialect.GetDialect(); + var configuredDialect = Dialect.Dialect.GetDialect(configuration.Properties); if(!configuredDialect.DefaultProperties.ContainsKey(Environment.ConnectionDriver)) { Assert.Ignore(GetType() + " does not apply to " + configuredDialect); From f40cf7508a8334a8166408e139264ea134fc8108 Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Tue, 13 Jul 2021 06:11:38 +0300 Subject: [PATCH 5/8] Update to latest netfx Oracle lib --- src/NHibernate.Test/NHibernate.Test.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NHibernate.Test/NHibernate.Test.csproj b/src/NHibernate.Test/NHibernate.Test.csproj index 6a8cbef7a6f..dda11df67bb 100644 --- a/src/NHibernate.Test/NHibernate.Test.csproj +++ b/src/NHibernate.Test/NHibernate.Test.csproj @@ -74,7 +74,7 @@ - + From 8419cc2363b76255e2221fb9c985cb54e0816c91 Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Tue, 13 Jul 2021 06:19:08 +0300 Subject: [PATCH 6/8] oups --- src/NHibernate.Test/NHibernate.Test.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NHibernate.Test/NHibernate.Test.csproj b/src/NHibernate.Test/NHibernate.Test.csproj index dda11df67bb..dfc46ebef18 100644 --- a/src/NHibernate.Test/NHibernate.Test.csproj +++ b/src/NHibernate.Test/NHibernate.Test.csproj @@ -74,7 +74,7 @@ - + From e154bc07a85acddfaf4c227536c770fffe287d17 Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Tue, 13 Jul 2021 07:23:12 +0300 Subject: [PATCH 7/8] Disable NH1171 test for netfx too --- .../Async/NHSpecificTest/NH1171/Fixture.cs | 12 +++++------- src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs | 12 +++++------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs index 31f6d238019..8b2fcd30d4a 100644 --- a/src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs +++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs @@ -20,13 +20,11 @@ public class FixtureAsync : BugTestCase { protected override bool AppliesTo(Dialect.Dialect dialect) { - // Firebird has issues with comments containing apostrophes - return !(dialect is FirebirdDialect) -#if !NETFX - //Oracle Core client throws Oracle.ManagedDataAccess.Client.OracleException : ORA-01008: not all variables bound - && !(dialect is Oracle10gDialect) -#endif - ; + return + // Firebird has issues with comments containing apostrophes + !(dialect is FirebirdDialect) + // GH-2853: Oracle client bug: throws Oracle.ManagedDataAccess.Client.OracleException : ORA-01008: not all variables bound + && !(dialect is Oracle10gDialect); } protected override void Configure(NHibernate.Cfg.Configuration configuration) diff --git a/src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs index 8f9fc2be8cb..3511b168605 100644 --- a/src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs +++ b/src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs @@ -9,13 +9,11 @@ public class Fixture : BugTestCase { protected override bool AppliesTo(Dialect.Dialect dialect) { - // Firebird has issues with comments containing apostrophes - return !(dialect is FirebirdDialect) -#if !NETFX - //Oracle Core client throws Oracle.ManagedDataAccess.Client.OracleException : ORA-01008: not all variables bound - && !(dialect is Oracle10gDialect) -#endif - ; + return + // Firebird has issues with comments containing apostrophes + !(dialect is FirebirdDialect) + // GH-2853: Oracle client bug: throws Oracle.ManagedDataAccess.Client.OracleException : ORA-01008: not all variables bound + && !(dialect is Oracle10gDialect); } protected override void Configure(NHibernate.Cfg.Configuration configuration) From 7013f4b1a3a778df47238288f7e10cd7a8891610 Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Tue, 13 Jul 2021 07:26:17 +0300 Subject: [PATCH 8/8] Lower dialect version --- src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs | 2 +- src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs index 8b2fcd30d4a..4dbd1150e53 100644 --- a/src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs +++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1171/Fixture.cs @@ -24,7 +24,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect) // Firebird has issues with comments containing apostrophes !(dialect is FirebirdDialect) // GH-2853: Oracle client bug: throws Oracle.ManagedDataAccess.Client.OracleException : ORA-01008: not all variables bound - && !(dialect is Oracle10gDialect); + && !(dialect is Oracle8iDialect); } protected override void Configure(NHibernate.Cfg.Configuration configuration) diff --git a/src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs index 3511b168605..9de8122f5c8 100644 --- a/src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs +++ b/src/NHibernate.Test/NHSpecificTest/NH1171/Fixture.cs @@ -13,7 +13,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect) // Firebird has issues with comments containing apostrophes !(dialect is FirebirdDialect) // GH-2853: Oracle client bug: throws Oracle.ManagedDataAccess.Client.OracleException : ORA-01008: not all variables bound - && !(dialect is Oracle10gDialect); + && !(dialect is Oracle8iDialect); } protected override void Configure(NHibernate.Cfg.Configuration configuration)