Изменить текущую строку курсора, не затронув товар вне выборки

Фактические данные получены через расширение interbase от отдельной локальной базы Firebird. Собственные учебные объекты удалены после наблюдений.

Наблюдаемый результат программы
НаблюдениеРезультат
Курсор получил имяда
Cable до сверки0
Cable после сверки10
Clamp до сверки4
Clamp после сверки14
Archive вне выборки9
Изменено текущих строк2
Конец выдачи без ошибкида
Строки и дополнительные наблюдения
{
    "cursor_name": "FB161_STOCK_CURSOR",
    "applied": {
        "1": {
            "before": 0,
            "after": 10,
            "changed": 1
        },
        "2": {
            "before": 4,
            "after": 14,
            "changed": 1
        }
    },
    "stored": [
        {
            "ID": 1,
            "TITLE": "Cable",
            "QTY": 10
        },
        {
            "ID": 2,
            "TITLE": "Clamp",
            "QTY": 14
        },
        {
            "ID": 3,
            "TITLE": "Archive",
            "QTY": 9
        }
    ],
    "selection": "ID<=2",
    "same_transaction": true,
    "resources_released_before_commit": true
}

Самостоятельный запуск создаёт result.json с данными и metrics.json с проверками рядом с example.php.