There are several issues.
- Use lng instead of long long for the typedef. The Visual Studio
compiler doesn't know long long.
- You're using a lot of goto's...
- The nil value for dtduration should be lng_nil, not int_nil.
But the real reason that it fails is that for some reason
dtduration_tostr is called twice with the same argument, and the
*second* time it is called, the value of *val == 0. That is because the
*first* time it was called, you set it to 0 in the process of figuring
out what string to produce.
So the solution is probably to make a copy of *val into a local variable
and change that instead of *val.
On 2009-02-01 13:03, Lefteris wrote:
> The following behavior is strange to me, but I am not sure if it is a
> bug or I have done something wrong.
>
> dayTimeDuration (dtduration) is defined in mil as:
>
> .ATOM dtduration = lng;
> .FROMSTR = dtduration_fromstr;
> .TOSTR = dtduration_tostr;
> .END;
>
> and in c as :
> typedef long long dtduration;
>
> also .tostr has the following sign.
> int dtduration_tostr(str *buf, int *len, dtduration *val)
>
> you can find all this in MonetDB4/src/modules/plain/monettime.mx
>
> Now, if I do either:
> dtduration("P12DT1H").print()
> [dtduration]("P12DT1H").print()
>
> I get the correct value printed. But if I create a BAT (void,str):
> var a0006 := new (void,str).seqbase (0...@0);
> a0006.append("P12DT1H");
>
> and do:
> [dtduration](a0006).print();
> It gives back "PT0S", which means 0 duration, and thus the value of
> *val in dtduration_tostr is 0 (I checked that).
>
> So, could that be some bug with correct dealing of long values in the
> multiplex creation (btw. where is that happening?) Or am I missing
> some special case that I should take into consideration with long
> values?
>
> Thank you,
>
> lefteris
>
> P.S. yearMonthDuration which is defined as int works like a charm.
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by:
> SourcForge Community
> SourceForge wants to tell your story.
> http://p.sf.net/sfu/sf-spreadtheword
> _______________________________________________
> Monetdb-developers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/monetdb-developers
--
Sjoerd Mullender
------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Monetdb-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-developers