On Fri, Apr 15, 2005 at 03:59:23PM -0400, Rudy Lippan wrote:
> On Fri, 15 Apr 2005, Patrick Galbraith wrote:
> 
> > What about how to deal with returning values (my_ulonglong) that are 
> > larger than the default defined value of dbd_st_rows from DBI (int) ? 
> 
> Well, in Driver.xst (mysql.xst) dbd_st_rows returns void and  sticks an SV
> on the stack, in this case the SV contains a string since the value returned 
> is 
> is (can be) larger than an int.  It would be nice, in the case of AMD64 / 
> perl 
> compiled with 64 bit ints, to  return an sviv rather than a svpv.
> 
> > How do you ensure you can handle differently than the default rows? 
> > (like now how it's done with 'sprintf(buf, "%llu")' ? It seems you need 
> > some sort of 'override' of default behaviour.
> 
> You override the default behaviour by overriding the default rows in mysql.xs 
> (I
> think).  The problem with doing this is, however, that xsubpp then complains
> about the dup function.
> 
> Humm, now that I think of it, if you really want to get rid of the warning, 
> you 
> can do some #define hackery viz.:
> 
> 
> #define foobar rows
> void
> foobar(sth)
>     SV* sth
>   CODE:
> ...
> 
> The above should make subpp happy and should get rid of the dup function
> warning.

I suspect that won't work, sadly, as xsubpp uses the name to generate
some C code. (But feel free to try it.)

Tim.

Reply via email to