Hello, Cattus!
Cattus Nocturnus wrote:
Хотелось бы узнать, как используя API манипулировать savepoint'ами?
никак. в статье же ясно написано, что ...
"InterBase 7.1 также декларирует возможность работы с ТС в
распределенных транзакциях. Для этого введены три новые функции API:"
чем читаешь?
Выгуглил только этот материал http://www.ibase.ru/devinfo/savepoints.htm,
но он о InterBase 7.1
Резюме: существуют особенности логики ТС, которые затрудняют реализацию
их поддержки в PSQL в полном объеме. Анализ поведения InterBase 7.1 это
полностью подтверждает. Основной причиной этого является наличие
системных ТС, взаимодействие с которыми со стороны пользовательских
ограничено из-за требований целостности данных. Именно по этим
соображениям данная функциональность не доступна в Firebird и Yaffil.
Примечание: к слову, эти же причины не дают возможности использовать
commit/rollback retaining в PSQL, ибо при этом будет разрушен ТС-фрейм
процедуры.
, а в ibase.h FireBird 1.5-2.0 функции подобные
isc_start_savepoint, isc_rollback_savepoint отсутствуют.
Однако, новый API для работы с ТС в InterBase 7.1 может быть полностью
заменен стандартными средствами сервера и является избыточным и
внушающим ложные предположения о правильной работе распределенных ТС.
Сервер должен либо пресекать возможность явно управлять ТС в отдельных
соединениях в случае распределенных транзакций, либо вообще не
декларировать их работоспособность. Отмечу, что разработчики Firebird и
Yaffil выбрали последний вариант и предпочли не давать пользователям
такой сомнительной возможности.
--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34