```
$ ~/arc/build/clickhouse/programs/clickhouse client
ClickHouse client version 21.2.1.1-arcadia.
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 21.2.1 revision 54447.

max42-dev.sas.yp-c.yandex.net :) create table t(a Tuple(UInt8, UInt8)) engine = Log()

CREATE TABLE t
(
    `a` Tuple(UInt8, UInt8)
)
ENGINE = Log

Query id: b49dbb5d-d2a9-4c99-b90e-00c60edf2103

Ok.

0 rows in set. Elapsed: 0.005 sec. 

max42-dev.sas.yp-c.yandex.net :) insert into t values ((NULL, 42))

INSERT INTO t VALUES

Query id: 318d6f3e-f3bc-467c-85ff-62da908230dd

Logical error: 'Unexpected literal type inside Array: Nothing. It's a bug'.
Aborted (core dumped)
```

This is CH similar to one from Arcadia r7788360 (~fresh master version from GH).

(you don't have to strictly follow this form)

{
        
        const IDataType * type_to_parse = &type;
        DataTypePtr holder;
        if (type.canBePromoted())
        {
            holder = type.promoteNumericType();
            type_to_parse = holder.get();
        }
        const auto col = type_to_parse->createColumn();
        ReadBufferFromString in_buffer(src.get<String>());
        try
        {
            type_to_parse->deserializeAsWholeText(*col, in_buffer, FormatSettings{});
        }
        catch (Exception & e)
        {
            e.addMessage(fmt::format("while converting '{}' to {}", src.get<String>(), type.getName()));
            throw;
        }
        if (!in_buffer.eof())
            throw Exception(ErrorCodes::TYPE_MISMATCH, "Cannot convert string {} to type {}", src.get<String>(), type.getName());
        Field parsed = (*col)[0];
        return convertFieldToType(parsed, type, from_type_hint);
    }
    throw Exception("Type mismatch in IN or VALUES section. Expected: " + type.getName() + ". Got: "
        + Field::Types::toString(src.getType()), ErrorCodes::TYPE_MISMATCH);
}
}
Field convertFieldToType(const Field & from_value, const IDataType & to_type, const IDataType * from_type_hint)