**Describe the issue**

```
SELECT
    extract(log, '\\*   Trying ([0-9a-z\\.\\:\\[\\]]+):\\d+\\.\\.\\.') AS resolved_address,
    toIPv4(resolved_address) AS ipv4
FROM minicrawl
LIMIT 10

┌─resolved_address─┬───────────ipv4─┐
│ 89.46.106.77     │   89.46.106.77 │
│ 13.33.243.83     │   13.33.243.83 │
│ 93.95.100.90     │   93.95.100.90 │
│ 23.227.38.32     │   23.227.38.32 │
│ 203.113.174.46   │ 203.113.174.46 │
│ 13.70.20.161     │   13.70.20.161 │
│ 60.199.172.227   │ 60.199.172.227 │
│                  │        0.0.0.0 │
│                  │        0.0.0.0 │
│ 82.149.228.245   │ 82.149.228.245 │
└──────────────────┴────────────────┘
```
#pragma once
#include <memory>
#include <Common/COW.h>
#include <boost/noncopyable.hpp>
#include <Core/Names.h>
#include <Core/Types.h>
#include <DataTypes/DataTypeCustom_fwd.h>
namespace DB
{
class ReadBuffer;
class WriteBuffer;
class IDataType;
struct FormatSettings;
class IColumn;
using ColumnPtr = COW<IColumn>::Ptr;
using MutableColumnPtr = COW<IColumn>::MutablePtr;
class Field;
using DataTypePtr = std::shared_ptr<const IDataType>;
using DataTypes = std::vector<DataTypePtr>;
class ProtobufReader;
class ProtobufWriter;
struct NameAndTypePair;
/** Properties of data type.
  * Contains methods for serialization/deserialization.
  * Implementations of this interface represent a data type (example: UInt8)
  *  or parametric family of data types (example: Array(...)).
  *
  * DataType is totally immutable object. You can always share them.
  */
class IDataType : private boost::noncopyable