Проверить отсутствующее поле и ошибочное описание индекса

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

Наблюдаемый результат программы
НаблюдениеРезультат
Optional сохранил документ без weightда
Required отклонён на старых неполных данныхда
Вес после исправления исходного документа1
Новая запись без weight отклоненада
Ошибочный JSON отклонёнда
Неизвестная опция отклоненада
Неизвестный тип отклонёнда
Вызов с unique:true принятда
SHOW INDEX: Non_unique для unique_sku1
Повторный артикул с новым _id записалсяда
Сохранённых документов3
Документы и дополнительные наблюдения
{
    "optional_document": {
        "_id": "BAG",
        "sku": "BAG"
    },
    "repaired_document": {
        "_id": "BAG",
        "sku": "BAG",
        "weight": 1
    },
    "absent_failed_insert": null,
    "missing_at_build": [
        {
            "class": "mysql_xdevapi\\Exception",
            "code": 5117,
            "message": "[5117][HY000] Collection contains document missing required field"
        }
    ],
    "missing_at_insert": [
        {
            "class": "mysql_xdevapi\\Exception",
            "code": 10000,
            "message": "[HY000] Couldn't fetch data"
        },
        {
            "class": "mysql_xdevapi\\Exception",
            "code": 5115,
            "message": "[HY000] Document is missing a required field"
        }
    ],
    "bad_json": [
        {
            "class": "mysql_xdevapi\\Exception",
            "code": 10077,
            "message": "[10077][HY000] json parse error, code: 4"
        }
    ],
    "unknown_option": [
        {
            "class": "mysql_xdevapi\\Exception",
            "code": 0,
            "message": "unsupported field trait 'unsupported_option"
        }
    ],
    "bad_type": [
        {
            "class": "mysql_xdevapi\\Exception",
            "code": 5017,
            "message": "[5017][HY000] Invalid or unsupported type specification 'NOT_A_SQL_TYPE'"
        }
    ],
    "index_return_type": "bool",
    "indexes": [
        {
            "Table": "mysql140_contract_5447386309f6",
            "Non_unique": 0,
            "Key_name": "PRIMARY",
            "Seq_in_index": 1,
            "Column_name": "_id",
            "Collation": "A",
            "Cardinality": 2,
            "Sub_part": null,
            "Packed": null,
            "Null": "",
            "Index_type": "BTREE",
            "Comment": "",
            "Index_comment": "",
            "Visible": "YES",
            "Expression": null
        },
        {
            "Table": "mysql140_contract_5447386309f6",
            "Non_unique": 1,
            "Key_name": "weight_required",
            "Seq_in_index": 1,
            "Column_name": "$ix_i_r_2D8FA3E83FC26B3A572C94D67A6F56CAC0CA1EAB",
            "Collation": "A",
            "Cardinality": 2,
            "Sub_part": null,
            "Packed": null,
            "Null": "",
            "Index_type": "BTREE",
            "Comment": "",
            "Index_comment": "",
            "Visible": "YES",
            "Expression": null
        },
        {
            "Table": "mysql140_contract_5447386309f6",
            "Non_unique": 1,
            "Key_name": "unique_sku",
            "Seq_in_index": 1,
            "Column_name": "$ix_t40_r_557191F7548279CAE586E18F0925C00E2A85629F",
            "Collation": "A",
            "Cardinality": 2,
            "Sub_part": 40,
            "Packed": null,
            "Null": "",
            "Index_type": "BTREE",
            "Comment": "",
            "Index_comment": "",
            "Visible": "YES",
            "Expression": null
        }
    ],
    "duplicate_sku_exception": null,
    "duplicate_readback": {
        "_id": "DUP",
        "sku": "BOX",
        "weight": 3
    },
    "documents": [
        {
            "_id": "BAG",
            "sku": "BAG",
            "weight": 1
        },
        {
            "_id": "BOX",
            "sku": "BOX",
            "weight": 2
        },
        {
            "_id": "DUP",
            "sku": "BOX",
            "weight": 3
        }
    ]
}

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