Re: [INTERFACES] Postgresql + lo
| От | Tom Lane |
|---|---|
| Тема | Re: [INTERFACES] Postgresql + lo |
| Дата | |
| Msg-id | 14398.932738250@sss.pgh.pa.us обсуждение |
| Ответ на | Postgresql + lo (Florian Baumert <baumert@plt.de>) |
| Список | pgsql-interfaces |
Florian Baumert <baumert@plt.de> writes:
> What happens is that it writes a -1 to the screen and a database-error
> "ERROR: lo_lseek: invalid large obj descriptor (0)"
You need "begin transaction"/"end transaction" around the use of the
LO handle (ie, surrounding lo_open ... lo_close).
The documentation has always stated that lo_open must be wrapped in
a transaction, but Postgres versions before 6.5 didn't enforce that
rule. (Instead, they'd just fail occasionally if you broke it :-(.)
6.5 enforces the rule by auto-closing LO handles at transaction
commit --- which will be instantly upon completion of the lo_open
command, if you are not inside a transaction; so the first attempt
to do anything with the handle will draw "invalid large obj
descriptor".
This is definitely getting to be a FAQ...
regards, tom lane
В списке pgsql-interfaces по дате отправления: