This is an automated email from the ASF dual-hosted git repository.
zeroshade pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-go.git
The following commit(s) were added to refs/heads/main by this push:
new 989b5550 fix(parquet/metadata): use default writer properties when
props is nil (#1058)
989b5550 is described below
commit 989b5550baa70da3b425f8c70e4f0877f84de36d
Author: Minh Vu <[email protected]>
AuthorDate: Wed Aug 5 19:35:25 2026 +0200
fix(parquet/metadata): use default writer properties when props is nil
(#1058)
### Rationale for this change
`NewFileMetadataBuilder` documents that nil writer properties select the
defaults, but dereferenced `props` while checking encryption settings
and panicked.
### What changes are included in this PR?
Initialize standard writer properties when `props` is nil, before
reading encryption configuration.
### Are these changes tested?
Yes. A regression test exercises the documented nil call with a valid
schema.
`go test ./parquet/metadata -run
TestNewFileMetadataBuilderUsesDefaultProperties`
### Are there any user-facing changes?
Passing nil writer properties now behaves as documented.
---
parquet/metadata/file.go | 3 +++
parquet/metadata/metadata_test.go | 13 +++++++++++++
2 files changed, 16 insertions(+)
diff --git a/parquet/metadata/file.go b/parquet/metadata/file.go
index f9035db2..95a00571 100644
--- a/parquet/metadata/file.go
+++ b/parquet/metadata/file.go
@@ -54,6 +54,9 @@ type FileMetaDataBuilder struct {
// NewFileMetadataBuilder will use the default writer properties if nil is
passed for
// the writer properties and nil is allowable for the key value metadata.
func NewFileMetadataBuilder(schema *schema.Schema, props
*parquet.WriterProperties, kvmeta KeyValueMetadata) *FileMetaDataBuilder {
+ if props == nil {
+ props = parquet.NewWriterProperties()
+ }
var crypto *format.FileCryptoMetaData
if props.FileEncryptionProperties() != nil &&
props.FileEncryptionProperties().EncryptedFooter() {
crypto = format.NewFileCryptoMetaData()
diff --git a/parquet/metadata/metadata_test.go
b/parquet/metadata/metadata_test.go
index 9c043911..39034fb2 100644
--- a/parquet/metadata/metadata_test.go
+++ b/parquet/metadata/metadata_test.go
@@ -31,6 +31,19 @@ import (
"github.com/stretchr/testify/require"
)
+func TestNewFileMetadataBuilderUsesDefaultProperties(t *testing.T) {
+ root, err := schema.NewGroupNode("schema",
parquet.Repetitions.Required, schema.FieldList{
+ schema.NewInt32Node("value", parquet.Repetitions.Required, -1),
+ }, -1)
+ require.NoError(t, err)
+
+ builder := metadata.NewFileMetadataBuilder(schema.NewSchema(root), nil,
nil)
+ fileMeta, err := builder.Finish()
+ require.NoError(t, err)
+ assert.EqualValues(t, parquet.V2_LATEST, fileMeta.Version())
+ assert.Equal(t, parquet.DefaultCreatedBy, fileMeta.GetCreatedBy())
+}
+
func generateTableMetaData(schema *schema.Schema, props
*parquet.WriterProperties, nrows int, statsInt, statsFloat
metadata.EncodedStatistics) (*metadata.FileMetaData, error) {
fbuilder := metadata.NewFileMetadataBuilder(schema, props, nil)
rg1Builder := fbuilder.AppendRowGroup()