[#8383] Emulate { UPDATE | DELETE } table AS alias in SQL Server

This commit is contained in:
lukaseder 2019-03-01 17:44:11 +01:00
parent 8aa087e5fb
commit 4e2bc62640
2 changed files with 22 additions and 10 deletions

View File

@ -47,6 +47,7 @@ import static org.jooq.SQLDialect.HSQLDB;
// ...
// ...
// ...
// ...
import static org.jooq.conf.SettingsTools.renderLocale;
import static org.jooq.impl.DSL.select;
import static org.jooq.impl.DSL.unquotedName;
@ -131,6 +132,8 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractQuery {
private final WithImpl with;
private final Table<R> table;
final SelectFieldList<SelectFieldOrAsterisk> returning;
@ -257,6 +260,8 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractQuery {
if (w != null)
ctx.visit(w).formatSeparator();

View File

@ -80,12 +80,14 @@ import static org.jooq.impl.DDLStatementType.DROP_SCHEMA;
import static org.jooq.impl.DDLStatementType.DROP_SEQUENCE;
import static org.jooq.impl.DDLStatementType.DROP_TABLE;
import static org.jooq.impl.DDLStatementType.DROP_VIEW;
import static org.jooq.impl.DSL.asterisk;
import static org.jooq.impl.DSL.concat;
import static org.jooq.impl.DSL.escape;
import static org.jooq.impl.DSL.getDataType;
import static org.jooq.impl.DSL.keyword;
import static org.jooq.impl.DSL.name;
import static org.jooq.impl.DSL.nullSafe;
import static org.jooq.impl.DSL.select;
import static org.jooq.impl.DSL.val;
import static org.jooq.impl.DefaultExecuteContext.localConnection;
import static org.jooq.impl.Identifiers.QUOTES;
@ -535,6 +537,7 @@ final class Tools {
/**
@ -2823,12 +2826,10 @@ final class Tools {
* Utility method to extract a value from a field
*/
static final <T> T extractVal(Field<T> field) {
if (isVal(field)) {
if (isVal(field))
return ((Param<T>) field).getValue();
}
else {
else
return null;
}
}
@ -2844,6 +2845,15 @@ final class Tools {
@ -2859,9 +2869,8 @@ final class Tools {
*/
@SuppressWarnings("deprecation")
static final void addConditions(org.jooq.ConditionProvider query, Record record, Field<?>... keys) {
for (Field<?> field : keys) {
for (Field<?> field : keys)
addCondition(query, record, field);
}
}
/**
@ -2871,12 +2880,10 @@ final class Tools {
static final <T> void addCondition(org.jooq.ConditionProvider provider, Record record, Field<T> field) {
// [#2764] If primary keys are allowed to be changed, the
if (updatablePrimaryKeys(settings(record))) {
if (updatablePrimaryKeys(settings(record)))
provider.addConditions(condition(field, record.original(field)));
}
else {
else
provider.addConditions(condition(field, record.get(field)));
}
}
/**