You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2014/02/02 13:55:27 UTC
svn commit: r1563605 - in
/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne:
access/ReturnTypesMappingTest.java unit/MySQLUnitDbAdapter.java
unit/UnitDbAdapter.java
Author: aadamchik
Date: Sun Feb 2 12:55:26 2014
New Revision: 1563605
URL: http://svn.apache.org/r1563605
Log:
fixing REAL unit test on MySQL
Modified:
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/MySQLUnitDbAdapter.java
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java
Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java?rev=1563605&r1=1563604&r2=1563605&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java Sun Feb 2 12:55:26 2014
@@ -600,8 +600,16 @@ public class ReturnTypesMappingTest exte
DataRow testRead = (DataRow) context.performQuery(q).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
- assertEquals(Float.class, columnValue.getClass());
- assertEquals(realValue, columnValue);
+
+ // MySQL can treat REAL as either DOUBLE or FLOAT depending on the
+ // engine settings
+ if (unitDbAdapter.realAsDouble()) {
+ assertEquals(Double.class, columnValue.getClass());
+ assertEquals(Double.valueOf(realValue), (Double) columnValue, 0.0001);
+ } else {
+ assertEquals(Float.class, columnValue.getClass());
+ assertEquals(realValue, columnValue);
+ }
}
public void testREAL2() throws Exception {
Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/MySQLUnitDbAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/MySQLUnitDbAdapter.java?rev=1563605&r1=1563604&r2=1563605&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/MySQLUnitDbAdapter.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/MySQLUnitDbAdapter.java Sun Feb 2 12:55:26 2014
@@ -55,6 +55,13 @@ public class MySQLUnitDbAdapter extends
public boolean supportsCatalogs() {
return true;
}
+
+ @Override
+ public boolean realAsDouble() {
+ // this actually depends on the "sql_mode" var in MYSQL. However the
+ // default is REAL == DOUBLE
+ return true;
+ }
@Override
public boolean supportsLobs() {
Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java?rev=1563605&r1=1563604&r2=1563605&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/unit/UnitDbAdapter.java Sun Feb 2 12:55:26 2014
@@ -74,6 +74,16 @@ public class UnitDbAdapter {
public String getIdentifiersEndQuote() {
return "\"";
}
+
+ /**
+ * Returns whether the target DB treats REAL values as DOUBLEs. Default is
+ * false, i.e. REALs are treated as FLOATs.
+ *
+ * @return
+ */
+ public boolean realAsDouble() {
+ return false;
+ }
/**
* Drops all table constraints.