Fix for issue #2374 (INSERT .. RETURNING always returns null for dynamically created tables)

This commit is contained in:
Sven Jacobs 2013-04-05 11:45:05 +02:00
parent caa173e5bd
commit 1685351e82

View File

@ -35,6 +35,7 @@
*/
package org.jooq.impl;
import static org.jooq.impl.Utils.field;
import static org.jooq.impl.Utils.fieldArray;
import static org.jooq.util.sqlite.SQLiteFactory.rowid;
@ -383,6 +384,21 @@ abstract class AbstractStoreQuery<R extends Record> extends AbstractQuery implem
.where(field.in(ids))
.fetchInto(into);
}
// We don't have an identity, maybe because the table has been dynamically created
// with Factory#tableByName(). In that case return an "anonymous" result which contains
// the generated ids.
} else {
final Field<Object> idField = field(null);
final ResultImpl<R> result = new ResultImpl<R>(configuration, idField);
for (final Object value : values) {
final Record record = Utils.newRecord(RecordImpl.class, new Field[] {idField});
record.setValue(idField, value);
result.addRecord((R) record);
}
returned = result;
}
}
}