[daisy] [JIRA] Updated: (DSY-349) LocalDocumentStrategy doesn't handle null value properly

Aaron Digulla (JIRA) issues at cocoondev.org
Mon Sep 18 07:54:08 CDT 2006


     [ http://issues.cocoondev.org//browse/DSY-349?page=all ]

Aaron Digulla updated DSY-349:
------------------------------

    Attachment: setnull.patch

Please apply this patch to trunk and Daisy 1.5, I need it for my DB2 port.

> LocalDocumentStrategy doesn't handle null value properly
> --------------------------------------------------------
>
>          Key: DSY-349
>          URL: http://issues.cocoondev.org//browse/DSY-349
>      Project: Daisy
>         Type: Bug
>   Components: Repository
>     Versions: public - 1.4
>  Environment: os: Windows XP
> db: Derby 10.1
>     Reporter: pan LI
>     Priority: Minor
>  Attachments: setnull.patch
>
> In 
> LocalDocumentStrategy.storeFields(DocumentImpl document, long documentId, long versionId, Connection conn) 
> there is:
>                     stmt.setObject(9, dateValue);
>                     stmt.setObject(10, datetimeValue);
>                     stmt.setObject(11, integerValue);
>                     stmt.setObject(12, floatValue);
>                     stmt.setBigDecimal(13, decimalValue);
>                     stmt.setObject(14, booleanValue);
> All of the values can be null. As the jdbc doc suggested, we should use stmt.setNull(9, Types.DATE) to set null value to a data field.  Some databases don't care, but some databases(in my case, Derby) , this will end in a JDBC exception
> I have changed it to :
> if (dateValue != null) {
>                         stmt.setObject(9, dateValue);                        
>                     } else {
>                         stmt.setNull(9, Types.DATE);
>                     }
>                     if (datetimeValue != null) {
>                         stmt.setObject(10, datetimeValue);
>                     } else {
>                         stmt.setNull(10, Types.TIMESTAMP);
>                     }
>                     if (integerValue != null) {
>                         stmt.setObject(11, integerValue);
>                     } else {
>                         stmt.setNull(11, Types.BIGINT);
>                     }
>                     if (floatValue != null) {
>                         stmt.setObject(12, floatValue);
>                     } else {
>                         stmt.setNull(12, Types.FLOAT);
>                     }
>                     if (decimalValue != null) {
>                         stmt.setObject(13, decimalValue);
>                     } else {
>                         stmt.setNull(13, Types.DECIMAL);
>                     }
>                     if (booleanValue != null) {
>                         stmt.setObject(14, booleanValue);
>                     } else {
>                         stmt.setNull(14, Types.BOOLEAN);
>                     }
> It works well in my environment.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.cocoondev.org//secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



More information about the daisy mailing list