diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-06-12 21:38:51 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-06-12 21:39:25 +0200 |
commit | 629e5365f224ca6e90cffd9461dc7b83ed5dc51d (patch) | |
tree | aea9198600592bb43210aca8671cbe3ed190220a /document | |
parent | 62fbb0e42a634da08bb330fcb52aa87a6af9a17d (diff) |
Add support for Zstandard compression in the document store.
Diffstat (limited to 'document')
-rw-r--r-- | document/src/vespa/document/util/compressionconfig.h | 17 | ||||
-rw-r--r-- | document/src/vespa/document/util/compressor.cpp | 14 |
2 files changed, 22 insertions, 9 deletions
diff --git a/document/src/vespa/document/util/compressionconfig.h b/document/src/vespa/document/util/compressionconfig.h index 1ed6ec882ec..ff02e35977a 100644 --- a/document/src/vespa/document/util/compressionconfig.h +++ b/document/src/vespa/document/util/compressionconfig.h @@ -7,16 +7,16 @@ namespace document { - struct CompressionConfig { enum Type { - NONE = 0, - HISTORIC_1 = 1, - HISTORIC_2 = 2, - HISTORIC_3 = 3, - HISTORIC_4 = 4, - UNCOMPRESSABLE = 5, - LZ4 = 6 + NONE = 0, + HISTORIC_1 = 1, + HISTORIC_2 = 2, + HISTORIC_3 = 3, + HISTORIC_4 = 4, + UNCOMPRESSABLE = 5, + LZ4 = 6, + ZSTD = 7 }; CompressionConfig() @@ -47,6 +47,7 @@ struct CompressionConfig { case 4: return HISTORIC_4; case 5: return UNCOMPRESSABLE; case 6: return LZ4; + case 7: return ZSTD; default: return NONE; } } diff --git a/document/src/vespa/document/util/compressor.cpp b/document/src/vespa/document/util/compressor.cpp index d29f1db71b2..c9fac4cf4b0 100644 --- a/document/src/vespa/document/util/compressor.cpp +++ b/document/src/vespa/document/util/compressor.cpp @@ -1,10 +1,10 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "lz4compressor.h" +#include "zstdcompressor.h" #include <vespa/vespalib/util/memory.h> #include <vespa/vespalib/util/stringfmt.h> #include <vespa/vespalib/data/databuffer.h> -#include <stdexcept> using vespalib::alloc::Alloc; using vespalib::ConstBufferRef; @@ -39,6 +39,12 @@ docompress(const CompressionConfig & compression, const ConstBufferRef & org, Da type = compress(lz4, compression, org, dest); } break; + case CompressionConfig::ZSTD: + { + ZStdCompressor zstd; + type = compress(zstd, compression, org, dest); + } + break; case CompressionConfig::NONE: default: break; @@ -99,6 +105,12 @@ decompress(const CompressionConfig::Type & type, size_t uncompressedLen, const C decompress(lz4, uncompressedLen, org, dest, allowSwap); } break; + case CompressionConfig::ZSTD: + { + ZStdCompressor zstd; + decompress(zstd, uncompressedLen, org, dest, allowSwap); + } + break; case CompressionConfig::NONE: case CompressionConfig::UNCOMPRESSABLE: if (allowSwap) { |