updating blobs in Perl with DBD::Pg - Mailing list pgsql-general

From Herbert Liechti
Subject updating blobs in Perl with DBD::Pg
Date
Msg-id 39EEA286.16994C84@thinx.ch
Whole thread Raw
Responses Re: updating blobs in Perl with DBD::Pg
List pgsql-general
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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

pgsql-general by date:

Previous
From: Karel Zak
Date:
Subject: Re: to_char function
Next
From: Joerg Hessdoerfer
Date:
Subject: Weird effects using BLOBs from libpq