Почему при работе с моим большим объектом я получаю ошибку "invalid large obj descriptor"?
Вам нужно при использовании большого объекта поместить в начале BEGIN WORK и в конце COMMIT, а внутри получившегося блока lo_open ... lo_close.
В настоящий момент PostgreSQL требует, чтобы при закрытии большого объекта происходило выполнение транзакции. Таким образом, первая же попытка сделать что-либо с большим объектом, не соблюдая данного правила приведет к сообщению invalid large obj descriptor, так как код выполняющий работу над большим объектом (по крайней мере в настоящий момент) будет генерировать сообщение об ошибке если вы не используете транзакцию.
Если вы используете такой интерфейс клиента как ODBC, вам возможно понадобится установить auto-commit off.