[jOOQ/jOOQ#10499] Refactor INSERT .. VALUES flattening of embeddables

This commit is contained in:
Lukas Eder 2020-09-01 21:05:10 +02:00
parent 844dd8ad24
commit d8e8f0e045

View File

@ -542,6 +542,14 @@ final class FieldMapsForInsert extends AbstractQueryPart {
Set<Field<?>> overlapping = null;
for (Entry<Field<?>, List<Field<?>>> entry : values.entrySet()) {
// [#2530] [#6124] [#10481] TODO: Refactor and optimise these flattening algorithms
if (entry.getKey().getDataType().isEmbeddable()) {
List<Iterator<? extends Field<?>>> value = new ArrayList<>(entry.getValue().size());
for (Field<?> f : entry.getValue())
value.add(flatten(f).iterator());
for (Field<?> key : flatten(entry.getKey())) {
@ -551,23 +559,17 @@ final class FieldMapsForInsert extends AbstractQueryPart {
{
List<Field<?>> list = new ArrayList<>(entry.getValue().size());
for (Iterator<? extends Field<?>> v : value)
list.add(v.hasNext() ? v.next() : null);
result.put(key, list);
}
}
}
else
result.put(entry.getKey(), entry.getValue());
}