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


Ответить