From d30784526a6c0b864d33c0fc321130ba5fcaacf0 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 10 Dec 2020 16:29:34 +0100 Subject: [PATCH] [jOOQ/jOOQ#11099] Cache CursorRecordInitialiser instance --- jOOQ/src/main/java/org/jooq/impl/CursorImpl.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java b/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java index e23a8dfef9..71210440f6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java @@ -1551,7 +1551,7 @@ final class CursorImpl extends AbstractCursor 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 extends AbstractCursor implements Cu *
  • false: there aren't any next records
  • * */ - 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 extends AbstractCursor implements Cu try { if (!isClosed && rs.next()) { record = Tools.newRecord(true, (F0) factory, ((DefaultExecuteContext) ctx).originalConfiguration()) - .operate(new CursorRecordInitialiser(fields, 0)); + .operate(initialiser.reset()); rows++; } @@ -1643,6 +1648,11 @@ final class CursorImpl extends AbstractCursor implements Cu this.offset = offset; } + CursorRecordInitialiser reset() { + offset = 0; + return this; + } + @Override public AbstractRecord operate(AbstractRecord record) throws SQLException { ctx.record(record);