35
35
36
36
import org .jboss .logging .Logger ;
37
37
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 ;
38
41
import static org .hibernate .engine .jdbc .env .internal .LobCreatorBuilderImpl .makeLobCreatorBuilder ;
39
42
40
43
/**
@@ -70,75 +73,74 @@ public static boolean isMultiTenancyEnabled(ServiceRegistry serviceRegistry) {
70
73
public JdbcEnvironmentImpl (final ServiceRegistryImplementor serviceRegistry , final Dialect dialect ) {
71
74
this .dialect = dialect ;
72
75
73
- this . sqlAstTranslatorFactory = resolveSqlAstTranslatorFactory ( dialect );
76
+ sqlAstTranslatorFactory = resolveSqlAstTranslatorFactory ( dialect );
74
77
75
- final ConfigurationService cfgService = serviceRegistry . requireService ( ConfigurationService . class );
78
+ final ConfigurationService cfgService = configurationService ( serviceRegistry );
76
79
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 ;
83
85
84
- this .sqlExceptionHelper = buildSqlExceptionHelper ( dialect , logWarnings ( cfgService , dialect ) );
86
+ sqlExceptionHelper =
87
+ buildSqlExceptionHelper ( dialect ,
88
+ logWarnings ( cfgService , dialect ),
89
+ logErrors ( cfgService ) );
85
90
86
91
final IdentifierHelperBuilder identifierHelperBuilder =
87
92
identifierHelperBuilder ( cfgService , nameQualifierSupport );
88
93
89
94
final ExtractedDatabaseMetaDataImpl .Builder metaDataBuilder =
90
95
new ExtractedDatabaseMetaDataImpl .Builder ( this , false , null );
91
96
92
- this . identifierHelper = identifierHelper ( dialect , identifierHelperBuilder , metaDataBuilder );
97
+ identifierHelper = identifierHelper ( dialect , identifierHelperBuilder , metaDataBuilder );
93
98
94
- this . extractedMetaDataSupport = metaDataBuilder .build ();
99
+ extractedMetaDataSupport = metaDataBuilder .build ();
95
100
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 ) );
102
103
103
- this .qualifiedObjectNameFormatter = new QualifiedObjectNameFormatterStandardImpl ( nameQualifierSupport );
104
+ qualifiedObjectNameFormatter = new QualifiedObjectNameFormatterStandardImpl ( nameQualifierSupport );
105
+
106
+ lobCreatorBuilder = makeLobCreatorBuilder ( dialect );
107
+ }
104
108
105
- this .lobCreatorBuilder = makeLobCreatorBuilder ( dialect );
109
+ private static ConfigurationService configurationService (ServiceRegistryImplementor serviceRegistry ) {
110
+ return serviceRegistry .requireService ( ConfigurationService .class );
106
111
}
107
112
108
113
private IdentifierHelperBuilder identifierHelperBuilder (
109
114
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 ;
117
121
}
118
122
119
123
private static IdentifierHelper identifierHelper (
120
124
Dialect dialect ,
121
- IdentifierHelperBuilder identifierHelperBuilder ,
125
+ IdentifierHelperBuilder builder ,
122
126
ExtractedDatabaseMetaDataImpl .Builder dbMetaDataBuilder ) {
123
127
try {
124
- final IdentifierHelper identifierHelper = dialect .buildIdentifierHelper ( identifierHelperBuilder , null );
128
+ final IdentifierHelper helper = dialect .buildIdentifierHelper ( builder , null );
125
129
dbMetaDataBuilder .setSupportsNamedParameters ( dialect .supportsNamedParameters ( null ) );
126
- if ( identifierHelper != null ) {
127
- return identifierHelper ;
130
+ if ( helper != null ) {
131
+ return helper ;
128
132
}
129
133
}
130
134
catch (SQLException sqle ) {
131
135
// should never ever happen
132
136
log .debug ( "There was a problem accessing DatabaseMetaData in building the JdbcEnvironment" , sqle );
133
137
}
134
- return identifierHelperBuilder .build ();
138
+ return builder .build ();
135
139
}
136
140
137
141
private static SqlAstTranslatorFactory resolveSqlAstTranslatorFactory (Dialect dialect ) {
138
142
final SqlAstTranslatorFactory sqlAstTranslatorFactory = dialect .getSqlAstTranslatorFactory ();
139
- return sqlAstTranslatorFactory != null
140
- ? sqlAstTranslatorFactory
141
- : new StandardSqlAstTranslatorFactory ();
143
+ return sqlAstTranslatorFactory == null ? new StandardSqlAstTranslatorFactory () : sqlAstTranslatorFactory ;
142
144
}
143
145
144
146
private static boolean logWarnings (ConfigurationService cfgService , Dialect dialect ) {
@@ -149,6 +151,14 @@ private static boolean logWarnings(ConfigurationService cfgService, Dialect dial
149
151
);
150
152
}
151
153
154
+ private static boolean logErrors (ConfigurationService cfgService ) {
155
+ return cfgService .getSetting (
156
+ AvailableSettings .LOG_JDBC_ERRORS ,
157
+ StandardConverters .BOOLEAN ,
158
+ true
159
+ );
160
+ }
161
+
152
162
private static boolean globalQuoting (ConfigurationService cfgService ) {
153
163
return cfgService .getSetting (
154
164
AvailableSettings .GLOBALLY_QUOTED_IDENTIFIERS ,
@@ -182,29 +192,27 @@ public JdbcEnvironmentImpl(
182
192
JdbcConnectionAccess jdbcConnectionAccess ) throws SQLException {
183
193
this .dialect = dialect ;
184
194
185
- this . sqlAstTranslatorFactory = resolveSqlAstTranslatorFactory ( dialect );
195
+ sqlAstTranslatorFactory = resolveSqlAstTranslatorFactory ( dialect );
186
196
187
- this . sqlExceptionHelper = buildSqlExceptionHelper ( dialect , false );
197
+ sqlExceptionHelper = buildSqlExceptionHelper ( dialect , false , true );
188
198
189
- this . nameQualifierSupport = nameQualifierSupport ( databaseMetaData , dialect );
199
+ nameQualifierSupport = nameQualifierSupport ( databaseMetaData , dialect );
190
200
191
- this . identifierHelper = identifierHelper ( databaseMetaData , dialect );
201
+ identifierHelper = identifierHelper ( databaseMetaData , dialect );
192
202
193
- this . extractedMetaDataSupport =
203
+ extractedMetaDataSupport =
194
204
new ExtractedDatabaseMetaDataImpl .Builder ( this , true , jdbcConnectionAccess )
195
205
.apply ( databaseMetaData )
196
206
.setSupportsNamedParameters ( databaseMetaData .supportsNamedParameters () )
197
207
.build ();
198
208
199
- this . currentCatalog = null ;
200
- this . currentSchema = null ;
209
+ currentCatalog = null ;
210
+ currentSchema = null ;
201
211
202
- this .qualifiedObjectNameFormatter = new QualifiedObjectNameFormatterStandardImpl (
203
- nameQualifierSupport ,
204
- databaseMetaData
205
- );
212
+ qualifiedObjectNameFormatter =
213
+ new QualifiedObjectNameFormatterStandardImpl ( nameQualifierSupport , databaseMetaData );
206
214
207
- this . lobCreatorBuilder = makeLobCreatorBuilder ( dialect );
215
+ lobCreatorBuilder = makeLobCreatorBuilder ( dialect );
208
216
}
209
217
210
218
private IdentifierHelper identifierHelper (DatabaseMetaData databaseMetaData , Dialect dialect ) {
@@ -278,41 +286,36 @@ public JdbcEnvironmentImpl(
278
286
JdbcConnectionAccess jdbcConnectionAccess ) throws SQLException {
279
287
this .dialect = dialect ;
280
288
281
- this . sqlAstTranslatorFactory = resolveSqlAstTranslatorFactory ( dialect );
289
+ sqlAstTranslatorFactory = resolveSqlAstTranslatorFactory ( dialect );
282
290
283
- final ConfigurationService cfgService = serviceRegistry . requireService ( ConfigurationService . class );
291
+ final ConfigurationService cfgService = configurationService ( serviceRegistry );
284
292
285
- this .sqlExceptionHelper = buildSqlExceptionHelper ( dialect , logWarnings ( cfgService , dialect ) );
293
+ sqlExceptionHelper =
294
+ buildSqlExceptionHelper ( dialect ,
295
+ logWarnings ( cfgService , dialect ),
296
+ logErrors ( cfgService ) );
286
297
287
- NameQualifierSupport nameQualifierSupport = nameQualifierSupport ( databaseMetaData ,
288
- dialect );
289
- this .nameQualifierSupport = nameQualifierSupport ;
298
+ nameQualifierSupport = nameQualifierSupport ( databaseMetaData , dialect );
290
299
291
300
final IdentifierHelperBuilder identifierHelperBuilder =
292
301
identifierHelperBuilder ( cfgService , nameQualifierSupport );
293
- this . identifierHelper = identifierHelper ( dialect , databaseMetaData , identifierHelperBuilder );
302
+ identifierHelper = identifierHelper ( dialect , databaseMetaData , identifierHelperBuilder );
294
303
295
- this . extractedMetaDataSupport =
304
+ extractedMetaDataSupport =
296
305
new ExtractedDatabaseMetaDataImpl .Builder ( this , true , jdbcConnectionAccess )
297
306
.apply ( databaseMetaData )
298
307
.setConnectionSchemaName ( determineCurrentSchemaName ( databaseMetaData , serviceRegistry , dialect ) )
299
308
.setSupportsNamedParameters ( dialect .supportsNamedParameters ( databaseMetaData ) )
300
309
.build ();
301
310
302
311
// 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 () );
305
314
306
- this .qualifiedObjectNameFormatter = new QualifiedObjectNameFormatterStandardImpl (
307
- nameQualifierSupport ,
308
- databaseMetaData
309
- );
315
+ qualifiedObjectNameFormatter =
316
+ new QualifiedObjectNameFormatterStandardImpl ( nameQualifierSupport , databaseMetaData );
310
317
311
- this .lobCreatorBuilder = LobCreatorBuilderImpl .makeLobCreatorBuilder (
312
- dialect ,
313
- cfgService .getSettings (),
314
- databaseMetaData .getConnection ()
315
- );
318
+ lobCreatorBuilder = makeLobCreatorBuilder ( dialect , cfgService .getSettings (), databaseMetaData .getConnection () );
316
319
}
317
320
318
321
private static IdentifierHelper identifierHelper (
@@ -358,12 +361,12 @@ private static SchemaNameResolver getSchemaNameResolver(ServiceRegistry serviceR
358
361
dialect .getSchemaNameResolver () );
359
362
}
360
363
361
- private static SqlExceptionHelper buildSqlExceptionHelper (Dialect dialect , boolean logWarnings ) {
364
+ private static SqlExceptionHelper buildSqlExceptionHelper (Dialect dialect , boolean logWarnings , boolean logErrors ) {
362
365
final SQLExceptionConversionDelegate dialectDelegate = dialect .buildSQLExceptionConversionDelegate ();
363
366
final SQLExceptionConversionDelegate [] delegates = dialectDelegate == null
364
367
? new SQLExceptionConversionDelegate [] { new SQLExceptionTypeDelegate ( dialect ), new SQLStateConversionDelegate ( dialect ) }
365
368
: 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 );
367
370
}
368
371
369
372
@ Override
0 commit comments