mirror of
https://github.com/apache/openjpa.git
synced 2025-02-21 17:45:51 +00:00
OPENJPA-607 Extraneous "( )" on DISTINCT, ALL, ANY results in SQL syntax errors on some database systems
git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@659027 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
11f4d0d7ad
commit
47f681a7b5
@ -27,7 +27,7 @@ class All
|
||||
extends UnaryOp {
|
||||
|
||||
public All(Val val) {
|
||||
super(val);
|
||||
super(val, true);
|
||||
}
|
||||
|
||||
protected String getOperator() {
|
||||
|
@ -27,7 +27,7 @@ class Any
|
||||
extends UnaryOp {
|
||||
|
||||
public Any(Val val) {
|
||||
super(val);
|
||||
super(val, true);
|
||||
}
|
||||
|
||||
protected String getOperator() {
|
||||
|
@ -30,7 +30,7 @@ class Distinct
|
||||
extends UnaryOp {
|
||||
|
||||
public Distinct(Val val) {
|
||||
super(val);
|
||||
super(val, true);
|
||||
}
|
||||
|
||||
public ExpState initialize(Select sel, ExpContext ctx, int flags) {
|
||||
@ -41,18 +41,4 @@ class Distinct
|
||||
protected String getOperator() {
|
||||
return "DISTINCT";
|
||||
}
|
||||
|
||||
|
||||
public void appendTo(Select sel, ExpContext ctx, ExpState state,
|
||||
SQLBuffer sql, int index) {
|
||||
if (sel.getConfiguration().getDBDictionaryInstance().platform.indexOf(
|
||||
"Informix") > -1) {
|
||||
sql.append(getOperator());
|
||||
sql.append(" ");
|
||||
getValue().appendTo(sel, ctx, state, sql, 0);
|
||||
sql.addCastForParam(getOperator(), getValue());
|
||||
}
|
||||
else
|
||||
super.appendTo(sel, ctx, state, sql, index);
|
||||
}
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ abstract class UnaryOp
|
||||
private final Val _val;
|
||||
private ClassMetaData _meta = null;
|
||||
private Class _cast = null;
|
||||
private boolean _noParen = false;
|
||||
|
||||
/**
|
||||
* Constructor. Provide the value to operate on.
|
||||
@ -46,6 +47,11 @@ abstract class UnaryOp
|
||||
public UnaryOp(Val val) {
|
||||
_val = val;
|
||||
}
|
||||
|
||||
public UnaryOp(Val val, boolean noParen) {
|
||||
_val = val;
|
||||
_noParen = noParen;
|
||||
}
|
||||
|
||||
protected Val getValue() {
|
||||
return _val;
|
||||
@ -123,10 +129,11 @@ abstract class UnaryOp
|
||||
public void appendTo(Select sel, ExpContext ctx, ExpState state,
|
||||
SQLBuffer sql, int index) {
|
||||
sql.append(getOperator());
|
||||
sql.append("(");
|
||||
sql.append(_noParen ? " " : "(");
|
||||
_val.appendTo(sel, ctx, state, sql, 0);
|
||||
sql.addCastForParam(getOperator(), _val);
|
||||
sql.append(")");
|
||||
if (!_noParen)
|
||||
sql.append(")");
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user