changeset 31:787a4fdba56e embedded

More cleaning
author Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
date Thu, 27 Oct 2016 18:33:42 +0200 (2016-10-27)
parents 7e0d71a22677
children 57978db4ee57
files src/main/java/nl/cwi/monetdb/embedded/EmbeddedQueryResult.java src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedConnection.java src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedDatabase.java src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedInstance.java src/main/java/nl/cwi/monetdb/embedded/column/BigintColumn.java src/main/java/nl/cwi/monetdb/embedded/column/BlobColumn.java src/main/java/nl/cwi/monetdb/embedded/column/BooleanColumn.java src/main/java/nl/cwi/monetdb/embedded/column/CharColumn.java src/main/java/nl/cwi/monetdb/embedded/column/ClobColumn.java src/main/java/nl/cwi/monetdb/embedded/column/Column.java src/main/java/nl/cwi/monetdb/embedded/column/DateColumn.java src/main/java/nl/cwi/monetdb/embedded/column/DecimalColumn.java src/main/java/nl/cwi/monetdb/embedded/column/DoubleColumn.java src/main/java/nl/cwi/monetdb/embedded/column/GeometryColumn.java src/main/java/nl/cwi/monetdb/embedded/column/HugeintColumn.java src/main/java/nl/cwi/monetdb/embedded/column/InetColumn.java src/main/java/nl/cwi/monetdb/embedded/column/IntColumn.java src/main/java/nl/cwi/monetdb/embedded/column/JSONColumn.java src/main/java/nl/cwi/monetdb/embedded/column/MonthIntervalColumn.java src/main/java/nl/cwi/monetdb/embedded/column/RealColumn.java src/main/java/nl/cwi/monetdb/embedded/column/SecondIntervalColumn.java src/main/java/nl/cwi/monetdb/embedded/column/SmallintColumn.java src/main/java/nl/cwi/monetdb/embedded/column/TimeColumn.java src/main/java/nl/cwi/monetdb/embedded/column/TimestampColumn.java src/main/java/nl/cwi/monetdb/embedded/column/TinyintColumn.java src/main/java/nl/cwi/monetdb/embedded/column/URLColumn.java src/main/java/nl/cwi/monetdb/embedded/column/UUIDColumn.java src/main/java/nl/cwi/monetdb/embedded/column/VarcharColumn.java src/main/java/nl/cwi/monetdb/embedded/types/MonetDBEmbeddedBlob.java src/main/java/nl/cwi/monetdb/mcl/embedded/MonetDBEmbeddedConnection.java src/main/java/nl/cwi/monetdb/mcl/embedded/MonetDBEmbeddedInstance.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/EmbeddedQueryResult.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/BigintColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/BlobColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/BooleanColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/CharColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/ClobColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/Column.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/DateColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/DecimalColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/DoubleColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/GeometryColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/HugeintColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/InetColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/IntColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/JSONColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/MonthIntervalColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/RealColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/SecondIntervalColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/SmallintColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/TimeColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/TimestampColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/TinyintColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/URLColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/UUIDColumn.java src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/VarcharColumn.java
diffstat 56 files changed, 1555 insertions(+), 1453 deletions(-) [+]
line wrap: on
line diff
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/EmbeddedQueryResult.java
rename to src/main/java/nl/cwi/monetdb/embedded/EmbeddedQueryResult.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/EmbeddedQueryResult.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/EmbeddedQueryResult.java
@@ -6,13 +6,13 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result;
+package nl.cwi.monetdb.embedded;
 
 import java.io.Closeable;
 import java.sql.SQLException;
 import java.util.Iterator;
 
-import nl.cwi.monetdb.mcl.embedded.result.column.Column;
+import nl.cwi.monetdb.embedded.column.Column;
 
 /**
  * Embedded MonetDB query result.
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/MonetDBEmbeddedConnection.java
rename to src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedConnection.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/MonetDBEmbeddedConnection.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedConnection.java
@@ -6,13 +6,13 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded;
+package nl.cwi.monetdb.embedded;
+
+import nl.cwi.monetdb.embedded.column.Column;
 
 import java.io.*;
 import java.sql.SQLException;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
-
 /**
  * A single connection to a MonetDB database instance
  * Communication between Java and native C is done via JNI.
@@ -38,7 +38,7 @@ public class MonetDBEmbeddedConnection {
 	 * @return The query result object, {@code null} if the database is not running
 	 * @throws SQLException
 	 */
-	public EmbeddedQueryResult createQuery(String query) throws SQLException, IOException {
+	public EmbeddedQueryResult createQuery(String query) throws SQLException {
 		String queryString = query;
 		if (!queryString.endsWith(";")) {
 			queryString += ";";
@@ -46,6 +46,96 @@ public class MonetDBEmbeddedConnection {
 		return queryWrapper(queryString, true, this.connectionPointer);
 	}
 
+    /**
+     * Begins a transaction in nl.cwi.monetdb.embedded database.
+     *
+     * @throws SQLException
+     */
+	public void startTransaction() throws SQLException {
+		this.createQuery("START TRANSACTION;").close();
+	}
+
+    /**
+     * Commits a transaction in nl.cwi.monetdb.embedded database.
+     *
+     * @throws SQLException
+     */
+	public void commit() throws SQLException {
+		this.createQuery("COMMIT;").close();
+	}
+
+    /**
+     * Rollbacks a transaction in nl.cwi.monetdb.embedded database.
+     *
+     * @throws SQLException
+     */
+	public void rollback() throws SQLException {
+		this.createQuery("ROLLBACK;").close();
+	}
+
+    /**
+     * Performs a Lists the the existing tables with schemas on the system
+     *
+     * @param listSystemTables List system's tables as well (default true)
+     * @return The query result object, {@code null} if the database is not running
+     * @throws SQLException
+     */
+    public EmbeddedQueryResult listTables(boolean listSystemTables) throws SQLException {
+        String query = "select schemas.name as sn, tables.name as tn from sys.tables join sys.schemas on tables.schema_id=schemas.id";
+        if (!listSystemTables) {
+            query += " where tables.system=false order by sn, tn";
+        }
+        return this.createQuery(query + ";");
+    }
+
+    /**
+     * Performs a SELECT * FROM a table  in nl.cwi.monetdb.embedded database.
+     *
+     * @param tableName The name of the table
+     * @return The query result object, {@code null} if the database is not running
+     * @throws SQLException
+     */
+	public EmbeddedQueryResult readTable(String tableName) throws SQLException {
+        return this.createQuery("SELECT * FROM " + tableName + ";");
+    }
+
+    /**
+     * Check if a table exists  in nl.cwi.monetdb.embedded database.
+     *
+     * @param tableName The name of the table
+     * @return If a the table exists or not
+     * @throws SQLException
+     */
+    public boolean checkTableExists(String tableName) throws SQLException {
+        EmbeddedQueryResult eqr = this.listTables(true);
+        Column<String> tablenames = (Column<String>) eqr.getColumn(0);
+        boolean res = false;
+        for (String str: tablenames.getAllValues()) {
+            if(str.equals(tableName)) {
+                res = true;
+            }
+        }
+        eqr.close();
+        return res;
+    }
+
+    /**
+     * Lists the table fields and types in nl.cwi.monetdb.embedded database.
+     *
+     * @param tableName The name of the table
+     * @return
+     * @throws SQLException
+     */
+    public String[] listFields(String tableName) throws SQLException {
+        if(!this.checkTableExists(tableName)) {
+            throw  new SQLException("The table " + tableName + " doesn't exist!!");
+        }
+        EmbeddedQueryResult eqr = this.createQuery("select columns.name as name from sys.columns join sys.tables on columns.table_id=tables.id where tables.name='" + tableName + "';");
+        String[] res = (String[]) eqr.getColumn(0).getAllValues();
+        eqr.close();
+        return res;
+    }
+
 	/**
 	 * Execute an SQL query in an nl.cwi.monetdb.embedded database.
 	 * 
@@ -53,6 +143,6 @@ public class MonetDBEmbeddedConnection {
 	 * @return The query result object, {@code null} if the database is not running
 	 * @throws SQLException
 	 */
-	private native EmbeddedQueryResult queryWrapper(String query, boolean execute, long connectionPointer) throws SQLException, IOException;
+	private native EmbeddedQueryResult queryWrapper(String query, boolean execute, long connectionPointer) throws SQLException;
 
 }
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/MonetDBEmbeddedInstance.java
rename to src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedDatabase.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/MonetDBEmbeddedInstance.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedDatabase.java
@@ -6,7 +6,7 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded;
+package nl.cwi.monetdb.embedded;
 
 import java.io.*;
 import java.nio.file.Files;
@@ -22,54 +22,17 @@ import java.util.concurrent.locks.Reentr
  * <br/>
  * <strong>Note</strong>: You can have only one nl.cwi.monetdb.embedded MonetDB database running per JVM process.
  */
-public class MonetDBEmbeddedInstance {
-
-    private final static String NATIVE_LIB_PATH_IN_JAR = "src" + File.separatorChar + "main" +
-            File.separatorChar + "resources";
-    private final static String NATIVE_LIB_NAME = "libmonetdb5.so";
+public class MonetDBEmbeddedDatabase {
 
-    /**
-     * The native nl.cwi.monetdb.embedded MonetDB library.
-     */
-    static {
-        try {
-            // Try load the nl.cwi.monetdb.embedded library
-            System.loadLibrary("monetdb5");
-        } catch (UnsatisfiedLinkError e) {
-            // Still no, then get the resources.lib bundled in the jar
-            loadLibFromJar(NATIVE_LIB_NAME);
+    public static MonetDBEmbeddedDatabase StartDatabase(String dbDirectory, boolean silentFlag, boolean sequentialFlag) throws SQLException {
+        if(MonetDBEmbeddedInstance.IsEmbeddedInstanceInitialized() == false) {
+            throw new SQLException("The embedded instance has not been loaded yet!");
+        } else {
+            return StartDatabaseInternal(dbDirectory, silentFlag, sequentialFlag);
         }
     }
 
-    private static void loadLibFromJar(String fileName) {
-        String pathToLib = NATIVE_LIB_PATH_IN_JAR + File.separatorChar + fileName;
-        try {
-            InputStream in = MonetDBEmbeddedInstance.class.getResourceAsStream(File.separatorChar + pathToLib);
-            if (in == null) {
-                // OK, the input stream is null, hence no .jar
-                // This was probably a test and/or in an IDE
-                // Just read the files from the src/main/resources dir
-                in = new FileInputStream(new File(pathToLib));
-            }
-            // Set a temp location to extract (and load from later)
-            final Path tempLibsDir = Files.createTempDirectory("nl.cwi.monetdb.embedded");
-            File fileOut = new File(tempLibsDir.toString() + File.separatorChar + fileName);
-            try (OutputStream out = new FileOutputStream(fileOut)) {
-                byte[] buffer = new byte[in.available()];
-                while (in.read(buffer) != -1) {
-                    out.write(buffer);
-                }
-                out.flush();
-                in.close();
-                // Load the resources.lib from the extracted file
-                System.load(fileOut.toString());
-            }
-        } catch (IOException e) {
-            throw new UnsatisfiedLinkError("Unable to extract native library from JAR:" + e.getMessage());
-        }
-    }
-
-    public static native MonetDBEmbeddedInstance StartDatabase(String dbDirectory, boolean silentFlag, boolean sequentialFlag) throws SQLException;
+    private static native MonetDBEmbeddedDatabase StartDatabaseInternal(String dbDirectory, boolean silentFlag, boolean sequentialFlag) throws SQLException;
 
     private final File databaseDirectory;
 
@@ -83,7 +46,7 @@ public class MonetDBEmbeddedInstance {
 
     private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
 
-    public MonetDBEmbeddedInstance(String dbDirectory, boolean silentFlag, boolean sequentialFlag, boolean isRunning) {
+    public MonetDBEmbeddedDatabase(String dbDirectory, boolean silentFlag, boolean sequentialFlag, boolean isRunning) {
         this.databaseDirectory = new File(dbDirectory);
         this.silentFlag = silentFlag;
         this.sequentialFlag = sequentialFlag;
new file mode 100644
--- /dev/null
+++ b/src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedInstance.java
@@ -0,0 +1,37 @@
+package nl.cwi.monetdb.embedded;
+
+/**
+ * Created by ferreira on 10/27/16.
+ */
+public class MonetDBEmbeddedInstance {
+
+    private static boolean isEmbeddedInstanceInitialized = false;
+
+    private static final String NATIVE_LIB_NAME = "monetdb5";
+
+    public static boolean TryLoadEmbeddedInstanceFromName(String libraryName) {
+        if(isEmbeddedInstanceInitialized == false) {
+            if(libraryName == null) {
+                libraryName = NATIVE_LIB_NAME;
+            }
+            System.loadLibrary(libraryName);
+            isEmbeddedInstanceInitialized = true;
+        }
+        return true;
+    }
+
+    public static boolean TryLoadEmbeddedInstanceFromPath(String libraryPath) {
+        if(isEmbeddedInstanceInitialized == false) {
+            if(libraryPath == null) {
+                return false;
+            }
+            System.load(libraryPath);
+            isEmbeddedInstanceInitialized = true;
+        }
+        return true;
+    }
+
+    public static boolean IsEmbeddedInstanceInitialized() {
+        return isEmbeddedInstanceInitialized;
+    }
+}
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/BigintColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/BigintColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/BigintColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/BigintColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB BIGINT data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/BlobColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/BlobColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/BlobColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/BlobColumn.java
@@ -6,30 +6,30 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.jdbc.MonetBlob;
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.types.MonetDBEmbeddedBlob;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB BLOB data type
  */
-public class BlobColumn extends Column<MonetBlob> {
+public class BlobColumn extends Column<MonetDBEmbeddedBlob> {
 
-    private final MonetBlob[] values;
+    private final MonetDBEmbeddedBlob[] values;
 
-    public BlobColumn(EmbeddedQueryResult result, int index, MonetBlob[] values, boolean[] nullIndex) {
+    public BlobColumn(EmbeddedQueryResult result, int index, MonetDBEmbeddedBlob[] values, boolean[] nullIndex) {
         super(result, index, nullIndex);
         this.values = values;
     }
 
     @Override
-    public MonetBlob[] getAllValues() {
+    public MonetDBEmbeddedBlob[] getAllValues() {
         return this.values;
     }
 
     @Override
-    protected MonetBlob getValueImplementation(int index) {
+    protected MonetDBEmbeddedBlob getValueImplementation(int index) {
         return this.values[index];
     }
 }
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/BooleanColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/BooleanColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/BooleanColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/BooleanColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB BOOLEAN data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/CharColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/CharColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/CharColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/CharColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB CHAR data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/ClobColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/ClobColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/ClobColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/ClobColumn.java
@@ -6,30 +6,30 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
 import nl.cwi.monetdb.jdbc.MonetClob;
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB CLOB data type
  */
-public class ClobColumn extends Column<MonetClob> {
+public class ClobColumn extends Column<String> {
 
-    private final MonetClob[] values;
+    private final String[] values;
 
-    public ClobColumn(EmbeddedQueryResult result, int index, MonetClob[] values, boolean[] nullIndex) {
+    public ClobColumn(EmbeddedQueryResult result, int index, String[] values, boolean[] nullIndex) {
         super(result, index, nullIndex);
         this.values = values;
     }
 
     @Override
-    public MonetClob[] getAllValues() {
+    public String[] getAllValues() {
         return this.values;
     }
 
     @Override
-    protected MonetClob getValueImplementation(int index) {
+    protected String getValueImplementation(int index) {
         return this.values[index];
     }
 }
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/Column.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/Column.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/Column.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/Column.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 import java.util.Iterator;
 
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/DateColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/DateColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/DateColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/DateColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 import java.sql.Date;
 
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/DecimalColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/DecimalColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/DecimalColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/DecimalColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 import java.math.BigDecimal;
 
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/DoubleColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/DoubleColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/DoubleColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/DoubleColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB FLOAT data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/GeometryColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/GeometryColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/GeometryColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/GeometryColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB GEOMETRY data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/HugeintColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/HugeintColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/HugeintColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/HugeintColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 import java.math.BigInteger;
 
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/InetColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/InetColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/InetColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/InetColumn.java
@@ -6,32 +6,31 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.jdbc.types.INET;
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 import java.net.InetAddress;
 
 /**
  * Mapping for MonetDB INET data type
  */
-public class InetColumn extends Column<INET> {
+public class InetColumn extends Column<InetAddress> {
 
-    private final INET[] values;
+    private final InetAddress[] values;
 
-    public InetColumn(EmbeddedQueryResult result, int index, INET[] values, boolean[] nullIndex) {
+    public InetColumn(EmbeddedQueryResult result, int index, InetAddress[] values, boolean[] nullIndex) {
         super(result, index, nullIndex);
         this.values = values;
     }
 
     @Override
-    public INET[] getAllValues() {
+    public InetAddress[] getAllValues() {
         return this.values;
     }
 
     @Override
-    protected INET getValueImplementation(int index) {
+    protected InetAddress getValueImplementation(int index) {
         return this.values[index];
     }
 }
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/IntColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/IntColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/IntColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/IntColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB Integer data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/JSONColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/JSONColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/JSONColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/JSONColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB JSON data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/MonthIntervalColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/MonthIntervalColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/MonthIntervalColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/MonthIntervalColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB MONTH_INTERVAL data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/RealColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/RealColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/RealColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/RealColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB REAL data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/SecondIntervalColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/SecondIntervalColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/SecondIntervalColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/SecondIntervalColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB SECOND_INTERVAL data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/SmallintColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/SmallintColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/SmallintColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/SmallintColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB SMALLINT data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/TimeColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/TimeColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/TimeColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/TimeColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 import java.sql.Time;
 
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/TimestampColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/TimestampColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/TimestampColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/TimestampColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 import java.sql.Timestamp;
 
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/TinyintColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/TinyintColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/TinyintColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/TinyintColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB TINYINT data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/URLColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/URLColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/URLColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/URLColumn.java
@@ -6,11 +6,10 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
-
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.jdbc.types.URL;
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
+import java.net.URL;
 
 /**
  * Mapping for MonetDB URL data type
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/UUIDColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/UUIDColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/UUIDColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/UUIDColumn.java
@@ -6,9 +6,9 @@
  * Copyright 2008-2015 MonetDB B.V.
  */
 
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 import java.util.UUID;
 
rename from src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/VarcharColumn.java
rename to src/main/java/nl/cwi/monetdb/embedded/column/VarcharColumn.java
--- a/src/main/java/nl/cwi/monetdb/mcl/embedded/result/column/VarcharColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/column/VarcharColumn.java
@@ -1,6 +1,6 @@
-package nl.cwi.monetdb.mcl.embedded.result.column;
+package nl.cwi.monetdb.embedded.column;
 
-import nl.cwi.monetdb.mcl.embedded.result.EmbeddedQueryResult;
+import nl.cwi.monetdb.embedded.EmbeddedQueryResult;
 
 /**
  * Mapping for MonetDB VARCHAR data type
new file mode 100644
--- /dev/null
+++ b/src/main/java/nl/cwi/monetdb/embedded/types/MonetDBEmbeddedBlob.java
@@ -0,0 +1,14 @@
+package nl.cwi.monetdb.embedded.types;
+
+/**
+ * Created by ferreira on 10/27/16.
+ */
+public class MonetDBEmbeddedBlob {
+    protected final byte[] blob;
+
+    public MonetDBEmbeddedBlob(byte[] blob) {
+        this.blob = blob;
+    }
+
+    public byte[] getBlob() { return blob; }
+}