in src/table.jl [760:789]
function uncompress(ptr::Ptr{UInt8}, buffer, compression)
buffer.length == 0 && return 0, UInt8[]
len = unsafe_load(convert(Ptr{Int64}, ptr))
len == 0 && return 0, UInt8[]
ptr += 8
encodedbytes = unsafe_wrap(Array, ptr, buffer.length - 8)
if len == -1
return length(encodedbytes), copy(encodedbytes)
end
decodedbytes = Vector{UInt8}(undef, len)
if compression.codec === Meta.CompressionType.LZ4_FRAME
comp = lz4_frame_decompressor()
Base.@lock comp begin
transcode(comp[], encodedbytes, decodedbytes)
end
elseif compression.codec === Meta.CompressionType.ZSTD
comp = zstd_decompressor()
Base.@lock comp begin
transcode(comp[], encodedbytes, decodedbytes)
end
else
error(
"unsupported compression type when reading arrow buffers: $(typeof(compression.codec))",
)
end
return len, decodedbytes
end