From 1083e85a7cc2b86e5c51154e1bd411d57e6b6c4b Mon Sep 17 00:00:00 2001 From: Saad HESSANE Date: Wed, 25 Oct 2023 15:18:23 +0200 Subject: [PATCH 1/3] Fix Exception Column 'SQL_TYPE_NAME' does not belong to table DataTypes --- src/NHibernate/Dialect/Schema/DB2MetaData.cs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/NHibernate/Dialect/Schema/DB2MetaData.cs b/src/NHibernate/Dialect/Schema/DB2MetaData.cs index fd02b4aec5b..ac76929f82f 100644 --- a/src/NHibernate/Dialect/Schema/DB2MetaData.cs +++ b/src/NHibernate/Dialect/Schema/DB2MetaData.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Data; using System.Data.Common; +using System.Linq; namespace NHibernate.Dialect.Schema { @@ -31,13 +32,20 @@ public override ISet GetReservedWords() result.Add(row["ReservedWord"].ToString()); } - if (IncludeDataTypesInReservedWords) + if (!IncludeDataTypesInReservedWords) + return result; + + var dtTypes = Connection.GetSchema(DbMetaDataCollectionNames.DataTypes); + + var typeNameColumn = dtTypes.Columns.Cast() + .FirstOrDefault(column => column.ColumnName == "SQL_TYPE_NAME"); + + if (typeNameColumn == null) //todo We can try to fallback to "TypeName" columnName + return result; + + foreach (DataRow row in dtTypes.Rows) { - var dtTypes = Connection.GetSchema(DbMetaDataCollectionNames.DataTypes); - foreach (DataRow row in dtTypes.Rows) - { - result.Add(row["SQL_TYPE_NAME"].ToString()); - } + result.Add(row[typeNameColumn].ToString()); } return result; From de8939127a6c5754b981e161afa4f7932cdadf98 Mon Sep 17 00:00:00 2001 From: Saad HESSANE Date: Wed, 25 Oct 2023 19:43:00 +0200 Subject: [PATCH 2/3] Fix indent --- src/NHibernate/Dialect/Schema/DB2MetaData.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NHibernate/Dialect/Schema/DB2MetaData.cs b/src/NHibernate/Dialect/Schema/DB2MetaData.cs index ac76929f82f..e1662a5eb9c 100644 --- a/src/NHibernate/Dialect/Schema/DB2MetaData.cs +++ b/src/NHibernate/Dialect/Schema/DB2MetaData.cs @@ -38,7 +38,7 @@ public override ISet GetReservedWords() var dtTypes = Connection.GetSchema(DbMetaDataCollectionNames.DataTypes); var typeNameColumn = dtTypes.Columns.Cast() - .FirstOrDefault(column => column.ColumnName == "SQL_TYPE_NAME"); + .FirstOrDefault(column => column.ColumnName == "SQL_TYPE_NAME"); if (typeNameColumn == null) //todo We can try to fallback to "TypeName" columnName return result; From 47ead22249fc33f771c871bb402f001e78095ecf Mon Sep 17 00:00:00 2001 From: Saad HESSANE Date: Thu, 26 Oct 2023 16:53:44 +0200 Subject: [PATCH 3/3] Add fallback to "TypeName" if "SQL_TYPE_NAME" is not found --- src/NHibernate/Dialect/Schema/DB2MetaData.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/NHibernate/Dialect/Schema/DB2MetaData.cs b/src/NHibernate/Dialect/Schema/DB2MetaData.cs index e1662a5eb9c..576638e1678 100644 --- a/src/NHibernate/Dialect/Schema/DB2MetaData.cs +++ b/src/NHibernate/Dialect/Schema/DB2MetaData.cs @@ -37,15 +37,19 @@ public override ISet GetReservedWords() var dtTypes = Connection.GetSchema(DbMetaDataCollectionNames.DataTypes); - var typeNameColumn = dtTypes.Columns.Cast() - .FirstOrDefault(column => column.ColumnName == "SQL_TYPE_NAME"); + var typeNameColumnIndex = dtTypes.Columns.IndexOf("SQL_TYPE_NAME"); - if (typeNameColumn == null) //todo We can try to fallback to "TypeName" columnName - return result; + if (typeNameColumnIndex == -1) + { + typeNameColumnIndex = dtTypes.Columns.IndexOf("TypeName"); + + if (typeNameColumnIndex == -1) + return result; + } foreach (DataRow row in dtTypes.Rows) { - result.Add(row[typeNameColumn].ToString()); + result.Add(row[typeNameColumnIndex].ToString()); } return result;