Mercurial > hg > monetdb-java
changeset 58:2053a9fc56ca embedded
Consistent iteration limits.
author | Pedro Ferreira <pedro.ferreira@monetdbsolutions.com> |
---|---|
date | Tue, 22 Nov 2016 12:24:42 +0100 (2016-11-22) |
parents | 7c3a84de7605 |
children | 37ebdc34a400 |
files | src/main/java/nl/cwi/monetdb/embedded/tables/IMonetDBTableBaseIterator.java src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTable.java src/main/java/nl/cwi/monetdb/embedded/tables/RowIterator.java |
diffstat | 3 files changed, 11 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/nl/cwi/monetdb/embedded/tables/IMonetDBTableBaseIterator.java +++ b/src/main/java/nl/cwi/monetdb/embedded/tables/IMonetDBTableBaseIterator.java @@ -8,7 +8,7 @@ package nl.cwi.monetdb.embedded.tables; public interface IMonetDBTableBaseIterator { /** - * Specify the first row in the table to iterate starting from 1. If a lower number is provided, then the iteration + * Specify the first row in the table to iterate starting from 0. If a lower number is provided, then the iteration * will start on the first row. * * @return The first row in the table to iterate
--- a/src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTable.java +++ b/src/main/java/nl/cwi/monetdb/embedded/tables/MonetDBTable.java @@ -136,8 +136,8 @@ public class MonetDBTable extends Abstra res[0] = res[1]; res[0] = aux; } - if (res[0] < 1) { - res[0] = 1; + if (res[0] < 0) { + res[0] = 0; } int numberOfRows = this.getNumberOfRows(); if (res[1] >= numberOfRows) { @@ -155,9 +155,9 @@ public class MonetDBTable extends Abstra */ public int iterateTable(IMonetDBTableCursor cursor) throws MonetDBEmbeddedException { int[] limits = this.prepareIterator(cursor); - int res = 0, total = limits[1] - limits[0] + 1; + int res = 0, total = limits[1] - limits[0]; String query = new StringBuffer("SELECT * FROM ").append(this.getTableSchema()).append(".").append(this.getTableName()) - .append(" LIMIT ").append(total).append(" OFFSET ").append(limits[0] - 1).append(";").toString(); + .append(" LIMIT ").append(total).append(" OFFSET ").append(limits[0]).append(";").toString(); QueryResultSet eqr = this.getConnection().sendQuery(query); MonetDBRow[] array = eqr.fetchAllRowValues().getAllRows(); @@ -168,8 +168,9 @@ public class MonetDBTable extends Abstra } RowIterator ri = new RowIterator(this, data, limits[0], limits[1]); - while(ri.tryContinueIteration()) { + while(ri.hasMore()) { cursor.processNextRow(ri); + ri.setNextIteration(); res++; } return res;
--- a/src/main/java/nl/cwi/monetdb/embedded/tables/RowIterator.java +++ b/src/main/java/nl/cwi/monetdb/embedded/tables/RowIterator.java @@ -22,7 +22,7 @@ public class RowIterator extends Abstrac /** * The current table row number on the fetched set. */ - protected int currentIterationNumber; + protected int currentIterationNumber = 0; /** * The first row in the table to iterate. @@ -38,7 +38,6 @@ public class RowIterator extends Abstrac super(table, table.getMappings(), rows); this.firstIndex = firstIndex; this.lastIndex = lastIndex; - this.currentIterationNumber = -1; } @Override @@ -101,7 +100,7 @@ public class RowIterator extends Abstrac * * @return There are more rows to iterate */ - public boolean hasMore() { return this.currentIterationNumber + this.firstIndex < this.lastIndex; } + public boolean hasMore() { return this.firstIndex + this.currentIterationNumber < this.lastIndex; } /** * Gets a column value as a Java class. @@ -153,15 +152,7 @@ public class RowIterator extends Abstrac } /** - * Get the next row in the table if there are more. - * - * @return A boolean indicating if there are more rows to fetch + * Sets the next value to iterate. */ - protected boolean tryContinueIteration() { - if(this.hasMore()) { - this.currentIterationNumber++; - return true; - } - return false; - } + protected void setNextIteration() { this.currentIterationNumber++; } }