Thread: IN FIRE

IN FIRE

From
Stanislav Silnitski
Date:
HELP!!!

I'm stuck for strange reason!
This is my first attempt to use pg_lo concept in my apps:

...Oid oid;PGconn* dbcon = PQconnectdb(conninfo.c_str());oid = lo_creat(dbcon, INV_WRITE | INV_READ);int pgfd =
lo_open(dbcon,oid, INV_WRITE | INV_READ);
 
...


lo_open ALWAYS returns -1 while oid is positive (I can even see oid
in pg_largeobject system table)!!!!

postmaster reports the following:
ERROR:  lo_lseek: invalid large obj descriptor (0)

I realy NEED a prompt advice!

Please find a couple of minutes for reply!
TIA
Stanislav

ps> I run FreeBSD-4.4 + ported PostgreSQL-7.1.3
pps> my other pg-connected apps run OK



Re: IN FIRE

From
"Mario Weilguni"
Date:
> 
> I'm stuck for strange reason!
> This is my first attempt to use pg_lo concept in my apps:
> 
> ...
>  Oid oid;
>  PGconn* dbcon = PQconnectdb(conninfo.c_str());
>  oid = lo_creat(dbcon, INV_WRITE | INV_READ);
>  int pgfd = lo_open(dbcon, oid, INV_WRITE | INV_READ);
> ...
> 
> 
> lo_open ALWAYS returns -1 while oid is positive (I can even see oid
> in pg_largeobject system table)!!!!

Use transactions (BEGIN; END;). Large objects rely on this




Re: IN FIRE

From
Doug McNaught
Date:
Stanislav Silnitski <stalker@minicorp.ru> writes:

> HELP!!!
> 
> I'm stuck for strange reason!
> This is my first attempt to use pg_lo concept in my apps:
> 
> ...
>  Oid oid;
>  PGconn* dbcon = PQconnectdb(conninfo.c_str());
>  oid = lo_creat(dbcon, INV_WRITE | INV_READ);
>  int pgfd = lo_open(dbcon, oid, INV_WRITE | INV_READ);
> ...
> 
> 
> lo_open ALWAYS returns -1 while oid is positive (I can even see oid
> in pg_largeobject system table)!!!!
> 
> postmaster reports the following:
> ERROR:  lo_lseek: invalid large obj descriptor (0)

You need to do all your LO manipulation inside a transaction.  See the
docs.

-Doug