• Bruce Momjian's avatar
    BLOBs containing NUL characters (ASCII 0) can be written to the · 7ee7ee13
    Bruce Momjian authored
    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>
    7ee7ee13
Pg.xs 18.4 KB