Repository: neo4j-contrib/neo4j-jdbc
Pull request #421 (2023-03-31 10:15:05)

Added Neo4j Java driver logging via Slf4j
Added Neo4j Java driver logging via Slf4j


Patch:
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index be4bab45..7fd632e2 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -16,6 +16,14 @@ jobs:
           - "5.1"
           - "5.2"
           - "5.3"
+          - "5.4"
+          - "5.5"
+          - "5.6"
+          - "5.7"
+          - "5.8"
+          - "5.9"
+          - "5.10"
+          - "5.11"
         neo4j_enterprise_edition:
           - "true"
           - "false"
diff --git a/README.adoc b/README.adoc
index ba237f09..b8114ec3 100644
--- a/README.adoc
+++ b/README.adoc
@@ -16,14 +16,26 @@ This driver was mainly developed by http://larus-ba.it[Larus BA, Italy], a certi
 Being a graph database, Neo4j is not serving data in a relational way, nevertheless thanks to this driver it's possible for
 projects that are using the classic JDBC connector in the relational paradigm to interact with Neo4j.
 
-This driver supports various types of database transports, through:
+=== Download
 
-* The `Bolt` direct connection protocol using `jdbc:neo4j:bolt://<host>:<port>/` from Neo4j 3.0+
-* The `Bolt` routing-aware protocol for clusters:
-** using `jdbc:neo4j:neo4j://<host>:<port>/` from Neo4j 4.0+
-** using `jdbc:neo4j:bolt+routing://<host>:<port>/` from Neo4j 3.1+ to 3.5.x
+Simply add the JDBC dependency to your project:
 
-You can also specify the encryption via the Bolt URI scheme (starting with the JDBC driver 4.0.3):
+[source,xml]
+<dependency>
+    <groupId>org.neo4j</groupId>
+    <artifactId>neo4j-jdbc-bolt</artifactId>
+    <version>{neo4j-jdbc-version}</version>
+    <scope>runtime</scope>
+</dependency>
+
+
+=== Transport support
+From 5.0 onwards, this driver supports only the Bolt protocol, through:
+
+* The `Bolt` direct connection protocol using `jdbc:neo4j:bolt://<host>:<port>/`
+* The `Bolt` routing-aware protocol for clusters using `jdbc:neo4j:neo4j://<host>:<port>/`
+
+You can also specify the encryption via the Bolt URI scheme:
 
  - `jdbc:neo4j:bolt://<host>:<port>/`
  - `jdbc:neo4j:bolt+s://<host>:<port>/`
@@ -34,49 +46,6 @@ You can also specify the encryption via the Bolt URI scheme (starting with the J
 
 See the official https://neo4j.com/docs/java-manual/current/client-applications/#java-driver-connection-uris[Neo4j Java driver documentation] to learn more.
 
-[NOTE]
-The previous JDBC driver for Neo4j 2.x was moved to the https://github.com/neo4j-contrib/neo4j-jdbc-2x repository.
-
-.Versions compatibility
-|===
-|Neo4j-JDBC | Neo4j version | Neo4j Driver | Java | URI Schemes | Temporal and Spatial
-
-|https://github.com/neo4j-contrib/neo4j-jdbc/releases/tag/3.5.2[3.5.2]
-|3.5.x
-|1.7.5
-|1.8
-|http, bolt, bolt+routing
-|yes
-
-|https://github.com/neo4j-contrib/neo4j-jdbc/releases/tag/4.0.9[4.0.9]
-|3.5.x - 4.x
-|4.4.x
-|1.8
-|http, bolt, neo4j
-|yes
-
-|https://github.com/neo4j-contrib/neo4j-jdbc/releases/tag/5.0.0[5.0.0]
-|4.4 - 5
-|5.0.0
-|17
-|bolt, neo4j
-|yes
-
-|===
-
-
-=== Maven dependency
-
-Simply add the JDBC dependency:
-
-[source,xml]
-<dependency>
-    <groupId>org.neo4j</groupId>
-    <artifactId>neo4j-jdbc-bolt</artifactId>
-    <version>{neo4j-jdbc-version}</version>
-    <scope>runtime</scope>
-</dependency>
-
 === Minimum viable snippet
 
 // tag::mvs[]
@@ -106,25 +75,8 @@ try (Connection connection = DriverManager.getConnection("jdbc:neo4j:bolt://loca
 ----
 // end::mvs[]
 
-*Please note* that the example above uses the try-with-resource blocks that automatically closes resources when the `try` block is exited.
-
-=== Usage with Neo4j Server
-
-* Install a Neo4j 5.x/4.x server and start it with the Bolt protocol enabled
-* Connect with URLs in the following 3 forms:
-** `jdbc:neo4j:http://<host>:<port>/` (e.g. `jdbc:neo4j:http://localhost/`)
-** `jdbc:neo4j:bolt://<host>:<port>/` (e.g. `jdbc:neo4j:bolt://localhost/`)
-** `jdbc:neo4j:neo4j://<host>:<port>/` (e.g. `jdbc:neo4j:bolt+routing://localhost?routing:policy=eu`)
-* You can also use additional parameters in the URL separated by an `&` character for authentication, debug mode, SSL encryption and flattening e.g. `jdbc:neo4j:bolt://localhost/?user=neo4j&password=xxxx&debug=true&nossl&flatten=[-1,100,1000]`
-
-[NOTE]
-*We've deprecated the usage of `,` as the parameter separator in favour of `&` to be compliant with the URL parameter syntax.*
-
-* Add the JDBC driver dependency or jar file to your project
-* Get a connection from `DriverManager`
-* Execute queries and transactions using the Cypher graph query language
 
-==== List of Supported Neo4j Configuration parameters
+=== Configuration
 
 |===
 |Property Name |Supported Values |Description
@@ -181,8 +133,8 @@ First clone https://github.com/neo4j-contrib/neo4j-jdbc[the repository].
 
 This project is composed by the following modules:
 
-* https://github.com/neo4j-contrib/neo4j-jdbc/tree/master/neo4j-jdbc[Neo4j JDBC] - the core module
-* https://github.com/neo4j-contrib/neo4j-jdbc/tree/master/neo4j-jdbc-bolt[Neo4j JDBC - Bolt] - module supporting the Bolt protocol
+* https://github.com/neo4j-contrib/neo4j-jdbc/tree/5.0/neo4j-jdbc[Neo4j JDBC] - the core module
+* https://github.com/neo4j-contrib/neo4j-jdbc/tree/5.0/neo4j-jdbc-bolt[Neo4j JDBC - Bolt] - module supporting the Bolt protocol
 
 .Run all unit tests & integration tests
 -------------------------------------------------
@@ -223,5 +175,5 @@ limitations under the License.
 
 === Feedback
 
-Please provide feedback and report bugs as link:./issues[GitHub issues] or join the http://neo4j.com/slack[neo4j-users Slack] and ask on the #neo4j-jdbc channel.
-You might also ask on http://stackoverflow.com/questions/tagged/neo4j+jdbc[StackOverflow], please tag your question there with `neo4j` and `jdbc`.
+Please provide feedback and report bugs as link:./issues[GitHub issues] or join https://discord.gg/neo4j[Neo4j Discord].
+You may also post questions on https://community.neo4j.com/[Neo4j Community] or https://stackoverflow.com/questions/tagged/neo4j+jdbc[StackOverflow] with the `neo4j` and `jdbc` tags.
diff --git a/docs/index.html b/docs/index.html
index 73492b20..40957e48 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -642,7 +642,7 @@ try (Connection connection = DriverManager.getConnection("jdbc:neo4j:bolt://loca
 </div>
 </li>
 <li>
-<p>You can also use additional parameters in the URL separated by an <code>&amp;</code> character for authentication, debug mode, SSL encryption and flattening e.g. <code>jdbc:neo4j:bolt://localhost/?user=neo4j&amp;password=xxxx&amp;debug=true&amp;nossl&amp;flatten=[-1,100,1000]</code></p>
+<p>You can also use additional parameters in the URL separated by an <code>&amp;</code> character for authentication, SSL encryption and flattening e.g. <code>jdbc:neo4j:bolt://localhost/?user=neo4j&amp;password=xxxx&amp;nossl&amp;flatten=[-1,100,1000]</code></p>
 </li>
 </ul>
 </div>
@@ -894,4 +894,4 @@ Last updated 2022-11-21 21:53:16 +0100
 </div>
 </div>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/neo4j-jdbc-bolt/pom.xml b/neo4j-jdbc-bolt/pom.xml
index 4ad05d0a..e7ec5ba0 100644
--- a/neo4j-jdbc-bolt/pom.xml
+++ b/neo4j-jdbc-bolt/pom.xml
@@ -10,7 +10,7 @@
     <parent>
         <groupId>org.neo4j</groupId>
         <artifactId>neo4j-jdbc-parent</artifactId>
-        <version>5.0.1</version>
+        <version>5.0.2</version>
     </parent>
 
     <!-- =========== -->
@@ -46,7 +46,7 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
-            <version>3.12.0</version>
+            <version>3.13.0</version>
         </dependency>
 
         <!-- Performance tests dependencies -->
diff --git a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jDatabaseMetaData.java b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jDatabaseMetaData.java
index 40d5ea7a..a05c15b9 100644
--- a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jDatabaseMetaData.java
+++ b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jDatabaseMetaData.java
@@ -28,9 +28,7 @@ import org.neo4j.jdbc.bolt.impl.BoltNeo4jConnectionImpl;
 import org.neo4j.jdbc.metadata.Column;
 import org.neo4j.jdbc.metadata.Table;
 import org.neo4j.jdbc.utils.BoltNeo4jUtils;
-import org.neo4j.jdbc.utils.Neo4jInvocationHandler;
 
-import java.lang.reflect.Proxy;
 import java.sql.DatabaseMetaData;
 import java.sql.SQLException;
 import java.util.ArrayList;
@@ -78,10 +76,8 @@ public class BoltNeo4jDatabaseMetaData extends Neo4jDatabaseMetaData {
 		}
 	}
 
-	public static DatabaseMetaData newInstance(boolean debug, BoltNeo4jConnectionImpl connection) {
-		DatabaseMetaData dbmd = new BoltNeo4jDatabaseMetaData(connection);
-		return (DatabaseMetaData) Proxy.newProxyInstance(BoltNeo4jDatabaseMetaData.class.getClassLoader(), new Class[] { DatabaseMetaData.class },
-				new Neo4jInvocationHandler(dbmd, debug));
+	public static DatabaseMetaData newInstance(BoltNeo4jConnectionImpl connection) {
+		return new BoltNeo4jDatabaseMetaData(connection);
 	}
 
 	private void getDatabaseVersion(Session session) {
diff --git a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jPreparedStatement.java b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jPreparedStatement.java
index 26c0e780..87d4c82d 100644
--- a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jPreparedStatement.java
+++ b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jPreparedStatement.java
@@ -21,31 +21,33 @@ package org.neo4j.jdbc.bolt;
 
 import org.neo4j.driver.Result;
 import org.neo4j.driver.summary.SummaryCounters;
-import org.neo4j.jdbc.Loggable;
 import org.neo4j.jdbc.Neo4jParameterMetaData;
 import org.neo4j.jdbc.Neo4jPreparedStatement;
 import org.neo4j.jdbc.Neo4jResultSetMetaData;
 import org.neo4j.jdbc.bolt.impl.BoltNeo4jConnectionImpl;
 import org.neo4j.jdbc.utils.BoltNeo4jUtils;
-import org.neo4j.jdbc.utils.Neo4jInvocationHandler;
 
-import java.lang.reflect.Proxy;
-import java.sql.*;
+import java.sql.Array;
+import java.sql.BatchUpdateException;
+import java.sql.Date;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Time;
+import java.sql.Timestamp;
 import java.time.Instant;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
 import java.time.temporal.Temporal;
 import java.util.Calendar;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
 
 import static java.util.Arrays.copyOf;
 import static org.neo4j.jdbc.utils.BoltNeo4jUtils.executeInTx;
-import static org.neo4j.jdbc.utils.BoltNeo4jUtils.hasResultSet;
 
-public class BoltNeo4jPreparedStatement extends Neo4jPreparedStatement implements Loggable {
+public class BoltNeo4jPreparedStatement extends Neo4jPreparedStatement {
 
 	private final ResultSetFactory resultSetFactory;
 
@@ -60,16 +62,13 @@ public class BoltNeo4jPreparedStatement extends Neo4jPreparedStatement implement
 		this.resultSetParams = rsParams;
 	}
 
-	public static PreparedStatement newInstance(boolean debug, BoltNeo4jConnectionImpl connection, String rawStatement, int... rsParams) {
-		PreparedStatement ps = new BoltNeo4jPreparedStatement(connection, rawStatement, rsParams);
-		((Neo4jPreparedStatement) ps).setDebug(debug);
-		return (PreparedStatement) Proxy.newProxyInstance(BoltNeo4jPreparedStatement.class.getClassLoader(), new Class[] { PreparedStatement.class },
-				new Neo4jInvocationHandler(ps, debug));
+	public static PreparedStatement newInstance(BoltNeo4jConnectionImpl connection, String rawStatement, int... rsParams) {
+		return new BoltNeo4jPreparedStatement(connection, rawStatement, rsParams);
 	}
 
 	@Override public ResultSet executeQuery() throws SQLException {
 		return executeInternal((result) -> {
-			this.currentResultSet = this.resultSetFactory.create(this.hasDebug(), this, result, this.resultSetParams);
+			this.currentResultSet = this.resultSetFactory.create(this, result, this.resultSetParams);
 			this.currentUpdateCount = -1;
 			return currentResultSet;
 		});
@@ -86,9 +85,9 @@ public class BoltNeo4jPreparedStatement extends Neo4jPreparedStatement implement
 
 	@Override public boolean execute() throws SQLException {
 		return executeInternal((result) -> {
-			boolean hasResultSet = hasResultSet((BoltNeo4jConnection) this.connection, this.statement);
+			boolean hasResultSet = result.hasNext();
 			if (hasResultSet) {
-				this.currentResultSet = this.resultSetFactory.create(this.hasDebug(), this, result, this.resultSetParams);
+				this.currentResultSet = this.resultSetFactory.create(this, result, this.resultSetParams);
 				this.currentUpdateCount = -1;
 			} else {
 				this.currentResultSet = null;
diff --git a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSet.java b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSet.java
index e0671102..3a1b72f6 100644
--- a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSet.java
+++ b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSet.java
@@ -45,14 +45,10 @@ import org.neo4j.driver.util.Pair;
 import org.neo4j.jdbc.Neo4jArray;
 import org.neo4j.jdbc.Neo4jConnection;
 import org.neo4j.jdbc.Neo4jResultSet;
-import org.neo4j.jdbc.bolt.impl.BoltNeo4jConnectionImpl;
 import org.neo4j.jdbc.impl.ListArray;
 import org.neo4j.jdbc.utils.JSONUtils;
-import org.neo4j.jdbc.utils.Neo4jInvocationHandler;
 import org.neo4j.jdbc.utils.ObjectConverter;
 
-import java.lang.reflect.Proxy;
-import java.sql.Connection;
 import java.sql.Date;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
@@ -68,14 +64,12 @@ import java.time.ZonedDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.Callable;
-import java.util.stream.Stream;
 
 import static org.neo4j.jdbc.utils.DataConverterUtils.convertObject;
 import static org.neo4j.jdbc.utils.DataConverterUtils.valueToDate;
@@ -151,13 +145,11 @@ public class BoltNeo4jResultSet extends Neo4jResultSet {
 				}
 			});
 		}
-		this.metaData = BoltNeo4jResultSetMetaData.newInstance(false, this.classes, this.keys);
+		this.metaData = BoltNeo4jResultSetMetaData.newInstance(this.classes, this.keys);
 	}
 
-	public static ResultSet newInstance(boolean debug, Statement statement, Result iterator, int... params) {
-		ResultSet rs = new BoltNeo4jResultSet(statement, iterator, params);
-		return (ResultSet) Proxy
-				.newProxyInstance(BoltNeo4jResultSet.class.getClassLoader(), new Class[] { ResultSet.class }, new Neo4jInvocationHandler(rs, debug));
+	public static ResultSet newInstance(Statement statement, Result iterator, int... params) {
+		return new BoltNeo4jResultSet(statement, iterator, params);
 	}
 
 	private void flattenResultSet() {
diff --git a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetMetaData.java b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetMetaData.java
index 3cd0a46a..fa63a4b1 100644
--- a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetMetaData.java
+++ b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetMetaData.java
@@ -22,9 +22,7 @@ package org.neo4j.jdbc.bolt;
 import org.neo4j.driver.internal.types.InternalTypeSystem;
 import org.neo4j.driver.types.Type;
 import org.neo4j.jdbc.Neo4jResultSetMetaData;
-import org.neo4j.jdbc.utils.Neo4jInvocationHandler;
 
-import java.lang.reflect.Proxy;
 import java.sql.Array;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
@@ -91,10 +89,8 @@ public class BoltNeo4jResultSetMetaData extends Neo4jResultSetMetaData {
 		this.columnType = types.toArray(new Type[this.keys.size() + 1]);
 	}
 
-	public static ResultSetMetaData newInstance(boolean debug, List<Type> types, List<String> keys) {
-		ResultSetMetaData rsmd = new BoltNeo4jResultSetMetaData(types, keys);
-		return (ResultSetMetaData) Proxy
-				.newProxyInstance(BoltNeo4jResultSetMetaData.class.getClassLoader(), new Class[] { ResultSetMetaData.class }, new Neo4jInvocationHandler(rsmd, debug));
+	public static ResultSetMetaData newInstance(List<Type> types, List<String> keys) {
+		return new BoltNeo4jResultSetMetaData(types, keys);
 	}
 
 	/**
diff --git a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jStatement.java b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jStatement.java
index 3130383e..64a8d929 100644
--- a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jStatement.java
+++ b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/BoltNeo4jStatement.java
@@ -24,9 +24,7 @@ import org.neo4j.driver.summary.SummaryCounters;
 import org.neo4j.jdbc.Neo4jStatement;
 import org.neo4j.jdbc.bolt.impl.BoltNeo4jConnectionImpl;
 import org.neo4j.jdbc.utils.BoltNeo4jUtils;
-import org.neo4j.jdbc.utils.Neo4jInvocationHandler;
 
-import java.lang.reflect.Proxy;
 import java.sql.BatchUpdateException;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -37,7 +35,6 @@ import java.util.function.Function;
 
 import static java.util.Arrays.copyOf;
 import static org.neo4j.jdbc.utils.BoltNeo4jUtils.executeInTx;
-import static org.neo4j.jdbc.utils.BoltNeo4jUtils.hasResultSet;
 
 /**
  * @author AgileLARUS
@@ -61,16 +58,13 @@ public class BoltNeo4jStatement extends Neo4jStatement {
 		this.batchStatements = new ArrayList<>();
 	}
 
-	public static Statement newInstance(boolean debug, BoltNeo4jConnectionImpl connection, int... rsParams) {
-		Neo4jStatement statement = new BoltNeo4jStatement(connection, BoltNeo4jResultSet::newInstance, rsParams);
-		statement.setDebug(debug);
-		return (Statement) Proxy.newProxyInstance(BoltNeo4jStatement.class.getClassLoader(), new Class[] { Statement.class },
-				new Neo4jInvocationHandler(statement, debug));
+	public static Statement newInstance(BoltNeo4jConnectionImpl connection, int... rsParams) {
+		return new BoltNeo4jStatement(connection, BoltNeo4jResultSet::newInstance, rsParams);
 	}
 
 	@Override public ResultSet executeQuery(String sql) throws SQLException {
 		return executeInternal(sql, (result) -> {
-			this.currentResultSet = this.resultSetFactory.create(this.hasDebug(), this, result, this.resultSetParams);
+			this.currentResultSet = this.resultSetFactory.create(this, result, this.resultSetParams);
 			this.currentUpdateCount = -1;
 			return this.currentResultSet;
 		});
@@ -86,19 +80,20 @@ public class BoltNeo4jStatement extends Neo4jStatement {
 	}
 
 	@Override public boolean execute(String sql) throws SQLException {
-		boolean hasResultSet = hasResultSet((BoltNeo4jConnection) connection, sql);
 		return executeInternal(sql, (result) -> {
 			if (result != null) {
+				boolean hasResultSet = result.hasNext();
 				if (hasResultSet) {
-					this.currentResultSet = BoltNeo4jResultSet.newInstance(this.hasDebug(), this, result, this.resultSetParams);
+					this.currentResultSet = BoltNeo4jResultSet.newInstance(this, result, this.resultSetParams);
 					this.currentUpdateCount = -1;
 				} else {
 					this.currentResultSet = null;
 					SummaryCounters stats = result.consume().counters();
 					this.currentUpdateCount = BoltNeo4jUtils.calculateUpdateCount(stats);
 				}
+				return hasResultSet;
 			}
-			return hasResultSet;
+			return false;
 		});
 	}
 
diff --git a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/ResultSetFactory.java b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/ResultSetFactory.java
index c49753d3..15666a20 100644
--- a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/ResultSetFactory.java
+++ b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/ResultSetFactory.java
@@ -8,5 +8,5 @@ import java.sql.Statement;
 @FunctionalInterface
 interface ResultSetFactory {
 
-    ResultSet create(boolean debug, Statement statement, Result iterator, int... params);
+    ResultSet create(Statement statement, Result iterator, int... params);
 }
diff --git a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/cache/BoltDriverCached.java b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/cache/BoltDriverCached.java
index 957758d7..d512dd43 100644
--- a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/cache/BoltDriverCached.java
+++ b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/cache/BoltDriverCached.java
@@ -1,10 +1,11 @@
 package org.neo4j.jdbc.bolt.cache;
 
+import org.neo4j.driver.AuthToken;
 import org.neo4j.driver.BaseSession;
 import org.neo4j.driver.BookmarkManager;
 import org.neo4j.driver.Driver;
+import org.neo4j.driver.ExecutableQuery;
 import org.neo4j.driver.Metrics;
-import org.neo4j.driver.QueryTask;
 import org.neo4j.driver.Session;
 import org.neo4j.driver.SessionConfig;
 import org.neo4j.driver.async.AsyncSession;
@@ -40,12 +41,12 @@ public class BoltDriverCached implements Driver {
     }
 
     @Override
-    public QueryTask queryTask(String s) {
+    public ExecutableQuery executableQuery(String ignored) {
         throw UNSUPPORTED_OPERATION_EXCEPTION;
     }
 
     @Override
-    public BookmarkManager queryTaskBookmarkManager() {
+    public BookmarkManager executableQueryBookmarkManager() {
         throw UNSUPPORTED_OPERATION_EXCEPTION;
     }
 
@@ -71,6 +72,11 @@ public class BoltDriverCached implements Driver {
         throw UNSUPPORTED_OPERATION_EXCEPTION;
     }
 
+    @Override
+    public <T extends BaseSession> T session(Class<T> aClass, SessionConfig sessionConfig, AuthToken authToken) {
+        throw UNSUPPORTED_OPERATION_EXCEPTION;
+    }
+
     @Override
     public RxSession rxSession() {
         throw UNSUPPORTED_OPERATION_EXCEPTION;
@@ -134,6 +140,16 @@ public class BoltDriverCached implements Driver {
         throw UNSUPPORTED_OPERATION_EXCEPTION;
     }
 
+    @Override
+    public boolean verifyAuthentication(AuthToken authToken) {
+        throw UNSUPPORTED_OPERATION_EXCEPTION;
+    }
+
+    @Override
+    public boolean supportsSessionAuth() {
+        throw UNSUPPORTED_OPERATION_EXCEPTION;
+    }
+
     @Override
     public boolean supportsMultiDb() {
         return internal.supportsMultiDb();
diff --git a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/impl/BoltNeo4jConnectionImpl.java b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/impl/BoltNeo4jConnectionImpl.java
index d3d0afa2..3879423f 100644
--- a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/impl/BoltNeo4jConnectionImpl.java
+++ b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/impl/BoltNeo4jConnectionImpl.java
@@ -32,14 +32,11 @@ import org.neo4j.jdbc.bolt.BoltNeo4jDatabaseMetaData;
 import org.neo4j.jdbc.bolt.BoltNeo4jPreparedStatement;
 import org.neo4j.jdbc.bolt.BoltNeo4jResultSet;
 import org.neo4j.jdbc.bolt.BoltNeo4jStatement;
-import org.neo4j.jdbc.utils.BoltNeo4jUtils;
 import org.neo4j.jdbc.boltrouting.BoltRoutingNeo4jDriver;
 import org.neo4j.jdbc.impl.Neo4jConnectionImpl;
-import org.neo4j.jdbc.utils.Neo4jInvocationHandler;
+import org.neo4j.jdbc.utils.BoltNeo4jUtils;
 import org.neo4j.jdbc.utils.TimeLimitedCodeBlock;
 
-import java.lang.reflect.Proxy;
-import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.SQLClientInfoException;
 import java.sql.SQLException;
@@ -87,10 +84,7 @@ public class BoltNeo4jConnectionImpl extends Neo4jConnectionImpl implements Bolt
 	}
 
 	public static BoltNeo4jConnection newInstance(Driver driver, Properties info, String url) {
-		BoltNeo4jConnection boltConnection = new BoltNeo4jConnectionImpl(driver, info, url);
-		return (BoltNeo4jConnection) Proxy
-				.newProxyInstance(BoltNeo4jConnectionImpl.class.getClassLoader(), new Class[] { Connection.class, BoltNeo4jConnection.class },
-						new Neo4jInvocationHandler(boltConnection, BoltNeo4jConnectionImpl.hasDebug(info)));
+		return new BoltNeo4jConnectionImpl(driver, info, url);
 	}
 
 	/**
@@ -245,7 +239,7 @@ public class BoltNeo4jConnectionImpl extends Neo4jConnectionImpl implements Bolt
 		this.checkConcurrencyParams(resultSetConcurrency);
 		this.checkHoldabilityParams(resultSetHoldability);
 		this.initTransaction();
-		return BoltNeo4jStatement.newInstance(false, this, resultSetType, resultSetConcurrency, resultSetHoldability);
+		return BoltNeo4jStatement.newInstance(this, resultSetType, resultSetConcurrency, resultSetHoldability);
 	}
 
 	/*-------------------------------*/
@@ -266,7 +260,7 @@ public class BoltNeo4jConnectionImpl extends Neo4jConnectionImpl implements Bolt
 		this.checkConcurrencyParams(resultSetConcurrency);
 		this.checkHoldabilityParams(resultSetHoldability);
 		this.initTransaction();
-		return BoltNeo4jPreparedStatement.newInstance(false, this, nativeSQL(sql), resultSetType, resultSetConcurrency, resultSetHoldability);
+		return BoltNeo4jPreparedStatement.newInstance(this, nativeSQL(sql), resultSetType, resultSetConcurrency, resultSetHoldability);
 	}
 
 	/*-------------------*/
diff --git a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/impl/BoltNeo4jDriverImpl.java b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/impl/BoltNeo4jDriverImpl.java
index b6556c36..1205c549 100644
--- a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/impl/BoltNeo4jDriverImpl.java
+++ b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/bolt/impl/BoltNeo4jDriverImpl.java
@@ -21,6 +21,8 @@ import org.neo4j.driver.AuthToken;
 import org.neo4j.driver.AuthTokens;
 import org.neo4j.driver.Config;
 import org.neo4j.driver.Driver;
+import org.neo4j.driver.Logging;
+import org.neo4j.driver.net.ServerAddress;
 import org.neo4j.jdbc.Neo4jDriver;
 
 import java.io.File;
@@ -28,11 +30,14 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.sql.Connection;
 import java.sql.SQLException;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
+import java.util.stream.Collectors;
 
 
 /**
@@ -84,12 +89,15 @@ public abstract class BoltNeo4jDriverImpl extends Neo4jDriver {
                 builder = setMaxConnectionLifetime(info, builder);
                 builder = setMaxConnectionPoolSize(info, builder);
                 builder = setMaxTransactionRetryTime(info, builder);
+                builder.withLogging(Logging.slf4j());
 
-                Config config = builder.build();
-                AuthToken authToken = getAuthToken(info);
                 Properties routingContext = getRoutingContext(boltUrl, info);
                 boltUrl = addRoutingPolicy(boltUrl, routingContext);
                 List<URI> routingUris = buildRoutingUris(boltUrl, routingContext);
+                builder = setAddressResolvers(routingUris, builder);
+
+                Config config = builder.build();
+                AuthToken authToken = getAuthToken(info);
                 driver = getDriver(routingUris, config, authToken, info);
                 driver.verifyConnectivity();
                 connection = BoltNeo4jConnectionImpl.newInstance(driver, info, url);
@@ -107,6 +115,13 @@ public abstract class BoltNeo4jDriverImpl extends Neo4jDriver {
         return connection;
     }
 
+    private Config.ConfigBuilder setAddressResolvers(List<URI> routingUris, Config.ConfigBuilder builder) {
+        if (routingUris.size() <= 1) return builder;
+        return builder.withResolver(serverAddress -> routingUris.stream()
+                .map(m -> ServerAddress.of(m.getHost(), m.getPort()))
+                .collect(Collectors.toCollection(LinkedHashSet::new)));
+    }
+
     protected abstract Driver getDriver(List<URI> routingUris, Config config, AuthToken authToken, Properties info) throws URISyntaxException;
 
     private AuthToken getAuthToken(Properties properties) {
diff --git a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/boltrouting/BoltRoutingNeo4jDriver.java b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/boltrouting/BoltRoutingNeo4jDriver.java
index c3b6d435..80472f6d 100644
--- a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/boltrouting/BoltRoutingNeo4jDriver.java
+++ b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/boltrouting/BoltRoutingNeo4jDriver.java
@@ -52,20 +52,15 @@ public class BoltRoutingNeo4jDriver extends BoltNeo4jDriverImpl {
     public static final String CUSTOM_ROUTING_POLICY_SEPARATOR = "&";
 
     private static final BoltDriverCache cache = new BoltDriverCache(params -> {
-        for (URI uri : params.getRoutingUris()) {
-            final Driver driver = GraphDatabase.driver(uri, params.getAuthToken(), params.getConfig());
-            try {
-                driver.verifyConnectivity();
-                return driver;
-            } catch (ServiceUnavailableException e) {
-                BoltNeo4jUtils.closeSafely(driver, null);
-            } catch (Throwable e) {
-                // for any other errors, we first close the driver and then rethrow the original error out.
-                BoltNeo4jUtils.closeSafely(driver, null);
-                throw e;
-            }
+        final Driver driver = GraphDatabase.driver(params.getRoutingUris().get(0), params.getAuthToken(), params.getConfig());
+        try {
+            driver.verifyConnectivity();
+            return driver;
+        } catch (Throwable e) {
+            // for any other errors, we first close the driver and then rethrow the original error out.
+            BoltNeo4jUtils.closeSafely(driver, null);
+            throw e;
         }
-        throw new ServiceUnavailableException( "Failed to discover an available server" );
     });
 
     static {
diff --git a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/utils/BoltNeo4jUtils.java b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/utils/BoltNeo4jUtils.java
index f0866bfd..43a94bb1 100644
--- a/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/utils/BoltNeo4jUtils.java
+++ b/neo4j-jdbc-bolt/src/main/java/org/neo4j/jdbc/utils/BoltNeo4jUtils.java
@@ -120,31 +120,4 @@ public class BoltNeo4jUtils {
                     ExceptionUtils.getStackTrace(e));
         }
     }
-
-    public static boolean hasResultSet(BoltNeo4jConnection connection, String cypher) {
-        if (StringUtils.isBlank(cypher)) {
-            return false;
-        }
-        try (final Session session = connection.newNeo4jSession();
-             final Transaction transaction = session.beginTransaction()) {
-            final String toUpperCase = cypher.trim().toUpperCase(Locale.ROOT);
-            final String cql;
-            if (toUpperCase.startsWith("EXPLAIN") || toUpperCase.startsWith("PROFILE")) {
-                cql = cypher;
-            } else {
-                cql = "EXPLAIN " + cypher;
-            }
-            return transaction
-                    .run(cql)
-                    .consume()
-                    .plan()
-                    .children()
-                    .stream()
-                    .map(f -> f.operatorType())
-                    .noneMatch(o -> o.toUpperCase(Locale.ROOT).contains("EMPTYRESULT"));
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
 }
diff --git a/neo4j-jdbc-examples/mybatis/pom.xml b/neo4j-jdbc-examples/mybatis/pom.xml
index 5614471a..01438afa 100644
--- a/neo4j-jdbc-examples/mybatis/pom.xml
+++ b/neo4j-jdbc-examples/mybatis/pom.xml
@@ -8,7 +8,7 @@
     <parent>
         <groupId>org.neo4j</groupId>
         <artifactId>neo4j-jdbc-examples</artifactId>
-        <version>5.0.1</version>
+        <version>5.0.2</version>
     </parent>
 
 	<!-- =========== -->
@@ -26,7 +26,13 @@
 		<dependency>
 			<groupId>org.mybatis</groupId>
 			<artifactId>mybatis</artifactId>
-			<version>3.5.13</version>
+			<version>3.5.14</version>
+		</dependency>
+
+		<dependency>
+			<groupId>ch.qos.logback</groupId>
+			<artifactId>logback-classic</artifactId>
+			<version>1.4.6</version>
 		</dependency>
     </dependencies>
 
diff --git a/neo4j-jdbc-examples/pom.xml b/neo4j-jdbc-examples/pom.xml
index 38ca8877..d8272ff8 100644
--- a/neo4j-jdbc-examples/pom.xml
+++ b/neo4j-jdbc-examples/pom.xml
@@ -9,7 +9,7 @@
     <parent>
         <groupId>org.neo4j</groupId>
         <artifactId>neo4j-jdbc-parent</artifactId>
-        <version>5.0.1</version>
+        <version>5.0.2</version>
     </parent>
 
 	<!-- =========== -->
@@ -34,7 +34,7 @@
 		<dependency>
 			<groupId>org.neo4j</groupId>
 			<artifactId>neo4j-jdbc-bolt</artifactId>
-			<version>5.0.1</version>
+			<version>5.0.2</version>
 			<scope>runtime</scope>
 		</dependency>
 		<dependency>
diff --git a/neo4j-jdbc/pom.xml b/neo4j-jdbc/pom.xml
index 199f9b8c..524ec2a7 100644
--- a/neo4j-jdbc/pom.xml
+++ b/neo4j-jdbc/pom.xml
@@ -10,7 +10,7 @@
     <parent>
         <groupId>org.neo4j</groupId>
         <artifactId>neo4j-jdbc-parent</artifactId>
-        <version>5.0.1</version>
+        <version>5.0.2</version>
     </parent>
 
     <!-- =========== -->
diff --git a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/InstanceFactory.java b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/InstanceFactory.java
deleted file mode 100644
index 07dafffd..00000000
--- a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/InstanceFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *
- * Copyright (c) 2016 LARUS Business Automation [http://www.larus-ba.it]
- * <p>
- * This file is part of the "LARUS Integration Framework for Neo4j".
- * <p>
- * The "LARUS Integration Framework for Neo4j" is licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * <p>
- * Created on 19/4/2016
- *
- */
-package org.neo4j.jdbc;
-
-/**
- * @author AgileLARUS
- * @since 3.0.0
- */
-public class InstanceFactory {
-
-	private InstanceFactory () {}
-
-	public static <T extends Loggable> T debug(T obj) {
-		return obj;
-	}
-}
diff --git a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Loggable.java b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Loggable.java
deleted file mode 100644
index adca5794..00000000
--- a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Loggable.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *
- * Copyright (c) 2016 LARUS Business Automation [http://www.larus-ba.it]
- * <p>
- * This file is part of the "LARUS Integration Framework for Neo4j".
- * <p>
- * The "LARUS Integration Framework for Neo4j" is licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * <p>
- * Created on 19/4/2016
- *
- */
-package org.neo4j.jdbc;
-
-/**
- * @author AgileLARUS
- * @since 3.0.0
- */
-public interface Loggable {
-	boolean hasDebug();
-
-	void setDebug(boolean debug);
-
-	void setDebugLevel(int level);
-
-	int getDebugLevel();
-}
diff --git a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Neo4jDatabaseMetaData.java b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Neo4jDatabaseMetaData.java
index 0b448dc2..0d09f2b9 100644
--- a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Neo4jDatabaseMetaData.java
+++ b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Neo4jDatabaseMetaData.java
@@ -252,11 +252,11 @@ public abstract class Neo4jDatabaseMetaData implements java.sql.DatabaseMetaData
 	}
 
 	@Override public ResultSet getSchemas() throws SQLException {
-		return ListNeo4jResultSet.newInstance(false, Collections.<List<Object>>emptyList(), Arrays.asList("TABLE_SCHEM","TABLE_CATALOG"));
+		return ListNeo4jResultSet.newInstance(Collections.<List<Object>>emptyList(), Arrays.asList("TABLE_SCHEM","TABLE_CATALOG"));
 	}
 
 	@Override public ResultSet getCatalogs() throws SQLException {
-		return ListNeo4jResultSet.newInstance(false, Collections.<List<Object>>emptyList(), Arrays.asList("TABLE_CAT"));
+		return ListNeo4jResultSet.newInstance(Collections.<List<Object>>emptyList(), Arrays.asList("TABLE_CAT"));
 	}
 
 	@Override public ResultSet getTableTypes() throws SQLException {
@@ -264,11 +264,11 @@ public abstract class Neo4jDatabaseMetaData implements java.sql.DatabaseMetaData
 		tableTypes.add("TABLE");
 		List<List<Object>> schemas = new ArrayList<>();
 		schemas.add(tableTypes);
-		return ListNeo4jResultSet.newInstance(false, schemas, Arrays.asList("TABLE_TYPE"));
+		return ListNeo4jResultSet.newInstance(schemas, Arrays.asList("TABLE_TYPE"));
 	}
 
 	@Override public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern) throws SQLException {
-		return ListNeo4jResultSet.newInstance(false, Collections.<List<Object>>emptyList(), Collections.<String>emptyList());
+		return ListNeo4jResultSet.newInstance(Collections.<List<Object>>emptyList(), Collections.<String>emptyList());
 	}
 
 	/**
@@ -282,7 +282,7 @@ public abstract class Neo4jDatabaseMetaData implements java.sql.DatabaseMetaData
 	 */
 	@Override public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) throws SQLException {
 		if (this.databaseLabels == null || this.databaseLabels.isEmpty()) {
-			return ListNeo4jResultSet.newInstance(false, Collections.<List<Object>>emptyList(), Collections.<String>emptyList());
+			return ListNeo4jResultSet.newInstance(Collections.<List<Object>>emptyList(), Collections.<String>emptyList());
 		}
 
 		//TODO how to manage types? nowadays there's only 'TABLE'
@@ -295,7 +295,7 @@ public abstract class Neo4jDatabaseMetaData implements java.sql.DatabaseMetaData
 				tables.add(databaseLabel.toResultSetRow());
 			}
 		}
-		return ListNeo4jResultSet.newInstance(false, tables, Table.getColumns());
+		return ListNeo4jResultSet.newInstance(tables, Table.getColumns());
 	}
 
 	/**
@@ -324,7 +324,7 @@ public abstract class Neo4jDatabaseMetaData implements java.sql.DatabaseMetaData
 	 */
 	@Override public ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) throws SQLException {
 		if (this.databaseProperties == null || this.databaseProperties.isEmpty()) {
-			return ListNeo4jResultSet.newInstance(false, Collections.<List<Object>>emptyList(), Collections.<String>emptyList());
+			return ListNeo4jResultSet.newInstance(Collections.<List<Object>>emptyList(), Collections.<String>emptyList());
 		}
 
 		String tablePattern = toPattern(tableNamePattern);
@@ -337,7 +337,7 @@ public abstract class Neo4jDatabaseMetaData implements java.sql.DatabaseMetaData
 				columns.add(databaseKey.toResultSetRow());
 			}
 		}
-		return ListNeo4jResultSet.newInstance(false, columns, Column.getColumns());
+		return ListNeo4jResultSet.newInstance(columns, Column.getColumns());
 	}
 
 	@Override public String getSearchStringEscape() throws SQLException {
@@ -729,7 +729,7 @@ public abstract class Neo4jDatabaseMetaData implements java.sql.DatabaseMetaData
 	}
 
 	private ResultSet emptyResultSet() {
-		return ListNeo4jResultSet.newInstance(false, Collections.<List<Object>>emptyList(), Collections.<String>emptyList());
+		return ListNeo4jResultSet.newInstance(Collections.<List<Object>>emptyList(), Collections.<String>emptyList());
 	}
 	@Override public ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern)
 			throws SQLException {
@@ -865,7 +865,7 @@ public abstract class Neo4jDatabaseMetaData implements java.sql.DatabaseMetaData
 						.map(row::get)
 						.collect(Collectors.toList()))
 				.collect(Collectors.toList());
-		return ListNeo4jResultSet.newInstance(false, data, keys);
+		return ListNeo4jResultSet.newInstance(data, keys);
 	}
 
 	@Override public boolean supportsResultSetType(int type) throws SQLException {
diff --git a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Neo4jResultSet.java b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Neo4jResultSet.java
index 932fe680..001cfdca 100644
--- a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Neo4jResultSet.java
+++ b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Neo4jResultSet.java
@@ -33,7 +33,7 @@ import java.util.Map;
  * @author AgileLARUS
  * @since 3.0.0
  */
-public abstract class Neo4jResultSet implements ResultSet, Loggable {
+public abstract class Neo4jResultSet implements ResultSet {
 
 	public static final int DEFAULT_TYPE        = TYPE_FORWARD_ONLY;
 	public static final int DEFAULT_CONCURRENCY = CONCUR_READ_ONLY;
@@ -47,8 +47,6 @@ public abstract class Neo4jResultSet implements ResultSet, Loggable {
 	 */
 	protected boolean isClosed         = false;
 	protected int     currentRowNumber = 0;
-	protected boolean debug;
-	protected int     debugLevel;
 	protected int     type;
 	protected int     concurrency;
 	protected int     holdability;
@@ -771,20 +769,4 @@ public abstract class Neo4jResultSet implements ResultSet, Loggable {
 	@Override public <T> T getObject(String columnLabel, Class<T> type) throws SQLException {
 		throw ExceptionBuilder.buildUnsupportedOperationException();
 	}
-
-	@Override public boolean hasDebug() {
-		return this.debug;
-	}
-
-	@Override public void setDebug(boolean debug) {
-		this.debug = debug;
-	}
-
-	@Override public void setDebugLevel(int debugLevel) {
-		this.debugLevel = debugLevel;
-	}
-
-	@Override public int getDebugLevel() {
-		return this.debugLevel;
-	}
 }
diff --git a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Neo4jStatement.java b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Neo4jStatement.java
index 8e59cd5e..e04aecab 100644
--- a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Neo4jStatement.java
+++ b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/Neo4jStatement.java
@@ -22,7 +22,6 @@ package org.neo4j.jdbc;
 import org.neo4j.jdbc.impl.ListNeo4jResultSet;
 import org.neo4j.jdbc.utils.ExceptionBuilder;
 
-import javax.xml.transform.Result;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.SQLWarning;
@@ -34,14 +33,12 @@ import java.util.List;
  * @author AgileLARUS
  * @since 3.0.0
  */
-public abstract class Neo4jStatement implements Statement, Loggable {
+public abstract class Neo4jStatement implements Statement {
 
 	protected Neo4jConnection connection;
 	protected ResultSet       currentResultSet;
 	protected int             currentUpdateCount;
 	protected List<String>    batchStatements;
-	protected boolean         debug;
-	protected int             debugLevel;
 	protected int[]           resultSetParams;
 	private   int             maxRows;
 	private   int             queryTimeout;
@@ -307,7 +304,7 @@ public abstract class Neo4jStatement implements Statement, Loggable {
 
 	@Override public ResultSet getGeneratedKeys() throws SQLException {
 		// TODO should at least return the <id>?
-		return ListNeo4jResultSet.newInstance(false, Collections.<List<Object>>emptyList(), Collections.<String>emptyList());
+		return ListNeo4jResultSet.newInstance(Collections.<List<Object>>emptyList(), Collections.<String>emptyList());
 	}
 
 	@Override public void cancel() throws SQLException {} // do nothing
@@ -327,20 +324,4 @@ public abstract class Neo4jStatement implements Statement, Loggable {
 		this.checkClosed();
 		return false;
 	}
-
-	@Override public boolean hasDebug() {
-		return this.debug;
-	}
-
-	@Override public void setDebug(boolean debug) {
-		this.debug = debug;
-	}
-
-	@Override public void setDebugLevel(int level) {
-		this.debugLevel = level;
-	}
-
-	@Override public int getDebugLevel() {
-		return this.debugLevel;
-	}
 }
diff --git a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/impl/ListNeo4jResultSet.java b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/impl/ListNeo4jResultSet.java
index 65d0308c..d203a633 100644
--- a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/impl/ListNeo4jResultSet.java
+++ b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/impl/ListNeo4jResultSet.java
@@ -22,9 +22,7 @@ package org.neo4j.jdbc.impl;
 import org.neo4j.jdbc.Neo4jArray;
 import org.neo4j.jdbc.Neo4jResultSet;
 import org.neo4j.jdbc.Neo4jResultSetMetaData;
-import org.neo4j.jdbc.utils.Neo4jInvocationHandler;
 
-import java.lang.reflect.Proxy;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.List;
@@ -47,10 +45,8 @@ public class ListNeo4jResultSet extends Neo4jResultSet {
 		this.keys = keys;
 	}
 
-	public static ResultSet newInstance(boolean debug, List<List<Object>> list, List<String> keys) {
-		ResultSet rs = new ListNeo4jResultSet(list, keys);
-		return (ResultSet) Proxy
-				.newProxyInstance(ListNeo4jResultSet.class.getClassLoader(), new Class[] { ResultSet.class }, new Neo4jInvocationHandler(rs, debug));
+	public static ResultSet newInstance(List<List<Object>> list, List<String> keys) {
+		return new ListNeo4jResultSet(list, keys);
 	}
 
 	@Override protected boolean innerNext() throws SQLException {
diff --git a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/impl/Neo4jConnectionImpl.java b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/impl/Neo4jConnectionImpl.java
index f93b1dbc..011e112a 100644
--- a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/impl/Neo4jConnectionImpl.java
+++ b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/impl/Neo4jConnectionImpl.java
@@ -76,10 +76,6 @@ public abstract class Neo4jConnectionImpl implements Neo4jConnection {
 		this.holdability = defaultHoldability;
 	}
 
-	public static boolean hasDebug(Properties properties) {
-		return "true".equalsIgnoreCase(properties.getProperty("debug", "false"));
-	}
-
 	/**
 	 * Get the connection url.
 	 *
diff --git a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/utils/Neo4jInvocationHandler.java b/neo4j-jdbc/src/main/java/org/neo4j/jdbc/utils/Neo4jInvocationHandler.java
deleted file mode 100644
index 820218df..00000000
--- a/neo4j-jdbc/src/main/java/org/neo4j/jdbc/utils/Neo4jInvocationHandler.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * Copyright (c) 2016 LARUS Business Automation [http://www.larus-ba.it]
- * <p>
- * This file is part of the "LARUS Integration Framework for Neo4j".
- * <p>
- * The "LARUS Integration Framework for Neo4j" is licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * <p>
- * Created on 22/12/17
- */
-package org.neo4j.jdbc.utils;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.logging.Logger;
-
-/**
- * @author Gianmarco Laggia @ Larus B.A.
- * @since 3.2.0
- */
-public class Neo4jInvocationHandler implements InvocationHandler {
-
-	private static final Logger LOGGER = Logger.getLogger(Neo4jInvocationHandler.class.getName());
-
-	private final Map<String, Method> methods = new HashMap<>();
-
-	private Object  target;
-	private boolean debug;
-
-	public Neo4jInvocationHandler(Object target, boolean debug) {
-		this.target = target;
-		this.debug = debug;
-
-		for (Method method : target.getClass().getMethods()) {
-			String key = getUniqueKeyFromMethod(method);
-			this.methods.put(key, method);
-		}
-	}
-
-	@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
-		try {
-			Object result = methods.get(getUniqueKeyFromMethod(method)).invoke(target, args);
-
-			if (debug) {
-				LOGGER.info("[" + target.getClass().getCanonicalName() + "] " + method.getName());
-			}
-
-			return result;
-		} catch (InvocationTargetException e) {
-			throw e.getCause();
-		}
-	}
-
-	private String getUniqueKeyFromMethod(Method method) {
-		String key = method.getName() + "_";
-		for(Class type : method.getParameterTypes()) {
-			key += type.getCanonicalName() + "_";
-		}
-		return key;
-	}
-}
diff --git a/pom.xml b/pom.xml
index 858b21c5..ab4cf622 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
 	<!-- =========== -->
 	<groupId>org.neo4j</groupId>
 	<artifactId>neo4j-jdbc-parent</artifactId>
-	<version>5.0.1</version>
+	<version>5.0.2</version>
 	<packaging>pom</packaging>
 	<name>Neo4j JDBC Driver Parent</name>
 	<description>Parent POM for Neo4j JDBC Driver and Modules</description>
@@ -76,27 +76,27 @@
 		<java.version>17</java.version>
 
 		<!-- Deps version -->
-		<mockito.version>5.3.1</mockito.version>
+		<mockito.version>5.6.0</mockito.version>
 		<junit.version>4.13.2</junit.version>
-		<jmh.version>1.36</jmh.version>
-		<neo4j.java.driver.version>5.6.0</neo4j.java.driver.version>
+		<jmh.version>1.37</jmh.version>
+		<neo4j.java.driver.version>5.12.0</neo4j.java.driver.version>
 		<neo4j.version>4.4.10</neo4j.version>
 		<httpclient.version>4.5.13</httpclient.version>
-		<jackson.version>2.15.0</jackson.version>
-		<testcontainers.version>1.18.1</testcontainers.version>
+		<jackson.version>2.15.3</jackson.version>
+		<testcontainers.version>1.19.1</testcontainers.version>
 
 		<!-- Plugin version -->
 		<maven.plugin.compiler>3.11.0</maven.plugin.compiler>
 		<maven.plugin.resources>2.7</maven.plugin.resources>
-		<maven.plugin.shade>3.4.1</maven.plugin.shade>
-		<maven.plugin.javadoc>3.5.0</maven.plugin.javadoc>
+		<maven.plugin.shade>3.5.1</maven.plugin.shade>
+		<maven.plugin.javadoc>3.6.0</maven.plugin.javadoc>
 		<maven.plugin.source>3.3.0</maven.plugin.source>
 		<maven.plugin.gpg>1.4</maven.plugin.gpg>
-		<maven.plugin.surefire>3.1.0</maven.plugin.surefire>
+		<maven.plugin.surefire>3.2.1</maven.plugin.surefire>
 
 		<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
 
-		<resilience4j.version>2.0.2</resilience4j.version>
+		<resilience4j.version>2.1.0</resilience4j.version>
 	</properties>
 
 	<!-- ============================= -->
@@ -370,7 +370,7 @@
 					<plugin>
 						<groupId>org.jacoco</groupId>
 						<artifactId>jacoco-maven-plugin</artifactId>
-						<version>0.8.10</version>
+						<version>0.8.11</version>
 						<configuration>
 							<append>true</append>
 							<includes>


Test patch:
diff --git a/neo4j-jdbc-bolt/src/test/java/org/neo4j/TestcontainersCausalCluster.java b/neo4j-jdbc-bolt/src/test/java/org/neo4j/TestcontainersCausalCluster.java
index a664a428..0f56eab6 100644
--- a/neo4j-jdbc-bolt/src/test/java/org/neo4j/TestcontainersCausalCluster.java
+++ b/neo4j-jdbc-bolt/src/test/java/org/neo4j/TestcontainersCausalCluster.java
@@ -165,7 +165,7 @@ public class TestcontainersCausalCluster {
 
     public URI getURI() {
         return this.sidecars.stream().findAny()
-                .map(instance -> String.format("bolt+routing://%s:%d", instance.getContainerIpAddress(),
+                .map(instance -> String.format("neo4j://%s:%d", instance.getContainerIpAddress(),
                         instance.getMappedPort(DEFAULT_BOLT_PORT)))
                 .map(uri -> {
                     try {
@@ -179,7 +179,7 @@ public class TestcontainersCausalCluster {
 
     public URI getAllMembersURI() {
         try {
-            return new URI("bolt+routing://" + this.sidecars.stream()
+            return new URI("neo4j://" + this.sidecars.stream()
                     .map(instance -> String.format("%s:%d", instance.getContainerIpAddress(),
                             instance.getMappedPort(DEFAULT_BOLT_PORT)))
                     .collect(Collectors.joining(",")));
diff --git a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jConnectionTest.java b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jConnectionTest.java
index 28bd7fb5..4d3f9153 100644
--- a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jConnectionTest.java
+++ b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jConnectionTest.java
@@ -501,9 +501,19 @@ public class BoltNeo4jConnectionTest {
 	@Ignore @Test public void setAutoCommitShouldThrowExceptionOnDatabaseAccessErrorOccurred() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		NetworkSession networkSession = new NetworkSession(null, null,
-				DatabaseNameUtil.database(""), AccessMode.READ, Set.of(), "", FetchSizeUtil.UNLIMITED_FETCH_SIZE, DevNullLogging.DEV_NULL_LOGGING,
-				new Neo4jBookmarkManager(Set.of(), (a) -> {}, () -> Set.of()));
+		NetworkSession networkSession = new NetworkSession(
+				null,
+				null,
+				DatabaseNameUtil.database(""),
+				AccessMode.READ,
+				Set.of(),
+				"",
+				FetchSizeUtil.UNLIMITED_FETCH_SIZE,
+				DevNullLogging.DEV_NULL_LOGGING,
+				new Neo4jBookmarkManager(Set.of(), (a) -> {}, Set::of),
+				NotificationConfig.defaultConfig(),
+				null
+		);
 
 		Session session = new InternalSession(networkSession);
 		org.neo4j.driver.Driver driver = mock(org.neo4j.driver.Driver.class);
diff --git a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jPreparedStatementTest.java b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jPreparedStatementTest.java
index a1a73a9f..84d076d0 100644
--- a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jPreparedStatementTest.java
+++ b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jPreparedStatementTest.java
@@ -98,7 +98,7 @@ public class BoltNeo4jPreparedStatementTest {
 
 	@Before public void interceptBoltResultSetConstructor() throws SQLException {
 		expectedResultSet = mock(BoltNeo4jResultSet.class);
-		resultSetFactory = (debug, statement, iterator, params) -> expectedResultSet;
+		resultSetFactory = (statement, iterator, params) -> expectedResultSet;
 		preparedStatementOneParam = new BoltNeo4jPreparedStatement(mockOpenConnection(), resultSetFactory, "RETURN $1");
 		preparedStatementTwoParams = new BoltNeo4jPreparedStatement(mockOpenConnection(), resultSetFactory, "RETURN $1+$2");
 	}
@@ -119,7 +119,7 @@ public class BoltNeo4jPreparedStatementTest {
 	}
 
 	@Test public void closeShouldNotCallCloseOnAnyResultSet() throws Exception {
-		PreparedStatement prStatement = BoltNeo4jPreparedStatement.newInstance(false, mockOpenConnectionWithResult(null), "");
+		PreparedStatement prStatement = BoltNeo4jPreparedStatement.newInstance(mockOpenConnectionWithResult(null), "");
 
 		prStatement.close();
 
@@ -565,7 +565,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void getResultSetConcurrencyShouldThrowExceptionWhenCalledOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockConnectionClosed(), "");
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockConnectionClosed(), "");
 		statement.close();
 		statement.getResultSetConcurrency();
 	}
@@ -576,7 +576,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void getResultSetHoldabilityShouldThrowExceptionWhenCalledOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockConnectionClosed(), "");
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockConnectionClosed(), "");
 		statement.close();
 		statement.getResultSetHoldability();
 	}
@@ -587,7 +587,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void getResultSetTypeShouldThrowExceptionWhenCalledOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockConnectionClosed(), "");
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockConnectionClosed(), "");
 		statement.close();
 		statement.getResultSetType();
 	}
@@ -598,15 +598,14 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void executeQueryShouldThrowExceptionWhenClosedConnection() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockConnectionClosed(), "", 0, 0, 0);
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockConnectionClosed(), "", 0, 0, 0);
 		statement.executeQuery();
 	}
 
 	@Test public void executeQueryShouldReturnCorrectResultSetStructureConnectionNotAutocommit() throws Exception {
 		int[] parameters = {ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT};
 		AtomicBoolean called = new AtomicBoolean(false);
-		PreparedStatement statement = new BoltNeo4jPreparedStatement(mockOpenConnectionWithResult(null), (debug, stmt, iterator, params) -> {
-			assertFalse(debug);
+		PreparedStatement statement = new BoltNeo4jPreparedStatement(mockOpenConnectionWithResult(null), (stmt, iterator, params) -> {
 			assertNotNull(stmt);
 			assertNull(iterator);
 			assertArrayEquals(parameters, params);
@@ -621,7 +620,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void executeQueryShouldThrowExceptionOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockOpenConnection(), StatementData.STATEMENT_MATCH_ALL);
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockOpenConnection(), StatementData.STATEMENT_MATCH_ALL);
 		statement.close();
 
 		statement.executeQuery();
@@ -641,7 +640,7 @@ public class BoltNeo4jPreparedStatementTest {
 		when(mockSummaryCounters.nodesDeleted()).thenReturn(0);
 
 		PreparedStatement statement = BoltNeo4jPreparedStatement
-				.newInstance(false, mockOpenConnectionWithResult(mockResult), StatementData.STATEMENT_CREATE_TWO_PROPERTIES_PARAMETRIC,
+				.newInstance(mockOpenConnectionWithResult(mockResult), StatementData.STATEMENT_CREATE_TWO_PROPERTIES_PARAMETRIC,
 						ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
 		statement.setString(1, "test");
 		statement.setString(2, "test2");
@@ -651,7 +650,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void executeUpdateShouldThrowExceptionOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockOpenConnection(), StatementData.STATEMENT_MATCH_ALL);
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockOpenConnection(), StatementData.STATEMENT_MATCH_ALL);
 		statement.close();
 
 		statement.executeUpdate();
@@ -660,7 +659,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void executeUpdateShouldThrowExceptionOnClosedConnection() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockConnectionClosed(), "", 0, 0, 0);
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockConnectionClosed(), "", 0, 0, 0);
 		statement.executeUpdate();
 	}
 
@@ -685,7 +684,7 @@ public class BoltNeo4jPreparedStatementTest {
 		when(mockSummaryCounters.nodesDeleted()).thenReturn(0);
 
 		PreparedStatement statement = BoltNeo4jPreparedStatement
-				.newInstance(false, mockOpenConnectionWithResult(mockResult), StatementData.STATEMENT_CREATE_TWO_PROPERTIES_PARAMETRIC,
+				.newInstance(mockOpenConnectionWithResult(mockResult), StatementData.STATEMENT_CREATE_TWO_PROPERTIES_PARAMETRIC,
 						ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
 		statement.setString(1, "test");
 		statement.setString(2, "test2");
@@ -695,7 +694,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void executeShouldThrowExceptionOnQueryOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockOpenConnection(), StatementData.STATEMENT_MATCH_ALL);
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockOpenConnection(), StatementData.STATEMENT_MATCH_ALL);
 		statement.close();
 
 		statement.execute();
@@ -704,7 +703,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void executeShouldThrowExceptionOnUpdateOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockOpenConnection(), StatementData.STATEMENT_CREATE);
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockOpenConnection(), StatementData.STATEMENT_CREATE);
 		statement.close();
 
 		statement.execute();
@@ -713,7 +712,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void executeShouldThrowExceptionOnQueryOnClosedConnection() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockConnectionClosed(), "", 0, 0, 0);
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockConnectionClosed(), "", 0, 0, 0);
 		when(statement.executeQuery()).thenCallRealMethod();
 		statement.execute();
 	}
@@ -721,7 +720,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void executeShouldThrowExceptionOnUpdateOnClosedConnection() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockConnectionClosed(), "", 0, 0, 0);
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockConnectionClosed(), "", 0, 0, 0);
 		when(statement.executeUpdate()).thenCallRealMethod();
 		statement.execute();
 	}
@@ -738,7 +737,7 @@ public class BoltNeo4jPreparedStatementTest {
 	}
 
 	@Test public void getUpdateCountShouldReturnMinusOne() throws SQLException {
-		ResultSetFactory nullRsFactory = (debug, stmt, iterator, params) -> null;
+		ResultSetFactory nullRsFactory = (stmt, iterator, params) -> null;
 		BoltNeo4jPreparedStatement statement = new BoltNeo4jPreparedStatement(mockOpenConnection(), nullRsFactory, "RETURN 42");
 
 		assertEquals(-1, statement.getUpdateCount());
@@ -747,7 +746,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void getUpdateCountShouldThrowExceptionOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockOpenConnection(), StatementData.STATEMENT_MATCH_ALL);
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockOpenConnection(), StatementData.STATEMENT_MATCH_ALL);
 		statement.close();
 
 		statement.getUpdateCount();
@@ -775,7 +774,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void getResultSetShouldThrowExceptionOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(false, mockOpenConnection(), StatementData.STATEMENT_MATCH_ALL);
+		PreparedStatement statement = BoltNeo4jPreparedStatement.newInstance(mockOpenConnection(), StatementData.STATEMENT_MATCH_ALL);
 		statement.close();
 
 		statement.getResultSet();
@@ -816,7 +815,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void addBatchShouldThrowExceptionIfClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(false, Mocker.mockOpenConnection(), "?");
+		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(Mocker.mockOpenConnection(), "?");
 		stmt.setInt(1, 1);
 		stmt.close();
 		stmt.addBatch();
@@ -838,7 +837,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void clearBatchShouldThrowExceptionIfClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(false, Mocker.mockOpenConnection(), "?");
+		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(Mocker.mockOpenConnection(), "?");
 		stmt.close();
 		stmt.clearBatch();
 	}
@@ -863,7 +862,7 @@ public class BoltNeo4jPreparedStatementTest {
         when(summaryCounters.nodesCreated()).thenReturn(1);
         when(summaryCounters.nodesDeleted()).thenReturn(0);
 
-		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(false, connection, "MATCH n WHERE id(n) = ? SET n.property=1");
+		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(connection, "MATCH n WHERE id(n) = ? SET n.property=1");
 		stmt.setInt(1, 1);
 		stmt.addBatch();
 		stmt.setInt(1, 2);
@@ -873,7 +872,7 @@ public class BoltNeo4jPreparedStatementTest {
 	}
 
 	@Test public void executeBatchShouldThrowExceptionOnError() throws SQLException {
-		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(false, Mocker.mockOpenConnection(), "?");
+		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(Mocker.mockOpenConnection(), "?");
 		stmt.setInt(1, 1);
 		stmt.addBatch();
 		stmt.setInt(1, 2);
@@ -899,7 +898,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void executeBatchShouldThrowExceptionOnClosed() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(false, Mocker.mockConnectionClosed(), "?");
+		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(Mocker.mockConnectionClosed(), "?");
 		stmt.setInt(1, 1);
 		stmt.addBatch();
 		stmt.setInt(1, 2);
@@ -914,7 +913,7 @@ public class BoltNeo4jPreparedStatementTest {
 	/*------------------------------*/
 
 	@Test public void getConnectionShouldWork() throws SQLException {
-		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(false, Mocker.mockOpenConnection(), "?");
+		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(Mocker.mockOpenConnection(), "?");
 
 		assertNotNull(stmt.getConnection());
 		assertEquals(Mocker.mockOpenConnection().getClass(), stmt.getConnection().getClass());
@@ -923,7 +922,7 @@ public class BoltNeo4jPreparedStatementTest {
 	@Test public void getConnectionShouldThrowExceptionOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(false, Mocker.mockConnectionClosed(), "?");
+		PreparedStatement stmt = BoltNeo4jPreparedStatement.newInstance(Mocker.mockConnectionClosed(), "?");
 		stmt.close();
 
 		stmt.getConnection();
diff --git a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetGettersTest.java b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetGettersTest.java
index f292bc3b..08c61fab 100644
--- a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetGettersTest.java
+++ b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetGettersTest.java
@@ -59,7 +59,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void findColumnShouldReturnCorrectIndex() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		assertEquals(1, resultSet.findColumn("columnA"));
 		assertEquals(2, resultSet.findColumn("columnB"));
@@ -68,7 +68,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void findColumnShouldReturnCorrectIndexOnDifferentColumns() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_DIFF, ResultSetData.RECORD_LIST_MORE_ELEMENTS_DIFF);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		assertEquals(1, resultSet.findColumn("columnA"));
 		assertEquals(2, resultSet.findColumn("columnB"));
@@ -80,7 +80,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.findColumn("columnZ");
@@ -90,7 +90,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.findColumn("columnA");
@@ -103,7 +103,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getStringByLabelShouldReturnString() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals("value1", resultSet.getString("columnString"));
@@ -117,7 +117,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getString("columnZ");
@@ -127,7 +127,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getString("columnString");
@@ -136,7 +136,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getStringByIndexShouldReturnString() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals("value1", resultSet.getString(2));
@@ -150,7 +150,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getString(99);
@@ -161,7 +161,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getString(0);
@@ -171,7 +171,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getString(2);
@@ -184,7 +184,7 @@ public class BoltNeo4jResultSetGettersTest {
 		when(c.getFlattening()).thenReturn(1);
 		Neo4jStatement stmt = mock(Neo4jStatement.class);
 		when(stmt.getConnection()).thenReturn(c);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, stmt, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(stmt, statementResult);
 
 		resultSet.next();
 		assertEquals("value1", resultSet.getString("node.property1"));
@@ -197,7 +197,7 @@ public class BoltNeo4jResultSetGettersTest {
 		when(c.getFlattening()).thenReturn(1);
 		Neo4jStatement stmt = mock(Neo4jStatement.class);
 		when(stmt.getConnection()).thenReturn(c);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, stmt, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(stmt, statementResult);
 
 		resultSet.next();
 		assertEquals("value1", resultSet.getString(5));
@@ -206,7 +206,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getStringShouldReturnStringOnNode() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_NODES, ResultSetData.RECORD_LIST_MORE_ELEMENTS_NODES);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals("{\"_id\":1, \"_labels\":[\"label1\", \"label2\"], \"property2\":1, \"property1\":\"value1\"}", resultSet.getString("node"));
@@ -218,7 +218,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getObjectShouldReturnStringOnNode() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_NODES, ResultSetData.RECORD_LIST_MORE_ELEMENTS_NODES);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals("{\"_id\":1, \"_labels\":[\"label1\", \"label2\"], \"property2\":1, \"property1\":\"value1\"}", resultSet.getString("node"));
@@ -230,7 +230,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getStringShouldReturnStringOnRelationship() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_RELATIONS, ResultSetData.RECORD_LIST_MORE_ELEMENTS_RELATIONS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals("{\"_id\":1, \"_type\":\"type1\", \"_startId\":1, \"_endId\":2, \"property2\":100, \"property1\":\"value\"}", resultSet.getString("relation"));
@@ -242,7 +242,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getStringShouldReturnStringOnPath() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_PATHS, ResultSetData.RECORD_LIST_MORE_ELEMENTS_PATHS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(
@@ -262,7 +262,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getIntByLabelShouldReturnInt() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(1, resultSet.getInt("columnInt"));
@@ -276,7 +276,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getInt("columnZ");
@@ -286,7 +286,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getInt("columnInt");
@@ -295,7 +295,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getIntByIndexShouldReturnInt() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(1, resultSet.getInt(1));
@@ -309,7 +309,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getInt(99);
@@ -320,7 +320,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getInt(0);
@@ -330,7 +330,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getInt(1);
@@ -343,7 +343,7 @@ public class BoltNeo4jResultSetGettersTest {
 		when(c.getFlattening()).thenReturn(1);
 		Neo4jStatement stmt = mock(Neo4jStatement.class);
 		when(stmt.getConnection()).thenReturn(c);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, stmt, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(stmt, statementResult);
 
 		resultSet.next();
 		assertEquals(1, resultSet.getInt("node.id"));
@@ -357,7 +357,7 @@ public class BoltNeo4jResultSetGettersTest {
 		when(c.getFlattening()).thenReturn(1);
 		Neo4jStatement stmt = mock(Neo4jStatement.class);
 		when(stmt.getConnection()).thenReturn(c);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, stmt, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(stmt, statementResult);
 
 		resultSet.next();
 		assertEquals(1, resultSet.getInt(2));
@@ -367,7 +367,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getIntShouldReturnZeroForNull() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_NULL_ELEMENT, ResultSetData.RECORD_LIST_ONE_NULL_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(0, resultSet.getInt("columnA"));
@@ -381,7 +381,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getFloatByLabelShouldReturnFloat() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(0.1F, resultSet.getFloat("columnFloat"), 0);
@@ -395,7 +395,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getFloat("columnZ");
@@ -405,7 +405,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getFloat("columnFloat");
@@ -414,7 +414,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getFloatByIndexShouldReturnFloat() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(0.1F, resultSet.getFloat(3), 0);
@@ -428,7 +428,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getFloat(99);
@@ -439,7 +439,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getFloat(0);
@@ -449,7 +449,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getFloat(3);
@@ -458,7 +458,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getFloatShouldReturnZeroForNull() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_NULL_ELEMENT, ResultSetData.RECORD_LIST_ONE_NULL_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(0F, resultSet.getFloat("columnA"), 0);
@@ -472,7 +472,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getShortByLabelShouldReturnShort() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(1, resultSet.getShort("columnShort"));
@@ -486,7 +486,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getShort("columnZ");
@@ -496,7 +496,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getShort("columnShort");
@@ -505,7 +505,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getShortByIndexShouldReturnShort() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(1, resultSet.getShort(1));
@@ -519,7 +519,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getShort(99);
@@ -530,7 +530,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getShort(0);
@@ -540,7 +540,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getShort(3);
@@ -549,7 +549,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getShortShouldReturnZeroForNull() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_NULL_ELEMENT, ResultSetData.RECORD_LIST_ONE_NULL_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(0, resultSet.getShort("columnA"));
@@ -563,7 +563,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getDoubleByLabelShouldReturnDouble() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(02.29D, resultSet.getDouble("columnDouble"), 0);
@@ -577,7 +577,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getDouble("columnZ");
@@ -587,7 +587,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getDouble("columnDouble");
@@ -596,7 +596,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getDoubleByIndexShouldReturnDouble() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(02.29D, resultSet.getDouble(5), 0);
@@ -610,7 +610,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 		resultSet.next();
 		resultSet.getDouble(99);
 	}
@@ -620,7 +620,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getDouble(0);
@@ -630,7 +630,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getDouble(5);
@@ -639,7 +639,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getDoubleShouldReturnZeroForNull() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_NULL_ELEMENT, ResultSetData.RECORD_LIST_ONE_NULL_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(0D, resultSet.getDouble("columnA"), 0);
@@ -653,7 +653,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getObjectByLabelShouldReturnObject() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals("value1", resultSet.getObject("columnString").toString());
@@ -670,7 +670,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getObject("not present");
@@ -681,7 +681,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.close();
 		resultSet.getObject("not present");
@@ -690,7 +690,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getObjectByIndexShouldReturnObject() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals("value1", resultSet.getObject(2).toString());
@@ -706,7 +706,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getObject(99);
@@ -717,7 +717,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getObject(0);
@@ -728,7 +728,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.close();
 		resultSet.getObject(1);
@@ -737,7 +737,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getObjectShouldReturnCorrectNodeAsMap() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_NODES, ResultSetData.RECORD_LIST_MORE_ELEMENTS_NODES);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 
@@ -763,7 +763,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getObjectShouldReturnCorrectRelationsAsMap() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_RELATIONS, ResultSetData.RECORD_LIST_MORE_ELEMENTS_RELATIONS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(new HashMap<String, Object>() {
@@ -792,7 +792,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getObjectShouldReturnCorrectPathAsMap() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_PATHS, ResultSetData.RECORD_LIST_MORE_ELEMENTS_PATHS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		assertTrue(resultSet.next());
 		assertEquals(new ArrayList<Object>() {
@@ -872,7 +872,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getObjectByColumnLabelAndCastToClass() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.next();
@@ -909,7 +909,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result statementResult = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_ELEMENT, ResultSetData.RECORD_LIST_ONE_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getObject("columnA", (Class<?>) null);
@@ -920,7 +920,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getObject("not present", (Class<?>) null);
@@ -931,7 +931,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.close();
 		resultSet.getObject("not present", (Class<?>) null);
@@ -940,7 +940,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getObjectByColumnIndexAndCastToClass() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertNotNull(resultSet.getObject(1, Double.class));
@@ -951,7 +951,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result statementResult = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_ELEMENT, ResultSetData.RECORD_LIST_ONE_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getObject(1, (Class<?>) null);
@@ -962,7 +962,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getObject(0, (Class<?>) null);
@@ -973,7 +973,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getObject(99, Double.class);
@@ -984,7 +984,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.close();
 		resultSet.getObject(1, (Class<?>) null);
@@ -995,7 +995,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getObject("not present", (Map<String, Class<?>>) null);
@@ -1006,7 +1006,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.close();
 		resultSet.getObject("not present", (Map<String, Class<?>>) null);
@@ -1017,7 +1017,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		Map<String, Class<?>> map = new HashMap<>();
 
@@ -1030,7 +1030,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		Map<String, Class<?>> map = new HashMap<>();
 
@@ -1041,7 +1041,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getObjectByColumnLabelAndMap() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false,null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.next();
@@ -1061,7 +1061,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getBooleanByLabelShouldReturnBoolean() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertTrue(resultSet.getBoolean("columnBoolean"));
@@ -1079,7 +1079,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getBoolean("columnZ");
@@ -1089,7 +1089,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getBoolean("columnBoolean");
@@ -1098,7 +1098,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getBooleanByIndexShouldReturnBoolean() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertTrue(resultSet.getBoolean(6));
@@ -1112,7 +1112,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getBoolean(99);
@@ -1123,7 +1123,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getBoolean(0);
@@ -1133,7 +1133,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getBoolean(6);
@@ -1142,7 +1142,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getBooleanShouldReturnFalseForNull() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_NULL_ELEMENT, ResultSetData.RECORD_LIST_ONE_NULL_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(false, resultSet.getBoolean("columnA"));
@@ -1156,7 +1156,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getLongByLabelShouldReturnLong() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(2L, resultSet.getLong("columnLong"));
@@ -1170,7 +1170,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getLong("columnZ");
@@ -1180,7 +1180,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getLong("columnLong");
@@ -1189,7 +1189,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getLongByIndexShouldReturnLong() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(2L, resultSet.getLong(7));
@@ -1203,7 +1203,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getLong(99);
@@ -1214,7 +1214,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getLong(0);
@@ -1224,7 +1224,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getLong(7);
@@ -1233,7 +1233,7 @@ public class BoltNeo4jResultSetGettersTest {
 	@Test public void getLongShouldReturnZeroForNull() throws SQLException {
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_NULL_ELEMENT, ResultSetData.RECORD_LIST_ONE_NULL_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals(0, resultSet.getLong("columnA"));
@@ -1248,14 +1248,14 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getHoldability();
 	}
 
 	@Test public void getHoldabilityShouldReturnCorrectHoldability() throws SQLException {
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, null, Neo4jResultSet.TYPE_FORWARD_ONLY, Neo4jResultSet.CONCUR_READ_ONLY, Neo4jResultSet.CLOSE_CURSORS_AT_COMMIT);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, null, Neo4jResultSet.TYPE_FORWARD_ONLY, Neo4jResultSet.CONCUR_READ_ONLY, Neo4jResultSet.CLOSE_CURSORS_AT_COMMIT);
 		assertEquals(Neo4jResultSet.CLOSE_CURSORS_AT_COMMIT, resultSet.getHoldability());
 	}
 
@@ -1267,14 +1267,14 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getType();
 	}
 
 	@Test public void getTypeShouldReturnCorrectType() throws SQLException {
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, null, Neo4jResultSet.TYPE_FORWARD_ONLY, Neo4jResultSet.CONCUR_READ_ONLY, Neo4jResultSet.CLOSE_CURSORS_AT_COMMIT);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, null, Neo4jResultSet.TYPE_FORWARD_ONLY, Neo4jResultSet.CONCUR_READ_ONLY, Neo4jResultSet.CLOSE_CURSORS_AT_COMMIT);
 		assertEquals(Neo4jResultSet.TYPE_FORWARD_ONLY, resultSet.getType());
 	}
 
@@ -1286,14 +1286,14 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getConcurrency();
 	}
 
 	@Test public void getConcurrencyShouldReturnCorrectConcurrency() throws SQLException {
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, null, Neo4jResultSet.TYPE_FORWARD_ONLY, Neo4jResultSet.CONCUR_READ_ONLY, Neo4jResultSet.CLOSE_CURSORS_AT_COMMIT);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, null, Neo4jResultSet.TYPE_FORWARD_ONLY, Neo4jResultSet.CONCUR_READ_ONLY, Neo4jResultSet.CLOSE_CURSORS_AT_COMMIT);
 		assertEquals(Neo4jResultSet.CONCUR_READ_ONLY, resultSet.getConcurrency());
 	}
 
@@ -1302,7 +1302,7 @@ public class BoltNeo4jResultSetGettersTest {
 	/*------------------------------*/
 	@Test public void getArrayByLabelShouldReturnArray() throws SQLException {
 		Result statementResult = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_WITH_ARRAY, ResultSetData.RECORD_LIST_WITH_ARRAY);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals("a", ((String[]) resultSet.getArray("array").getArray())[0]);
@@ -1329,7 +1329,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result statementResult = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_WITH_ARRAY, ResultSetData.RECORD_LIST_WITH_ARRAY);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getLong("columnZ");
@@ -1339,7 +1339,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_WITH_ARRAY, ResultSetData.RECORD_LIST_WITH_ARRAY);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getLong("array");
@@ -1347,7 +1347,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 	@Test public void getArrayByIndexShouldReturnArray() throws SQLException {
 		Result statementResult = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_WITH_ARRAY, ResultSetData.RECORD_LIST_WITH_ARRAY);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		assertEquals("a", ((String[]) resultSet.getArray(1).getArray())[0]);
@@ -1374,7 +1374,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result statementResult = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_WITH_ARRAY, ResultSetData.RECORD_LIST_WITH_ARRAY);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getLong(99);
@@ -1384,7 +1384,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result statementResult = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_WITH_ARRAY, ResultSetData.RECORD_LIST_WITH_ARRAY);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.next();
 		resultSet.getLong(0);
@@ -1394,7 +1394,7 @@ public class BoltNeo4jResultSetGettersTest {
 		expectedEx.expect(SQLException.class);
 
 		Result spyCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_WITH_ARRAY, ResultSetData.RECORD_LIST_WITH_ARRAY);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, spyCursor);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, spyCursor);
 
 		resultSet.close();
 		resultSet.getLong(7);
@@ -1407,7 +1407,7 @@ public class BoltNeo4jResultSetGettersTest {
 		when(c.getFlattening()).thenReturn(1);
 		Neo4jStatement stmt = mock(Neo4jStatement.class);
 		when(stmt.getConnection()).thenReturn(c);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, stmt, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(stmt, statementResult);
 
 		resultSet.next();
 		assertArrayEquals(new String[] { "label1", "label2" }, (String[]) resultSet.getArray("node.labels").getArray());
@@ -1420,7 +1420,7 @@ public class BoltNeo4jResultSetGettersTest {
 		when(c.getFlattening()).thenReturn(1);
 		Neo4jStatement stmt = mock(Neo4jStatement.class);
 		when(stmt.getConnection()).thenReturn(c);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, stmt, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(stmt, statementResult);
 
 		resultSet.next();
 		assertArrayEquals(new String[] { "label1", "label2" }, (String[]) resultSet.getArray(3).getArray());
@@ -1434,7 +1434,7 @@ public class BoltNeo4jResultSetGettersTest {
 
 		Result statementResult = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_MIXED, ResultSetData.RECORD_LIST_MORE_ELEMENTS_MIXED);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, statementResult);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, statementResult);
 
 		resultSet.close();
 		resultSet.wasNull();
diff --git a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetIterationTest.java b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetIterationTest.java
index 251b0250..411dfffd 100644
--- a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetIterationTest.java
+++ b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetIterationTest.java
@@ -45,14 +45,14 @@ public class BoltNeo4jResultSetIterationTest {
 	/*------------------------------*/
 	@Test public void nextShouldReturnFalseEmpty() throws SQLException {
 		Result Result = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_EMPTY, ResultSetData.RECORD_LIST_EMPTY);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertFalse(resultSet.next());
 	}
 
 	@Test public void nextShouldReturnTrue() throws SQLException {
 		Result Result = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_ELEMENT, ResultSetData.RECORD_LIST_ONE_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.next());
 	}
@@ -60,7 +60,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Test public void nextShouldReturnTrueMoreElements() throws SQLException {
 		Result Result = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.next());
 		Assert.assertTrue(resultSet.next());
@@ -69,7 +69,7 @@ public class BoltNeo4jResultSetIterationTest {
 
 	@Test public void nextShouldReturnFalseAfterLast() throws SQLException {
 		Result Result = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_ELEMENT, ResultSetData.RECORD_LIST_ONE_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.next());
 
@@ -79,7 +79,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Test public void nextShouldReturnFalseAfterLastMoreElements() throws SQLException {
 		Result Result = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.next());
 		Assert.assertTrue(resultSet.next());
@@ -92,7 +92,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Test public void nextShouldReturnTrueAndPointNextNode() throws SQLException {
 		Result Result = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.next());
 		Assert.assertEquals("valueA1", resultSet.getString("columnA"));
@@ -106,7 +106,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Test public void nextShouldThrowExceptionEmpty() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, null);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, null);
 
 		resultSet.next();
 	}
@@ -116,7 +116,7 @@ public class BoltNeo4jResultSetIterationTest {
 	/*------------------------------*/
 	@Ignore @Test public void previousShouldReturnFalseEmpty() throws SQLException {
 		Result Result = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_EMPTY, ResultSetData.RECORD_LIST_EMPTY);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertFalse(resultSet.previous());
 	}
@@ -124,7 +124,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Ignore @Test public void previousShouldReturnTrue() throws SQLException {
 		Result Result = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.next());
 		Assert.assertTrue(resultSet.next());
@@ -135,7 +135,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Ignore @Test public void previousShouldReturnFalseBeforeFirst() throws SQLException {
 		Result Result = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.next());
 		Assert.assertTrue(resultSet.next());
@@ -148,7 +148,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Ignore @Test public void previousShouldReturnTrueAndPointPreviousNode() throws SQLException {
 		Result Result = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.last());
 
@@ -164,7 +164,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Ignore @Test public void previousShouldThrowExceptionEmpty() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, null);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, null);
 
 		resultSet.previous();
 	}
@@ -174,21 +174,21 @@ public class BoltNeo4jResultSetIterationTest {
 	/*------------------------------*/
 	@Ignore @Test public void firstShouldReturnFalseEmpty() throws SQLException {
 		Result Result = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_EMPTY, ResultSetData.RECORD_LIST_EMPTY);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertFalse(resultSet.first());
 	}
 
 	@Ignore @Test public void firstShouldReturnTrueOnFirst() throws SQLException {
 		Result Result = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_ELEMENT, ResultSetData.RECORD_LIST_ONE_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.first());
 	}
 
 	@Ignore @Test public void firstShouldReturnTrueNotOnFirst() throws SQLException {
 		Result Result = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_ELEMENT, ResultSetData.RECORD_LIST_ONE_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.next());
 
@@ -197,7 +197,7 @@ public class BoltNeo4jResultSetIterationTest {
 
 	@Ignore @Test public void firstShouldReturnTrueAndPointFirstElement() throws SQLException {
 		Result Result = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_ELEMENT, ResultSetData.RECORD_LIST_ONE_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.first());
 		Assert.assertEquals("valueA1", resultSet.getString("columnA"));
@@ -207,7 +207,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Ignore @Test public void firstShouldThrowExceptionClosed() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, null);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, null);
 
 		resultSet.close();
 		resultSet.first();
@@ -216,7 +216,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Ignore @Test public void firstShouldThrowExceptionForwardOnly() throws SQLException {
 		expectedEx.expect(SQLFeatureNotSupportedException.class);
 
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, null);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, null);
 
 		resultSet.first();
 	}
@@ -226,14 +226,14 @@ public class BoltNeo4jResultSetIterationTest {
 	/*------------------------------*/
 	@Ignore @Test public void lastShouldReturnFalseEmpty() throws SQLException {
 		Result Result = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_EMPTY, ResultSetData.RECORD_LIST_EMPTY);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertFalse(resultSet.last());
 	}
 
 	@Ignore @Test public void lastShouldReturnTrue() throws SQLException {
 		Result Result = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_ONE_ELEMENT, ResultSetData.RECORD_LIST_ONE_ELEMENT);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.last());
 	}
@@ -241,7 +241,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Ignore @Test public void lastShouldReturnTrueAndPointLastNode() throws SQLException {
 		Result Result = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		Assert.assertTrue(resultSet.last());
 		Assert.assertEquals("valueA3", resultSet.getString("columnA"));
@@ -251,7 +251,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Ignore @Test public void lastShouldThrowExceptionClosed() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, null);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, null);
 
 		resultSet.close();
 		resultSet.last();
@@ -260,7 +260,7 @@ public class BoltNeo4jResultSetIterationTest {
 	@Ignore @Test public void lastShouldThrowExceptionForwardOnly() throws SQLException {
 		expectedEx.expect(SQLFeatureNotSupportedException.class);
 
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, null);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, null);
 
 		resultSet.last();
 	}
diff --git a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetMetaDataTest.java b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetMetaDataTest.java
index 59ee50de..6ed56d08 100644
--- a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetMetaDataTest.java
+++ b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetMetaDataTest.java
@@ -55,14 +55,14 @@ public class BoltNeo4jResultSetMetaDataTest {
 
 	@Test public void getColumnsCountShouldReturnCorrectNumberEmpty() throws SQLException {
 		Result resultIterator = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_EMPTY, ResultSetData.RECORD_LIST_EMPTY);
-		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST, resultIterator.keys());
+		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST, resultIterator.keys());
 
 		assertEquals(0, resultSet.getColumnCount());
 	}
 
 	@Test public void getColumnsCountShouldReturnCorrectNumberMoreElements() throws SQLException {
 		Result resultCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST, resultCursor.keys());
+		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST, resultCursor.keys());
 
 		assertEquals(2, resultSet.getColumnCount());
 	}
@@ -73,7 +73,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 
 	@Test public void getColumnNameShouldReturnCorrectColumnName() throws SQLException {
 		Result resultCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST, resultCursor.keys());
+		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST, resultCursor.keys());
 
 		assertEquals("columnA", resultSet.getColumnName(1));
 	}
@@ -82,7 +82,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 		expectedEx.expect(SQLException.class);
 
 		Result resultCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_EMPTY, ResultSetData.RECORD_LIST_EMPTY);
-		ResultSetMetaData resultSetMetaData = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST, resultCursor.keys());
+		ResultSetMetaData resultSetMetaData = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST, resultCursor.keys());
 
 		resultSetMetaData.getColumnName(1);
 	}
@@ -91,7 +91,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 		expectedEx.expect(SQLException.class);
 
 		Result resultCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_EMPTY, ResultSetData.RECORD_LIST_EMPTY);
-		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST, resultCursor.keys());
+		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST, resultCursor.keys());
 
 		resultSet.getColumnName(99);
 	}
@@ -99,7 +99,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 	@Test public void getColumnNameShouldThrowExceptionIfCursorNull() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST, Collections.EMPTY_LIST);
+		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST, Collections.EMPTY_LIST);
 
 		resultSet.getColumnName(1);
 	}
@@ -110,7 +110,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 
 	@Test public void getColumnLabelShouldReturnCorrectColumnName() throws SQLException {
 		Result resultCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST, resultCursor.keys());
+		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST, resultCursor.keys());
 
 		assertEquals("columnA", resultSet.getColumnLabel(1));
 	}
@@ -119,7 +119,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 		expectedEx.expect(SQLException.class);
 
 		Result resultCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_EMPTY, ResultSetData.RECORD_LIST_EMPTY);
-		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST, resultCursor.keys());
+		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST, resultCursor.keys());
 
 		resultSet.getColumnLabel(1);
 	}
@@ -128,7 +128,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 		expectedEx.expect(SQLException.class);
 
 		Result resultCursor = ResultSetData.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_EMPTY, ResultSetData.RECORD_LIST_EMPTY);
-		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST, resultCursor.keys());
+		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST, resultCursor.keys());
 
 		resultSet.getColumnLabel(99);
 	}
@@ -136,7 +136,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 	@Test public void getColumnLabelShouldThrowExceptionIfCursorNull() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST, Collections.EMPTY_LIST);
+		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST, Collections.EMPTY_LIST);
 
 		resultSet.getColumnLabel(1);
 	}
@@ -146,7 +146,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 	/*------------------------------*/
 
 	@Test public void getSchemaNameShouldReturnDefaultValue() throws SQLException {
-		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST, Collections.EMPTY_LIST);
+		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST, Collections.EMPTY_LIST);
 
 		assertEquals("", resultSet.getSchemaName(1));
 	}
@@ -156,7 +156,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 	/*------------------------------*/
 
 	@Test public void getCatalogNameShouldReturnEmptyString() throws SQLException {
-		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST, Collections.EMPTY_LIST);
+		ResultSetMetaData resultSet = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST, Collections.EMPTY_LIST);
 
 		assertEquals("", resultSet.getCatalogName(1));
 	}
@@ -168,7 +168,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 	@Test public void flatteningTestWorking() throws SQLException {
 		Result resultCursor = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_NODES, ResultSetData.RECORD_LIST_MORE_ELEMENTS_NODES);
-		ResultSetMetaData rsm = BoltNeo4jResultSetMetaData.newInstance(false, Collections.EMPTY_LIST,
+		ResultSetMetaData rsm = BoltNeo4jResultSetMetaData.newInstance(Collections.EMPTY_LIST,
 				Arrays.asList(new String[] { "node", "node.id", "node.label", "node.property2", "node.property1" }));
 
 		assertEquals(5, rsm.getColumnCount());
@@ -198,7 +198,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 		List<String> cols = Arrays.asList(
 				"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"
 		);
-		ResultSetMetaData rsm = BoltNeo4jResultSetMetaData.newInstance(false, types, cols);
+		ResultSetMetaData rsm = BoltNeo4jResultSetMetaData.newInstance(types, cols);
 		assertEquals("java.lang.String", rsm.getColumnClassName(1));
 		assertEquals("java.lang.Long", rsm.getColumnClassName(2));
 		assertEquals("java.lang.Boolean", rsm.getColumnClassName(3));
@@ -232,7 +232,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 		List<String> cols = Arrays.asList(
 				"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"
 		);
-		ResultSetMetaData rsm = BoltNeo4jResultSetMetaData.newInstance(false, types, cols);
+		ResultSetMetaData rsm = BoltNeo4jResultSetMetaData.newInstance(types, cols);
 		assertEquals(Types.VARCHAR, rsm.getColumnType(1));
 		assertEquals(Types.INTEGER, rsm.getColumnType(2));
 		assertEquals(Types.BOOLEAN, rsm.getColumnType(3));
@@ -250,7 +250,7 @@ public class BoltNeo4jResultSetMetaDataTest {
 	@Test public void getColumnTypeNameTest() throws SQLException {
 		Result resultCursor = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS_NODES, ResultSetData.RECORD_LIST_MORE_ELEMENTS_NODES);
-		ResultSetMetaData rsm = BoltNeo4jResultSetMetaData.newInstance(false, Arrays.asList(new Type[] { InternalTypeSystem.TYPE_SYSTEM.NODE() }),
+		ResultSetMetaData rsm = BoltNeo4jResultSetMetaData.newInstance(Arrays.asList(new Type[] { InternalTypeSystem.TYPE_SYSTEM.NODE() }),
 				Arrays.asList(new String[] { "node" }));
 
 		assertEquals(1, rsm.getColumnCount());
diff --git a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetTest.java b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetTest.java
index 79f95528..20d85ce9 100644
--- a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetTest.java
+++ b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jResultSetTest.java
@@ -51,7 +51,7 @@ public class BoltNeo4jResultSetTest {
 	@Test public void isClosedReturnFalseWhenConnectionOpen() throws SQLException {
 		Result Result = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		assertFalse(resultSet.isClosed());
 	}
@@ -60,7 +60,7 @@ public class BoltNeo4jResultSetTest {
 	@Test public void isClosedReturnTrueWhenConnectionClosed() throws SQLException {
 		Result Result = ResultSetData
 				.buildResultCursor(ResultSetData.KEYS_RECORD_LIST_MORE_ELEMENTS, ResultSetData.RECORD_LIST_MORE_ELEMENTS);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, Result);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, Result);
 
 		resultSet.close();
 		assertTrue(resultSet.isClosed());
@@ -72,7 +72,7 @@ public class BoltNeo4jResultSetTest {
 
 	@Test public void closeShouldThrowExceptionIfIteratorIsNull() throws SQLException {
 		expectedEx.expect(SQLException.class);
-		ResultSet resultSet = BoltNeo4jResultSet.newInstance(false, null, null);
+		ResultSet resultSet = BoltNeo4jResultSet.newInstance(null, null);
 
 		resultSet.close();
 	}
diff --git a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jStatementIT.java b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jStatementIT.java
index 171acd20..4f308ff0 100644
--- a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jStatementIT.java
+++ b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jStatementIT.java
@@ -147,7 +147,7 @@ public class BoltNeo4jStatementIT {
 	@Test public void executeShouldExecuteAndReturnTrue() throws SQLException {
 		Statement statement = connection.createStatement();
 		boolean result = statement.execute(StatementData.STATEMENT_MATCH_ALL);
-		assertTrue(result);
+		assertFalse(result);
 		statement.close();
 
 	}
@@ -360,12 +360,8 @@ public class BoltNeo4jStatementIT {
 
 		try (Statement statement = connection.createStatement()) {
 			final boolean execute = statement.execute("UNWIND [] AS nope RETURN nope");
-			assertTrue(execute);
-
-			ResultSet resultSet = statement.getResultSet();
-			resultSet.next();
-			final Object nope = resultSet.getObject("nope");
-			assertNull(nope);
+			assertFalse(execute);
+			assertNull(statement.getResultSet());
 		}
 	}
 
diff --git a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jStatementTest.java b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jStatementTest.java
index 99ffd774..836c4d07 100644
--- a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jStatementTest.java
+++ b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/BoltNeo4jStatementTest.java
@@ -80,7 +80,7 @@ public class BoltNeo4jStatementTest {
 
 	@Before public void interceptBoltResultSetConstructor() throws Exception {
 		expectedResultSet = mock(BoltNeo4jResultSet.class);
-		resultSetFactory = (debug, statement, iterator, params) -> expectedResultSet;
+		resultSetFactory = (statement, iterator, params) -> expectedResultSet;
 		BoltNeo4jResultSet mockedRS = mock(BoltNeo4jResultSet.class);
 		doNothing().when(mockedRS).close();
 	}
@@ -117,7 +117,7 @@ public class BoltNeo4jStatementTest {
 		BoltNeo4jConnectionImpl mockConnection = mockOpenConnection();
 		when(mockConnection.getTransaction()).thenReturn(mockTransaction);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockConnection);
+		Statement statement = BoltNeo4jStatement.newInstance(mockConnection);
 
 		statement.close();
 
@@ -131,7 +131,7 @@ public class BoltNeo4jStatementTest {
 	/*------------------------------*/
 
 	@Test public void isClosedShouldReturnFalseWhenCreated() throws SQLException {
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockOpenConnection());
+		Statement statement = BoltNeo4jStatement.newInstance(mockOpenConnection());
 		assertFalse(statement.isClosed());
 	}
 
@@ -143,7 +143,7 @@ public class BoltNeo4jStatementTest {
 		Result mockResult = mock(Result.class);
 
 		Statement statement = BoltNeo4jStatement
-				.newInstance(false, mockOpenConnectionWithResult(mockResult), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
+				.newInstance(mockOpenConnectionWithResult(mockResult), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
 						ResultSet.HOLD_CURSORS_OVER_COMMIT);
 		statement.executeQuery(StatementData.STATEMENT_CREATE);
 	}
@@ -151,7 +151,7 @@ public class BoltNeo4jStatementTest {
 	@Test public void executeQueryShouldThrowExceptionWhenClosedConnection() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockConnectionClosed(), 0, 0, 0);
+		Statement statement = BoltNeo4jStatement.newInstance(mockConnectionClosed(), 0, 0, 0);
 		statement.executeQuery(StatementData.STATEMENT_MATCH_ALL);
 	}
 
@@ -159,17 +159,17 @@ public class BoltNeo4jStatementTest {
 		BoltNeo4jConnectionImpl mockConnection = mockOpenConnectionWithResult(null);
 
 		Statement statement = BoltNeo4jStatement
-				.newInstance(false, mockConnection, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
+				.newInstance(mockConnection, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
 		statement.executeQuery(StatementData.STATEMENT_MATCH_ALL);
 
 //		verifyStatic(BoltNeo4jResultSet.class);
-		BoltNeo4jResultSet.newInstance(false, statement, null, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
+		BoltNeo4jResultSet.newInstance(statement, null, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
 	}
 
 	@Test public void executeQueryShouldThrowExceptionOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockOpenConnection());
+		Statement statement = BoltNeo4jStatement.newInstance(mockOpenConnection());
 		statement.close();
 
 		statement.executeQuery(StatementData.STATEMENT_MATCH_ALL);
@@ -194,7 +194,7 @@ public class BoltNeo4jStatementTest {
 	@Ignore @Test public void executeQueryShouldThrowExceptionOnTimeoutExceeded() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, new BoltNeo4jConnectionImpl(mockDriverOpen(), new Properties(), ""), 0, 0, 0);
+		Statement statement = BoltNeo4jStatement.newInstance(new BoltNeo4jConnectionImpl(mockDriverOpen(), new Properties(), ""), 0, 0, 0);
 		statement.setQueryTimeout(1);
 		statement.executeQuery(StatementData.STATEMENT_CREATE);
 
@@ -216,7 +216,7 @@ public class BoltNeo4jStatementTest {
 		when(mockSummaryCounters.nodesDeleted()).thenReturn(0);
 
 		Statement statement = BoltNeo4jStatement
-				.newInstance(false, mockOpenConnectionWithResult(mockResult), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
+				.newInstance(mockOpenConnectionWithResult(mockResult), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
 						ResultSet.HOLD_CURSORS_OVER_COMMIT);
 		statement.executeUpdate(StatementData.STATEMENT_CREATE);
 	}
@@ -249,7 +249,7 @@ public class BoltNeo4jStatementTest {
 	@Ignore @Test public void executeUpdateShouldThrowExceptionOnTimeoutExceeded() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, new BoltNeo4jConnectionImpl(mockDriverOpen(), new Properties(), ""), 0, 0, 0);
+		Statement statement = BoltNeo4jStatement.newInstance(new BoltNeo4jConnectionImpl(mockDriverOpen(), new Properties(), ""), 0, 0, 0);
 		statement.setQueryTimeout(1);
 		statement.executeUpdate(StatementData.STATEMENT_CREATE);
 
@@ -262,7 +262,7 @@ public class BoltNeo4jStatementTest {
 	@Test public void getResultSetConcurrencyShouldThrowExceptionWhenCalledOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockConnectionClosed());
+		Statement statement = BoltNeo4jStatement.newInstance(mockConnectionClosed());
 		statement.close();
 		statement.getResultSetConcurrency();
 	}
@@ -273,7 +273,7 @@ public class BoltNeo4jStatementTest {
 	@Test public void getResultSetHoldabilityShouldThrowExceptionWhenCalledOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockConnectionClosed());
+		Statement statement = BoltNeo4jStatement.newInstance(mockConnectionClosed());
 		statement.close();
 		statement.getResultSetHoldability();
 	}
@@ -284,7 +284,7 @@ public class BoltNeo4jStatementTest {
 	@Test public void getResultSetTypeShouldThrowExceptionWhenCalledOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockConnectionClosed());
+		Statement statement = BoltNeo4jStatement.newInstance(mockConnectionClosed());
 		statement.close();
 		statement.getResultSetType();
 	}
@@ -311,7 +311,7 @@ public class BoltNeo4jStatementTest {
 		when(mockSummaryCounters.nodesDeleted()).thenReturn(0);
 
 		Statement statement = BoltNeo4jStatement
-				.newInstance(false, mockOpenConnectionWithResult(mockResult), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
+				.newInstance(mockOpenConnectionWithResult(mockResult), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
 						ResultSet.HOLD_CURSORS_OVER_COMMIT);
 		statement.execute(StatementData.STATEMENT_CREATE);
 	}
@@ -319,21 +319,21 @@ public class BoltNeo4jStatementTest {
 	@Test public void executeShouldThrowExceptionOnQueryWhenClosedConnection() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockConnectionClosed(), 0, 0, 0);
+		Statement statement = BoltNeo4jStatement.newInstance(mockConnectionClosed(), 0, 0, 0);
 		statement.execute(StatementData.STATEMENT_MATCH_ALL);
 	}
 
 	@Test public void executeShouldThrowExceptionOnUpdateWhenClosedConnection() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockConnectionClosed(), 0, 0, 0);
+		Statement statement = BoltNeo4jStatement.newInstance(mockConnectionClosed(), 0, 0, 0);
 		statement.execute(StatementData.STATEMENT_CREATE);
 	}
 
 	@Test public void executeShouldThrowExceptionOnQueryOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockOpenConnection());
+		Statement statement = BoltNeo4jStatement.newInstance(mockOpenConnection());
 		statement.close();
 
 		statement.execute(StatementData.STATEMENT_MATCH_ALL);
@@ -342,7 +342,7 @@ public class BoltNeo4jStatementTest {
 	@Test public void executeShouldThrowExceptionOnUpdateOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockOpenConnection());
+		Statement statement = BoltNeo4jStatement.newInstance(mockOpenConnection());
 		statement.close();
 
 		statement.execute(StatementData.STATEMENT_CREATE);
@@ -376,7 +376,7 @@ public class BoltNeo4jStatementTest {
 	@Ignore @Test public void executeShouldThrowExceptionOnTimeoutExceeded() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, new BoltNeo4jConnectionImpl(mockDriverOpen(), new Properties(), ""), 0, 0, 0);
+		Statement statement = BoltNeo4jStatement.newInstance(new BoltNeo4jConnectionImpl(mockDriverOpen(), new Properties(), ""), 0, 0, 0);
 		statement.setQueryTimeout(1);
 		statement.execute(StatementData.STATEMENT_CREATE);
 
@@ -405,7 +405,7 @@ public class BoltNeo4jStatementTest {
 	@Test public void getUpdateCountShouldThrowExceptionOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockOpenConnection());
+		Statement statement = BoltNeo4jStatement.newInstance(mockOpenConnection());
 		statement.close();
 
 		statement.getUpdateCount();
@@ -434,7 +434,7 @@ public class BoltNeo4jStatementTest {
 	@Test public void getResultSetShouldThrowExceptionOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement statement = BoltNeo4jStatement.newInstance(false, mockOpenConnection());
+		Statement statement = BoltNeo4jStatement.newInstance(mockOpenConnection());
 		statement.close();
 
 		statement.getResultSet();
@@ -459,7 +459,7 @@ public class BoltNeo4jStatementTest {
 	@Test public void addBatchShouldThrowExceptionIfClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement stmt = BoltNeo4jStatement.newInstance(false, Mocker.mockOpenConnection());
+		Statement stmt = BoltNeo4jStatement.newInstance(Mocker.mockOpenConnection());
 		stmt.close();
 		stmt.addBatch("");
 	}
@@ -481,7 +481,7 @@ public class BoltNeo4jStatementTest {
 	@Test public void clearBatchShouldThrowExceptionIfClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement stmt = BoltNeo4jStatement.newInstance(false, Mocker.mockOpenConnection());
+		Statement stmt = BoltNeo4jStatement.newInstance(Mocker.mockOpenConnection());
 		stmt.close();
 		stmt.clearBatch();
 	}
@@ -505,7 +505,7 @@ public class BoltNeo4jStatementTest {
 		when(summaryCounters.nodesCreated()).thenReturn(1);
 		when(summaryCounters.nodesDeleted()).thenReturn(0);
 
-		Statement stmt = BoltNeo4jStatement.newInstance(false, connection);
+		Statement stmt = BoltNeo4jStatement.newInstance(connection);
 		String str1 = "MATCH n WHERE id(n) = 1 SET n.property=1";
 		String str2 = "MATCH n WHERE id(n) = 2 SET n.property=2";
 		stmt.addBatch(str1);
@@ -515,7 +515,7 @@ public class BoltNeo4jStatementTest {
 	}
 
 	@Test public void executeBatchShouldThrowExceptionOnError() throws SQLException {
-		Statement stmt = BoltNeo4jStatement.newInstance(false, Mocker.mockOpenConnection());
+		Statement stmt = BoltNeo4jStatement.newInstance(Mocker.mockOpenConnection());
 		stmt.addBatch("MATCH n WHERE id(n) = 1 SET n.property=1");
 		stmt.addBatch("MATCH n WHERE id(n) = 2 SET n.property=2");
 
@@ -539,7 +539,7 @@ public class BoltNeo4jStatementTest {
 	@Test public void executeBatchShouldThrowExceptionOnClosed() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement stmt = BoltNeo4jStatement.newInstance(false, Mocker.mockConnectionClosed());
+		Statement stmt = BoltNeo4jStatement.newInstance(Mocker.mockConnectionClosed());
 		String str1 = "MATCH n WHERE id(n) = 1 SET n.property=1";
 		String str2 = "MATCH n WHERE id(n) = 2 SET n.property=2";
 		stmt.addBatch(str1);
@@ -554,7 +554,7 @@ public class BoltNeo4jStatementTest {
 	/*------------------------------*/
 
 	@Test public void getConnectionShouldWork() throws SQLException {
-		Statement stmt = BoltNeo4jStatement.newInstance(false, Mocker.mockOpenConnection());
+		Statement stmt = BoltNeo4jStatement.newInstance(Mocker.mockOpenConnection());
 
 		assertNotNull(stmt.getConnection());
 		assertEquals(Mocker.mockOpenConnection().getClass(), stmt.getConnection().getClass());
@@ -563,7 +563,7 @@ public class BoltNeo4jStatementTest {
 	@Test public void getConnectionShouldThrowExceptionOnClosedStatement() throws SQLException {
 		expectedEx.expect(SQLException.class);
 
-		Statement stmt = BoltNeo4jStatement.newInstance(false, Mocker.mockConnectionClosed());
+		Statement stmt = BoltNeo4jStatement.newInstance(Mocker.mockConnectionClosed());
 		stmt.close();
 
 		stmt.getConnection();
diff --git a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/SamplePT.java b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/SamplePT.java
index 0d2bbdf7..9c233d09 100644
--- a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/SamplePT.java
+++ b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/SamplePT.java
@@ -75,19 +75,16 @@ public class SamplePT {
 	@State(Scope.Benchmark) public static class Data {
 		@Setup public void initialize() throws ClassNotFoundException, SQLException, IOException {
 			jdbcConnection = DriverManager.getConnection("jdbc:neo4j:bolt://localhost:7687?user=neo4j,password=test");
-			jdbcConnectionDebug = DriverManager.getConnection("jdbc:neo4j:bolt://localhost:7687?user=neo4j,password=test,debug");
 			driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "test"));
 		}
 
 		@TearDown public void close() throws ClassNotFoundException, SQLException, IOException {
 			jdbcConnection.close();
-			jdbcConnectionDebug.close();
 			driver.close();
 		}
 
 		public String query = "MATCH (n) RETURN n";
 		public Connection jdbcConnection;
-		public Connection jdbcConnectionDebug;
 		public org.neo4j.driver.Driver driver;
 
 	}
@@ -105,12 +102,4 @@ public class SamplePT {
 		bh.consume(session.run(data.query));
 		session.close();
 	}
-
-	@Benchmark public void testSimpleQueryWithDebugJDBC(Data data, Blackhole bh) throws SQLException {
-		System.setOut(Mockito.mock(PrintStream.class));
-		Connection conn = data.jdbcConnectionDebug;
-		Statement stmt = conn.createStatement();
-		bh.consume(stmt.executeQuery(data.query));
-		stmt.close();
-	}
 }
diff --git a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/utils/Mocker.java b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/utils/Mocker.java
index df075223..888e2c29 100644
--- a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/utils/Mocker.java
+++ b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/bolt/utils/Mocker.java
@@ -151,9 +151,19 @@ public class Mocker {
 	public static Driver mockDriver() {
 		Driver mockedDriver = mock(org.neo4j.driver.Driver.class);
 		ConnectionProvider connectionProvider = mock(ConnectionProvider.class, RETURNS_MOCKS);
-		NetworkSession networkSession = new NetworkSession(connectionProvider, null,
-				DatabaseNameUtil.database(""), AccessMode.READ, Set.of(), "", FetchSizeUtil.UNLIMITED_FETCH_SIZE, DevNullLogging.DEV_NULL_LOGGING,
-				new Neo4jBookmarkManager(Set.of(), (a) -> {}, () -> Set.of()));
+		NetworkSession networkSession = new NetworkSession(
+				connectionProvider,
+				null,
+				DatabaseNameUtil.database(""),
+				AccessMode.READ,
+				Set.of(),
+				"",
+				FetchSizeUtil.UNLIMITED_FETCH_SIZE,
+				DevNullLogging.DEV_NULL_LOGGING,
+				new Neo4jBookmarkManager(Set.of(), (a) -> {}, Set::of),
+				NotificationConfig.defaultConfig(),
+				null
+		);
 		Mockito.when(mockedDriver.session()).thenReturn(new InternalSession(networkSession));
 		return mockedDriver;
 	}
diff --git a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/boltrouting/BoltRoutingIT.java b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/boltrouting/BoltRoutingIT.java
index 1e6c90f2..73d18ce4 100644
--- a/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/boltrouting/BoltRoutingIT.java
+++ b/neo4j-jdbc-bolt/src/test/java/org/neo4j/jdbc/boltrouting/BoltRoutingIT.java
@@ -49,8 +49,8 @@ public class BoltRoutingIT {
     private static final String NEO4J_USER = "neo4j";
     private static final String NEO4J_PASSWORD = "jdbc";
 
-//    private String connectionUrl = "jdbc:neo4j:bolt+routing://localhost:17681?noSsl&debug=true&routing:policy=EU&routing:servers=localhost:17682;localhost:17683;localhost:17684;localhost:17685;localhost:17686;localhost:17687";
-//    private String connectionUrl2 = "jdbc:neo4j:bolt+routing://localhost:17681,localhost:17682,localhost:17683,localhost:17684,localhost:17685,localhost:17686,localhost:17687?noSsl&debug=true&routing:policy=EU";
+//    private String connectionUrl = "jdbc:neo4j:bolt+routing://localhost:17681?noSsl&routing:policy=EU&routing:servers=localhost:17682;localhost:17683;localhost:17684;localhost:17685;localhost:17686;localhost:17687";
+//    private String connectionUrl2 = "jdbc:neo4j:bolt+routing://localhost:17681,localhost:17682,localhost:17683,localhost:17684,localhost:17685,localhost:17686,localhost:17687?noSsl&routing:policy=EU";
 
     private static TestcontainersCausalCluster cluster;
 
@@ -58,8 +58,10 @@ public class BoltRoutingIT {
     public static void beforeClass() {
         try {
             cluster = TestcontainersCausalCluster.create(3, 1, Duration.ofMinutes(4), Collections.emptyMap());
-            assumeNotNull(cluster);
-        } catch (Exception ignored) {}
+        } catch (Exception ignored) {
+            ignored.printStackTrace();
+        }
+        assumeNotNull(cluster);
     }
 
     @AfterClass
@@ -84,7 +86,7 @@ public class BoltRoutingIT {
     //@Ignore
     @Test public void shouldAccessReadReplicaNodes() throws SQLException {
 
-        try  (Connection connection = DriverManager.getConnection("jdbc:neo4j:" + cluster.getURI().toString(), NEO4J_USER, NEO4J_PASSWORD)) {
+        try  (Connection connection = DriverManager.getConnection("jdbc:neo4j:" + cluster.getAllMembersURI().toString(), NEO4J_USER, NEO4J_PASSWORD)) {
             connection.setReadOnly(true);
             try (Statement statement = connection.createStatement()) {
                 try (ResultSet resultSet = statement.executeQuery("match (t:BoltRoutingTest) return count(t) as tot")) {
@@ -115,7 +117,7 @@ public class BoltRoutingIT {
 
         expectedEx.expect(SQLException.class);
 
-        try  (Connection connection = DriverManager.getConnection("jdbc:neo4j:" + cluster.getURI().toString(), NEO4J_USER, NEO4J_PASSWORD)) {
+        try  (Connection connection = DriverManager.getConnection("jdbc:neo4j:" + cluster.getAllMembersURI().toString(), NEO4J_USER, NEO4J_PASSWORD)) {
             connection.setReadOnly(true);
 
             try (Statement statement = connection.createStatement()) {
@@ -129,7 +131,7 @@ public class BoltRoutingIT {
     //@Ignore
     @Test public void shouldUseBookmarkToReadYourOwnWrites() throws SQLException {
 
-        try  (Connection connection = DriverManager.getConnection("jdbc:neo4j:" + cluster.getURI().toString(), NEO4J_USER, NEO4J_PASSWORD)) {
+        try  (Connection connection = DriverManager.getConnection("jdbc:neo4j:" + cluster.getAllMembersURI().toString(), NEO4J_USER, NEO4J_PASSWORD)) {
 
             connection.setAutoCommit(false);
 
@@ -162,7 +164,7 @@ public class BoltRoutingIT {
         bookmarks.add(insertAndGetBookmark());
 
         String bookmarksAsString = String.join(",", bookmarks);
-        try  (Connection connection = DriverManager.getConnection("jdbc:neo4j:" + cluster.getURI().toString(), NEO4J_USER, NEO4J_PASSWORD)) {
+        try  (Connection connection = DriverManager.getConnection("jdbc:neo4j:" + cluster.getAllMembersURI().toString(), NEO4J_USER, NEO4J_PASSWORD)) {
 
             connection.setClientInfo(BoltRoutingNeo4jDriver.BOOKMARK, bookmarksAsString);
             connection.setReadOnly(true);
@@ -179,7 +181,7 @@ public class BoltRoutingIT {
     }
 
     private String insertAndGetBookmark() throws SQLException {
-        try (Connection connection = DriverManager.getConnection("jdbc:neo4j:" + cluster.getURI().toString(), NEO4J_USER, NEO4J_PASSWORD)) {
+        try (Connection connection = DriverManager.getConnection("jdbc:neo4j:" + cluster.getAllMembersURI().toString(), NEO4J_USER, NEO4J_PASSWORD)) {
             connection.setAutoCommit(false);
 
             try (Statement statement = connection.createStatement()) {
diff --git a/neo4j-jdbc-examples/mybatis/src/test/java/org/neo4j/jdbc/example/mybatis/ActorManagerContainerIT.java b/neo4j-jdbc-examples/mybatis/src/test/java/org/neo4j/jdbc/example/mybatis/ActorManagerContainerIT.java
index 0f91ede2..197d3325 100644
--- a/neo4j-jdbc-examples/mybatis/src/test/java/org/neo4j/jdbc/example/mybatis/ActorManagerContainerIT.java
+++ b/neo4j-jdbc-examples/mybatis/src/test/java/org/neo4j/jdbc/example/mybatis/ActorManagerContainerIT.java
@@ -88,10 +88,10 @@ public class ActorManagerContainerIT {
 		try (final Driver driver = GraphDatabase.driver(new URI(neo4jContainer.getBoltUrl()), AuthTokens.basic("neo4j", neo4jContainer.getAdminPassword()))) {
 			final String foo = "foo";
 			try (final Session session = driver.session(SessionConfig.forDatabase("system"))) {
-				session.writeTransaction(tx -> tx.run("create database " + foo + " if not exists"));
+				session.writeTransaction(tx -> tx.run("create database " + foo + " if not exists").consume());
 			}
 			try (final Session session = driver.session(SessionConfig.forDatabase(foo))) {
-				session.writeTransaction(tx -> tx.run("create (p:Person{name: 'Dave Chappelle', born: 1973})"));
+				session.writeTransaction(tx -> tx.run("create (p:Person{name: 'Dave Chappelle', born: 1973})").consume());
 			}
 		}
 	}
diff --git a/neo4j-jdbc-examples/mybatis/src/test/resources/logback.xml b/neo4j-jdbc-examples/mybatis/src/test/resources/logback.xml
new file mode 100644
index 00000000..aab8c3fb
--- /dev/null
+++ b/neo4j-jdbc-examples/mybatis/src/test/resources/logback.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <Pattern>
+                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
+            </Pattern>
+        </layout>
+    </appender>
+
+    <logger name="org.neo4j" level="INFO" additivity="false">
+        <appender-ref ref="CONSOLE"/>
+    </logger>
+
+    <root level="error">
+        <appender-ref ref="CONSOLE"/>
+    </root>
+
+</configuration>
\ No newline at end of file