[jOOQ/jOOQ#15595] DefaultStringBinding should bind java.sql.Clob for

CLOB types in Oracle MERGE statements

This includes:

- [jOOQ/jOOQ#15724] BindingSetStatementContext should reference actual
ExecuteContext, if available
This commit is contained in:
Lukas Eder 2023-10-20 12:01:38 +02:00
parent fb351a48f2
commit 28e5653c28
6 changed files with 34 additions and 5 deletions

View File

@ -341,7 +341,7 @@ abstract class AbstractQuery<R extends Record> extends AbstractAttachableQueryPa
listener.bindStart(ctx);
if (rendered.bindValues != null)
using(c).bindContext(ctx.statement()).visit(rendered.bindValues);
new DefaultBindContext(c, ctx, ctx.statement()).visit(rendered.bindValues);
listener.bindEnd(ctx);
}

View File

@ -574,7 +574,7 @@ implements
ctx.statement().setQueryTimeout(t);
listener.bindStart(ctx);
using(configuration).bindContext(ctx.statement()).visit(this);
new DefaultBindContext(configuration, ctx, ctx.statement()).visit(this);
registerOutParameters(ctx);
listener.bindEnd(ctx);

View File

@ -62,9 +62,14 @@ final class DefaultBindContext extends AbstractBindContext {
int nextIndex = nextIndex();
try {
((Field<Object>) field).getBinding().set(
new DefaultBindingSetStatementContext<>(new SimpleExecuteContext(configuration(), data()), stmt, nextIndex, value)
);
((Field<Object>) field).getBinding().set(new DefaultBindingSetStatementContext<>(
executeContext() != null
? executeContext()
: new SimpleExecuteContext(configuration(), data()),
stmt,
nextIndex,
value
));
}
// [#14696] Maintain SQLState and ErrorCode if the exception is from the driver

View File

@ -282,6 +282,7 @@ import org.jooq.exception.MappingException;
import org.jooq.exception.SQLDialectNotSupportedException;
import org.jooq.impl.Cast.CastNative;
import org.jooq.impl.R2DBC.R2DBCPreparedStatement;
import org.jooq.impl.Tools.ExtendedDataKey;
import org.jooq.tools.JooqLogger;
import org.jooq.tools.Longs;
import org.jooq.tools.StringUtils;
@ -4529,6 +4530,17 @@ public class DefaultBinding<T, U> implements Binding<T, U> {
@Override
final void set0(BindingSetStatementContext<U> ctx, String value) throws SQLException {
ctx.statement().setString(ctx.index(), value);
}

View File

@ -1313,6 +1313,12 @@ implements
if (with != null)
ctx.visit(with);

View File

@ -935,6 +935,12 @@ final class Tools {