diff --git a/asterixdb-jdbc/asterix-jdbc-driver/pom.xml b/asterixdb-jdbc/asterix-jdbc-driver/pom.xml
index 8c03da0..3ef116a 100644
--- a/asterixdb-jdbc/asterix-jdbc-driver/pom.xml
+++ b/asterixdb-jdbc/asterix-jdbc-driver/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>apache-asterixdb-jdbc</artifactId>
     <groupId>org.apache.asterix</groupId>
-    <version>0.9.7-SNAPSHOT</version>
+    <version>0.9.8-SNAPSHOT</version>
   </parent>
   <artifactId>asterix-jdbc-driver</artifactId>
 
diff --git a/asterixdb-jdbc/asterix-jdbc-driver/src/main/java/org/apache/asterix/jdbc/ADBProtocol.java b/asterixdb-jdbc/asterix-jdbc-driver/src/main/java/org/apache/asterix/jdbc/ADBProtocol.java
index 2f95b57..bb477b0 100644
--- a/asterixdb-jdbc/asterix-jdbc-driver/src/main/java/org/apache/asterix/jdbc/ADBProtocol.java
+++ b/asterixdb-jdbc/asterix-jdbc-driver/src/main/java/org/apache/asterix/jdbc/ADBProtocol.java
@@ -207,8 +207,8 @@
     }
 
     @Override
-    public QueryServiceResponse submitStatement(String sql, List<?> args, UUID executionId,
-            SubmitStatementOptions options) throws SQLException {
+    public QueryServiceResponse submitStatement(String sql, List<?> args, SubmitStatementOptions options)
+            throws SQLException {
         HttpPost httpPost = new HttpPost(queryEndpoint);
         httpPost.setHeader(HttpHeaders.ACCEPT, ContentType.APPLICATION_JSON
                 .withParameters(new BasicNameValuePair(FORMAT_LOSSLESS_ADM, Boolean.TRUE.toString())).toString());
@@ -239,8 +239,8 @@
             if (options.dataverseName != null) {
                 jsonGen.writeStringField(DATAVERSE, options.dataverseName);
             }
-            if (executionId != null) {
-                jsonGen.writeStringField(CLIENT_CONTEXT_ID, executionId.toString());
+            if (options.executionId != null) {
+                jsonGen.writeStringField(CLIENT_CONTEXT_ID, options.executionId.toString());
             }
             if (args != null && !args.isEmpty()) {
                 jsonGen.writeFieldName(ARGS);
@@ -305,7 +305,7 @@
     }
 
     @Override
-    public JsonParser fetchResult(QueryServiceResponse response) throws SQLException {
+    public JsonParser fetchResult(QueryServiceResponse response, SubmitStatementOptions options) throws SQLException {
         if (response.handle == null) {
             throw getErrorReporter().errorInProtocol();
         }
