Проверить имя точки и не спутать release с commit

Ответы получены от MySQL через X Protocol. Учебные коллекции после чтения удалены.

Наблюдаемый результат программы
НаблюдениеРезультат
Автоматическое имя сохранено как непустая строкада
Повтор имени stage вернул то же имяда
Откат к повторно поставленной stage: stock2
Более поздняя later уже недоступнада
Повторный rollbackTo(stage) оставил stock2
Освобождённая stage уже недоступнада
После release: stock внутри транзакции2
После release: stock у внешнего читателя5
После полного rollback: stock5
Документы и дополнительные наблюдения
{
    "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
    }
}

Полный JSON результата, включая реальные идентификаторы, сохранён рядом в result.json.