Pull to refresh
5
0
Send message
Ого, да Вы, судя по всему, экстрасенс ) Определяете знание C++ и русского языка по одному комментарию — здорово!
Когда я вижу такие вещи то еще больше счастлив что пишу на C++11 =)
Да, коммит родительской транзакции из процедуры, выполняющейся в ее же рамках, разумеется, невозможен.
Если хочется из функции открывать новые top-level транзакции, то инструменты вроде plproxy (используется autocommit, все очень удобно но явного управления транзакцией нет) или dblink (не очень удобно, но можно явно начинать/коммитить/откатывать транзакцию) в помощь.
В процедурах на PL/pgSQL есть явное управление транзакциями (через исключения). Путем организации блока begin/exception/end можно создавать подтранзакции, и откатывать или коммитить их по отдельности.
На этапе поиска готовых решений я сталкивался с DB_Type. Необходимость десериализации из других сред исполнения (C++) не позволила воспользоваться Вашим решением.
Библиотека тестировалась с 8.4, 9.0 и 9.1. Чисто теоретически не должно быть проблем с 8.*, но собирать не пробовал.

Да, вот если бы на пару лет пораньше, то возможно и не пришлось бы её писать :)

Правда, судя по документации к PostgreSQL 9.2, обещанная поддержка не полностью покроет возможности описанного сериализатора, в частности аггрегацию dataset'ов или заполнение структур из JSON строки.

Information

Rating
Does not participate
Registered
Activity