Re: issue 94543, some progress and request for help
Ocke Janssen <[email protected]> Tue, 25 May 2010 07:31:08 +0200
| Newsgroups | gmane.comp.openoffice.dba.devel |
|---|---|
| Organization | Sun Microsystems GmbH |
| Message-ID | <[email protected]> |
Moin Terrence, Terrence Enger wrote: > On Fri, 2010-04-09 at 16:37 -0400, Terrence Enger wrote: > >> Digging around on the web, I found "Technical Standard, Data >> Management: SQL Call Level Interafce (CLI)" >> <http://www.opengroup.org/pubs/catalog/c451.htm>. >> > > Greetings, > > I have pressed on with the notion of retrieving the character > representation of timestamps, and have some results good enough to > keep me interested: a timestamp retrieved via odbc from an AS/400 is > accurate to the centisecond (although the only way I know to see the > result in this precision is to format the result as a floating point > number). > > The interesting part of the code, within > connectivity::odbc::OResultSet::getTimestamp > (connectivity/source/drivers/odbcbase/OResultSet.cxx), is > > m_bFetchData = false; > ::rtl::OUString aString = getString(); > > This suggests lots of questions. > > (*) connectivity::toDateTimeString > (connectivity/source/commontools/CommonTools.cxx) omits the > centiseconds from a DateTime. I presume that this behaviour must > be maintained, right? > To be deleted would be better and to use the version from DBTypeConversion :-) Could you please submit an issue for this. Thanks. > (*) m_bFetchData is defined in > connectivity/source/inc/odbc/OResultSet.cxx with the comment "true > when SQLGetData can be called in any order or when fetching data > for m_aRow". If I understand what gdb shows me, with the new > assignment to m_bFetchData, the first recursion level of > connectivity::odbc::OResultSet::getTimestamp eventually calls > SQLGetData instead of connectivity::toDateTimeString. This leaves > me uncomfortable with the assignment to m_bFetchData. > No. Do you see the not before it? :-) It is true when it can not be called in any order. > (a) Assigning m_bFetchData = false seems to contradict both the > first alternative given in the comment and the meaning of the > variable name itself. Under what conditions would it be wrong > to call SQLGetData? Does OO sometimes bind a result column > to a variable, and does this then prevent SQLGetData? I can > research this one myself, but maybe someone here just knows. > > (b) In ann earlier hack of mine, which delivered the same results, > the the first recursion level of > connectivitiy::odbc::OResultSet::getTimestamp deferenced > m_aRow[columnIndex] to get the DateTime built by the second > recursion level. So the assignment to m_bFetchData is in the > ballpark of the second alternative in the comment. > > Anyway, at the end of > connectivity::odbc::OResultSet::getTimestamp, state differs from > the state as left by the almost-original code in that (at least) > - m_bFetchData is false instead of true. > - retVal.HundredthSeconds is right instead of a pseudo-random > number. > - m_bNull is true instead of false. > - m_aValue is NULL instead of a pionter to a DateTime. > I have not happened to notice bad results, but that is worth > little. > > All this leaves me feeling a need for correction or reassurance, > as the case may be. > > (*) Speaking of recursion ... The assignment to m_bFetchData avoids > the recursive call to connectivity::odbc:OResultSet::getTimestamp > (and thence to other routines). I would guess that this is good, > except that it seems too easy. > :-) > > Possible next steps include the following. I welcome your guidance. > > (*) To look for a situation which will expose a fault in > similar-looking code in ODatabaseMetaDataResultSet::getTimestamp. > > (*) To try the same test cases against other databases that I can get > my hands on. MySql and Postgresql come to mind. danros66 already > reported that DB2/UDB works like DB2/400. > > (*) Search for a condition to expose bad results from similar-looking > code in ODatabaseMetaDataResultSet::getTimestamp. > > > Thank you all for your patience with a newbie. > We still have a problem with the com:.sun;:star::util::DateTime which lacks of the capability to hold more than just HundredthSeconds. So times less than that can not be queried or updated today. Best regards, Ocke > > Cheers, > Terry. > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > -- Ocke Janssen Tel: +49 40 23646 661, x66661 Dipl. Inf(FH) Fax: +49 40 23646 550 Sun Microsystems Inc. Nagelsweg 55 mailto:[email protected] D-20097 Hamburg http://www.sun.com/staroffice Sitz der Gesellschaft: Sun Microsystems GmbH, Sonnenallee 1, D-85551 Kirchheim-Heimstetten Amtsgericht Muenchen: HRB 161028 Geschaeftsfuehrer: Juergen Kunz