Отозвать SELECT и проверить новое подключение отдельно от старого

Фактические данные получены через расширение interbase по TCP к отдельному серверу Firebird с проверкой пароля. Собственные учебные пользователи, базы и промежуточные резервные файлы удалены после наблюдений.

Наблюдаемый результат программы
НаблюдениеРезультат
До REVOKECable — 3; Clamp — 0
Старое соединение после REVOKE ещё читаетда
Строки старого соединенияCable — 3; Clamp — 0
Старое соединение закрыто перед новымда
Новое соединение может выполнить SELECTнет
Код нового отказа-551
Сам каталог не удалёнCable — 3; Clamp — 0
Строки и дополнительные наблюдения
{
    "before": [
        {
            "ID": 1,
            "TITLE": "Cable",
            "QTY": 3
        },
        {
            "ID": 2,
            "TITLE": "Clamp",
            "QTY": 0
        }
    ],
    "old_session_after_revoke": {
        "warning": false,
        "code": 0,
        "message_present": false,
        "allowed": true
    },
    "old_session_rows": [
        {
            "ID": 1,
            "TITLE": "Cable",
            "QTY": 3
        },
        {
            "ID": 2,
            "TITLE": "Clamp",
            "QTY": 0
        }
    ],
    "old_connection_closed": true,
    "fresh_session_after_revoke": {
        "value": false,
        "warning": true,
        "code": -551,
        "message_present": true
    },
    "admin_readback": [
        {
            "ID": 1,
            "TITLE": "Cable",
            "QTY": 3
        },
        {
            "ID": 2,
            "TITLE": "Clamp",
            "QTY": 0
        }
    ],
    "old_query_kind": "new ibase_query on the original still-open connection; not a reused prepared statement",
    "permission_path": "one direct SELECT grant; no role or PUBLIC alternative"
}

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