88import java .sql .DatabaseMetaData ;
99import java .sql .ResultSet ;
1010import java .sql .SQLException ;
11+ import java .sql .Statement ;
1112import java .util .Collections ;
1213import java .util .List ;
1314import java .util .stream .Collectors ;
@@ -49,7 +50,7 @@ public class ExtractedDatabaseMetaDataImpl implements ExtractedDatabaseMetaData
4950 private final String url ;
5051 private final String driver ;
5152 private final boolean jdbcMetadataAccessible ;
52-
53+ private final int defaultFetchSize ;
5354
5455 //Lazily initialized: loading all sequence information upfront has been
5556 //shown to be too slow in some cases. In this way we only load it
@@ -71,6 +72,7 @@ private ExtractedDatabaseMetaDataImpl(
7172 SQLStateType sqlStateType ,
7273 int transactionIsolation ,
7374 int defaultTransactionIsolation ,
75+ int defaultFetchSize ,
7476 String url ,
7577 String driver ,
7678 boolean jdbcMetadataIsAccessible ) {
@@ -88,6 +90,7 @@ private ExtractedDatabaseMetaDataImpl(
8890 this .sqlStateType = sqlStateType ;
8991 this .transactionIsolation = transactionIsolation ;
9092 this .defaultTransactionIsolation = defaultTransactionIsolation ;
93+ this .defaultFetchSize = defaultFetchSize ;
9194 this .url = url ;
9295 this .driver = driver ;
9396 this .jdbcMetadataAccessible = jdbcMetadataIsAccessible ;
@@ -168,6 +171,11 @@ public int getDefaultTransactionIsolation() {
168171 return defaultTransactionIsolation ;
169172 }
170173
174+ @ Override
175+ public int getDefaultFetchSize () {
176+ return defaultFetchSize ;
177+ }
178+
171179 @ Override
172180 public synchronized List <SequenceInformation > getSequenceInformationList () {
173181 if ( jdbcMetadataAccessible ) {
@@ -211,6 +219,7 @@ public static class Builder {
211219 private String driver ;
212220 private int defaultTransactionIsolation ;
213221 private int transactionIsolation ;
222+ private int defaultFetchSize ;
214223
215224 public Builder (JdbcEnvironment jdbcEnvironment , boolean jdbcMetadataIsAccessible , JdbcConnectionAccess connectionAccess ) {
216225 this .jdbcEnvironment = jdbcEnvironment ;
@@ -233,6 +242,12 @@ public Builder apply(DatabaseMetaData databaseMetaData) throws SQLException {
233242 driver = databaseMetaData .getDriverName ();
234243 defaultTransactionIsolation = databaseMetaData .getDefaultTransactionIsolation ();
235244 transactionIsolation = databaseMetaData .getConnection ().getTransactionIsolation ();
245+ try ( Statement statement = databaseMetaData .getConnection ().createStatement () ) {
246+ defaultFetchSize = statement .getFetchSize ();
247+ }
248+ catch (SQLException sqle ) {
249+ defaultFetchSize = -1 ;
250+ }
236251 return this ;
237252 }
238253
@@ -302,6 +317,7 @@ public ExtractedDatabaseMetaDataImpl build() {
302317 sqlStateType ,
303318 transactionIsolation ,
304319 defaultTransactionIsolation ,
320+ defaultFetchSize ,
305321 url ,
306322 driver ,
307323 jdbcMetadataIsAccessible
0 commit comments