changeset 110:8af0a7387b4e embedded

Small fixes for the embedded connection.
author Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
date Tue, 24 Jan 2017 18:13:12 +0100 (2017-01-24)
parents e026fe73bb5e
children d7added7aaf3
files src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java src/main/java/nl/cwi/monetdb/jdbc/MonetDataSource.java
diffstat 2 files changed, 25 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
@@ -2,7 +2,6 @@ package nl.cwi.monetdb.jdbc;
 
 import nl.cwi.monetdb.mcl.connection.*;
 import nl.cwi.monetdb.mcl.connection.SenderThread;
-import nl.cwi.monetdb.mcl.connection.mapi.MapiLanguage;
 import nl.cwi.monetdb.mcl.protocol.ProtocolException;
 import nl.cwi.monetdb.mcl.protocol.AbstractProtocol;
 import nl.cwi.monetdb.mcl.protocol.ServerResponses;
@@ -394,7 +393,7 @@ public abstract class MonetConnection ex
      */
     @Override
     public DatabaseMetaData getMetaData() throws SQLException {
-        if (this.language != MapiLanguage.LANG_SQL) {
+        if (!this.language.getRepresentation().equals("sql")) {
             throw new SQLException("This method is only supported in SQL mode", "M0M04");
         }
         return new MonetDatabaseMetaData(this);
@@ -1511,7 +1510,7 @@ public abstract class MonetConnection ex
                 int size = (cachesize != 0 && !isEmbedded) ? cachesize : MonetConnection.this.getDefFetchsize();
                 size = maxrows != 0 ? Math.min(maxrows, size) : size;
                 // don't do work if it's not needed
-                if (language == MapiLanguage.LANG_SQL && size != curReplySize &&
+                if (!language.getRepresentation().equals("sql") && size != curReplySize &&
                         !Arrays.deepEquals(templ, language.getCommandTemplates())) {
                     sendControlCommand(ControlCommands.REPLY_SIZE, size);
                     // store the reply size after a successful change
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetDataSource.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetDataSource.java
@@ -27,7 +27,7 @@ import java.util.logging.Logger;
  *
  * Additionally, pooled connections can be used when using a DataSource.
  *
- * @author Fabian Groffen
+ * @author Fabian Groffen, Pedro Ferreira
  * @version 0.1
  */
 public class MonetDataSource extends MonetWrapper implements DataSource {
@@ -37,7 +37,7 @@ public class MonetDataSource extends Mon
     private String description = "MonetDB database";
 	private String url = "jdbc:monetdb://localhost/";
     private int loginTimeout;
-    private boolean isEmbedded;
+    private String directory;
     private final MonetDriver driver = new MonetDriver();
 
 	// the following properties are also standard:
@@ -75,8 +75,9 @@ public class MonetDataSource extends Mon
         if (loginTimeout > 0) {
             props.put("so_timeout", Integer.toString(loginTimeout));
         }
-		if(isEmbedded) {
+		if(directory != null) {
             props.put("embedded", "true");
+			props.put("directory", directory);
         }
 		return driver.connect(url, props);
 	}
@@ -184,21 +185,30 @@ public class MonetDataSource extends Mon
 	}
 
     /**
+     * Gets the directory value
+     *
+     * @return the directory value
+     */
+    public String getDirectory() {
+        return directory;
+    }
+
+    /**
+     * Sets the directory value, meaning it wil start an embedded connection
+     *
+     * @param directory The directory location
+     */
+    public void setDirectory(String directory) {
+        this.directory = directory;
+    }
+
+    /**
      * Gets the embedded connection directory. If not, then a MAPI connection will be created instead.
      *
      * @return If the connection will be embedded. If not, then a MAPI connection will be created instead.
      */
     public boolean isEmbedded() {
-        return isEmbedded;
-    }
-
-    /**
-     * Sets the connection to be embedded
-     *
-     * @param isEmbedded A boolean to indicate if the connection will be embedded
-     */
-    public void setIsEmbedded(boolean isEmbedded) {
-        this.isEmbedded = isEmbedded;
+        return directory != null;
     }
 
     /**