summaryrefslogtreecommitdiff
path: root/src/main/java/com/amazon/carbonado
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/amazon/carbonado')
-rw-r--r--src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepository.java7
-rw-r--r--src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepositoryBuilder.java22
-rw-r--r--src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorage.java4
-rw-r--r--src/main/java/com/amazon/carbonado/repo/jdbc/LiteralStatement.java2
4 files changed, 35 insertions, 0 deletions
diff --git a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepository.java b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepository.java
index 105de87..9e54694 100644
--- a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepository.java
+++ b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepository.java
@@ -171,6 +171,7 @@ public class JDBCRepository extends AbstractRepository<JDBCTransaction>
private final boolean mDataSourceClose;
private final String mCatalog;
private final String mSchema;
+ private final Integer mFetchSize;
// Maps Storable types which should have automatic version management.
private Map<String, Boolean> mAutoVersioningMap;
@@ -214,6 +215,7 @@ public class JDBCRepository extends AbstractRepository<JDBCTransaction>
Iterable<TriggerFactory> triggerFactories,
DataSource dataSource, boolean dataSourceClose,
String catalog, String schema,
+ Integer fetchSize,
Map<String, Boolean> autoVersioningMap,
String sequenceSelectStatement, boolean forceStoredSequence)
throws RepositoryException
@@ -229,6 +231,7 @@ public class JDBCRepository extends AbstractRepository<JDBCTransaction>
mDataSourceClose = dataSourceClose;
mCatalog = catalog;
mSchema = schema;
+ mFetchSize = fetchSize;
mAutoVersioningMap = autoVersioningMap;
@@ -582,6 +585,10 @@ public class JDBCRepository extends AbstractRepository<JDBCTransaction>
return mRootRef.get();
}
+ Integer getFetchSize() {
+ return mFetchSize;
+ }
+
/**
* Transforms the given throwable into an appropriate fetch exception. If
* it already is a fetch exception, it is simply casted.
diff --git a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepositoryBuilder.java b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepositoryBuilder.java
index 2329206..12e21cc 100644
--- a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepositoryBuilder.java
+++ b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepositoryBuilder.java
@@ -70,6 +70,7 @@ public class JDBCRepositoryBuilder extends AbstractRepositoryBuilder {
private String mURL;
private String mUsername;
private String mPassword;
+ private Integer mFetchSize;
private Map<String, Boolean> mAutoVersioningMap;
private String mSequenceSelectStatement;
private boolean mForceStoredSequence;
@@ -83,6 +84,7 @@ public class JDBCRepositoryBuilder extends AbstractRepositoryBuilder {
(rootRef, getName(), isMaster(), getTriggerFactories(),
getDataSource(), getDataSourceCloseOnShutdown(),
mCatalog, mSchema,
+ mFetchSize,
getAutoVersioningMap(),
mSequenceSelectStatement, mForceStoredSequence);
rootRef.set(repo);
@@ -273,6 +275,26 @@ public class JDBCRepositoryBuilder extends AbstractRepositoryBuilder {
}
/**
+ * Set the default fetch size when running queries. Pass null to let driver
+ * use its own default.
+ *
+ * @since 1.2
+ */
+ public void setDefaultFetchSize(Integer size) {
+ mFetchSize = size;
+ }
+
+ /**
+ * Returns the default fetch size when running queries, or null if driver
+ * default is used instead.
+ *
+ * @since 1.2
+ */
+ public Integer getDefaultFetchSize() {
+ return mFetchSize;
+ }
+
+ /**
* By default, JDBCRepository assumes that {@link
* com.amazon.carbonado.Version version numbers} are initialized and
* incremented by triggers installed on the database. Enabling automatic
diff --git a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorage.java b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorage.java
index 2421be7..fd36c6e 100644
--- a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorage.java
+++ b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorage.java
@@ -489,6 +489,10 @@ class JDBCStorage<S extends Storable> extends StandardQueryFactory<S>
Connection con = mRepository.getConnection();
try {
PreparedStatement ps = con.prepareStatement(prepareSelect(values, forUpdate));
+ Integer fetchSize = mRepository.getFetchSize();
+ if (fetchSize != null) {
+ ps.setFetchSize(fetchSize);
+ }
try {
setParameters(ps, values);
diff --git a/src/main/java/com/amazon/carbonado/repo/jdbc/LiteralStatement.java b/src/main/java/com/amazon/carbonado/repo/jdbc/LiteralStatement.java
index 8fa0933..ceedd94 100644
--- a/src/main/java/com/amazon/carbonado/repo/jdbc/LiteralStatement.java
+++ b/src/main/java/com/amazon/carbonado/repo/jdbc/LiteralStatement.java
@@ -38,6 +38,7 @@ class LiteralStatement<S extends Storable> extends SQLStatement<S> {
return mStr.length();
}
+ @Override
public String buildStatement(int initialCapacity, FilterValues<S> filterValues) {
return mStr;
}
@@ -49,6 +50,7 @@ class LiteralStatement<S extends Storable> extends SQLStatement<S> {
/**
* Returns the literal value.
*/
+ @Override
public String toString() {
return mStr;
}