diff --git a/src/NHibernate.Test/TestDialect.cs b/src/NHibernate.Test/TestDialect.cs
index 69ab31fcb37..bcf2218ccbf 100644
--- a/src/NHibernate.Test/TestDialect.cs
+++ b/src/NHibernate.Test/TestDialect.cs
@@ -123,10 +123,15 @@ public bool SupportsSqlType(SqlType sqlType)
///
public virtual bool SupportsModuloOnDecimal => true;
+ ///
+ /// Supports sub-selects in order by clause
+ ///
+ public virtual bool SupportsSubSelectsInOrderBy => _dialect.SupportsScalarSubSelects;
+
///
/// Supports aggregating sub-selects in order by clause
///
- public virtual bool SupportsAggregatingScalarSubSelectsInOrderBy => _dialect.SupportsScalarSubSelects;
+ public virtual bool SupportsAggregatingScalarSubSelectsInOrderBy => SupportsSubSelectsInOrderBy;
///
/// Supports order by and limits/top in correlated sub-queries
diff --git a/src/NHibernate.Test/TestDialects/DB2TestDialect.cs b/src/NHibernate.Test/TestDialects/DB2TestDialect.cs
new file mode 100644
index 00000000000..a96b57eeb24
--- /dev/null
+++ b/src/NHibernate.Test/TestDialects/DB2TestDialect.cs
@@ -0,0 +1,16 @@
+namespace NHibernate.Test.TestDialects
+{
+ public class DB2TestDialect: TestDialect
+ {
+ public DB2TestDialect(Dialect.Dialect dialect) : base(dialect)
+ {
+ }
+
+ public override bool HasBrokenTypeInferenceOnSelectedParameters => true;
+ public override bool SupportsCancelQuery => false;
+ public override bool SupportsComplexExpressionInGroupBy => false;
+ public override bool SupportsNonDataBoundCondition => false;
+ public override bool SupportsSelectForUpdateWithPaging => false;
+ public override bool SupportsSubSelectsInOrderBy => false;
+ }
+}
diff --git a/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.cs b/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.cs
index 0856f339d02..a11b7f157b6 100644
--- a/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.cs
+++ b/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.cs
@@ -32,6 +32,9 @@ public class DatabaseSetup
{"NHibernate.Driver.OracleManagedDataClientDriver", SetupOracle},
{"NHibernate.Driver.OdbcDriver", SetupSqlServerOdbc},
{"NHibernate.Driver.SQLite20Driver", SetupSQLite},
+ {"NHibernate.Driver.DB2Driver", SetupDB2},
+ {"NHibernate.Driver.DB2CoreDriver", SetupDB2},
+ {"NHibernate.Driver.DB2NetDriver", SetupDB2},
#if NETFX
{"NHibernate.Driver.SqlServerCeDriver", SetupSqlServerCe},
{"NHibernate.Driver.SapSQLAnywhere17Driver", SetupSqlAnywhere}
@@ -207,6 +210,10 @@ private static void SetupSQLite(Cfg.Configuration cfg)
}
}
+ private static void SetupDB2(Cfg.Configuration cfg)
+ {
+ }
+
private static void SetupOracle(Cfg.Configuration cfg)
{
// disabled until system password is set on TeamCity
diff --git a/src/NHibernate/Dialect/DB2Dialect.cs b/src/NHibernate/Dialect/DB2Dialect.cs
index a558e6d313d..042c206f1e7 100644
--- a/src/NHibernate/Dialect/DB2Dialect.cs
+++ b/src/NHibernate/Dialect/DB2Dialect.cs
@@ -214,6 +214,8 @@ public override bool SupportsSequences
get { return true; }
}
+ public override string QuerySequencesString => "select seqname from syscat.sequences";
+
///
public override bool SupportsLimit
{
@@ -311,6 +313,9 @@ public override string ForUpdateString
public override bool SupportsExistsInSelect => false;
+ ///
+ public override bool SupportsHavingOnGroupedByComputation => false;
+
public override bool DoesReadCommittedCauseWritersToBlockReaders => true;
#endregion
diff --git a/src/NHibernate/Driver/DB2CoreDriver.cs b/src/NHibernate/Driver/DB2CoreDriver.cs
index 1838ee13373..80f8a922d98 100644
--- a/src/NHibernate/Driver/DB2CoreDriver.cs
+++ b/src/NHibernate/Driver/DB2CoreDriver.cs
@@ -1,27 +1,19 @@
-using System.Data.Common;
-using NHibernate.SqlTypes;
+using System;
namespace NHibernate.Driver
{
///
/// A NHibernate Driver for using the IBM.Data.DB2.Core DataProvider.
///
- public class DB2CoreDriver : DB2DriverBase
- {
- public DB2CoreDriver() : base("IBM.Data.DB2.Core")
- {
- }
+ // Since v5.6
+ [Obsolete("Please use DB2NetDriver")]
+ public class DB2CoreDriver : DB2NetDriver
+ {
+ private static readonly INHibernateLogger Log = NHibernateLogger.For(typeof(DB2CoreDriver));
- public override bool UseNamedPrefixInSql => true;
-
- public override bool UseNamedPrefixInParameter => true;
-
- public override string NamedPrefix => "@";
-
- protected override void InitializeParameter(DbParameter dbParam, string name, SqlType sqlType)
+ public DB2CoreDriver() : base("IBM.Data.DB2.Core")
{
- dbParam.ParameterName = FormatNameForParameter(name);
- base.InitializeParameter(dbParam, name, sqlType);
+ Log.Warn("DB2CoreDriver is obsolete, please use DB2NetDriver instead.");
}
}
}
diff --git a/src/NHibernate/Driver/DB2NetDriver.cs b/src/NHibernate/Driver/DB2NetDriver.cs
new file mode 100644
index 00000000000..0d05976d174
--- /dev/null
+++ b/src/NHibernate/Driver/DB2NetDriver.cs
@@ -0,0 +1,29 @@
+using System.Data.Common;
+using NHibernate.SqlTypes;
+
+namespace NHibernate.Driver
+{
+ ///
+ /// A NHibernate Driver for using the Net5.IBM.Data.Db2/Net.IBM.Data.Db2 DataProvider.
+ ///
+ public class DB2NetDriver : DB2DriverBase
+ {
+ private protected DB2NetDriver(string assemblyName) : base(assemblyName)
+ {
+ }
+
+ public DB2NetDriver() : base("IBM.Data.Db2")
+ {
+ }
+
+ public override bool UseNamedPrefixInSql => true;
+ public override bool UseNamedPrefixInParameter => true;
+ public override string NamedPrefix => "@";
+
+ protected override void InitializeParameter(DbParameter dbParam, string name, SqlType sqlType)
+ {
+ dbParam.ParameterName = FormatNameForParameter(name);
+ base.InitializeParameter(dbParam, name, sqlType);
+ }
+ }
+}