From abbcbd40b06eb390138496b5ed3a0baf56a4ce2e Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 8 Jun 2022 12:36:37 +0200 Subject: [PATCH] [jOOQ/jOOQ#13647] DefaultRecordUnmapper should cache AbstractRow and record type --- .../org/jooq/impl/DefaultRecordUnmapper.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordUnmapper.java b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordUnmapper.java index aeea897aba..12b90ab84c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordUnmapper.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordUnmapper.java @@ -71,15 +71,19 @@ import org.jooq.exception.MappingException; */ public class DefaultRecordUnmapper implements RecordUnmapper { - private final Class type; - private final RecordType rowType; - private final Field[] fields; - private final Configuration configuration; - private RecordUnmapper delegate; + private final Class type; + private final RecordType rowType; + private final AbstractRow row; + private final Class recordType; + private final Field[] fields; + private final Configuration configuration; + private RecordUnmapper delegate; public DefaultRecordUnmapper(Class type, RecordType rowType, Configuration configuration) { this.type = type; this.rowType = rowType; + this.row = Tools.row0((FieldsImpl) rowType); + this.recordType = Tools.recordType(rowType.size()); this.fields = rowType.fields(); this.configuration = configuration; @@ -103,7 +107,7 @@ public class DefaultRecordUnmapper implements RecordUnmappe } private final Record newRecord() { - return DSL.using(configuration).newRecord(rowType.fields()); + return Tools.newRecord(false, recordType, row, configuration).operate(null); } private static final void setValue(Record record, Object source, java.lang.reflect.Field member, Field field)