Changeset: 18432f31d1e3 for monetdb-java
URL: http://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=18432f31d1e3
Modified Files:
        src/main/java/nl/cwi/monetdb/embedded/AbstractColumn.java
        src/main/java/nl/cwi/monetdb/embedded/AbstractStatementResult.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/MonetDBToJavaMapping.java
        src/main/java/nl/cwi/monetdb/embedded/QueryResultSet.java
        src/main/java/nl/cwi/monetdb/embedded/QueryResultSetColumn.java
        src/main/java/nl/cwi/monetdb/embedded/UpdateResultSet.java
Branch: embedded
Log Message:

Updated JNI calls


diffs (truncated from 307 to 300 lines):

diff --git a/src/main/java/nl/cwi/monetdb/embedded/AbstractColumn.java 
b/src/main/java/nl/cwi/monetdb/embedded/AbstractColumn.java
--- a/src/main/java/nl/cwi/monetdb/embedded/AbstractColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/AbstractColumn.java
@@ -51,7 +51,7 @@ public abstract class AbstractColumn<T> 
         this.resultSetIndex = resultSetIndex;
         this.numberOfRows = numberOfRows;
         this.columnName = columnName;
-        this.mapping = Enum.valueOf(MonetDBToJavaMapping.class, columnType);
+        this.mapping = 
MonetDBToJavaMapping.GetJavaMappingFromMonetDBString(columnType);
         this.columnDigits = columnDigits;
         this.columnScale = columnScale;
     }
diff --git a/src/main/java/nl/cwi/monetdb/embedded/AbstractStatementResult.java 
b/src/main/java/nl/cwi/monetdb/embedded/AbstractStatementResult.java
--- a/src/main/java/nl/cwi/monetdb/embedded/AbstractStatementResult.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/AbstractStatementResult.java
@@ -22,15 +22,7 @@ public abstract class AbstractStatementR
      */
     private final MonetDBEmbeddedConnection connection;
 
-    /**
-     * Pointer to the native result set.
-     * We need to keep it around for getting columns.
-     * The native result set is kept until the {@link super.close()} is called.
-     */
-    protected long resultPointer;
-
-    protected AbstractStatementResult(MonetDBEmbeddedConnection connection, 
long resultPointer) {
-        this.resultPointer = resultPointer;
+    protected AbstractStatementResult(MonetDBEmbeddedConnection connection) {
         this.connection = connection;
     }
 
@@ -41,22 +33,8 @@ public abstract class AbstractStatementR
      */
     public MonetDBEmbeddedConnection getConnection() { return connection; }
 
-    /**
-     * Tells if the connection of this statement result has been closed or not.
-     *
-     * @return A boolean indicating if the statement result has been cleaned 
or not
-     */
-    public boolean isStatementClosed() { return this.resultPointer == 0; }
-
-    /**
-     * Close the query data so no more new results can be retrieved.
-     */
     @Override
     public void close() {
-        this.cleanupResult(this.resultPointer);
-        this.resultPointer = 0;
         this.connection.removeQueryResult(this);
     }
-
-    private native void cleanupResult(long resultPointer);
 }
diff --git 
a/src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedConnection.java 
b/src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedConnection.java
--- a/src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedConnection.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedConnection.java
@@ -27,7 +27,6 @@ public class MonetDBEmbeddedConnection {
 
     private final List<AbstractStatementResult> results = new ArrayList<>();
 
-    //TODO add autocommit
        protected MonetDBEmbeddedConnection(MonetDBEmbeddedDatabase database, 
long connectionPointer) {
         this.database = database;
         this.connectionPointer = connectionPointer;
@@ -96,7 +95,7 @@ public class MonetDBEmbeddedConnection {
         if (!query.endsWith(";")) {
             query += ";";
         }
-        UpdateResultSet res = 
this.createEmptyResultSetInternal(this.connectionPointer, query, true);
+        UpdateResultSet res = this.sendUpdateInternal(this.connectionPointer, 
query, true);
         results.add(res);
         return res;
     }
@@ -124,7 +123,7 @@ public class MonetDBEmbeddedConnection {
                if (!query.endsWith(";")) {
             query += ";";
                }
-        QueryResultSet res = 
this.createNonEmptyResultSetInternal(this.connectionPointer, query, true);
+        QueryResultSet res = this.sendQueryInternal(this.connectionPointer, 
query, true);
         results.add(res);
         return res;
        }
@@ -247,10 +246,10 @@ public class MonetDBEmbeddedConnection {
         this.results.remove(res);
     }
 
-       private native UpdateResultSet createEmptyResultSetInternal(long 
connectionPointer, String query, boolean execute)
+    private native UpdateResultSet sendUpdateInternal(long connectionPointer, 
String query, boolean execute)
             throws MonetDBEmbeddedException;
 
-    private native QueryResultSet createNonEmptyResultSetInternal(long 
connectionPointer, String query, boolean execute)
+    private native QueryResultSet sendQueryInternal(long connectionPointer, 
String query, boolean execute)
             throws MonetDBEmbeddedException;
 
     private native EmbeddedPreparedStatement 
createPreparedStatementInternal(long connectionPointer, String query)
diff --git a/src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedDatabase.java 
b/src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedDatabase.java
--- a/src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedDatabase.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/MonetDBEmbeddedDatabase.java
@@ -50,7 +50,7 @@ public class MonetDBEmbeddedDatabase {
      */
     public static MonetDBEmbeddedDatabase StartDatabaseAsync(String 
dbDirectory, boolean silentFlag,
                                                              boolean 
sequentialFlag) throws MonetDBEmbeddedException {
-        /* CompletableFuture.supplyAsync(() -> StartDatabase(dbDirectory, 
silentFlag, sequentialFlag); */
+        /* CompletableFuture.supplyAsync(() -> StartDatabase(dbDirectory, 
silentFlag, sequentialFlag)); */
         throw new UnsupportedOperationException("Must wait for Java 8 :(");
     }
 
@@ -139,7 +139,7 @@ public class MonetDBEmbeddedDatabase {
      * @throws MonetDBEmbeddedException If the database is not running or an 
error in the database occurred
      */
     public MonetDBEmbeddedConnection createConnection() throws 
MonetDBEmbeddedException {
-        return this.createConnectionOnSchema(null);
+        return this.createConnectionInternal();
     }
 
     /**
@@ -149,35 +149,7 @@ public class MonetDBEmbeddedDatabase {
      * @throws MonetDBEmbeddedException If the database is not running or an 
error in the database occurred
      */
     public MonetDBEmbeddedConnection createConnectionAsync() throws 
MonetDBEmbeddedException {
-        return this.createConnectionOnSchemaAsync(null);
-    }
-
-    /**
-     * Creates a connection on the database on the given schema.
-     *
-     * @param schema A String with the schema to be set
-     * @return A MonetDBEmbeddedConnection instance
-     * @throws MonetDBEmbeddedException If the database is not running or an 
error in the database occurred
-     */
-    public MonetDBEmbeddedConnection createConnectionOnSchema(String schema) 
throws MonetDBEmbeddedException {
-        if(this.isRunning) {
-            MonetDBEmbeddedConnection mdbec = 
this.createConnectionInternal(schema);
-            connections.add(mdbec);
-            return mdbec;
-        } else {
-            throw new MonetDBEmbeddedException("The database is not running!");
-        }
-    }
-
-    /**
-     * Creates a connection on the database on the given schema asynchronously.
-     *
-     * @param schema A String with the schema to be set
-     * @return A MonetDBEmbeddedConnection instance
-     * @throws MonetDBEmbeddedException If the database is not running or an 
error in the database occurred
-     */
-    public MonetDBEmbeddedConnection createConnectionOnSchemaAsync(String 
schema) throws MonetDBEmbeddedException {
-        /* CompletableFuture.supplyAsync(() -> 
this.createConnectionOnSchema(schema)); */
+        /* CompletableFuture.supplyAsync(() -> 
this.createConnectionInternal()); */
         throw new UnsupportedOperationException("Must wait for Java 8 :(");
     }
 
@@ -189,9 +161,10 @@ public class MonetDBEmbeddedDatabase {
     }
 
     private static native MonetDBEmbeddedDatabase StartDatabaseInternal(String 
dbDirectory, boolean silentFlag,
-                                                                        
boolean sequentialFlag) throws MonetDBEmbeddedException;
+                                                                        
boolean sequentialFlag)
+            throws MonetDBEmbeddedException;
 
     private native void stopDatabaseInternal();
 
-    private native MonetDBEmbeddedConnection createConnectionInternal(String 
schema) throws MonetDBEmbeddedException;
+    private native MonetDBEmbeddedConnection createConnectionInternal() throws 
MonetDBEmbeddedException;
 }
diff --git a/src/main/java/nl/cwi/monetdb/embedded/MonetDBToJavaMapping.java 
b/src/main/java/nl/cwi/monetdb/embedded/MonetDBToJavaMapping.java
--- a/src/main/java/nl/cwi/monetdb/embedded/MonetDBToJavaMapping.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/MonetDBToJavaMapping.java
@@ -25,12 +25,12 @@ import java.util.UUID;
  */
 public enum MonetDBToJavaMapping {
 
-    Boolean(Boolean.class), Char(String.class), Varchar(String.class), 
Clob(String.class), Tinyint(Byte.class),
-    Smallint(Short.class), Int(Integer.class), Bigint(Long.class), 
Hugeint(BigInteger.class), Decimal(BigDecimal.class),
-    Real(Float.class), Double(Double.class), MonthInterval(Integer.class), 
SecondInterval(Long.class), Time(Time.class),
-    TimeTz(Time.class), Date(Date.class), Timestamp(Timestamp.class), 
TimestampTz(Timestamp.class), Blob(Byte[].class),
-    Geometry(Byte[].class), GeometryA(Byte[].class), URL(URI.class), 
Inet(InetAddress.class), JSON(Byte[].class),
-    UUID(UUID.class);
+    Boolean(Boolean.class), Char(String.class), Varchar(String.class), 
Clob(String.class), Oid(Long.class),
+    Tinyint(Byte.class), Smallint(Short.class), Int(Integer.class), 
Wrd(Long.class), Bigint(Long.class),
+    Hugeint(BigInteger.class), Decimal(BigDecimal.class), Real(Float.class), 
Double(Double.class),
+    MonthInterval(Integer.class), SecondInterval(Long.class), 
Time(Time.class), TimeTz(Time.class), Date(Date.class),
+    Timestamp(Timestamp.class), TimestampTz(Timestamp.class), 
Blob(Byte[].class), Geometry(Byte[].class),
+    GeometryA(Byte[].class), URL(URI.class), Inet(InetAddress.class), 
JSON(Byte[].class), UUID(UUID.class);
 
     /**
      * The mapping between MonetDB data types and enum values.
@@ -43,9 +43,11 @@ public enum MonetDBToJavaMapping {
         MonetDBMappings.put("char", Char);
         MonetDBMappings.put("varchar", Varchar);
         MonetDBMappings.put("clob", Clob);
+        MonetDBMappings.put("oid", Oid);
         MonetDBMappings.put("tinyint", Tinyint);
         MonetDBMappings.put("smallint", Smallint);
         MonetDBMappings.put("int", Int);
+        MonetDBMappings.put("wrd", Wrd);
         MonetDBMappings.put("bigint", Bigint);
         MonetDBMappings.put("hugeint", Hugeint);
         MonetDBMappings.put("decimal", Decimal);
diff --git a/src/main/java/nl/cwi/monetdb/embedded/QueryResultSet.java 
b/src/main/java/nl/cwi/monetdb/embedded/QueryResultSet.java
--- a/src/main/java/nl/cwi/monetdb/embedded/QueryResultSet.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/QueryResultSet.java
@@ -22,6 +22,13 @@ import java.util.ListIterator;
 public class QueryResultSet extends AbstractStatementResult implements 
Iterable {
 
     /**
+     * Pointer to the native result set.
+     * We need to keep it around for getting columns.
+     * The native result set is kept until the {@link super.close()} is called.
+     */
+    protected long resultPointer;
+
+    /**
      * The number of columns in the query result.
      */
     protected final int numberOfColumns;
@@ -38,13 +45,21 @@ public class QueryResultSet extends Abst
 
        protected QueryResultSet(MonetDBEmbeddedConnection connection, long 
resultPointer,
                              QueryResultSetColumn<?>[] columns, int 
numberOfRows) {
-        super(connection, resultPointer);
+        super(connection);
+        this.resultPointer = resultPointer;
         this.numberOfColumns = columns.length;
         this.numberOfRows = numberOfRows;
         this.columns = columns;
        }
 
     /**
+     * Tells if the connection of this statement result has been closed or not.
+     *
+     * @return A boolean indicating if the statement result has been cleaned 
or not
+     */
+    public boolean isStatementClosed() { return this.resultPointer == 0; }
+
+    /**
      * Returns the number of columns in the result set.
      *
      * @return Number of columns
@@ -255,4 +270,16 @@ public class QueryResultSet extends Abst
             return null;
         }
     }
+
+    /**
+     * Close the query data so no more new results can be retrieved.
+     */
+    @Override
+    public void close() {
+        this.cleanupResultInternal(this.resultPointer);
+        this.resultPointer = 0;
+        super.close();
+    }
+
+    private native void cleanupResultInternal(long resultPointer);
 }
diff --git a/src/main/java/nl/cwi/monetdb/embedded/QueryResultSetColumn.java 
b/src/main/java/nl/cwi/monetdb/embedded/QueryResultSetColumn.java
--- a/src/main/java/nl/cwi/monetdb/embedded/QueryResultSetColumn.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/QueryResultSetColumn.java
@@ -80,8 +80,8 @@ public class QueryResultSetColumn<T> ext
                 throw new MonetDBEmbeddedException("Connection closed!");
             }
             if(startIndex < this.firstRetrievedIndex) {
-                T[] new_start_batch = 
this.getValuesBatch(this.resultSetPointer, this.resultSetIndex,
-                        this.mapping.ordinal(), startIndex, 
this.firstRetrievedIndex);
+                T[] new_start_batch = 
this.fetchValuesInternal(this.resultSetPointer, this.resultSetIndex,
+                        this.mapping.getJavaClass(), this.mapping.ordinal(), 
startIndex, this.firstRetrievedIndex);
                 System.arraycopy(new_start_batch, 0, this.values, startIndex, 
new_start_batch.length);
                 this.firstRetrievedIndex = startIndex;
             }
@@ -91,8 +91,8 @@ public class QueryResultSetColumn<T> ext
                 throw new MonetDBEmbeddedException("Connection closed!");
             }
             if(endIndex > this.lastRetrievedIndex) {
-                T[] new_end_batch = this.getValuesBatch(this.resultSetPointer, 
this.resultSetIndex,
-                        this.mapping.ordinal(), this.lastRetrievedIndex, 
endIndex);
+                T[] new_end_batch = 
this.fetchValuesInternal(this.resultSetPointer, this.resultSetIndex,
+                        this.mapping.getJavaClass(), this.mapping.ordinal(), 
this.lastRetrievedIndex, endIndex);
                 System.arraycopy(new_end_batch, 0, this.values, 
this.lastRetrievedIndex, new_end_batch.length);
                 this.lastRetrievedIndex = endIndex;
             }
@@ -235,7 +235,7 @@ public class QueryResultSetColumn<T> ext
         return Arrays.asList(this.values).listIterator();
     }
 
-    private native T[] getValuesBatch(long resultPointer, int resultSetIndex, 
int mappingType, int first, int last)
-            throws MonetDBEmbeddedException;
+    private native T[] fetchValuesInternal(long resultPointer, int 
resultSetIndex, Class<T> jclass, int enumEntry,
+                                           int first, int last) throws 
MonetDBEmbeddedException;
 
 }
diff --git a/src/main/java/nl/cwi/monetdb/embedded/UpdateResultSet.java 
b/src/main/java/nl/cwi/monetdb/embedded/UpdateResultSet.java
--- a/src/main/java/nl/cwi/monetdb/embedded/UpdateResultSet.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/UpdateResultSet.java
@@ -15,7 +15,7 @@ package nl.cwi.monetdb.embedded;
  */
 public class UpdateResultSet extends AbstractStatementResult {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to