Changeset: 108123ca6889 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/108123ca6889
Modified Files:
release.txt
src/main/java/org/monetdb/jdbc/MonetConnection.java
src/main/java/org/monetdb/jdbc/MonetDriver.java.in
Branch: default
Log Message:
Add autocommit=true/false option to jdbc url
diffs (84 lines):
diff --git a/release.txt b/release.txt
--- a/release.txt
+++ b/release.txt
@@ -31,6 +31,7 @@ Supported connection properties are:
language=<sql or mal> default is: sql
fetchsize=<nr of rows> default is: 250; -1 means fetch
everything at once
debug=true default is: false
+ autocommit=false default is: true
logfile=<name of logfile>
hash=<SHA512, SHA384, SHA256 or SHA1>
diff --git a/src/main/java/org/monetdb/jdbc/MonetConnection.java
b/src/main/java/org/monetdb/jdbc/MonetConnection.java
--- a/src/main/java/org/monetdb/jdbc/MonetConnection.java
+++ b/src/main/java/org/monetdb/jdbc/MonetConnection.java
@@ -210,6 +210,13 @@ public class MonetConnection
if (hash != null)
conn_props.setProperty("hash", hash);
+ String autocommit_prop = props.getProperty("autocommit");
+ boolean initial_autocommit = true;
+ if (autocommit_prop != null) {
+ initial_autocommit =
Boolean.parseBoolean(autocommit_prop);
+ conn_props.setProperty("initial_autocommit",
Boolean.toString(initial_autocommit));
+ }
+
final String fetchsize_prop = props.getProperty("fetchsize");
if (fetchsize_prop != null) {
try {
@@ -288,6 +295,7 @@ public class MonetConnection
int offsetMillis = cal.get(Calendar.ZONE_OFFSET) +
cal.get(Calendar.DST_OFFSET);
int offsetSeconds = offsetMillis / 1000;
final HandshakeOptions handshakeOptions = new
HandshakeOptions();
+ handshakeOptions.set(Setting.AutoCommit, initial_autocommit ? 1
: 0);
handshakeOptions.set(Setting.TimeZone, offsetSeconds);
handshakeOptions.set(Setting.ReplySize, defaultFetchSize);
// handshakeOptions.set(Setting.SizeHeader, 1);
@@ -388,8 +396,9 @@ public class MonetConnection
// the following initialisers are only valid when the language
is SQL...
if (lang == LANG_SQL) {
- // enable auto commit
- setAutoCommit(true);
+ if (handshakeOptions.mustSend(Setting.AutoCommit)) {
+
setAutoCommit(handshakeOptions.get(Setting.AutoCommit) != 0);
+ }
// set our time zone on the server, if we haven't
already
if (handshakeOptions.mustSend(Setting.TimeZone)) {
@@ -1822,6 +1831,7 @@ public class MonetConnection
name.equals("hash") ||
name.equals("treat_blob_as_binary") ||
name.equals("treat_clob_as_varchar") ||
+ name.equals("autocommit") ||
name.equals("so_timeout") ||
name.equals("fetchsize"); // only supported by
servers from version 11.41.1 onwards
}
diff --git a/src/main/java/org/monetdb/jdbc/MonetDriver.java.in
b/src/main/java/org/monetdb/jdbc/MonetDriver.java.in
--- a/src/main/java/org/monetdb/jdbc/MonetDriver.java.in
+++ b/src/main/java/org/monetdb/jdbc/MonetDriver.java.in
@@ -195,7 +195,7 @@ public class MonetDriver implements Driv
return null;
final String[] boolean_choices = new String[] { "true", "false"
};
- final DriverPropertyInfo[] dpi = new DriverPropertyInfo[9];
// we currently support 9 connection properties
+ final DriverPropertyInfo[] dpi = new DriverPropertyInfo[10];
// we currently support 10 connection properties
DriverPropertyInfo prop = new DriverPropertyInfo("user", info
!= null ? info.getProperty("user") : null);
prop.required = true;
@@ -247,13 +247,11 @@ public class MonetDriver implements Driv
prop.description = "Defines the maximum time to wait in
milliseconds on a blocking read socket call"; // this corresponds to the
Connection.setNetworkTimeout() method introduced in JDBC 4.1
dpi[8] = prop;
-/* next property is no longer supported in: new MonetConnection(props)
- prop = new DriverPropertyInfo("follow_redirects", "true");
+ prop = new DriverPropertyInfo("autocommit", "true");
prop.required = false;
- prop.description = "Whether redirects issued by the server
should be followed";
+ prop.description = "Whether the connection should start in
auto-commit mode";
prop.choices = boolean_choices;
dpi[9] = prop;
-*/
return dpi;
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]