diff --git a/src/table.jl b/src/table.jl index dc367d2..fe9206b 100644 --- a/src/table.jl +++ b/src/table.jl @@ -881,7 +881,8 @@ function build( validity = buildbitmap(batch, rb, nodeidx, bufferidx) bufferidx += 1 buffer = rb.buffers[bufferidx] - inline, views = reinterp(ViewElement, batch, buffer, rb.compression) + _, views = reinterp(ViewElement, batch, buffer, rb.compression) + inline = reinterpret(UInt8, views) # reuse the (possibly realigned) memory backing `views` bufferidx += 1 buffers = Vector{UInt8}[] for i = 1:rb.variadicBufferCounts[varbufferidx] diff --git a/test/reject_reason_trimmed.arrow b/test/reject_reason_trimmed.arrow new file mode 100644 index 0000000..b6ac143 Binary files /dev/null and b/test/reject_reason_trimmed.arrow differ diff --git a/test/runtests.jl b/test/runtests.jl index d720fa0..1b3418e 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1069,6 +1069,16 @@ end tbl = Arrow.Table(Arrow.tobuffer(tt[2])) @test tbl.col16[1] == Dates.Time(0, 0, 0) end + + @testset "#511: Bug in reading Utf8View data" begin + t = Arrow.Table( + joinpath( + dirname(pathof(Arrow)), + "../test/reject_reason_trimmed.arrow", + ), + ) + @test t.reject_reason[end] == "POST_ONLY" + end end # @testset "misc" @testset "DataAPI.metadata" begin