BLOBs containing NUL characters (ASCII 0) can be written to the

Bruce Momjian <bruce@momjian.us>

Commit: 7ee7ee1398acb2ba8e1738a4d959025e43df8820
Author: Bruce Momjian <bruce@momjian.us>
Date: 1999-10-13T02:26:37Z
Releases: 7.1.1
BLOBs containing NUL characters (ASCII 0) can be written to the
database, but they get truncated at the first NUL by lo_read
when they are read back. The reason for this is that lo_read in
Pg.xs is using the default:
    OUTPUT:
        RETVAL
        buf
which uses C's strlen() to work out the length of the scalar.

The code ought to read something more like:
    OUTPUT:
        RETVAL
        buf sv_setpvn((SV*)ST(2), buf, RETVAL);

I am not sure if this needs to be done on both lo_read methods
in this file, but I changed both and have not since had any
problems with truncated BLOBs.

Douglas Thomson <dougt@mugc.cc.monash.edu.au>

Files

PathChange+/−
src/interfaces/perl5/Pg.xs modified +3 −3