Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions contrib/pax_storage/src/cpp/access/paxc_rel_options.cc
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ static const relopt_compress_type_mapping kSelfRelCompressMap[] = {
pax::ColumnEncoding_Kind::ColumnEncoding_Kind_COMPRESS_ZSTD},
{ColumnEncoding_Kind_COMPRESS_ZLIB_STR,
pax::ColumnEncoding_Kind::ColumnEncoding_Kind_COMPRESS_ZLIB},
#ifdef USE_LZ4
{ColumnEncoding_Kind_COMPRESS_LZ4_STR,
pax::ColumnEncoding_Kind::ColumnEncoding_Kind_COMPRESS_LZ4},
#endif
};

typedef struct {
Expand Down
1 change: 1 addition & 0 deletions contrib/pax_storage/src/cpp/access/paxc_rel_options.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ namespace paxc {
#define ColumnEncoding_Kind_DICTIONARY_STR "dict"
#define ColumnEncoding_Kind_COMPRESS_ZSTD_STR "zstd"
#define ColumnEncoding_Kind_COMPRESS_ZLIB_STR "zlib"
#define ColumnEncoding_Kind_COMPRESS_LZ4_STR "lz4"

#define STORAGE_FORMAT_TYPE_PORC "porc"
#define STORAGE_FORMAT_TYPE_PORC_VEC "porc_vec"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -798,13 +798,19 @@ INSTANTIATE_TEST_SUITE_P(
PaxColumnEncodingTestCombine, PaxColumnCompressTest,
testing::Combine(testing::Values(16, 32, 64),
testing::Values(ColumnEncoding_Kind_NO_ENCODED,
#ifdef USE_LZ4
ColumnEncoding_Kind_COMPRESS_LZ4,
#endif
ColumnEncoding_Kind_COMPRESS_ZSTD,
ColumnEncoding_Kind_COMPRESS_ZLIB)));

INSTANTIATE_TEST_SUITE_P(
PaxColumnEncodingTestCombine, PaxNonFixedColumnCompressTest,
testing::Combine(testing::Values(16, 32, 64),
testing::Values(ColumnEncoding_Kind_NO_ENCODED,
#ifdef USE_LZ4
ColumnEncoding_Kind_COMPRESS_LZ4,
#endif
ColumnEncoding_Kind_COMPRESS_ZSTD,
ColumnEncoding_Kind_COMPRESS_ZLIB),
testing::Values(true, false),
Expand Down
15 changes: 12 additions & 3 deletions contrib/pax_storage/src/cpp/storage/columns/pax_compress.cc
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ std::shared_ptr<PaxCompressor> PaxCompressor::CreateBlockCompressor(
compressor = std::make_shared<PaxZlibCompressor>();
break;
}
#ifdef USE_LZ4
case ColumnEncoding_Kind::ColumnEncoding_Kind_COMPRESS_LZ4: {
compressor = std::make_shared<PaxLZ4Compressor>();
break;
}
#endif
case ColumnEncoding_Kind::ColumnEncoding_Kind_DEF_ENCODED: {
CBDB_RAISE(cbdb::CException::ExType::kExTypeLogicError,
fmt("Invalid compress type %d",
Expand Down Expand Up @@ -230,9 +236,12 @@ size_t PaxLZ4Compressor::GetCompressBound(size_t src_len) {
}

size_t PaxLZ4Compressor::Compress(void *dst_buff, size_t dst_cap,
void *src_buff, size_t src_len, int /*lvl*/) {
return LZ4_compress_default((char *)src_buff, (char *)dst_buff, src_len,
dst_cap);
void *src_buff, size_t src_len, int lvl) {
// acceleration affects compression speed, the larger acceleration value,
// the less compression ratio.
int acceleration = (20 - lvl) / 6;
return LZ4_compress_fast((char *)src_buff, (char *)dst_buff, src_len,
dst_cap, acceleration);
}

size_t PaxLZ4Compressor::Decompress(void *dst_buff, size_t dst_len,
Expand Down
1 change: 1 addition & 0 deletions contrib/pax_storage/src/cpp/storage/proto/pax.proto
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ message ColumnEncoding {
COMPRESS_ZLIB = 4; // use ZLIB to compress

DICTIONARY = 5; // use dict-endoing
COMPRESS_LZ4 = 6; // use lz4 to compress
}

optional Kind kind = 1;
Expand Down
Loading