{
    "id": "fb160-revoke-access",
    "title": "Отозвать SELECT и проверить новое подключение отдельно от старого",
    "columns": [
        "Наблюдение",
        "Результат"
    ],
    "rows": [
        [
            "До REVOKE",
            "Cable — 3; Clamp — 0"
        ],
        [
            "Старое соединение после REVOKE ещё читает",
            true
        ],
        [
            "Строки старого соединения",
            "Cable — 3; Clamp — 0"
        ],
        [
            "Старое соединение закрыто перед новым",
            true
        ],
        [
            "Новое соединение может выполнить SELECT",
            false
        ],
        [
            "Код нового отказа",
            -551
        ],
        [
            "Сам каталог не удалён",
            "Cable — 3; Clamp — 0"
        ]
    ],
    "checks": {
        "granted_reader_initial_rows": true,
        "old_connection_observed_allowed": true,
        "old_connection_closed": true,
        "fresh_connection_select_refused": true,
        "catalogue_still_exists": true,
        "owned_files_removed": true,
        "owned_objects_removed": true
    },
    "observations": {
        "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"
    },
    "runtime": {
        "php": "8.2.35",
        "extension": "3.0.1",
        "server_version": "WI-V5.0.4.1812 Firebird 5.0",
        "implementation": "Firebird\/Windows\/AMD\/Intel\/x64",
        "transport": "tcp_loopback_authenticated"
    },
    "owned_objects": [
        {
            "type": "DATABASE",
            "name": "fb160_revoke_dd960eb06d.fdb"
        },
        {
            "type": "USER",
            "name": "FB160_08E011A0"
        }
    ],
    "removed_objects": [
        {
            "type": "DATABASE",
            "name": "fb160_revoke_dd960eb06d.fdb"
        },
        {
            "type": "USER",
            "name": "FB160_08E011A0"
        }
    ]
}
