Mercurial > hg > monetdb-java
changeset 377:8a813f5cef1b
Extend StartOfHeaderParser with method getNextAsLong() and change type of tuplecount to long.
author | Martin van Dinther <martin.van.dinther@monetdbsolutions.com> |
---|---|
date | Fri, 25 Sep 2020 18:51:58 +0200 (2020-09-25) |
parents | ffdc7b0e102d |
children | 02f353f62abe |
files | src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java src/main/java/nl/cwi/monetdb/mcl/parser/StartOfHeaderParser.java |
diffstat | 5 files changed, 26 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java @@ -2063,7 +2063,7 @@ public class MonetConnection /** The number of columns in this result */ public final int columncount; /** The total number of rows this result set has */ - public final int tuplecount; + public final long tuplecount; /** The numbers of rows to retrieve per DataBlockResponse */ private int cacheSize; /** The table ID of this result */ @@ -2119,7 +2119,7 @@ public class MonetConnection */ ResultSetResponse( final int id, - final int tuplecount, + final long tuplecount, final int columncount, final int rowcount, final MonetConnection.ResponseList parent, @@ -2156,7 +2156,7 @@ public class MonetConnection this.id = id; this.tuplecount = tuplecount; this.columncount = columncount; - this.resultBlocks = new DataBlockResponse[(tuplecount / cacheSize) + 1]; + this.resultBlocks = new DataBlockResponse[(int)(tuplecount / cacheSize) + 1]; hlp = new HeaderLineParser(columncount); @@ -2887,12 +2887,12 @@ public class MonetConnection case StartOfHeaderParser.Q_TABLE: case StartOfHeaderParser.Q_PREPARE: { final int id = sohp.getNextAsInt(); - int tuplecount = sohp.getNextAsInt(); // TODO implement StartOfHeaderParser.getNextAsLong() and change tuplecount to long + long tuplecount = sohp.getNextAsLong(); final int columncount = sohp.getNextAsInt(); final int rowcount = sohp.getNextAsInt(); // enforce the maxrows setting if (maxrows != 0 && tuplecount > maxrows) - tuplecount = (int)maxrows; + tuplecount = maxrows; res = new ResultSetResponse(id, tuplecount, columncount, rowcount, this, seqnr); // only add this resultset to the hashmap if it can possibly have an additional datablock if (rowcount < tuplecount) {
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java @@ -126,7 +126,7 @@ public class MonetPreparedStatement // cheat a bit to get the ID and the number of columns id = ((MonetConnection.ResultSetResponse)header).id; - size = ((MonetConnection.ResultSetResponse)header).tuplecount; + size = (int)((MonetConnection.ResultSetResponse)header).tuplecount; rscolcnt = ((MonetConnection.ResultSetResponse)header).columncount; // initialise blank finals
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java @@ -88,7 +88,7 @@ public class MonetResultSet /** The current line of the buffer split in columns */ protected final TupleLineParser tlp; /** The number of rows in this ResultSet */ - protected final int tupleCount; + protected final long tupleCount; /** The current position of the cursor for this ResultSet object */ protected int curRow = 0; @@ -252,13 +252,13 @@ public class MonetResultSet // first calculate what the JDBC row is if (row < 0) { // calculate the negatives... - row = tupleCount + row + 1; + row = (int) tupleCount + row + 1; } // now place the row not farther than just before or after the result if (row < 0) row = 0; // before first else if (row > tupleCount + 1) - row = tupleCount + 1; // after last + row = (int) tupleCount + 1; // after last // store it curRow = row; @@ -285,7 +285,7 @@ public class MonetResultSet */ @Override public void afterLast() throws SQLException { - absolute(tupleCount + 1); + absolute((int)tupleCount + 1); } /**
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java @@ -1544,13 +1544,13 @@ final class MonetVirtualResultSet extend // first calculate what the JDBC row is if (row < 0) { // calculate the negatives... - row = tupleCount + row + 1; + row = (int) tupleCount + row + 1; } // now place the row not farther than just before or after the result if (row < 0) row = 0; // before first else if (row > tupleCount + 1) - row = tupleCount + 1; // after last + row = (int) tupleCount + 1; // after last // store it curRow = row;
--- a/src/main/java/nl/cwi/monetdb/mcl/parser/StartOfHeaderParser.java +++ b/src/main/java/nl/cwi/monetdb/mcl/parser/StartOfHeaderParser.java @@ -89,13 +89,24 @@ public final class StartOfHeaderParser { /** * Returns the next token in the CharBuffer as integer. The value is * considered to end at the end of the CharBuffer or at a space. If - * a non-numeric character is encountered an MCLParseException is - * thrown. + * a non-numeric character is encountered an MCLParseException is thrown. * * @return The next token in the CharBuffer as integer * @throws MCLParseException if no numeric value could be read */ public final int getNextAsInt() throws MCLParseException { + return (int) getNextAsLong(); + } + + /** + * Returns the next token in the CharBuffer as long integer. The value + * is considered to end at the end of the CharBuffer or at a space. + * If a non-numeric character is encountered an MCLParseException is thrown. + * + * @return The next token in the CharBuffer as long integer + * @throws MCLParseException if no numeric value could be read + */ + public final long getNextAsLong() throws MCLParseException { pos++; if (!soh.hasRemaining()) throw new MCLParseException("unexpected end of string", soh.position() - 1); @@ -111,7 +122,7 @@ public final class StartOfHeaderParser { chr = soh.get(); } - int tmp = 0; + long tmp = 0; if (chr >= '0' && chr <= '9') { tmp = (int)chr - (int)'0'; } else {