Changeset: 8217f77fcf6b for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/8217f77fcf6b
Modified Files:
src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java
src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTable.java
src/main/java/nl/cwi/monetdb/embedded/tables/RowIterator.java
Branch: embedded
Log Message:
Fixed row and column indexing
diffs (112 lines):
diff --git a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java
b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java
--- a/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractRowSet.java
@@ -20,8 +20,8 @@ public abstract class AbstractRowSet {
protected AbstractRowSet(MonetDBToJavaMapping[] mappings, Object[][] rows)
{
this.mappings = mappings;
- this.rows = new MonetDBRow[mappings.length];
- for(int i = 0 ; i < mappings.length ; i++) {
+ this.rows = new MonetDBRow[rows.length];
+ for(int i = 0 ; i < rows.length ; i++) {
this.rows[i] = new MonetDBRow(this, rows[i]);
}
}
diff --git a/src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTable.java
b/src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTable.java
--- a/src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTable.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTable.java
@@ -82,8 +82,9 @@ public class MonetDBTable extends Abstra
try {
String query = "SELECT COUNT(*) FROM " + this.schemaName + "." +
this.tableName + ";";
QueryResultSet eqr = this.getConnection().sendQuery(query);
- QueryResultSetColumn<Integer> eqc = eqr.getColumn(0);
- res = eqc.fetchFirstNColumnValues(1)[0];
+ QueryResultSetColumn<Long> eqc = eqr.getColumn(0);
+ res = eqc.fetchFirstNColumnValues(1)[0].intValue();
+ eqr.close();
} catch (MonetDBEmbeddedException ex) {
}
return res;
@@ -139,19 +140,16 @@ public class MonetDBTable extends Abstra
*/
private int[] checkIterator(IMonetDBTableBaseIterator iterator) {
int[] res = {iterator.getFirstRowToIterate(),
iterator.getLastRowToIterate()};
- if(res[0] == res[1]) {
- throw new ArrayIndexOutOfBoundsException("Iterating over 0 rows?");
- }
if(res[1] < res[0]) {
int aux = res[0];
res[0] = res[1];
res[0] = aux;
}
- if (res[0] < 0) {
- res[0] = 0;
+ if (res[0] < 1) {
+ res[0] = 1;
}
int numberOfRows = this.getNumberOfRows();
- if (res[1] > numberOfRows) {
+ if (res[1] >= numberOfRows) {
res[1] = numberOfRows;
}
return res;
@@ -166,9 +164,9 @@ public class MonetDBTable extends Abstra
*/
public int iterateTable(IMonetDBTableCursor cursor) throws
MonetDBEmbeddedException {
int[] limits = this.checkIterator(cursor);
- int res = 0, total = limits[1] - limits[0];
+ int res = 0, total = limits[1] - limits[0] + 1;
String query = new StringBuffer("SELECT * FROM
").append(this.schemaName).append(".").append(this.tableName)
- .append(" LIMIT ").append(total).append(" OFFSET
").append(limits[0]).append(";").toString();
+ .append(" LIMIT ").append(total).append(" OFFSET
").append(limits[0] - 1).append(";").toString();
QueryResultSet eqr = this.getConnection().sendQuery(query);
MonetDBRow[] array = eqr.fetchAllRowValues().getAllRows();
@@ -326,13 +324,13 @@ public class MonetDBTable extends Abstra
*/
public int appendColumns(Object[][] columns) throws
MonetDBEmbeddedException {
int numberOfRows = columns[0].length, numberOfColumns =
this.getNumberOfColumns();
+ if (columns.length != numberOfColumns) {
+ throw new ArrayStoreException("The number of columns differs from
the table's number of columns!");
+ }
if(numberOfRows == 0) {
throw new ArrayStoreException("Appending 0 rows?");
}
- if (columns.length != numberOfColumns) {
- throw new ArrayStoreException("The number of columns differs from
the table's number of columns!");
- }
- for (int i = 0; i < numberOfRows; i++) {
+ for (int i = 0; i < numberOfColumns; i++) {
if(columns[i].length != numberOfRows) {
throw new ArrayStoreException("The number of rows in each
column is not consistent!");
}
diff --git a/src/main/java/nl/cwi/monetdb/embedded/tables/RowIterator.java
b/src/main/java/nl/cwi/monetdb/embedded/tables/RowIterator.java
--- a/src/main/java/nl/cwi/monetdb/embedded/tables/RowIterator.java
+++ b/src/main/java/nl/cwi/monetdb/embedded/tables/RowIterator.java
@@ -36,7 +36,7 @@ public class RowIterator extends Abstrac
this.table = table;
this.firstIndex = firstIndex;
this.lastIndex = lastIndex;
- this.currentIterationNumber = 0;
+ this.currentIterationNumber = -1;
}
/**
@@ -72,7 +72,7 @@ public class RowIterator extends Abstrac
*
* @return The current row number of the table in the iteration
*/
- public int getCurrentTableRowNumber() { return this.currentIterationNumber
+ this.firstIndex; }
+ public int getCurrentTableRowNumber() { return this.firstIndex +
this.currentIterationNumber; }
/**
* Gets the current row currentColumns values as Java objects.
@@ -86,7 +86,7 @@ public class RowIterator extends Abstrac
*
* @return There are more rows to iterate
*/
- public boolean hasMore() { return this.currentIterationNumber <
this.lastIndex; }
+ public boolean hasMore() { return this.currentIterationNumber +
this.firstIndex < this.lastIndex; }
/**
* Gets a column value as a Java class.
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list