{
    "id": "mysql140-x-savepoint-lifetime",
    "title": "Проверить имя точки и не спутать release с commit",
    "columns": [
        "Наблюдение",
        "Результат"
    ],
    "rows": [
        [
            "Автоматическое имя сохранено как непустая строка",
            true
        ],
        [
            "Повтор имени stage вернул то же имя",
            true
        ],
        [
            "Откат к повторно поставленной stage: stock",
            2
        ],
        [
            "Более поздняя later уже недоступна",
            true
        ],
        [
            "Повторный rollbackTo(stage) оставил stock",
            2
        ],
        [
            "Освобождённая stage уже недоступна",
            true
        ],
        [
            "После release: stock внутри транзакции",
            2
        ],
        [
            "После release: stock у внешнего читателя",
            5
        ],
        [
            "После полного rollback: stock",
            5
        ]
    ],
    "checks": {
        "generated_name_real": true,
        "duplicate_name_moves_point": true,
        "later_point_discarded": true,
        "target_point_survives": true,
        "released_point_rejected": true,
        "release_does_not_commit": true,
        "full_rollback_restores": true,
        "owned_collections_removed": true
    },
    "observations": {
        "generated_name": "SAVEPOINT1",
        "first_named": "stage",
        "repeated_named": "stage",
        "rollback_return_type": "mysql_xdevapi\\SqlStatementResult",
        "second_rollback_return_type": "mysql_xdevapi\\SqlStatementResult",
        "release_return_type": "mysql_xdevapi\\SqlStatementResult",
        "after_named_rollback": {
            "_id": "CARD-1",
            "stock": 2
        },
        "later_exception_chain": [
            {
                "class": "mysql_xdevapi\\Exception",
                "code": 10000,
                "message": "[HY000] Couldn't fetch data"
            },
            {
                "class": "mysql_xdevapi\\Exception",
                "code": 1305,
                "message": "[42000] SAVEPOINT later does not exist"
            }
        ],
        "released_exception_chain": [
            {
                "class": "mysql_xdevapi\\Exception",
                "code": 10000,
                "message": "[HY000] Couldn't fetch data"
            },
            {
                "class": "mysql_xdevapi\\Exception",
                "code": 1305,
                "message": "[42000] SAVEPOINT stage does not exist"
            }
        ],
        "after_repeat_rollback": {
            "_id": "CARD-1",
            "stock": 2
        },
        "inside_after_release": {
            "_id": "CARD-1",
            "stock": 2
        },
        "outside_after_release": {
            "_id": "CARD-1",
            "stock": 5
        },
        "after_full_rollback": {
            "_id": "CARD-1",
            "stock": 5
        }
    },
    "runtime": {
        "php": "8.3.35",
        "extension": "8.0.30",
        "server_version": 80413,
        "schema": "php_manual_x139",
        "host": "127.0.0.1",
        "port": 33140
    },
    "owned_collections": [
        "mysql140_savepoint_lifetime_7d10fdc52b00"
    ],
    "removed_collections": [
        "mysql140_savepoint_lifetime_7d10fdc52b00"
    ]
}
