Posted by
Leon Torres-2 on
URL: http://ofbiz.116.s1.nabble.com/Dev-Derby-BLOB-problem-tp166851p166853.html
Hi Jacopo, I was able to reproduce it in OFBiz but only after applying the patch called psql-label-image.patch from
http://jira.undersunconsulting.com/browse/OFBIZ-334I've attached it for convenience. This patch resolves an issue with PostgreSQL 8.0 and others, which is why it was
applied to sequoiaerp. But it broke Derby. I suspect it's because Derby doesn't have a BINARY type and this code is
setting BINARY.
- Leon
Jacopo Cappellato wrote:
> Hi Leon,
>
> I've run the tests in the latest SVN rev with Derby and all the tests
> completed without errors.
>
> Can you reproduce it in OFBiz too?
>
> Jacopo
>
>
> Leon Torres wrote:
>
>>Hi folks,
>>
>>I ran the updated EntityTestSuite with the BLOB tests on a fresh Sequoiaerp 0.8.3. (This involves copying the java file
>>and the entity*_test.xml from framework/entity and doing ant run-tests).
>>
>>The Entity Engine is still crashing when trying to create/read BLOBS. The test suite's messages are:
>>
>>
>>[JUNIT] ---------------------------- FAILURES ---------------------------- [JUNIT]
>>[java] 67960 (main) [ JunitContainer.java:104:INFO ] --> testSetNullBlob(org.ofbiz.entity.test.EntityTestSuite):
>>GenericEntityException:org.ofbiz.entity.GenericEntityException: Exception while inserting the following entity:
>>[GenericEntity:TestBlob][createdStamp,2006-02-10 10:00:16.54(java.sql.Timestamp)][createdTxStamp,2006-02-10
>>10:00:16.539(java.sql.Timestamp)][lastUpdatedStamp,2006-02-10
>>10:00:16.54(java.sql.Timestamp)][lastUpdatedTxStamp,2006-02-10
>>10:00:16.539(java.sql.Timestamp)][testBlobId,null-blob(java.lang.String)] (while inserting:
>>[GenericEntity:TestBlob][createdStamp,2006-02-10 10:00:16.54(java.sql.Timestamp)][createdTxStamp,2006-02-10
>>10:00:16.539(java.sql.Timestamp)][lastUpdatedStamp,2006-02-10
>>10:00:16.54(java.sql.Timestamp)][lastUpdatedTxStamp,2006-02-10
>>10:00:16.539(java.sql.Timestamp)][testBlobId,null-blob(java.lang.String)]
>>
>>(SQL Exception while setting value on field [testBlobField] of entity TestBlob: (An attempt was made to get a data
>>value of type 'BLOB' from a data value of type 'BINARY'.)))
>>
>>
>>And the exception trace where the error occurs reads:
>>
>>[java] ---- stack trace ---------------------------------------------------------------
>>[java] org.ofbiz.entity.GenericEntityException: Exception while inserting the following entity:
>>[GenericEntity:TestBlob][createdStamp,2006-02-10 10:00:16.54(java.sql.Timestamp)][createdTxStamp,2006-02-10
>>10:00:16.539(java.sql.Timestamp)][lastUpdatedStamp,2006-02-10
>>10:00:16.54(java.sql.Timestamp)][lastUpdatedTxStamp,2006-02-10
>>10:00:16.539(java.sql.Timestamp)][testBlobId,null-blob(java.lang.String)] (while inserting:
>>[GenericEntity:TestBlob][createdStamp,2006-02-10 10:00:16.54(java.sql.Timestamp)][createdTxStamp,2006-02-10
>>10:00:16.539(java.sql.Timestamp)][lastUpdatedStamp,2006-02-10
>>10:00:16.54(java.sql.Timestamp)][lastUpdatedTxStamp,2006-02-10
>>10:00:16.539(java.sql.Timestamp)][testBlobId,null-blob(java.lang.String)] (SQL Exception while setting value on field
>>[testBlobField] of entity TestBlob: (An attempt was made to get a data value of type 'BLOB' from a data value of type
>>'BINARY'.)))
>>
>>[java] org.ofbiz.entity.datasource.GenericDAO.insert(GenericDAO.java:140)
>>[java] org.ofbiz.entity.datasource.GenericHelperDAO.create(GenericHelperDAO.java:75)
>>[java] org.ofbiz.entity.GenericDelegator.create(GenericDelegator.java:582)
>>[java] org.ofbiz.entity.GenericDelegator.create(GenericDelegator.java:547)
>>[java] org.ofbiz.entity.test.EntityTestSuite.testSetNullBlob(EntityTestSuite.java:531)
>>
>>Any ideas why this might be happening?
>>
>>- Leon
>>
>>_______________________________________________
>>Dev mailing list
>>
[hidden email]
>>
http://lists.ofbiz.org/mailman/listinfo/dev>>
>
>
>
> _______________________________________________
> Dev mailing list
>
[hidden email]
>
http://lists.ofbiz.org/mailman/listinfo/dev>
Index: framework/entity/fieldtype/fieldtypepostgres.xml
===================================================================
--- framework/entity/fieldtype/fieldtypepostgres.xml
+++ framework/entity/fieldtype/fieldtypepostgres.xml
@@ -27,7 +27,7 @@
xsi:noNamespaceSchemaLocation="
http://www.ofbiz.org/dtds/fieldtypemodel.xsd">
<!-- ===================== field-type-def ==================== -->
<!-- General Types -->
- <field-type-def type="blob" sql-type="OID" java-type="java.lang.Object"></field-type-def>
+ <field-type-def type="blob" sql-type="BYTEA" java-type="java.lang.Object"></field-type-def>
<field-type-def type="date-time" sql-type="TIMESTAMPTZ" java-type="java.sql.Timestamp"></field-type-def>
<field-type-def type="date" sql-type="DATE" java-type="java.sql.Date"></field-type-def>
Index: applications/product/src/org/ofbiz/shipment/shipment/ShipmentEvents.java
===================================================================
--- applications/product/src/org/ofbiz/shipment/shipment/ShipmentEvents.java
+++ applications/product/src/org/ofbiz/shipment/shipment/ShipmentEvents.java
@@ -70,8 +70,8 @@
return "error";
}
- ByteWrapper byteWrapper = (ByteWrapper) shipmentPackageRouteSeg.get("labelImage");
- if (byteWrapper == null || byteWrapper.getBytes().length == 0) {
+ byte[] bytes = shipmentPackageRouteSeg.getBytes("labelImage");
+ if (bytes == null || bytes.length == 0) {
request.setAttribute("_ERROR_MESSAGE_", "The ShipmentPackageRouteSeg was found where shipmentId=[" + shipmentId + "], shipmentRouteSegmentId=[" + shipmentRouteSegmentId + "], shipmentPackageSeqId=[" + shipmentPackageSeqId + "], but there was no labelImage on the value.");
return "error";
}
@@ -79,10 +79,10 @@
// TODO: record the image format somehow to make this block nicer. Right now we're just trying GIF first as a default, then if it doesn't work, trying PNG.
// It would be nice to store the actual type of the image alongside the image data.
try {
- UtilHttp.streamContentToBrowser(response, byteWrapper.getBytes(), "image/gif");
+ UtilHttp.streamContentToBrowser(response, bytes, "image/gif");
} catch (IOException e1) {
try {
- UtilHttp.streamContentToBrowser(response, byteWrapper.getBytes(), "image/png");
+ UtilHttp.streamContentToBrowser(response, bytes, "image/png");
} catch (IOException e2) {
String errorMsg = "Error writing labelImage to OutputStream: " + e2.toString();
Debug.logError(e2, errorMsg, module);
Index: framework/entity/src/org/ofbiz/entity/jdbc/SQLProcessor.java
===================================================================
--- framework/entity/src/org/ofbiz/entity/jdbc/SQLProcessor.java
+++ framework/entity/src/org/ofbiz/entity/jdbc/SQLProcessor.java
@@ -775,7 +775,7 @@
throw new SQLException(ex.getMessage());
}
} else {
- _ps.setNull(_ind, Types.BLOB);
+ _ps.setNull(_ind, Types.BINARY);
}
_ind++;
_______________________________________________
Dev mailing list
[hidden email]
http://lists.ofbiz.org/mailman/listinfo/dev