Skip to content

Commit f4f445a

Browse files
committed
Optimize Zstd decompression to reduce memory allocations and improve performance
1 parent d8e69f2 commit f4f445a

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

trino/trino.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,12 +1695,13 @@ func decompressSegment(data []byte, encoding string, metadata segmentMetadata) (
16951695
var decompressedData []byte
16961696
switch encoding {
16971697
case "json+zstd":
1698-
zstdReader, err := zstd.NewReader(bytes.NewReader(data))
1698+
zstdDecoder, err := zstd.NewReader(nil)
16991699
if err != nil {
17001700
return nil, fmt.Errorf("error creating zstd reader: %w", err)
17011701
}
1702-
defer zstdReader.Close()
1703-
decompressedData, err = io.ReadAll(zstdReader)
1702+
defer zstdDecoder.Close()
1703+
dst := make([]byte, 0, metadata.uncompressedSize)
1704+
decompressedData, err = zstdDecoder.DecodeAll(data, dst)
17041705
if err != nil {
17051706
return nil, fmt.Errorf("failed to decompress zstd segment at rowOffset %d: %v", metadata.rowOffset, err)
17061707
}

0 commit comments

Comments
 (0)