You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by fa...@apache.org on 2010/07/17 02:16:39 UTC
svn commit: r964989 - in
/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel:
JDBCStoreQuery.java exps/JDBCExpressionFactory.java
Author: faywang
Date: Sat Jul 17 00:16:39 2010
New Revision: 964989
URL: http://svn.apache.org/viewvc?rev=964989&view=rev
Log:
OPENJPA-1726: fix boolean literal for Postgres
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/JDBCExpressionFactory.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java?rev=964989&r1=964988&r2=964989&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java Sat Jul 17 00:16:39 2010
@@ -49,6 +49,7 @@ import org.apache.openjpa.jdbc.meta.stra
import org.apache.openjpa.jdbc.schema.Column;
import org.apache.openjpa.jdbc.schema.Table;
import org.apache.openjpa.jdbc.sql.DBDictionary;
+import org.apache.openjpa.jdbc.sql.PostgresDictionary;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.SQLExceptions;
import org.apache.openjpa.jdbc.sql.Select;
@@ -142,7 +143,10 @@ public class JDBCStoreQuery
}
protected ExpressionFactory getExpressionFactory(ClassMetaData meta) {
- return new JDBCExpressionFactory((ClassMapping) meta);
+ JDBCExpressionFactory factory = new JDBCExpressionFactory((ClassMapping) meta);
+ if (_store.getDBDictionary() instanceof PostgresDictionary)
+ factory.setBooleanLiteralAsNumeric(false);
+ return factory;
}
protected ResultObjectProvider executeQuery(Executor ex,
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/JDBCExpressionFactory.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/JDBCExpressionFactory.java?rev=964989&r1=964988&r2=964989&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/JDBCExpressionFactory.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/JDBCExpressionFactory.java Sat Jul 17 00:16:39 2010
@@ -25,6 +25,7 @@ import org.apache.openjpa.jdbc.meta.Clas
import org.apache.openjpa.jdbc.meta.Discriminator;
import org.apache.openjpa.jdbc.meta.strats.NoneDiscriminatorStrategy;
import org.apache.openjpa.jdbc.sql.DBDictionary;
+import org.apache.openjpa.jdbc.sql.PostgresDictionary;
import org.apache.openjpa.jdbc.sql.Raw;
import org.apache.openjpa.kernel.exps.AggregateListener;
import org.apache.openjpa.kernel.exps.Arguments;
@@ -57,6 +58,8 @@ public class JDBCExpressionFactory
private final ClassMapping _type;
private final SelectConstructor _cons = new SelectConstructor();
private int _getMapValueAlias = 0;
+
+ private boolean _isBooleanLiteralAsNumeric = true;
/**
* Constructor. Supply the type we're querying against.
@@ -65,6 +68,10 @@ public class JDBCExpressionFactory
_type = type;
}
+ public void setBooleanLiteralAsNumeric(boolean isBooleanLiteralAsNumeric) {
+ _isBooleanLiteralAsNumeric = isBooleanLiteralAsNumeric;
+ }
+
/**
* Use to create SQL select.
*/
@@ -504,10 +511,11 @@ public class JDBCExpressionFactory
pType == Literal.TYPE_STRING)
value.append("'").append(lit.getValue().toString()).append("'");
else if (pType == Literal.TYPE_BOOLEAN) {
- if ((Boolean) lit.getValue())
- value.append("1");
+ Boolean boolVal = (Boolean)lit.getValue();
+ if (_isBooleanLiteralAsNumeric)
+ value.append(boolVal ? "1" : "0");
else
- value.append("0");
+ value.append(boolVal ? "true" : "false");
} else if (pType == Literal.TYPE_ENUM) {
lit.setRaw(true);
return val;