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 1885c623 fix(parquet): report initialized row-group columns correctly 
(#1072)
1885c623 is described below

commit 1885c623009f313499f1f3f23141fd4959642255
Author: Minh Vu <[email protected]>
AuthorDate: Wed Aug 5 20:33:43 2026 +0200

    fix(parquet): report initialized row-group columns correctly (#1072)
    
    ## Problem
    
    `RowGroupMetaDataBuilder.nextCol` already represents the number of
    initialized columns. The incomplete-row-group error subtracted one from
    it, reporting `-1` before any column was initialized and remaining off
    by one afterward.
    
    ## Change
    
    Report `nextCol` directly in the diagnostic. This changes only the error
    count; row-group construction behavior is unchanged.
    
    ## Coverage
    
    The regression test checks the messages with zero and one initialized
    columns in a two-column schema.
    
    ## Validation
    
    `go test ./parquet/metadata`
---
 parquet/file/file_writer_test.go  |  4 ++--
 parquet/metadata/metadata_test.go | 17 +++++++++++++++++
 parquet/metadata/row_group.go     |  2 +-
 3 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/parquet/file/file_writer_test.go b/parquet/file/file_writer_test.go
index 6265a32a..9e1abd08 100644
--- a/parquet/file/file_writer_test.go
+++ b/parquet/file/file_writer_test.go
@@ -1474,8 +1474,8 @@ func TestRowGroupClosePropagatesMetadataFinishError(t 
*testing.T) {
        rgw, err := writer.AppendRowGroupChecked()
        require.NoError(t, err)
 
-       require.ErrorContains(t, rgw.Close(), "only -1 out of 1 columns are 
initialized")
-       require.ErrorContains(t, writer.Close(), "only -1 out of 1 columns are 
initialized")
+       require.ErrorContains(t, rgw.Close(), "only 0 out of 1 columns are 
initialized")
+       require.ErrorContains(t, writer.Close(), "only 0 out of 1 columns are 
initialized")
 }
 
 func TestFlushWithFooterKeepsPageIndexBuilderAppendable(t *testing.T) {
diff --git a/parquet/metadata/metadata_test.go 
b/parquet/metadata/metadata_test.go
index 39034fb2..96b11819 100644
--- a/parquet/metadata/metadata_test.go
+++ b/parquet/metadata/metadata_test.go
@@ -88,6 +88,23 @@ func assertStatsSet(t *testing.T, m 
*metadata.ColumnChunkMetaData) {
        assert.True(t, ok)
 }
 
+func TestRowGroupFinishReportsInitializedColumnCount(t *testing.T) {
+       fields := schema.FieldList{
+               schema.NewInt32Node("first", parquet.Repetitions.Required, -1),
+               schema.NewInt32Node("second", parquet.Repetitions.Required, -1),
+       }
+       root, err := schema.NewGroupNode("schema", 
parquet.Repetitions.Required, fields, -1)
+       require.NoError(t, err)
+       builder := metadata.NewFileMetadataBuilder(schema.NewSchema(root), 
parquet.NewWriterProperties(), nil)
+       rowGroup := builder.AppendRowGroup()
+
+       err = rowGroup.Finish(0, 0)
+       require.EqualError(t, err, "parquet: only 0 out of 2 columns are 
initialized")
+       rowGroup.NextColumnChunk()
+       err = rowGroup.Finish(0, 0)
+       require.EqualError(t, err, "parquet: only 1 out of 2 columns are 
initialized")
+}
+
 func assertStats(t *testing.T, m *metadata.ColumnChunkMetaData) 
metadata.TypedStatistics {
        s, err := m.Statistics()
        assert.NoError(t, err)
diff --git a/parquet/metadata/row_group.go b/parquet/metadata/row_group.go
index c8d19a01..b578e343 100644
--- a/parquet/metadata/row_group.go
+++ b/parquet/metadata/row_group.go
@@ -187,7 +187,7 @@ func (r *RowGroupMetaDataBuilder) NextColumnChunk() 
*ColumnChunkMetaDataBuilder
 // being written. e.g. first row group should be 0, second is 1, and so on...
 func (r *RowGroupMetaDataBuilder) Finish(_ int64, ordinal int16) error {
        if r.nextCol != r.NumColumns() {
-               return fmt.Errorf("parquet: only %d out of %d columns are 
initialized", r.nextCol-1, r.schema.NumColumns())
+               return fmt.Errorf("parquet: only %d out of %d columns are 
initialized", r.nextCol, r.schema.NumColumns())
        }
 
        var (

Reply via email to