Added:
* IDataTypeDomain interface;
* method DataTypeFactory::registerDataTypeDomain for registering domains;
* DataTypeDomainWithSimpleSerialization domain base class with simple serialization/deserialization;
* Concrete IPv4 and IPv6 domain implementations: DataTypeDomanIPv6 and DataTypeDomanIPv4;
Updated:
* IDataType text serialization/deserialization methods;
* IDataType implementation to use domain for text serialization/deserialization;
* Refactored implementation of the IPv4/IPv6 functions to use formatIPv4/v6 and parseIPv4/v6 from Common/formatIPv6.h;
Tests:
* Added test cases for IPv4 and IPv6 domains.
* Updated IPv4/v6 functions tests to validate more cases;
* Added performance tests for IPv4 and IPv6 related functions;
feature is implemented for DICT TYPES THAT SUPPORT
and for sources SOURCE TYPES THAT ARE SUPPORTED
to use the feature add <update_field>...</...> to dictionary sourcei config.
If the field is skipped or used with unsupported dictionary types,
all data is updated every time if the field is provided,
value of last update time is passed to the source
with the expectation that only records that were updated after
provided time will be passed to the dictionary
The built-in clang doesn’t support value() for
`std::experimental::optional`. It however supports
dereference operator, which is basically the
same thing:
```
/clickhouse/dbms/src/DataStreams/NullableAdapterBlockInputStream.cpp:83:67: error: call to unavailable member function 'value':
res.insert({elem.column, elem.type, rename[i].value()});
~~~~~~~~~~^~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/experimental/optional:547:17: note: candidate function has been explicitly made unavailable
value_type& value()
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/experimental/optional:539:33: note: candidate function has been explicitly made unavailable
constexpr value_type const& value() const
```