Skip to content

[Go][Parquet] Reading a parquet file with a nested field that is null for all records panics when using Go 1.21.1 #37712

@chelseajonesr

Description

@chelseajonesr

Describe the bug, including details regarding any error messages, version, and platform.

When reading Parquet files containing a nested field that is null for all records, it panics when using go 1.21.1 but not when using go 1.20.8.

This is a small reproducible case:
https://github.com/chelseajonesr/rfarrow/blob/f7bef4585eeb4d7582014bc54b0fa7092651f774/panic_test.go#L13

The panic:

panic: runtime error: slice bounds out of range [:5] with capacity 0

goroutine 15 [running]:
github.com/apache/arrow/go/v13/parquet/internal/encoding.(*PlainByteArrayDecoder).DecodeSpaced(0x0?, {0x0?, 0x14000307ce8?, 0x103398720?}, 0x103d2ff20?, {0x14000140980?, 0x100307c01?, 0x2?}, 0x400010000001f?)
	/Users/chelseajones/go/pkg/mod/github.com/apache/arrow/go/[email protected]/parquet/internal/encoding/byte_array_decoder.go:83 +0x130
github.com/apache/arrow/go/v13/parquet/file.(*byteArrayRecordReader).ReadValuesSpaced(0x1400017eb00, 0x0, 0x20?)
	/Users/chelseajones/go/pkg/mod/github.com/apache/arrow/go/[email protected]/parquet/file/record_reader.go:841 +0x134
github.com/apache/arrow/go/v13/parquet/file.(*recordReader).ReadRecordData(0x14000103260, 0x1)
	/Users/chelseajones/go/pkg/mod/github.com/apache/arrow/go/[email protected]/parquet/file/record_reader.go:548 +0x288
github.com/apache/arrow/go/v13/parquet/file.(*recordReader).ReadRecords(0x14000103260, 0x1)
	/Users/chelseajones/go/pkg/mod/github.com/apache/arrow/go/[email protected]/parquet/file/record_reader.go:632 +0x32c
github.com/apache/arrow/go/v13/parquet/pqarrow.(*leafReader).LoadBatch(0x140001032c0, 0x1)
	/Users/chelseajones/go/pkg/mod/github.com/apache/arrow/go/[email protected]/parquet/pqarrow/column_readers.go:103 +0xd8
github.com/apache/arrow/go/v13/parquet/pqarrow.(*structReader).LoadBatch.func1()
	/Users/chelseajones/go/pkg/mod/github.com/apache/arrow/go/[email protected]/parquet/pqarrow/column_readers.go:241 +0x30
golang.org/x/sync/errgroup.(*Group).Go.func1()
	/Users/chelseajones/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x58
created by golang.org/x/sync/errgroup.(*Group).Go in goroutine 13
	/Users/chelseajones/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:72 +0x98

Component(s)

Go, Parquet

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions