```
echo '::' | clickhouse-local --structure 'i IPv4' --query='SELECT * FROM table' --input_format_allow_errors_num=1
```
: IInputFormat(std::move(header), in_), params(params_)
{
    const auto & port_header = getPort().getHeader();
    size_t num_columns = port_header.columns();
    serializations.resize(num_columns);
    for (size_t i = 0; i < num_columns; ++i)
        serializations[i] = port_header.getByPosition(i).type->getDefaultSerialization();
}
Chunk IRowInputFormat::generate()
{
    if (total_rows == 0)
        readPrefix();
    const Block & header = getPort().getHeader();
    size_t num_columns = header.columns();
    MutableColumns columns = header.cloneEmptyColumns();
    
    block_missing_values.clear();
    size_t num_rows = 0;
    try
    {
        RowReadExtension info;
        bool continue_reading = true;
        for (size_t rows = 0; rows < params.max_block_size && continue_reading; ++rows)
        {
            try
            {
                ++total_rows;
                info.read_columns.clear();