Hi Jon,

Sorry for the late reply, a 'testing-project' would be perfect if you
still have it lying around.

Francis

On 20 June 2012 09:59, jon frias <[email protected]> wrote:
> hello all,
>
> First of all, thank you all very much for your quick responses.
>
> I have tried the solution suggested by Vladimir and it works ok for me. The
> BLOB fields are accessible and testing more actions like delete it on
> cascade and other stuff and all it works also.
>
> @Francis: Do you want me to send you my "testing-project"? It is formed
> just by 3 java classes (DBTables), another class for the main methods, and
> the last one with the unit tests.If you want to check in detail what the
> problem is, just let me know.
>
> As I said, thank you all for your support and best regards.
>
> Jon Frias
>
>
> Forwarded message ----------
>> From: Vladimir Lahoda <[email protected]>
>> Date: 2012/6/19
>> Subject: Re: empire db possible bug: blob data type is not working
>> under queries execution commands
>> To: [email protected]
>>
>>
>> Hi,
>>
>> I encountered this problem too and the solution was to override the
>> getResultValue method in the driver like this:
>>
>>     ...  driver = new DBDatabaseDriverPostgreSQL(){
>>
>>                        @Override
>>                        public Object getResultValue(ResultSet rset,
>> int columnIndex, DataType dataType) throws SQLException {
>>                            if (dataType == DataType.BLOB){
>>                                InputStream is =
>> rset.getBinaryStream(columnIndex);
>>                                if (is == null){
>>                                    return new byte[]{};
>>                                }
>>                                try{
>>                                    return ByteStreams.toByteArray(is);
>>  //Google Guava utility method
>>                                }catch (Exception e) {
>>                                    LOG.log(Level.SEVERE, "",e);  //JDK
>> logging
>>                                    return new byte[]{};
>>                                }
>>                                finally{
>>                                    if (is != null)
>>                                        try {
>>                                            is.close();
>>                                        } catch (Exception e) {}
>>                                }
>>                            } else{
>>                                return super.getResultValue(rset,
>> columnIndex, dataType);
>>                            }
>>                        }
>>
>>                    };
>>
>> It works fine, but it is usable only for relatively small blobs that
>> fit in memory. I think that for really large blobs it is not feasible
>> to use the DBReader.getValue method anyway, in such case the resultset
>> streaming API should be used directly.
>>
>> Regards,
>>
>> Vladimir
>>
>> On 19. 6. 2012, at 10:48, Francis De Brabandere wrote:
>>
>> > I can try to reproduce this on my machine but a simple (unit) test
>> > that reproduces this would be welcome.
>> >
>> > Cheers,
>> > Francis
>> >
>> > On 19 June 2012 10:34, Rainer Döbele <[email protected]> wrote:
>> >> Hi Frias,
>> >>
>> >>
>> >>
>> >> unfortunately I am not able to verify your bug as I have no PostgreSQL
>> database available.
>> >>
>> >>
>> >>
>> >> From your description I assume that you have declared your Column
>> ADDRESSBOOK.INFORMATION as DataType.BLOB.
>> >>
>> >> As far as I can see from the PostgreSQL Driver, the BLOB data type is
>> mapped to the PostgreSQL Type "bytea".
>> >>
>> >> I don't know what the difference between the PostgreSQL Type "long" and
>> "bytea" is, but this might be the cause of the problem.
>> >>
>> >>
>> >>
>> >> If possible could you please set a breakpoint on the function
>> getResultValue(...) in class
>> org.apache.empire.db.postgresql.DBDatabaseDriverPostgreSQL.
>> >>
>> >> I assume that the method getBlob(columnIndex) on the JDBC ResultSet
>> fails.
>> >>
>> >> We then need to find out, which other method must be used to retrieve
>> the value of type long.
>> >>
>> >>
>> >>
>> >> Regards
>> >>
>> >> Rainer
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> from: Frias Inchausti, Jon [mailto:[email protected]]
>> >> to: [email protected]
>> >> re: empire db possible bug: blob data type is not working under queries
>> execution commands
>> >>
>> >>
>> >>
>> >> Hi all,
>> >>
>> >>
>> >>
>> >> My name is Jon Frias and I am working under the version 2.3.1-SNAPSHOT
>> of empire db and posgresql driver. (I have already created a bug issue, you
>> can find it at: https://issues.apache.org/jira/browse/EMPIREDB-147 )
>> >>
>> >>
>> >>
>> >> The possible bug I have detected is the following:
>> >>
>> >> When I execute a query on a data table which contains a blob data type,
>> it returns this error message:
>> >>
>> >>
>> >>
>> >> 140 [main] INFO org.apache.empire.exceptions.EmpireException - An Error
>> occured. Message is: The database operation failed. Native error is: Bad
>> value for type long : \x01000100
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> For example: I have a data table with 3 data fields (Integer, String
>> and BLOB).
>> >>
>> >> The database is created correctly with different data types.
>> >>
>> >>
>> >>
>> >> The code I use to execute a query command is the following:
>> >>
>> >>
>> >>
>> >> /**
>> >> * Gets the address books.
>> >> *
>> >> * @return the address books
>> >> */
>> >> public List<addressBookBean> getAddressBooks(){
>> >> List<addressBookBean> myABs = new ArrayList<addressBookBean>();
>> >>
>> >> DBCommand cmd = db.createCommand();
>> >> cmd.select(db.ADDRESSBOOK.ADDRESS_BOOK_ID, db.ADDRESSBOOK.LOCATION,
>> db.ADDRESSBOOK.INFORMATION);
>> >>
>> >> DBReader reader = new DBReader();
>> >> reader.open(cmd, conn);
>> >> while(reader.moveNext()){
>> >> myABs.add(new addressBookBean(
>> >> reader.getInt(db.ADDRESSBOOK.ADDRESS_BOOK_ID),
>> >> reader.getString(db.ADDRESSBOOK.LOCATION),
>> >> (byte[]) reader.getValue(db.ADDRESSBOOK.INFORMATION)));
>> >> }
>> >>
>> >> return myABs;
>> >> }
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> Thanks a lot for your time and if any further information is required,
>> don't hesitate and let me know.
>> >>
>> >> Best Regards,
>> >>
>> >> Jon
>> >>
>> >> PS: I opened an issue about a bug with the BLOB data type when the sql
>> script is generated for creating the database. the error message was very
>> similar and it was totally fixed. Maybe it can help. The issue is the
>> following:
>> >>
>> https://issues.apache.org/jira/browse/EMPIREDB-146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13288425#comment-13288425
>> >>
>> >>
>> >>
>> >> Jon Frias Inchausti
>> >>
>> >> Investigador
>> >>
>> >> Researcher
>> >>
>> >>
>> >>
>> >> UNIDAD DE SISTEMAS INDUSTRIALES /
>> >>
>> >> INDUSTRIAL SYSTEMS UNIT
>> >>
>> >>
>> >>
>> >> División Industria y Transporte /
>> >>
>> >> Industry and Transport Division
>> >>
>> >>
>> >>
>> >> TECNALIA
>> >>
>> >> Paseo Mikeletegi 7 - Parque Tecnológico
>> >>
>> >> E-20009 Donostia - San Sebastián (Gipuzkoa, Spain)
>> >>
>> >> Telf Industry & Transport Division: (+34) 943 105115 or 902 760 002
>> >>
>> >> Telf Tecnalia Research & Innovation: (+34) 946 430 850 or 902 760 000
>> >>
>> >> Fax: (+34) 946 460 900 or 901 706 009
>> >>
>> >> [email protected]
>> >>
>> >> www.tecnalia.com
>> >>
>> >>
>> >>
>> >> cid:[email protected] <http://www.facebook.com/Tecnalia>
>> cid:[email protected] <http://twitter.com/tecnalia>
>> cid:[email protected] <
>> http://www.flickr.com/photos/tecnalia/sets/>
>> cid:[email protected] <
>> http://www.linkedin.com/company/tecnalia-research-&-innovation>
>> cid:[email protected] <http://www.slideshare.net/tecnalia>
>> cid:[email protected] <http://www.youtube.com/user/tecnaliaTV>
>> cid:[email protected] <
>> http://www.tecnalia.com/rss.php?lang=es>
>> >>
>> >> cid:[email protected] <http://www.tecnalia.com/>
>> >>
>> >> Este mensaje puede contener información confidencial o privilegiada. Si
>> no eres el destinatario de este mensaje, notifícaselo por favor al
>> remitente y bórralo sin reenviarlo o guardarlo dado que está legalmente
>> prohibido.
>> >>
>> >> Mezu honek daukan informazioa isilpekoa edo pribilegiatua izan daiteke.
>> Zuri zuzendua ez badago emaiozu, mesedez,  horren berri igorleari eta ezaba
>> ezazu bidali edo gorde gabe, legalki debekatua dago eta.
>> >>
>> >> This message may contain confidential, proprietary or legally
>> privileged information. If you are not the intended recipient of this
>> message, please notify it to the sender and delete without resending or
>> backing it, as it is legally prohibited.
>> >>
>> >> cid:[email protected] favor, piensa en el medio
>> ambiente antes de imprimir este e-mail.
>> >>
>> >> Mesedez pentsatu ingurugiroan e-mail hau imprimatu baino lehen.
>> >>
>> >> Please, consider the environment before printing this e-mail.
>> >>
>> >>
>> >>
>>

Reply via email to