From 5e60a128894636cc89e8a7348d45cdd5fdea2b8e Mon Sep 17 00:00:00 2001 From: Mark Wolfe Date: Tue, 27 Jun 2023 20:57:11 +1000 Subject: [PATCH] apacheGH-36319: [Go][Parquet] Improved row group writer error messages --- go/parquet/file/file_writer_test.go | 8 ++++++-- go/parquet/file/row_group_writer.go | 8 ++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/go/parquet/file/file_writer_test.go b/go/parquet/file/file_writer_test.go index 8ff202b947bf0..bba0d2be28d98 100644 --- a/go/parquet/file/file_writer_test.go +++ b/go/parquet/file/file_writer_test.go @@ -139,7 +139,9 @@ func (t *SerializeTestSuite) unequalNumRows(maxRows int64, rowsPerCol []int64) { t.WriteBatchSubset(int(rowsPerCol[col]), 0, cw, t.DefLevels[:rowsPerCol[col]], nil) cw.Close() } - t.Error(rgw.Close()) + err := rgw.Close() + t.Error(err) + t.ErrorContains(err, "row mismatch for unbuffered row group") } func (t *SerializeTestSuite) unequalNumRowsBuffered(maxRows int64, rowsPerCol []int64) { @@ -154,7 +156,9 @@ func (t *SerializeTestSuite) unequalNumRowsBuffered(maxRows int64, rowsPerCol [] t.WriteBatchSubset(int(rowsPerCol[col]), 0, cw, t.DefLevels[:rowsPerCol[col]], nil) cw.Close() } - t.Error(rgw.Close()) + err := rgw.Close() + t.Error(err) + t.ErrorContains(err, "row mismatch for buffered row group") } func (t *SerializeTestSuite) TestZeroRows() { diff --git a/go/parquet/file/row_group_writer.go b/go/parquet/file/row_group_writer.go index 8fbb04ad7afb6..410f48b477a7c 100644 --- a/go/parquet/file/row_group_writer.go +++ b/go/parquet/file/row_group_writer.go @@ -110,13 +110,13 @@ func (rg *rowGroupWriter) checkRowsWritten() error { if rg.nrows == 0 { rg.nrows = current } else if rg.nrows != current { - return xerrors.New("row mismatch") + return xerrors.Errorf("row mismatch for unbuffered row group: %d, count expected: %d, actual: %d", rg.ordinal, current, rg.nrows) } } else if rg.buffered { current := rg.columnWriters[0].RowsWritten() - for _, wr := range rg.columnWriters[1:] { + for i, wr := range rg.columnWriters[1:] { if current != wr.RowsWritten() { - return xerrors.New("row mismatch error") + return xerrors.Errorf("row mismatch for buffered row group: %d, column: %d, count expected: %d, actual: %d", rg.ordinal, i+1, current, wr.RowsWritten()) } } rg.nrows = current @@ -182,7 +182,7 @@ func (rg *rowGroupWriter) Column(i int) (ColumnChunkWriter, error) { if i >= 0 && i < len(rg.columnWriters) { return rg.columnWriters[i], nil } - return nil, xerrors.New("invalid column number requested") + return nil, xerrors.Errorf("invalid column number requested: %d", i) } func (rg *rowGroupWriter) CurrentColumn() int { return rg.metadata.CurrentColumn() }