protected Binding getBinding() { return getContext().getBinding(); }
@Override public void beforeTemplating(PreparedStatement stmt, StatementContext ctx) throws SQLException { final Set<String> alreadyDefined = ctx.getAttributes().keySet(); final Binding binding = ctx.getBinding(); binding.getNames().stream() .filter(name -> !alreadyDefined.contains(name)) .forEach(name -> binding.findForName(name, ctx).ifPresent( a -> ctx.define(name, a instanceof NullArgument ? false : true))); } }
@Override public void logBeforeExecution(StatementContext context) { context.getBinding().findForPosition(0).ifPresent(value -> positional = Objects.toString(value)); context.getBinding().findForName(NAME, context).ifPresent(value -> named = Objects.toString(value)); } });
@Override public void logBeforeExecution(StatementContext context) { attributes.add(context.getAttributes()); context.getBinding().findForPosition(0).ifPresent(a -> bindings.add(a.toString())); }
@Override public void logException(StatementContext context, SQLException ex) { attributes.add(context.getAttributes()); context.getBinding().findForPosition(0).ifPresent(a -> bindings.add(a.toString())); }
@Override public void logAfterExecution(StatementContext context) { attributes.add(context.getAttributes()); context.getBinding().findForPosition(0).ifPresent(a -> bindings.add(a.toString())); }
@Override public String getMessage() { String base = super.getMessage(); StatementContext ctx = getStatementContext(); if (ctx == null) { return base; } else { return String.format("%s [statement:\"%s\", rewritten:\"%s\", parsed:\"%s\", arguments:%s]", base, ctx.getRawSql(), ctx.getRenderedSql(), ctx.getParsedSql(), ctx.getBinding()); } } }
@Override public void logBeforeExecution(StatementContext ctx) { String toString = ctx.getBinding() .findForName(name, ctx) .orElseThrow(AssertionError::new) .toString(); insertedTimestamp = OffsetDateTime.parse(toString); insertedSqlTimestamp = Timestamp.from(insertedTimestamp.toInstant()); }
@Test public void testContextGetsBinding() { try { h.prepareBatch("insert into something (id, name) values (:id, :name)") .bind("id", 0) .bind("name", "alice") .add() .bind("id", 0) .bind("name", "bob") .add() .execute(); fail("expected exception"); } catch (UnableToExecuteStatementException e) { final StatementContext ctx = e.getStatementContext(); assertThat(ctx.getBinding().findForName("name", ctx).toString()).contains("bob"); } }
protected Binding getBinding() { return getContext().getBinding(); }
@Override public String getMessage() { String base = super.getMessage(); StatementContext ctx = getStatementContext(); if (ctx == null) { return base; } else { return String.format("%s [statement:\"%s\", rewritten:\"%s\", parsed:\"%s\", arguments:%s]", base, ctx.getRawSql(), ctx.getRenderedSql(), ctx.getParsedSql(), ctx.getBinding()); } } }
@Override public void logBeforeExecution(StatementContext ctx) { String toString = ctx.getBinding() .findForName(name, ctx) .orElseThrow(AssertionError::new) .toString(); timestamp = OffsetDateTime.parse(toString); sqlTimestamp = Timestamp.from(timestamp.toInstant()); }