[Mono-dev] Sybase ASA Odbc, timestamp, fractional seconds, possible bug in mono Odbc stack?
A Nagappan
anagappan at novell.com
Fri May 4 04:56:21 EDT 2007
Hi,
Could you please send me a test.cs file to reproduce this bug ?
Regarding Odbc, You can either contact me or send your queries to the
list.
Thanks
Nagappan
Nagappan A <anagappan at novell.com>
Linux Desktop Testing Project - http://ldtp.freedesktop.org
http://nagappanal.blogspot.com
Novell, Inc.
SUSE* Linux Enterprise 10
Your Linux is ready*
http://www.novell.com/linux
>>> On Thu, May 3, 2007 at 11:27 AM, in message
<200705030757.32931.mbd at dbc.dk>,
Mads Bondo Dydensborg <mbd at dbc.dk> wrote:
> mandag 30 april 2007 13:23 skrev Mads Bondo Dydensborg:
>> tirsdag 24 april 2007 08:36 skrev Mads Bondo Dydensborg:
>> > Hi there
>>
>> Hi again.
>>
>> Just a repost - does nobody know anything about these issues?
>
> And another one :- )
>
> Is there a person doing the ODBC work, that I should talk directly
to?
>
> Regards,
>
> Mads
>
>>
>> Regards,
>>
>> Mads
>>
>> >
>> > I am using Linux/Mono to access a Sybase ASA server (on Windows),
using
>> > Unixodbc (and possibly FreeTDS - I am actually not quite sure).
>> >
>> > Most things appear to work fine, however, when retrieving
>> DateTimes/Timestamps
>> > from the sybase server, it seems that it returns the fractional
value of a
>> > second, as _billonths_ of a second. Mono appears to expect this in
>> > milliseconds:
>> >
>> > ENTER: System.DateTime:.ctor (int,int,int,int,int,int,int)
> (value:0xbf8b53b0,
>> > 2007, 4
>> > , 17, 14, 10, 50, 340000000, )
>> > . ENTER: System.DateTime:DaysInMonth (int,int)(2007, 4, )
>> > . . ENTER: System.DateTime:IsLeapYear (int)(2007, )
>> > . . LEAVE: System.DateTime:IsLeapYear (int)FALSE
>> > . LEAVE: System.DateTime:DaysInMonth (int,int)result=30
>> > EXCEPTION handling: ArgumentOutOfRangeException
>> >
>> > The value 340000000 should be in milliseconds (says DateTime
constructor),
>> but
>> > apperantly is in billionths of a second (nanoseconds, says ODBC).
>> >
>> > Looking at OdbcDataReader.GetValue, I find the following code:
>> >
>> > case OdbcType.Timestamp:
>> > case OdbcType.DateTime:
>> > case OdbcType.Date:
>> > case OdbcType.Time:
>> > OdbcTimestamp ts_data = new OdbcTimestamp();
>> > ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, ref
ts_data,
> 0,
>> > ref outsize);
>> > if (outsize!=- 1) // This means SQL_NULL_DATA
>> > DataValue = new
>> > DateTime(ts_data.year,ts_data.month,ts_data.day,ts_data.hour,
>> > ts_data.minute,ts_data.second,Convert.ToInt32(ts_data.fraction));
>> > break;
>> >
>> > OdbcTimestamp.fraction is declared as a long. SQLGetData is an
extern
>> method -
>> > looks like it is just supposed to fill in the binary values? I
find it a
> bit
>> > puzzling, perhaps even suspiciuos, that ts_data.fraction is
converted to
> an
>> > int 32 from a long in the call to DateTime - disregarding
(perhaps?) the
>> > scale of the fraction?
>> >
>> > I am a bit confused about this. Before looking into it further, I
would
>> > appreciate a comment on wheter this could potentially be a bug in
the Mono
>> > ODBC stack? Also, where values are "set", that is, if wanting to
update a
>> > timestamp from mono - where the conversion takes place (there are
quite
> many
>> > Odbc related files :- ).
>> >
>> > The same code runs without problems under Windows/MS. Of course,
that is
> not
>> > to say it is correct, only that the data returned is as expected.
>> >
>> > Regards,
>> >
>> > Mads
>> >
>> > --
>> > Med venlig hilsen/Regards
>> >
>> > Systemudvikler/Systemsdeveloper cand.scient.dat, Ph.d., Mads Bondo
>> Dydensborg
>> > Dansk BiblioteksCenter A/S, Tempovej 7- 11, 2750 Ballerup, Tlf.
+45 44 86
> 77
>> 34
>> > _______________________________________________
>> > Mono- devel- list mailing list
>> > Mono- devel- list at lists.ximian.com
>> > http://lists.ximian.com/mailman/listinfo/mono- devel- list
>> >
>> >
>>
>> --
>> Med venlig hilsen/Regards
>>
>> Systemudvikler/Systemsdeveloper cand.scient.dat, Ph.d., Mads Bondo
> Dydensborg
>> Dansk BiblioteksCenter A/S, Tempovej 7- 11, 2750 Ballerup, Tlf. +45
44 86 77
> 34
>> _______________________________________________
>> Mono- devel- list mailing list
>> Mono- devel- list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono- devel- list
>>
>>
More information about the Mono-devel-list
mailing list