3535
3636import org .jboss .logging .Logger ;
3737
38+ import static org .hibernate .cfg .MappingSettings .DEFAULT_CATALOG ;
39+ import static org .hibernate .cfg .MappingSettings .DEFAULT_SCHEMA ;
40+ import static org .hibernate .engine .config .spi .StandardConverters .STRING ;
3841import static org .hibernate .engine .jdbc .env .internal .LobCreatorBuilderImpl .makeLobCreatorBuilder ;
3942
4043/**
@@ -70,75 +73,74 @@ public static boolean isMultiTenancyEnabled(ServiceRegistry serviceRegistry) {
7073 public JdbcEnvironmentImpl (final ServiceRegistryImplementor serviceRegistry , final Dialect dialect ) {
7174 this .dialect = dialect ;
7275
73- this . sqlAstTranslatorFactory = resolveSqlAstTranslatorFactory ( dialect );
76+ sqlAstTranslatorFactory = resolveSqlAstTranslatorFactory ( dialect );
7477
75- final ConfigurationService cfgService = serviceRegistry . requireService ( ConfigurationService . class );
78+ final ConfigurationService cfgService = configurationService ( serviceRegistry );
7679
77- NameQualifierSupport nameQualifierSupport = dialect .getNameQualifierSupport ();
78- if ( nameQualifierSupport == null ) {
79- // assume both catalogs and schemas are supported
80- nameQualifierSupport = NameQualifierSupport .BOTH ;
81- }
82- this .nameQualifierSupport = nameQualifierSupport ;
80+ final NameQualifierSupport dialectNameQualifierSupport = dialect .getNameQualifierSupport ();
81+ nameQualifierSupport =
82+ dialectNameQualifierSupport == null
83+ ? NameQualifierSupport .BOTH // assume both catalogs and schemas are supported
84+ : dialectNameQualifierSupport ;
8385
84- this .sqlExceptionHelper = buildSqlExceptionHelper ( dialect , logWarnings ( cfgService , dialect ) );
86+ sqlExceptionHelper =
87+ buildSqlExceptionHelper ( dialect ,
88+ logWarnings ( cfgService , dialect ),
89+ logErrors ( cfgService ) );
8590
8691 final IdentifierHelperBuilder identifierHelperBuilder =
8792 identifierHelperBuilder ( cfgService , nameQualifierSupport );
8893
8994 final ExtractedDatabaseMetaDataImpl .Builder metaDataBuilder =
9095 new ExtractedDatabaseMetaDataImpl .Builder ( this , false , null );
9196
92- this . identifierHelper = identifierHelper ( dialect , identifierHelperBuilder , metaDataBuilder );
97+ identifierHelper = identifierHelper ( dialect , identifierHelperBuilder , metaDataBuilder );
9398
94- this . extractedMetaDataSupport = metaDataBuilder .build ();
99+ extractedMetaDataSupport = metaDataBuilder .build ();
95100
96- this .currentCatalog = identifierHelper .toIdentifier (
97- cfgService .getSetting ( AvailableSettings .DEFAULT_CATALOG , StandardConverters .STRING )
98- );
99- this .currentSchema = Identifier .toIdentifier (
100- cfgService .getSetting ( AvailableSettings .DEFAULT_SCHEMA , StandardConverters .STRING )
101- );
101+ currentCatalog = identifierHelper .toIdentifier ( cfgService .getSetting ( DEFAULT_CATALOG , STRING ) );
102+ currentSchema = Identifier .toIdentifier ( cfgService .getSetting ( DEFAULT_SCHEMA , STRING ) );
102103
103- this .qualifiedObjectNameFormatter = new QualifiedObjectNameFormatterStandardImpl ( nameQualifierSupport );
104+ qualifiedObjectNameFormatter = new QualifiedObjectNameFormatterStandardImpl ( nameQualifierSupport );
105+
106+ lobCreatorBuilder = makeLobCreatorBuilder ( dialect );
107+ }
104108
105- this .lobCreatorBuilder = makeLobCreatorBuilder ( dialect );
109+ private static ConfigurationService configurationService (ServiceRegistryImplementor serviceRegistry ) {
110+ return serviceRegistry .requireService ( ConfigurationService .class );
106111 }
107112
108113 private IdentifierHelperBuilder identifierHelperBuilder (
109114 ConfigurationService cfgService , NameQualifierSupport nameQualifierSupport ) {
110- final IdentifierHelperBuilder identifierHelperBuilder = IdentifierHelperBuilder .from ( this );
111- identifierHelperBuilder .setGloballyQuoteIdentifiers ( globalQuoting ( cfgService ) );
112- identifierHelperBuilder .setSkipGlobalQuotingForColumnDefinitions ( globalQuotingSkippedForColumnDefinitions (
113- cfgService ) );
114- identifierHelperBuilder .setAutoQuoteKeywords ( autoKeywordQuoting ( cfgService ) );
115- identifierHelperBuilder .setNameQualifierSupport ( nameQualifierSupport );
116- return identifierHelperBuilder ;
115+ final IdentifierHelperBuilder builder = IdentifierHelperBuilder .from ( this );
116+ builder .setGloballyQuoteIdentifiers ( globalQuoting ( cfgService ) );
117+ builder .setSkipGlobalQuotingForColumnDefinitions ( globalQuotingSkippedForColumnDefinitions ( cfgService ) );
118+ builder .setAutoQuoteKeywords ( autoKeywordQuoting ( cfgService ) );
119+ builder .setNameQualifierSupport ( nameQualifierSupport );
120+ return builder ;
117121 }
118122
119123 private static IdentifierHelper identifierHelper (
120124 Dialect dialect ,
121- IdentifierHelperBuilder identifierHelperBuilder ,
125+ IdentifierHelperBuilder builder ,
122126 ExtractedDatabaseMetaDataImpl .Builder dbMetaDataBuilder ) {
123127 try {
124- final IdentifierHelper identifierHelper = dialect .buildIdentifierHelper ( identifierHelperBuilder , null );
128+ final IdentifierHelper helper = dialect .buildIdentifierHelper ( builder , null );
125129 dbMetaDataBuilder .setSupportsNamedParameters ( dialect .supportsNamedParameters ( null ) );
126- if ( identifierHelper != null ) {
127- return identifierHelper ;
130+ if ( helper != null ) {
131+ return helper ;
128132 }
129133 }
130134 catch (SQLException sqle ) {
131135 // should never ever happen
132136 log .debug ( "There was a problem accessing DatabaseMetaData in building the JdbcEnvironment" , sqle );
133137 }
134- return identifierHelperBuilder .build ();
138+ return builder .build ();
135139 }
136140
137141 private static SqlAstTranslatorFactory resolveSqlAstTranslatorFactory (Dialect dialect ) {
138142 final SqlAstTranslatorFactory sqlAstTranslatorFactory = dialect .getSqlAstTranslatorFactory ();
139- return sqlAstTranslatorFactory != null
140- ? sqlAstTranslatorFactory
141- : new StandardSqlAstTranslatorFactory ();
143+ return sqlAstTranslatorFactory == null ? new StandardSqlAstTranslatorFactory () : sqlAstTranslatorFactory ;
142144 }
143145
144146 private static boolean logWarnings (ConfigurationService cfgService , Dialect dialect ) {
@@ -149,6 +151,14 @@ private static boolean logWarnings(ConfigurationService cfgService, Dialect dial
149151 );
150152 }
151153
154+ private static boolean logErrors (ConfigurationService cfgService ) {
155+ return cfgService .getSetting (
156+ AvailableSettings .LOG_JDBC_ERRORS ,
157+ StandardConverters .BOOLEAN ,
158+ true
159+ );
160+ }
161+
152162 private static boolean globalQuoting (ConfigurationService cfgService ) {
153163 return cfgService .getSetting (
154164 AvailableSettings .GLOBALLY_QUOTED_IDENTIFIERS ,
@@ -182,29 +192,27 @@ public JdbcEnvironmentImpl(
182192 JdbcConnectionAccess jdbcConnectionAccess ) throws SQLException {
183193 this .dialect = dialect ;
184194
185- this . sqlAstTranslatorFactory = resolveSqlAstTranslatorFactory ( dialect );
195+ sqlAstTranslatorFactory = resolveSqlAstTranslatorFactory ( dialect );
186196
187- this . sqlExceptionHelper = buildSqlExceptionHelper ( dialect , false );
197+ sqlExceptionHelper = buildSqlExceptionHelper ( dialect , false , true );
188198
189- this . nameQualifierSupport = nameQualifierSupport ( databaseMetaData , dialect );
199+ nameQualifierSupport = nameQualifierSupport ( databaseMetaData , dialect );
190200
191- this . identifierHelper = identifierHelper ( databaseMetaData , dialect );
201+ identifierHelper = identifierHelper ( databaseMetaData , dialect );
192202
193- this . extractedMetaDataSupport =
203+ extractedMetaDataSupport =
194204 new ExtractedDatabaseMetaDataImpl .Builder ( this , true , jdbcConnectionAccess )
195205 .apply ( databaseMetaData )
196206 .setSupportsNamedParameters ( databaseMetaData .supportsNamedParameters () )
197207 .build ();
198208
199- this . currentCatalog = null ;
200- this . currentSchema = null ;
209+ currentCatalog = null ;
210+ currentSchema = null ;
201211
202- this .qualifiedObjectNameFormatter = new QualifiedObjectNameFormatterStandardImpl (
203- nameQualifierSupport ,
204- databaseMetaData
205- );
212+ qualifiedObjectNameFormatter =
213+ new QualifiedObjectNameFormatterStandardImpl ( nameQualifierSupport , databaseMetaData );
206214
207- this . lobCreatorBuilder = makeLobCreatorBuilder ( dialect );
215+ lobCreatorBuilder = makeLobCreatorBuilder ( dialect );
208216 }
209217
210218 private IdentifierHelper identifierHelper (DatabaseMetaData databaseMetaData , Dialect dialect ) {
@@ -278,41 +286,36 @@ public JdbcEnvironmentImpl(
278286 JdbcConnectionAccess jdbcConnectionAccess ) throws SQLException {
279287 this .dialect = dialect ;
280288
281- this . sqlAstTranslatorFactory = resolveSqlAstTranslatorFactory ( dialect );
289+ sqlAstTranslatorFactory = resolveSqlAstTranslatorFactory ( dialect );
282290
283- final ConfigurationService cfgService = serviceRegistry . requireService ( ConfigurationService . class );
291+ final ConfigurationService cfgService = configurationService ( serviceRegistry );
284292
285- this .sqlExceptionHelper = buildSqlExceptionHelper ( dialect , logWarnings ( cfgService , dialect ) );
293+ sqlExceptionHelper =
294+ buildSqlExceptionHelper ( dialect ,
295+ logWarnings ( cfgService , dialect ),
296+ logErrors ( cfgService ) );
286297
287- NameQualifierSupport nameQualifierSupport = nameQualifierSupport ( databaseMetaData ,
288- dialect );
289- this .nameQualifierSupport = nameQualifierSupport ;
298+ nameQualifierSupport = nameQualifierSupport ( databaseMetaData , dialect );
290299
291300 final IdentifierHelperBuilder identifierHelperBuilder =
292301 identifierHelperBuilder ( cfgService , nameQualifierSupport );
293- this . identifierHelper = identifierHelper ( dialect , databaseMetaData , identifierHelperBuilder );
302+ identifierHelper = identifierHelper ( dialect , databaseMetaData , identifierHelperBuilder );
294303
295- this . extractedMetaDataSupport =
304+ extractedMetaDataSupport =
296305 new ExtractedDatabaseMetaDataImpl .Builder ( this , true , jdbcConnectionAccess )
297306 .apply ( databaseMetaData )
298307 .setConnectionSchemaName ( determineCurrentSchemaName ( databaseMetaData , serviceRegistry , dialect ) )
299308 .setSupportsNamedParameters ( dialect .supportsNamedParameters ( databaseMetaData ) )
300309 .build ();
301310
302311 // and that current-catalog and current-schema happen after it
303- this . currentCatalog = identifierHelper .toIdentifier ( extractedMetaDataSupport .getConnectionCatalogName () );
304- this . currentSchema = identifierHelper .toIdentifier ( extractedMetaDataSupport .getConnectionSchemaName () );
312+ currentCatalog = identifierHelper .toIdentifier ( extractedMetaDataSupport .getConnectionCatalogName () );
313+ currentSchema = identifierHelper .toIdentifier ( extractedMetaDataSupport .getConnectionSchemaName () );
305314
306- this .qualifiedObjectNameFormatter = new QualifiedObjectNameFormatterStandardImpl (
307- nameQualifierSupport ,
308- databaseMetaData
309- );
315+ qualifiedObjectNameFormatter =
316+ new QualifiedObjectNameFormatterStandardImpl ( nameQualifierSupport , databaseMetaData );
310317
311- this .lobCreatorBuilder = LobCreatorBuilderImpl .makeLobCreatorBuilder (
312- dialect ,
313- cfgService .getSettings (),
314- databaseMetaData .getConnection ()
315- );
318+ lobCreatorBuilder = makeLobCreatorBuilder ( dialect , cfgService .getSettings (), databaseMetaData .getConnection () );
316319 }
317320
318321 private static IdentifierHelper identifierHelper (
@@ -358,12 +361,12 @@ private static SchemaNameResolver getSchemaNameResolver(ServiceRegistry serviceR
358361 dialect .getSchemaNameResolver () );
359362 }
360363
361- private static SqlExceptionHelper buildSqlExceptionHelper (Dialect dialect , boolean logWarnings ) {
364+ private static SqlExceptionHelper buildSqlExceptionHelper (Dialect dialect , boolean logWarnings , boolean logErrors ) {
362365 final SQLExceptionConversionDelegate dialectDelegate = dialect .buildSQLExceptionConversionDelegate ();
363366 final SQLExceptionConversionDelegate [] delegates = dialectDelegate == null
364367 ? new SQLExceptionConversionDelegate [] { new SQLExceptionTypeDelegate ( dialect ), new SQLStateConversionDelegate ( dialect ) }
365368 : new SQLExceptionConversionDelegate [] { dialectDelegate , new SQLExceptionTypeDelegate ( dialect ), new SQLStateConversionDelegate ( dialect ) };
366- return new SqlExceptionHelper ( new StandardSQLExceptionConverter ( delegates ), logWarnings );
369+ return new SqlExceptionHelper ( new StandardSQLExceptionConverter ( delegates ), logWarnings , logErrors );
367370 }
368371
369372 @ Override
0 commit comments