Thread: Re: create large object by tcl

Re: create large object by tcl

From
L J Bayuk
Date:
> However, I would like to ask why a transaction is
> needed for accessing large object?

Here's how I understand it. If I get it badly wrong, perhaps someone
else will step in and correct me.

The PostgreSQL database server creates a context in which to store
information it needs to process commands.  If you don't start a transaction
block with BEGIN, a new context is created for each command, and destroyed
after the command is processed.  If you use BEGIN to start a transaction
block, the context stays around until you use COMMIT or ROLLBACK to end the
transaction block.

Large object file descriptors, like cursors, are stored in this context.
So if you open a large object outside a transaction block, the large object
file descriptor you get back is invalid, because the context it was created
in was already destroyed.