Changeset: 53ef497672bf for monetdb-java
URL: http://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=53ef497672bf
Modified Files:
src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java
src/main/java/nl/cwi/monetdb/mcl/connection/mapi/MapiConnection.java
Branch: embedded
Log Message:
Limit the StringBuilder size for the JDBC embedded connection.
diffs (59 lines):
diff --git a/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
b/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
@@ -164,6 +164,13 @@ public abstract class MonetConnection ex
public abstract int getDefFetchsize();
/**
+ * Gets the initial value for the StringBuilder size.
+ *
+ * @return The initial value for the StringBuilder size
+ */
+ public abstract int initialStringBuilderSize();
+
+ /**
* Gets the underlying connection socket timeout.
*
* @return The underlying connection socket timeout
diff --git a/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java
b/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java
@@ -191,11 +191,12 @@ public class MonetStatement extends Mone
boolean error = false;
BatchUpdateException e = new
BatchUpdateException("Error(s) occurred while executing the batch, see next
SQLExceptions for details", "22000", counts);
- StringBuilder tmpBatch = new
StringBuilder(connection.getBlockSize());
+ int builderSize = connection.initialStringBuilderSize();
+ StringBuilder tmpBatch = new StringBuilder(builderSize);
String sep =
connection.getLanguage().getQueryTemplateIndex(2);
for (int i = 0; i < batch.size(); i++) {
String tmp = batch.get(i);
- if (sep.length() + tmp.length() >
connection.getBlockSize()) {
+ if (sep.length() + tmp.length() > builderSize) {
// The thing is too big. Way too big.
Since it won't be optimal anyway, just add it to whatever we
// have and continue.
if (!first) {
@@ -209,7 +210,7 @@ public class MonetStatement extends Mone
first = true;
continue;
}
- if (tmpBatch.length() + sep.length() +
tmp.length() >= connection.getBlockSize()) {
+ if (tmpBatch.length() + sep.length() +
tmp.length() >= builderSize) {
// send and receive
error |=
internalBatch(tmpBatch.toString(), counts, offset, i + 1, e);
offset = i;
diff --git
a/src/main/java/nl/cwi/monetdb/mcl/connection/mapi/MapiConnection.java
b/src/main/java/nl/cwi/monetdb/mcl/connection/mapi/MapiConnection.java
--- a/src/main/java/nl/cwi/monetdb/mcl/connection/mapi/MapiConnection.java
+++ b/src/main/java/nl/cwi/monetdb/mcl/connection/mapi/MapiConnection.java
@@ -191,6 +191,11 @@ public class MapiConnection extends Mone
return DEF_FETCHSIZE;
}
+ @Override
+ public int initialStringBuilderSize() {
+ return this.getBlockSize();
+ }
+
/**
* Closes the underlying connection implementation. On a MAPI connection,
the underlying socket is closed.
*
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list