{
    "id": "sqlsrv151-query-timeout",
    "title": "Ограничить ожидание команды и отличить таймаут от пустого ответа",
    "columns": [
        "Наблюдение",
        "Результат"
    ],
    "rows": [
        [
            "QueryTimeout этой команды, секунд",
            1
        ],
        [
            "Искусственная задержка SQL, секунд",
            3
        ],
        [
            "Команда вернула false",
            true
        ],
        [
            "Сохранена диагностика таймаута",
            true
        ],
        [
            "Новый SELECT на том же соединении",
            "ready"
        ],
        [
            "Строк после опыта",
            1
        ]
    ],
    "checks": {
        "query_timeout_returned_false": true,
        "timeout_diagnostic": true,
        "connection_reused": true,
        "table_unchanged": true,
        "owned_objects_removed": true
    },
    "observations": {
        "query_timeout_seconds": 1,
        "requested_wait_seconds": 3,
        "elapsed_seconds": 1.002,
        "saved_timeout_diagnostic": [
            {
                "SQLSTATE": "HYT00",
                "code": 0
            }
        ],
        "state_after_timeout": "ready",
        "row_count_after_timeout": 1
    },
    "runtime": {
        "php": "8.3.35",
        "extension": "5.13.3+20807",
        "odbc_driver": "18.07.0001",
        "odbc_api": "03.80",
        "server_version": "16.00.1000",
        "database": "phpmanual149",
        "transport": "local_named_pipe"
    },
    "owned_objects": [
        {
            "type": "TABLE",
            "name": "sqlsrv151_query_timeout_6531ab155531"
        }
    ],
    "removed_objects": [
        {
            "type": "TABLE",
            "name": "sqlsrv151_query_timeout_6531ab155531"
        }
    ]
}
