[jOOQ/jOOQ#7362] Excess parentheses generated in NOT operator
This commit is contained in:
parent
06c2c31907
commit
169102e69f
@ -72,6 +72,18 @@ abstract class AbstractCondition extends AbstractQueryPart implements Condition
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* [#7362] Subclasses may override this method to indicate that the
|
||||
* condition is already parenthesised, or produces syntax that render
|
||||
* parentheses around this condition unnecessary.
|
||||
* <p>
|
||||
* This can help produce excess parentheses, e.g. when this condition is
|
||||
* wrapped in {@link QOM.Not}
|
||||
*/
|
||||
boolean parenthesised(Context<?> ctx) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Clause[] clauses(Context<?> ctx) {
|
||||
return CLAUSES;
|
||||
|
||||
@ -92,6 +92,11 @@ implements
|
||||
|
||||
private static final Clause[] CLAUSES = { Clause.CONDITION, Clause.CONDITION_AND };
|
||||
|
||||
@Override
|
||||
final boolean parenthesised(Context<?> ctx) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
|
||||
|
||||
@ -113,6 +113,11 @@ package org.jooq.impl;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -94,6 +94,11 @@ implements
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
final boolean parenthesised(Context<?> ctx) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
switch (ctx.family()) {
|
||||
|
||||
@ -113,6 +113,11 @@ package org.jooq.impl;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -94,6 +94,11 @@ implements
|
||||
return !(condition instanceof AbstractCondition) || ((AbstractCondition) condition).isNullable();
|
||||
}
|
||||
|
||||
@Override
|
||||
final boolean parenthesised(Context<?> ctx) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
switch (ctx.family()) {
|
||||
@ -104,7 +109,11 @@ implements
|
||||
|
||||
|
||||
default:
|
||||
ctx.visit(K_NOT).sql(" (").visit(condition).sql(')');
|
||||
if (condition instanceof AbstractCondition && ((AbstractCondition) condition).parenthesised(ctx))
|
||||
ctx.visit(K_NOT).sql(' ').visit(condition);
|
||||
else
|
||||
ctx.visit(K_NOT).sql(" (").visit(condition).sql(')');
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -92,6 +92,11 @@ implements
|
||||
|
||||
private static final Clause[] CLAUSES = { Clause.CONDITION, Clause.CONDITION_OR };
|
||||
|
||||
@Override
|
||||
final boolean parenthesised(Context<?> ctx) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
|
||||
|
||||
@ -56,6 +56,11 @@ final class SQLCondition extends AbstractCondition implements UEmptyCondition {
|
||||
// QueryPart API
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
final boolean parenthesised(Context<?> ctx) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
switch (ctx.family()) {
|
||||
|
||||
@ -92,6 +92,11 @@ implements
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
final boolean parenthesised(Context<?> ctx) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
switch (ctx.family()) {
|
||||
|
||||
@ -113,6 +113,11 @@ package org.jooq.impl;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -84,6 +84,7 @@ final class XMLExists extends AbstractCondition implements XMLExistsPassingStep,
|
||||
// -------------------------------------------------------------------------
|
||||
// XXX: DSL API
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public final Condition passing(XML xml) {
|
||||
return passing(Tools.field(xml));
|
||||
@ -118,6 +119,11 @@ final class XMLExists extends AbstractCondition implements XMLExistsPassingStep,
|
||||
// XXX: QueryPart API
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
final boolean parenthesised(Context<?> ctx) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
switch (ctx.family()) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user