pg.ddx.io pgsql-interfaces@postgresql.org mailing list archive
help / color / mirror / Atom feedProblem with Large Object Interface of pgsql_perl5
3+ messages / 2 participants
[nested] [flat]
* Problem with Large Object Interface of pgsql_perl5
@ 2000-03-31 16:18 Ken Causey <ken@premiernet.net>
0 siblings, 2 replies; 3+ messages in thread
From: Ken Causey @ 2000-03-31 16:18 UTC (permalink / raw)
To: pgsql-interfaces
I'm using PostgreSQL 6.5.3, Perl 5.005_03, and pgsql_perl5 1.8.0 on
Linux (intel).
Running this program:
#!/usr/bin/perl
use strict;
package Main;
use Pg;
my $db_name='excised';
my $db_user='excised';
my $db_passwd='excised';
# Connect to the database server
my $dbconn = Pg::connectdb("dbname=$db_name user=$db_user
password=$db_passwd");
if($dbconn->status ne PGRES_CONNECTION_OK){
# We failed to get a connection, exit with error
my $error=$dbconn->errorMessage;
print "Error on connection: $error\n";
exit;
}
print "Database connection opened\n";
my $newoid = $dbconn->lo_creat(PGRES_INV_WRITE|PGRES_INV_READ);
if($newoid == PGRES_InvalidOid){
my $error = $dbconn->errorMessage;
print "Error on lo_creat: $error\n";
exit;
}
print "LO created\n";
my $fd = $dbconn->lo_open($newoid,PGRES_INV_WRITE);
if($fd == -1){
# Error on opening new oid
my $error = $dbconn->errorMessage;
print "Error on lo_open (oid = $newoid): $error\n";
# Try to unlink the oid
$dbconn->lo_unlink($newoid);
exit;
}
print "LO opened\n";
my $content = 'This is a test of the emergency broadcasting system, in the
event of a real emergency...';
my $numbytes=$dbconn->lo_write($fd,$content,length($content));
if($numbytes != length($content)){
my $rightnum=length($content);
my $error = $dbconn->errorMessage;
print "Error on lo_write ($numbytes != $rightnum): $error\n";
# Try to unlink the oid
$dbconn->lo_close($fd);
$dbconn->lo_unlink($newoid);
exit;
}
print "LO written\n";
$dbconn->lo_close($fd);
$dbconn->lo_unlink($newoid);
I get this output:
Database connection opened
LO created
Error on lo_open (oid = 46401): ERROR: lo_lseek: invalid large obj
descriptor (0)
Can anyone tell me what I'm doing wrong?
All help is greatly appreciated.
Ken Causey
PremierNET, Inc.
^ permalink raw reply [nested|flat] 3+ messages in thread
* Re: Problem with Large Object Interface of pgsql_perl5
@ 2000-03-31 18:11 Tom Lane <tgl@sss.pgh.pa.us>
parent: Ken Causey <ken@premiernet.net>
1 sibling, 0 replies; 3+ messages in thread
From: Tom Lane @ 2000-03-31 18:11 UTC (permalink / raw)
To: Ken Causey <ken@premiernet.net>; +Cc: pgsql-interfaces
Ken Causey <ken@premiernet.net> writes:
> Can anyone tell me what I'm doing wrong?
Not doing the lo_open inside a transaction. You need begin ... end
around any use of an open large object. (This has always been true,
but older versions of Postgres didn't enforce it --- they'd just die
occasionally if you broke the rule. Now, open LO handles are auto-
closed at transaction commit, which is to say at end of statement
if you're not inside a BEGIN block.)
regards, tom lane
^ permalink raw reply [nested|flat] 3+ messages in thread
* Re: [INTERFACES] Problem with Large Object Interface of pgsql_perl5
@ 2000-03-31 19:39 Ken Causey <ken@premiernet.net>
parent: Ken Causey <ken@premiernet.net>
1 sibling, 0 replies; 3+ messages in thread
From: Ken Causey @ 2000-03-31 19:39 UTC (permalink / raw)
To: Tom Lane <tgl@sss.pgh.pa.us>; +Cc: pgsql-interfaces; pgsql-general@postgresql.org
Edmund Mergl was kind enough to point out my error and now
that I look back at the Programmer's documentation I see it. Someone
might want to update the Pg man page to reflect this. Thanks!
Ken Causey
PremierNET, Inc.
At 01:11 PM 3/31/00 -0500, Tom Lane wrote:
>Ken Causey <ken@premiernet.net> writes:
>> Can anyone tell me what I'm doing wrong?
>
>Not doing the lo_open inside a transaction. You need begin ... end
>around any use of an open large object. (This has always been true,
>but older versions of Postgres didn't enforce it --- they'd just die
>occasionally if you broke the rule. Now, open LO handles are auto-
>closed at transaction commit, which is to say at end of statement
>if you're not inside a BEGIN block.)
>
> regards, tom lane
>
>
^ permalink raw reply [nested|flat] 3+ messages in thread
end of thread, other threads:[~2000-03-31 19:39 UTC | newest]
Thread overview: 3+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2000-03-31 16:18 Problem with Large Object Interface of pgsql_perl5 Ken Causey <ken@premiernet.net>
2000-03-31 18:11 ` Tom Lane <tgl@sss.pgh.pa.us>
2000-03-31 19:39 ` Ken Causey <ken@premiernet.net>
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox