powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Неясная работа lo_create
7 сообщений из 7, страница 1 из 1
Неясная работа lo_create
    #39566037
PGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня!

Версия PostgreSQL 9.4.8. Создаю large object, чтобы потом уже добавлять значения через lo_put. Но поведение lo_create странное. Поясните, пожалуйста, кто владеет сокрытыми знаниями :)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select lo_create(-1);

-- Почему-то сразу возвращает максимальное значение 2^32-1
 lo_create  
------------
 4294967295

-- вторая попытка уже обламывается
select lo_create(-1);

ERROR:  duplicate key value violates unique constraint "pg_largeobject_metadata_oid_index"
DETAIL:  Key (oid)=(4294967295) already exists.
...
Рейтинг: 0 / 0
Неясная работа lo_create
    #39566254
kira ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PGer,

а что здесь удивительного :
https://www.postgresql.org/docs/10/static/lo-interfaces.html#LO-CREATE

oid не может быть отрицательным
...
Рейтинг: 0 / 0
Неясная работа lo_create
    #39566258
PGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kira ivanovoid не может быть отрицательным
Может, https://www.postgresql.org/docs/9.4/static/lo-funcs.html
Код: plsql
1.
SELECT lo_creat(-1);       -- returns OID of new, empty large object
...
Рейтинг: 0 / 0
Неясная работа lo_create
    #39566265
kira ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PGer-- Почему-то сразу возвращает максимальное значение 2^32-1
lo_create
------------
4294967295


так по этому это и возвращается....
на -2 вернется 4294967294
...
Рейтинг: 0 / 0
Неясная работа lo_create
    #39566271
PGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Аналогичное поведение и в 10.1. Значит, так и надо. Пример в офиц. документации врёт :).
Для функции lo_from_bytea написано - "Pass 0 to have the system choose an OID." Сделал аналогичное для lo_create и всё заработало.
...
Рейтинг: 0 / 0
Неясная работа lo_create
    #39566272
PGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kira ivanovPGer-- Почему-то сразу возвращает максимальное значение 2^32-1
lo_create
------------
4294967295


так по этому это и возвращается....
на -2 вернется 4294967294

Спасибо, что указали еще раз взглянуть на документацию. При 10м прочтении обратил внимание на описание в lo_from_bytea
...
Рейтинг: 0 / 0
Неясная работа lo_create
    #39566273
PGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть одна особенность, что не описал здесь. Если вызвать lo_create( -1 ) из другой функции, то иногда (от функции к функции - я не нашел зависимости), всё работает корректно. Эх, говорили мне учить C в универе... :)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Неясная работа lo_create
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]