Skip to content

Commit 988d4d0

Browse files
committed
NH-4043 - Actually allow Dialect.Keywords get used
settings.IsKeywordsImportEnabled was supposed to import from the driver, not settings.IsAutoQuoteEnabled.
1 parent 879770f commit 988d4d0

File tree

3 files changed

+19
-17
lines changed

3 files changed

+19
-17
lines changed

src/NHibernate/Impl/SessionFactoryImpl.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ public SessionFactoryImpl(Configuration cfg, IMapping mapping, Settings settings
201201
}
202202
if (settings.IsAutoQuoteEnabled)
203203
{
204-
SchemaMetadataUpdater.QuoteTableAndColumns(cfg);
204+
SchemaMetadataUpdater.QuoteTableAndColumns(cfg, this.Dialect);
205205
}
206206
}
207207
catch (NotSupportedException)

src/NHibernate/Tool/hbm2ddl/SchemaExport.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,15 @@ private void Initialize()
5656
{
5757
return;
5858
}
59+
dialect = Dialect.Dialect.GetDialect(configProperties);
60+
5961
string autoKeyWordsImport = PropertiesHelper.GetString(Environment.Hbm2ddlKeyWords, configProperties, "not-defined");
6062
autoKeyWordsImport = autoKeyWordsImport.ToLowerInvariant();
6163
if (autoKeyWordsImport == Hbm2DDLKeyWords.AutoQuote)
6264
{
63-
SchemaMetadataUpdater.QuoteTableAndColumns(cfg);
65+
SchemaMetadataUpdater.QuoteTableAndColumns(cfg, dialect);
6466
}
6567

66-
dialect = Dialect.Dialect.GetDialect(configProperties);
6768
dropSQL = cfg.GenerateDropSchemaScript(dialect);
6869
createSQL = cfg.GenerateSchemaCreationScript(dialect);
6970
formatter = (PropertiesHelper.GetBoolean(Environment.FormatSql, configProperties, true) ? FormatStyle.Ddl : FormatStyle.None).Formatter;

src/NHibernate/Tool/hbm2ddl/SchemaMetadataUpdater.cs

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using NHibernate.Cfg;
23
using NHibernate.Engine;
34
using NHibernate.Mapping;
@@ -8,17 +9,24 @@ namespace NHibernate.Tool.hbm2ddl
89
// Candidate to be exstensions of ISessionFactory and Configuration
910
public static class SchemaMetadataUpdater
1011
{
11-
public static void Update(ISessionFactory sessionFactory)
12+
public static void Update(ISessionFactoryImplementor sessionFactory)
1213
{
13-
var factory = (ISessionFactoryImplementor) sessionFactory;
14-
var dialect = factory.Dialect;
15-
var connectionHelper = new SuppliedConnectionProviderConnectionHelper(factory.ConnectionProvider);
16-
factory.Dialect.Keywords.UnionWith(GetReservedWords(dialect, connectionHelper));
14+
var dialect = sessionFactory.Dialect;
15+
var connectionHelper = new SuppliedConnectionProviderConnectionHelper(sessionFactory.ConnectionProvider);
16+
sessionFactory.Dialect.Keywords.UnionWith(GetReservedWords(dialect, connectionHelper));
1717
}
1818

1919
public static void QuoteTableAndColumns(Configuration configuration)
2020
{
21-
ISet<string> reservedDb = GetReservedWords(configuration.GetDerivedProperties());
21+
// Instatiates a new instance of the dialect so doesn't benefit from the Update call.
22+
var dialect = Dialect.Dialect.GetDialect(configuration.GetDerivedProperties());
23+
QuoteTableAndColumns(configuration, dialect);
24+
}
25+
26+
public static void QuoteTableAndColumns(Configuration configuration, Dialect.Dialect dialect)
27+
{
28+
ISet<string> reservedDb = dialect.Keywords;
29+
2230
foreach (var cm in configuration.ClassMappings)
2331
{
2432
QuoteTable(cm.Table, reservedDb);
@@ -29,16 +37,9 @@ public static void QuoteTableAndColumns(Configuration configuration)
2937
}
3038
}
3139

32-
private static ISet<string> GetReservedWords(IDictionary<string, string> cfgProperties)
33-
{
34-
var dialect = Dialect.Dialect.GetDialect(cfgProperties);
35-
var connectionHelper = new ManagedProviderConnectionHelper(cfgProperties);
36-
return GetReservedWords(dialect, connectionHelper);
37-
}
38-
3940
private static ISet<string> GetReservedWords(Dialect.Dialect dialect, IConnectionHelper connectionHelper)
4041
{
41-
ISet<string> reservedDb = new HashSet<string>();
42+
ISet<string> reservedDb = new HashSet<string>(dialect.Keywords);
4243
connectionHelper.Prepare();
4344
try
4445
{

0 commit comments

Comments
 (0)