[jOOQ/jOOQ#11099] Cache CursorRecordInitialiser instance
This commit is contained in:
parent
96c250c6ea
commit
d30784526a
@ -1551,7 +1551,7 @@ final class CursorImpl<R extends Record> extends AbstractCursor<R> implements Cu
|
||||
/**
|
||||
* The (potentially) pre-fetched next record
|
||||
*/
|
||||
private R next;
|
||||
private R next;
|
||||
|
||||
/**
|
||||
* Whether the underlying {@link ResultSet} has a next record. This
|
||||
@ -1562,7 +1562,12 @@ final class CursorImpl<R extends Record> extends AbstractCursor<R> implements Cu
|
||||
* <li>false: there aren't any next records</li>
|
||||
* </ul>
|
||||
*/
|
||||
private Boolean hasNext;
|
||||
private Boolean hasNext;
|
||||
|
||||
/**
|
||||
* [#11099] Cache this instance for the entire cursor.
|
||||
*/
|
||||
private final CursorRecordInitialiser initialiser = new CursorRecordInitialiser(fields, 0);
|
||||
|
||||
@Override
|
||||
public final boolean hasNext() {
|
||||
@ -1597,7 +1602,7 @@ final class CursorImpl<R extends Record> extends AbstractCursor<R> implements Cu
|
||||
try {
|
||||
if (!isClosed && rs.next()) {
|
||||
record = Tools.newRecord(true, (F0<AbstractRecord>) factory, ((DefaultExecuteContext) ctx).originalConfiguration())
|
||||
.operate(new CursorRecordInitialiser(fields, 0));
|
||||
.operate(initialiser.reset());
|
||||
|
||||
rows++;
|
||||
}
|
||||
@ -1643,6 +1648,11 @@ final class CursorImpl<R extends Record> extends AbstractCursor<R> implements Cu
|
||||
this.offset = offset;
|
||||
}
|
||||
|
||||
CursorRecordInitialiser reset() {
|
||||
offset = 0;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractRecord operate(AbstractRecord record) throws SQLException {
|
||||
ctx.record(record);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user