Changeset: 80bae18085f0 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/80bae18085f0
Modified Files:
        src/main/java/nl/cwi/monetdb/embedded/env/AbstractConnectionResult.java
        src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java
        src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedException.java
Branch: embedded
Log Message:

Better handling with concurrent connections.


diffs (111 lines):

diff --git 
a/src/main/java/nl/cwi/monetdb/embedded/env/AbstractConnectionResult.java 
b/src/main/java/nl/cwi/monetdb/embedded/env/AbstractConnectionResult.java
--- a/src/main/java/nl/cwi/monetdb/embedded/env/AbstractConnectionResult.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/env/AbstractConnectionResult.java
@@ -9,6 +9,7 @@
 package nl.cwi.monetdb.embedded.env;
 
 import java.io.Closeable;
+import java.util.Random;
 
 /**
  * The base class for a pending statement to a connection.
@@ -18,20 +19,38 @@ import java.io.Closeable;
 public abstract class AbstractConnectionResult implements Closeable {
 
     /**
+     * A random instance to generate the result set identifier.
+     */
+    private static final Random Randomizer = new Random();
+
+    /**
      * The corresponding connection of this result.
      */
     private final MonetDBEmbeddedConnection connection;
 
-    protected AbstractConnectionResult(MonetDBEmbeddedConnection connection) { 
this.connection = connection; }
+    /**
+     * A long value used to identify this result set.
+     */
+    private final long randomIdentifier;
+
+    protected AbstractConnectionResult(MonetDBEmbeddedConnection connection) {
+        this.connection = connection;
+        this.randomIdentifier = Randomizer.nextLong();
+    }
 
     /**
-     * Get the corresponding connection to this statement result.
+     * Gets the corresponding connection to this statement result.
      *
      * @return A MonetDBEmbeddedConnection instance
      */
     public MonetDBEmbeddedConnection getConnection() { return connection; }
 
-    protected long getConnectionPointer() { return 
connection.connectionPointer; }
+    /**
+     * Gets a long number randomly generated, used to identify the result set.
+     *
+     * @return A random long identifier
+     */
+    protected long getRandomIdentifier() { return randomIdentifier; }
 
     /**
      * To be called by the connection when is closing.
diff --git 
a/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java 
b/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java
--- a/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedConnection.java
@@ -96,7 +96,7 @@ public class MonetDBEmbeddedConnection {
             query += ";";
         }
         UpdateResultSet res = this.sendUpdateInternal(this.connectionPointer, 
query, true);
-        results.put(res.getConnectionPointer(), res);
+        results.put(res.getRandomIdentifier(), res);
         return res;
     }
 
@@ -123,7 +123,7 @@ public class MonetDBEmbeddedConnection {
             query += ";";
                }
         QueryResultSet res = this.sendQueryInternal(this.connectionPointer, 
query, true);
-        results.put(res.getConnectionPointer(), res);
+        results.put(res.getRandomIdentifier(), res);
         return res;
        }
 
@@ -148,7 +148,7 @@ public class MonetDBEmbeddedConnection {
      */
     public MonetDBTable getMonetDBTable(String schemaName, String tableName) 
throws MonetDBEmbeddedException {
         MonetDBTable res = 
this.getMonetDBTableInternal(this.connectionPointer, schemaName, tableName);
-        results.put(res.getConnectionPointer(), res);
+        results.put(res.getRandomIdentifier(), res);
         return res;
     }
 
@@ -240,7 +240,7 @@ public class MonetDBEmbeddedConnection {
     /**
      * Removes a query result from this connection.
      */
-    protected void removeQueryResult(AbstractConnectionResult res) { 
this.results.remove(res.getConnectionPointer()); }
+    protected void removeQueryResult(AbstractConnectionResult res) { 
this.results.remove(res.getRandomIdentifier()); }
 
     /**
      * Internal implementation of sendUpdate.
diff --git 
a/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedException.java 
b/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedException.java
--- a/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedException.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/env/MonetDBEmbeddedException.java
@@ -8,12 +8,14 @@
 
 package nl.cwi.monetdb.embedded.env;
 
+import java.sql.SQLException;
+
 /**
  * The exception fired from embedded methods.
  *
  * @author <a href="mailto:pedro.ferre...@monetdbsolutions.com";>Pedro 
Ferreira</a>
  */
-public class MonetDBEmbeddedException extends Exception {
+public class MonetDBEmbeddedException extends SQLException {
 
     public MonetDBEmbeddedException(String message) { super(message); }
 }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to