diff --git a/dbms/src/IO/Compression/CompressionFactory.h b/dbms/src/IO/Compression/CompressionFactory.h index 6192617cf98..0eaa6da7ec7 100644 --- a/dbms/src/IO/Compression/CompressionFactory.h +++ b/dbms/src/IO/Compression/CompressionFactory.h @@ -40,6 +40,7 @@ extern const int UNKNOWN_COMPRESSION_METHOD; class CompressionFactory { public: + template static CompressionCodecPtr create(const CompressionSetting & setting) { // LZ4 and LZ4HC have the same format, the difference is only in compression. @@ -47,9 +48,12 @@ class CompressionFactory if (setting.method == CompressionMethod::LZ4HC) return std::make_unique(setting.level); - if (setting.data_type == CompressionDataType::String || setting.data_type == CompressionDataType::Float32 - || setting.data_type == CompressionDataType::Float64) - return std::make_unique(setting.level); + if constexpr (!IGNORE_DATA_TYPE) + { + if (setting.data_type == CompressionDataType::String || setting.data_type == CompressionDataType::Float32 + || setting.data_type == CompressionDataType::Float64) + return std::make_unique(setting.level); + } switch (setting.method_byte) { @@ -92,7 +96,7 @@ class CompressionFactory static CompressionCodecPtr createForDecompress(UInt8 method_byte) { CompressionSetting setting(static_cast(method_byte)); - return create(setting); + return create(setting); } private: