updating blobs in Perl with DBD::Pg

Started by Herbert Liechtiover 25 years ago2 messagesgeneral
Jump to latest
#1Herbert Liechti
Herbert.Liechti@thinx.ch

Hello

I'm trying to update blob fields with the $dbh->func interface
of the Postgres driver. These functions are encapsulating the
appropriate functions of the lipq library. I'm able to create a
new blob field. Content is written correctly.

When I try to update an existing blob (overwriting the whole
content of the blob) the content is mixed up with the previous
version of the blob field. Here ist a snipped of my code:

my $lobjId = $self->getOid($_); # Returns the oid
die "Sorry got no oid for updating" unless ( $lobjId );

my $lobj_fd = $dbh->func($lobjId, $dbh->{pg_INV_WRITE}, 'lo_open');
my $len = length($self->{data}->{$field}); # new content
my $pos = $dbh->func($lobj_fd, 0, 0, 'lo_lseek'); # Seek Position 0
die "Error while positioning to 0 in oid $lobjId" unless ( defined( $pos ) );

my $nbytes = $dbh->func($lobj_fd, $self->{data}->{$_}, $len, 'lo_write');
die "Error on writing to oid" unless ( defined( $nbytes ) );

print "WROTE $nbytes of $len\n"; # Debug

die "Error while closing oid $!" unless ( $dbh->func($lobj_fd, 'lo_close'));

Does anybody know what is wrong here?
Thanks for helping

Best regards
Herbie

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Herbert Liechti E-Mail: Herbert.Liechti@thinx.ch
ThinX networked business services Stahlrain 10, CH-5200 Brugg
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In reply to: Herbert Liechti (#1)
Re: updating blobs in Perl with DBD::Pg

Nerver used DBI::func, but you may want to look at IO::BLOB::Pg

--
Ciao, Maurizio.
@@@@@@@
Neo: "I know PERL"
Morpheus: "Show ME !!"