Changeset: 6b2b8b1a4f87 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6b2b8b1a4f87
Added Files:
        java/embedded/src/main/java/nl/cwi/monetdb/jdbc/MonetDBResultSet.java
Modified Files:
        java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
        java/embedded/pom.xml
        
java/embedded/src/main/java/org/monetdb/embedded/result/EmbeddedQueryResult.java
Branch: embedded-java
Log Message:

Set the number of rows in the result set as well
While there create a dummy MonetResultSet object.


diffs (130 lines):

diff --git a/java/embedded/org_monetdb_embedded_MonetDBEmbedded.c 
b/java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
--- a/java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
+++ b/java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
@@ -69,6 +69,7 @@ JNIEXPORT jobject JNICALL Java_org_monet
        (void)object;
        res_table *output = NULL;
        int numberOfColumns = 0;
+       int numberOfRows = 0;
        const char *query_string_tmp = (*env)->GetStringUTFChars(env, query, 0);
        char *query_string = strdup(query_string_tmp);
        // Release the query string
@@ -76,8 +77,8 @@ JNIEXPORT jobject JNICALL Java_org_monet
 
        jobject result;
        jclass resultClass = (*env)->FindClass(env, 
"org/monetdb/embedded/result/EmbeddedQueryResult");
-       // from Java EmbeddedQueryResult(String[] columnNames, String[] 
columnTypes, int numberOfColumns, long resultPointer)
-       jmethodID resultConstructor = (*env)->GetMethodID(env, resultClass, 
"<init>", "([Ljava/lang/String;[Ljava/lang/String;IJ)V");
+       // from Java EmbeddedQueryResult(String[] columnNames, String[] 
columnTypes, int numberOfColumns, int numberOfRows, long resultPointer)
+       jmethodID resultConstructor = (*env)->GetMethodID(env, resultClass, 
"<init>", "([Ljava/lang/String;[Ljava/lang/String;IIJ)V");
        // column names and types string arrays
        jobjectArray columnNames, columnTypes = NULL;
        jclass stringClass = (*env)->FindClass(env, "java/lang/String");
@@ -120,7 +121,9 @@ JNIEXPORT jobject JNICALL Java_org_monet
                        BAT* b = BATdescriptor(col.b);
                        char *type;
 
-                       switch (ATOMstorage(getColumnType(b->T->type))) {
+                       numberOfRows = BATcount(b);
+
+                       switch (getColumnType(b->T->type)) {
                        case TYPE_bit:
                                type = "boolean";
                                break;
@@ -161,8 +164,8 @@ JNIEXPORT jobject JNICALL Java_org_monet
        // Also keep a long value with the result pointer in the Java result 
object
        long resultTablePointer = (long)output;
        // Create the result object
-       // from Java EmbeddedQueryResult(String[] columnNames, String[] 
columnTypes, int numberOfColumns, long resultPointer)
-       result = (*env)->NewObject(env, resultClass, resultConstructor, 
columnNames, columnTypes, numberOfColumns, resultTablePointer);
+       // from Java EmbeddedQueryResult(String[] columnNames, String[] 
columnTypes, int numberOfColumns, int numberOfRows, long resultPointer)
+       result = (*env)->NewObject(env, resultClass, resultConstructor, 
columnNames, columnTypes, numberOfColumns, numberOfRows, resultTablePointer);
 
        return result;
 }
diff --git a/java/embedded/pom.xml b/java/embedded/pom.xml
--- a/java/embedded/pom.xml
+++ b/java/embedded/pom.xml
@@ -36,6 +36,11 @@ MonetDB is an analytical database design
 
        <dependencies>
                <dependency>
+                       <groupId>monetdb</groupId>
+                       <artifactId>monetdb-jdbc</artifactId>
+                       <version>2.13</version>
+               </dependency>
+               <dependency>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                        <version>4.12</version>
diff --git 
a/java/embedded/src/main/java/nl/cwi/monetdb/jdbc/MonetDBResultSet.java 
b/java/embedded/src/main/java/nl/cwi/monetdb/jdbc/MonetDBResultSet.java
new file mode 100644
--- /dev/null
+++ b/java/embedded/src/main/java/nl/cwi/monetdb/jdbc/MonetDBResultSet.java
@@ -0,0 +1,19 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0.  If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Copyright 2008-2015 MonetDB B.V.
+ */
+
+package nl.cwi.monetdb.jdbc;
+
+/**
+ * This class serves only to expose the {@link 
nl.cwi.monetdb.jdbc.MonetResultSet} constructor
+ * outside the {@code nl.cwi.monetdb.jdbc}.
+ */
+public class MonetDBResultSet extends MonetResultSet {
+       public MonetDBResultSet(String[] columnNames, String[] columnTypes, int 
numberOfRows) {
+               super(columnNames, columnTypes, numberOfRows);
+       }
+}
diff --git 
a/java/embedded/src/main/java/org/monetdb/embedded/result/EmbeddedQueryResult.java
 
b/java/embedded/src/main/java/org/monetdb/embedded/result/EmbeddedQueryResult.java
--- 
a/java/embedded/src/main/java/org/monetdb/embedded/result/EmbeddedQueryResult.java
+++ 
b/java/embedded/src/main/java/org/monetdb/embedded/result/EmbeddedQueryResult.java
@@ -14,6 +14,9 @@ import java.util.Iterator;
 
 import org.monetdb.embedded.result.column.Column;
 
+import nl.cwi.monetdb.jdbc.MonetDBResultSet;
+import nl.cwi.monetdb.jdbc.MonetResultSet;
+
 /**
  * Embedded MonetDB query result.
  * The query result columns are not eagerly copied from the native code to 
Java.
@@ -35,16 +38,21 @@ public class EmbeddedQueryResult impleme
         */
        private int numberOfColumns;
        /**
+        * The number of rows in the query result.
+        */
+       private int numberOfRows;
+       /**
         * Pointer to the native result set.
         * We need to keep it around for getting columns.
         * The native result set is kept until the {@link close()} is called.
         */
        private long resultPointer;
 
-       public EmbeddedQueryResult(String[] columnNames, String[] columnTypes, 
int numberOfColumns, long resultPointer) {
+       public EmbeddedQueryResult(String[] columnNames, String[] columnTypes, 
int numberOfColumns, int numberOfRows, long resultPointer) {
                this.columnNames = columnNames;
                this.columnTypes = columnTypes;
                this.numberOfColumns = numberOfColumns;
+               this.numberOfRows = numberOfRows;
                this.resultPointer = resultPointer;
        }
 
@@ -96,6 +104,10 @@ public class EmbeddedQueryResult impleme
         */
        private native Column<?> getColumnWrapper(long resultPointerWrapper, 
int index);
 
+       public MonetResultSet getJDBCResultSet() {
+               return new MonetDBResultSet(columnNames, columnTypes, 
numberOfRows);
+       }
+
        @Override
        public Iterator<Column<?>> iterator() {
                return new Iterator<Column<?>>() {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to