Kovalenko Dmitry wrote:

Родился вопрос. А в стандарте SQL (99) вроде как прописано понятие
точек сохранения (SAVEPOINT).

Так точно.

А прописано ли в нем что делать с точкой B в таком случае?

1. savepoint A;
2. savepoint B;
3. savepoint A;
4. в этой точке у нас savepoint B (по-стандарту) существует или нет?

Стандарт лишь говорит, что должен удалиться старый сейвпойнт А и создаться новый с тем же именем.

в IB savepoint "B" будет изничтожен

Судя по всему, IB неявно выполняет RELEASE SAVEPOINT A (который по стандарту уничтожает все сейвпойнты от А до настоящего времени), в то время как FB выполняет наше расширение: RELEASE SAVEPOINT A ONLY, которое удаляет только данный сейвпойнт. Отсюда и разница.

Я считаю наше поведение правильным.


--
Дмитрий Еманов

Ответить