Skip to content

Commit

Permalink
refine
Browse files Browse the repository at this point in the history
Signed-off-by: Lloyd-Pottiger <yan1579196623@gmail.com>
  • Loading branch information
Lloyd-Pottiger committed Jun 28, 2024
1 parent 7b91f1a commit 265fd8f
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 34 deletions.
18 changes: 16 additions & 2 deletions dbms/src/IO/Compression/CompressionSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,13 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include "CompressionSettings.h"

#include <Common/config.h>
#include <IO/Compression/CompressionSettings.h>
#include <Interpreters/Settings.h>
#include <lz4hc.h>

#include <magic_enum.hpp>

namespace DB
{
CompressionSetting::CompressionSetting(const Settings & settings)
Expand Down Expand Up @@ -53,4 +54,17 @@ int CompressionSetting::getDefaultLevel(CompressionMethod method)
}
}

CompressionSettings CompressionSettings::create(CompressionMethod method, const IDataType & type)
{
CompressionSettings settings(method);
if (type.isInteger())
{
auto & setting = settings.settings[0];
auto data_type = magic_enum::enum_cast<CompressionDataType>(type.getSizeOfValueInMemory());
RUNTIME_CHECK(data_type.has_value());
setting.data_type = data_type.value();
}
return settings;
}

} // namespace DB
3 changes: 3 additions & 0 deletions dbms/src/IO/Compression/CompressionSettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

#pragma once

#include <DataTypes/IDataType.h>
#include <IO/Compression/CompressionInfo.h>
#include <IO/Compression/CompressionMethod.h>
#include <common/types.h>
Expand Down Expand Up @@ -101,6 +102,8 @@ struct CompressionSettings
: settings(settings_)
{}

static CompressionSettings create(CompressionMethod method, const IDataType & type);

std::vector<CompressionSetting> settings;
};

Expand Down
26 changes: 6 additions & 20 deletions dbms/src/Storages/DeltaMerge/ColumnFile/ColumnFilePersisted.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,33 +71,19 @@ void serializeColumn(
const DataTypePtr & type,
size_t offset,
size_t limit,
CompressionMethod compression_method,
Int64 compression_level)
CompressionMethod /*compression_method*/,
Int64 /*compression_level*/)
{
std::unique_ptr<CompressedWriteBuffer<>> compressed;
if (type->isInteger())
{
CompressionSettings compression_settings(CompressionMethod::Lightweight);
auto & setting = compression_settings.settings[0];
auto data_type = magic_enum::enum_cast<CompressionDataType>(type->getSizeOfValueInMemory());
RUNTIME_CHECK(data_type.has_value());
setting.data_type = data_type.value();
compressed = std::make_unique<CompressedWriteBuffer<>>(buf, compression_settings);
}
else
{
compressed = std::make_unique<CompressedWriteBuffer<>>(
buf,
CompressionSettings(compression_method, compression_level));
}
auto compression_settings = CompressionSettings::create(CompressionMethod::Lightweight, *type);
CompressedWriteBuffer compressed(buf, compression_settings);
type->serializeBinaryBulkWithMultipleStreams(
column,
[&](const IDataType::SubstreamPath &) { return compressed.get(); },
[&](const IDataType::SubstreamPath &) { return &compressed; },
offset,
limit,
true,
{});
compressed->next();
compressed.next();
}

void deserializeColumn(IColumn & column, const DataTypePtr & type, std::string_view data_buf, size_t rows)
Expand Down
17 changes: 5 additions & 12 deletions dbms/src/Storages/DeltaMerge/File/DMFileWriter.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,10 @@
#include <Storages/DeltaMerge/File/DMFile.h>
#include <Storages/DeltaMerge/Index/MinMaxIndex.h>

#include "magic_enum.hpp"

namespace DB
{
namespace DM
namespace DB::DM
{

namespace detail
{
static inline DB::ChecksumAlgo getAlgorithmOrNone(DMFile & dmfile)
Expand All @@ -40,6 +38,7 @@ static inline size_t getFrameSizeOrDefault(DMFile & dmfile)
return dmfile.getConfiguration() ? dmfile.getConfiguration()->getChecksumFrameLength() : DBMS_DEFAULT_BUFFER_SIZE;
}
} // namespace detail

class DMFileWriter
{
public:
Expand Down Expand Up @@ -71,12 +70,7 @@ class DMFileWriter
{
if (type->isInteger())
{
assert(compression_settings.settings.size() == 1);
CompressionSettings settings(CompressionMethod::Lightweight);
auto & setting = settings.settings[0];
auto data_type = magic_enum::enum_cast<CompressionDataType>(type->getSizeOfValueInMemory());
RUNTIME_CHECK(data_type.has_value());
setting.data_type = data_type.value();
auto settings = CompressionSettings::create(CompressionMethod::Lightweight, *type);
compressed_buf = CompressedWriteBuffer<>::build(*plain_file, settings, !dmfile->getConfiguration());
}
else
Expand Down Expand Up @@ -197,5 +191,4 @@ class DMFileWriter
bool is_empty_file = true;
};

} // namespace DM
} // namespace DB
} // namespace DB::DM

0 comments on commit 265fd8f

Please sign in to comment.