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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list