Форма заполнения: не перепутать неизвестный набор, пустой набор и NULL-элемент

Данные получены настоящими запросами через native-расширение cubrid. После наблюдений собственные учебные объекты удалены.

Результат выполнения
НаблюдениеРезультат
SQL NULLне заполнено; размер -1
Пустая коллекция {}подтверждено: меток нет; размер 0
Коллекция {NULL}требуется заполнить один элемент; размер 1
Массивы первых двух одинаковыда
Неизвестный атрибут: код-202
Обычная строка вместо коллекции: код-10020
Полученные строки и дополнительные наблюдения
{
    "states": [
        {
            "id": 10,
            "sql_null": true,
            "items": [],
            "size": -1,
            "status": "не заполнено"
        },
        {
            "id": 20,
            "sql_null": false,
            "items": [],
            "size": 0,
            "status": "подтверждено: меток нет"
        },
        {
            "id": 30,
            "sql_null": false,
            "items": [
                null
            ],
            "size": 1,
            "status": "требуется заполнить один элемент"
        }
    ],
    "wrong_attribute": {
        "value": false,
        "code": -202,
        "facility": 1,
        "warning": true,
        "message_present": true
    },
    "not_collection": {
        "value": false,
        "code": -10020,
        "facility": 2,
        "warning": true,
        "message_present": true
    },
    "nullable_form_policy": "SQL NULL unknown; empty collection explicitly no tags; NULL member needs correction"
}

result.json содержит те же данные; metrics.json — проверки. Реквизиты входа в эти файлы не записываются.