public void UpdateReservedWordsInDialect() { var reservedDb = new HashedSet <string>(); var configuration = TestConfigurationHelper.GetDefaultConfiguration(); var dialect = Dialect.Dialect.GetDialect(configuration.Properties); var connectionHelper = new ManagedProviderConnectionHelper(configuration.Properties); connectionHelper.Prepare(); try { var metaData = dialect.GetDataBaseSchema(connectionHelper.Connection); foreach (var rw in metaData.GetReservedWords()) { reservedDb.Add(rw.ToLowerInvariant()); } } finally { connectionHelper.Release(); } var sf = (ISessionFactoryImplementor)configuration.BuildSessionFactory(); SchemaMetadataUpdater.Update(sf); var match = reservedDb.Intersect(sf.Dialect.Keywords); Assert.That(match, Is.EquivalentTo(reservedDb)); }
public async Task UpdateReservedWordsInDialectAsync() { var reservedDb = new HashSet <string>(StringComparer.OrdinalIgnoreCase); var configuration = TestConfigurationHelper.GetDefaultConfiguration(); var dialect = Dialect.Dialect.GetDialect(configuration.Properties); var connectionHelper = new ManagedProviderConnectionHelper(configuration.Properties); await(connectionHelper.PrepareAsync(CancellationToken.None)); try { var metaData = dialect.GetDataBaseSchema(connectionHelper.Connection); foreach (var rw in metaData.GetReservedWords()) { reservedDb.Add(rw.ToLowerInvariant()); } } finally { connectionHelper.Release(); } var sf = (ISessionFactoryImplementor)configuration.BuildSessionFactory(); await(SchemaMetadataUpdater.UpdateAsync(sf, CancellationToken.None)); var match = reservedDb.Intersect(sf.Dialect.Keywords, StringComparer.OrdinalIgnoreCase); // tests that nothing in the first metaData.GetReservedWords() is left out of the second metaData.GetReservedWords() call. // i.e. always passes. Assert.That(match, Is.EquivalentTo(reservedDb)); }
public async Task AutoQuoteTableAndColumnsAtStratupIncludeKeyWordsImportAsync() { var reservedDb = new HashSet <string>(StringComparer.OrdinalIgnoreCase); var configuration = TestConfigurationHelper.GetDefaultConfiguration(); var dialect = Dialect.Dialect.GetDialect(configuration.Properties); var connectionHelper = new ManagedProviderConnectionHelper(configuration.Properties); await(connectionHelper.PrepareAsync(CancellationToken.None)); try { var metaData = dialect.GetDataBaseSchema(connectionHelper.Connection); foreach (var rw in metaData.GetReservedWords()) { reservedDb.Add(rw.ToLowerInvariant()); } } finally { connectionHelper.Release(); } configuration.SetProperty(Environment.Hbm2ddlKeyWords, "auto-quote"); configuration.AddResource("NHibernate.Test.Tools.hbm2ddl.SchemaMetadataUpdaterTest.HeavyEntity.hbm.xml", GetType().Assembly); var sf = (ISessionFactoryImplementor)configuration.BuildSessionFactory(); var match = reservedDb.Intersect(sf.Dialect.Keywords, StringComparer.OrdinalIgnoreCase); Assert.That(match, Is.EquivalentTo(reservedDb).IgnoreCase); }
public OptimizedSchemaUpdate(Configuration cfg, IDictionary<string, string> configProperties) { configuration = cfg; dialect = Dialect.GetDialect(configProperties); var props = new Dictionary<string, string>(dialect.DefaultProperties); foreach (var prop in configProperties) { props[prop.Key] = prop.Value; } connectionHelper = new ManagedProviderConnectionHelper(props); exceptions = new List<Exception>(); formatter = (PropertiesHelper.GetBoolean(Environment.FormatSql, configProperties, true) ? FormatStyle.Ddl : FormatStyle.None).Formatter; }
public OptimizedSchemaUpdate(Configuration cfg, IDictionary <string, string> configProperties) { configuration = cfg; dialect = Dialect.GetDialect(configProperties); var props = new Dictionary <string, string>(dialect.DefaultProperties); foreach (var prop in configProperties) { props[prop.Key] = prop.Value; } connectionHelper = new ManagedProviderConnectionHelper(props); exceptions = new List <Exception>(); formatter = (PropertiesHelper.GetBoolean(Environment.FormatSql, configProperties, true) ? FormatStyle.Ddl : FormatStyle.None).Formatter; }
public async Task EnsureReservedWordsHardCodedInDialectAsync() { var reservedDb = new HashSet <string>(); var configuration = TestConfigurationHelper.GetDefaultConfiguration(); var dialect = Dialect.Dialect.GetDialect(configuration.Properties); var connectionHelper = new ManagedProviderConnectionHelper(configuration.Properties); await(connectionHelper.PrepareAsync(CancellationToken.None)); try { var metaData = dialect.GetDataBaseSchema(connectionHelper.Connection); foreach (var rw in metaData.GetReservedWords()) { if (rw.Contains(" ")) { continue; } reservedDb.Add(rw.ToLowerInvariant()); } } finally { connectionHelper.Release(); } var sf = (ISessionFactoryImplementor)configuration.BuildSessionFactory(); // use the dialect as configured, with no update var match = reservedDb.Intersect(sf.Dialect.Keywords).ToList(); // tests that nothing in metaData.GetReservedWords() is left out of the Dialect.Keywords (without a refresh). var differences = reservedDb.Except(match).ToList(); if (differences.Count > 0) { Console.WriteLine("Update Dialect {0} with RegisterKeyword:", sf.Dialect.GetType().Name); foreach (var keyword in differences.OrderBy(x => x)) { Console.WriteLine(" RegisterKeyword(\"{0}\");", keyword); } } if (sf.ConnectionProvider.Driver is OdbcDriver) { Assert.Inconclusive("ODBC has excess keywords reserved"); } Assert.That(match, Is.EquivalentTo(reservedDb)); }
public async Task CanRetrieveReservedWordsAsync() { var configuration = TestConfigurationHelper.GetDefaultConfiguration(); var dialect = Dialect.Dialect.GetDialect(configuration.Properties); var connectionHelper = new ManagedProviderConnectionHelper(configuration.Properties); await(connectionHelper.PrepareAsync(CancellationToken.None)); try { var metaData = dialect.GetDataBaseSchema(connectionHelper.Connection); var reserved = metaData.GetReservedWords(); Assert.That(reserved, Is.Not.Empty); Assert.That(reserved, Has.Some.EqualTo("SELECT").IgnoreCase); Assert.That(reserved, Has.Some.EqualTo("FROM").IgnoreCase); } finally { connectionHelper.Release(); } }
public void CanRetrieveReservedWords() { var configuration = TestConfigurationHelper.GetDefaultConfiguration(); var dialect = Dialect.Dialect.GetDialect(configuration.Properties); var connectionHelper = new ManagedProviderConnectionHelper(configuration.Properties); connectionHelper.Prepare(); try { var metaData = dialect.GetDataBaseSchema(connectionHelper.Connection); var reserved = metaData.GetReservedWords(); Assert.That(reserved, Is.Not.Empty); Assert.That(reserved, Has.Member("SELECT")); Assert.That(reserved, Has.Member("FROM")); } finally { connectionHelper.Release(); } }
public async Task CheckForExcessReservedWordsHardCodedInDialectAsync() { var reservedDb = new HashSet <string>(); var configuration = TestConfigurationHelper.GetDefaultConfiguration(); var dialect = Dialect.Dialect.GetDialect(configuration.Properties); var connectionHelper = new ManagedProviderConnectionHelper(configuration.Properties); await(connectionHelper.PrepareAsync(CancellationToken.None)); try { var metaData = dialect.GetDataBaseSchema(connectionHelper.Connection); foreach (var rw in metaData.GetReservedWords()) { reservedDb.Add(rw.ToLowerInvariant()); } } finally { connectionHelper.Release(); } var sf = (ISessionFactoryImplementor)configuration.BuildSessionFactory(); // use the dialect as configured, with no update // tests that nothing in Dialect.Keyword is not in metaData.GetReservedWords() var differences = sf.Dialect.Keywords.Except(reservedDb).Except(AnsiSqlKeywords.Sql2003).ToList(); if (differences.Count > 0) { Console.WriteLine("Excess RegisterKeyword in Dialect {0}:", sf.Dialect.GetType().Name); foreach (var keyword in differences.OrderBy(x => x)) { Console.WriteLine(" RegisterKeyword(\"{0}\");", keyword); } } // Don't fail incase the driver returns nothing. // This is an info-only test. }
public IncorrectIndexDetector(Configuration configuration) { dialect = Dialect.GetDialect(configuration.Properties); connectionHelper = new ManagedProviderConnectionHelper(MergeProperties(configuration.Properties)); timeoutEntityMapping = configuration.GetClassMapping(typeof(TimeoutEntity)); }