[jOOQ/jOOQ#17512] Oracle RETURNING emulation doesn't use configured
ConverterProvider from an AutoConverter
This commit is contained in:
parent
a9c0a4c431
commit
2e24767aca
@ -73,6 +73,7 @@ import static org.jooq.SQLDialect.SQLITE;
|
||||
import static org.jooq.SQLDialect.TRINO;
|
||||
// ...
|
||||
import static org.jooq.conf.SettingsTools.renderLocale;
|
||||
import static org.jooq.impl.AbstractDataType.convert0;
|
||||
import static org.jooq.impl.CommonTableExpressionList.markTopLevelCteAndAccept;
|
||||
import static org.jooq.impl.DSL.name;
|
||||
import static org.jooq.impl.DSL.select;
|
||||
@ -99,11 +100,15 @@ import static org.jooq.impl.Tools.EMPTY_FIELD;
|
||||
import static org.jooq.impl.Tools.EMPTY_STRING;
|
||||
import static org.jooq.impl.Tools.anyMatch;
|
||||
import static org.jooq.impl.Tools.autoAlias;
|
||||
import static org.jooq.impl.Tools.converterContext;
|
||||
import static org.jooq.impl.Tools.flattenCollection;
|
||||
import static org.jooq.impl.Tools.increment;
|
||||
import static org.jooq.impl.Tools.map;
|
||||
import static org.jooq.impl.Tools.newRecord;
|
||||
import static org.jooq.impl.Tools.reference;
|
||||
import static org.jooq.impl.Tools.removeGenerator;
|
||||
import static org.jooq.impl.Tools.row0;
|
||||
import static org.jooq.impl.Tools.setValue;
|
||||
import static org.jooq.impl.Tools.unalias;
|
||||
import static org.jooq.impl.Tools.updateQueryImpl;
|
||||
import static org.jooq.impl.Tools.BooleanDataKey.DATA_UNALIAS_ALIASED_EXPRESSIONS;
|
||||
@ -133,10 +138,12 @@ import java.util.function.BiFunction;
|
||||
|
||||
import org.jooq.Asterisk;
|
||||
import org.jooq.Binding;
|
||||
import org.jooq.BindingGetResultSetContext;
|
||||
import org.jooq.CommonTableExpression;
|
||||
import org.jooq.Condition;
|
||||
import org.jooq.Configuration;
|
||||
import org.jooq.Context;
|
||||
import org.jooq.ConverterContext;
|
||||
import org.jooq.DMLQuery;
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.DataType;
|
||||
@ -1301,6 +1308,9 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -44,6 +44,7 @@ import org.jooq.Configuration;
|
||||
import org.jooq.ContextConverter;
|
||||
import org.jooq.Converter;
|
||||
import org.jooq.ConverterContext;
|
||||
import org.jooq.exception.DataTypeException;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -71,7 +72,14 @@ public /* non-final */ class AutoConverter<T, U> extends AbstractContextConverte
|
||||
|
||||
private final ContextConverter<T, U> delegate(ConverterContext ctx) {
|
||||
Converter<T, U> c = ctx.configuration().converterProvider().provide(fromType(), toType());
|
||||
return scoped(c != null ? c : CONFIG.get().converterProvider().provide(fromType(), toType()));
|
||||
|
||||
if (c == null)
|
||||
c = CONFIG.get().converterProvider().provide(fromType(), toType());
|
||||
|
||||
if (c == null)
|
||||
throw new DataTypeException("Cannot auto convert from " + fromType() + " to " + toType());
|
||||
else
|
||||
return scoped(c);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -97,6 +97,7 @@ import static org.jooq.conf.SettingsTools.updatablePrimaryKeys;
|
||||
import static org.jooq.conf.ThrowExceptions.THROW_FIRST;
|
||||
import static org.jooq.conf.ThrowExceptions.THROW_NONE;
|
||||
import static org.jooq.exception.DataAccessException.sqlStateClass;
|
||||
import static org.jooq.impl.AbstractDataType.convert0;
|
||||
import static org.jooq.impl.CacheType.REFLECTION_CACHE_GET_ANNOTATED_GETTER;
|
||||
import static org.jooq.impl.CacheType.REFLECTION_CACHE_GET_ANNOTATED_MEMBERS;
|
||||
import static org.jooq.impl.CacheType.REFLECTION_CACHE_GET_ANNOTATED_SETTERS;
|
||||
@ -3761,14 +3762,14 @@ final class Tools {
|
||||
* Type-safely set a value to a record
|
||||
*/
|
||||
static final <T> void setValue(Record target, Field<T> targetField, Object value, ConverterContext cc) {
|
||||
target.set(targetField, ((AbstractDataType<T>) targetField.getDataType()).convert(value, cc));
|
||||
target.set(targetField, convert0(targetField.getDataType(), value, cc));
|
||||
}
|
||||
|
||||
/**
|
||||
* Type-safely set a value to a record
|
||||
*/
|
||||
static final <T> void setValue(AbstractRecord target, Field<T> targetField, int targetIndex, Object value, ConverterContext cc) {
|
||||
target.set(targetField, targetIndex, ((AbstractDataType<T>) targetField.getDataType()).convert(value, cc));
|
||||
target.set(targetField, targetIndex, convert0(targetField.getDataType(), value, cc));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user