mirror of
https://github.com/neondatabase/neon.git
synced 2026-06-05 14:30:37 +00:00
Add zstd with low compression quality
This commit is contained in:
@@ -469,6 +469,7 @@ pub enum CompactionAlgorithm {
|
||||
)]
|
||||
#[strum(serialize_all = "kebab-case")]
|
||||
pub enum ImageCompressionAlgorithm {
|
||||
ZstdLow,
|
||||
Zstd,
|
||||
ZstdHigh,
|
||||
LZ4,
|
||||
|
||||
@@ -266,10 +266,16 @@ impl<const BUFFERED: bool> BlobWriter<BUFFERED> {
|
||||
const UNCOMPRESSED: u8 = 0x80;
|
||||
const ZSTD: u8 = UNCOMPRESSED | 0x10;
|
||||
const LZ4: u8 = UNCOMPRESSED | 0x20;
|
||||
use ImageCompressionAlgorithm::*;
|
||||
let (high_bit_mask, len_written, srcbuf) = match algorithm {
|
||||
Some(ImageCompressionAlgorithm::Zstd | ImageCompressionAlgorithm::ZstdHigh) => {
|
||||
Some(ZstdLow | Zstd | ZstdHigh) => {
|
||||
let mut encoder =
|
||||
if matches!(algorithm, Some(ImageCompressionAlgorithm::ZstdHigh)) {
|
||||
if matches!(algorithm, Some(ZstdLow)) {
|
||||
async_compression::tokio::write::ZstdEncoder::with_quality(
|
||||
Vec::new(),
|
||||
Level::Precise(1),
|
||||
)
|
||||
} else if matches!(algorithm, Some(ZstdHigh)) {
|
||||
async_compression::tokio::write::ZstdEncoder::with_quality(
|
||||
Vec::new(),
|
||||
Level::Precise(6),
|
||||
|
||||
@@ -381,6 +381,7 @@ impl ImageLayer {
|
||||
}
|
||||
let image_compressions = [
|
||||
None,
|
||||
Some(ImageCompressionAlgorithm::ZstdLow),
|
||||
Some(ImageCompressionAlgorithm::Zstd),
|
||||
Some(ImageCompressionAlgorithm::ZstdHigh),
|
||||
Some(ImageCompressionAlgorithm::LZ4),
|
||||
|
||||
Reference in New Issue
Block a user