OPENJPA-1440: Allow COUNT(*) syntax when DBDictionary.useWildCardForCount=true

git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@892949 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Pinaki Poddar 2009-12-21 19:57:11 +00:00
parent 14a0241792
commit ac6dab1d07
1 changed files with 17 additions and 0 deletions

View File

@ -18,6 +18,7 @@
*/
package org.apache.openjpa.jdbc.kernel.exps;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
/**
@ -51,5 +52,21 @@ class Count
public boolean isAggregate() {
return true;
}
/**
* Overrides SQL formation by replacing COUNT(column) by COUNT(*) when specific conditions are met and
* DBDictionary configuration <code>useWildCardForCount</code> is set.
*/
@Override
public void appendTo(Select sel, ExpContext ctx, ExpState state, SQLBuffer sql, int index) {
super.appendTo(sel, ctx, state, sql, index);
if (ctx.store.getDBDictionary().useWildCardForCount && state.joins.isEmpty()) {
String s = sql.getSQL();
if (s.startsWith("COUNT(") && s.endsWith(")")) {
sql.replaceSqlString("COUNT(".length(), s.length()-1, "*");
}
}
}
}