Skip to content

Commit 8bbb5d7

Browse files
committed
PARQUET-789: Catch/translate ParquetExceptions in parquet::arrow::FileReader
I ran into this issue when debugging ARROW-406. I also changed the translated status type to `IOError` if that makes sense. Author: Wes McKinney <wes.mckinney@twosigma.com> Closes apache#201 from wesm/PARQUET-789 and squashes the following commits: 67a8c58 [Wes McKinney] Catch ParquetException in parquet::arrow FileReader::ReadFlatColumn/ReadFlatTable Change-Id: Iedec3d68d1aa391ca10374ef97fffef7069b8374
1 parent 38416c4 commit 8bbb5d7

2 files changed

Lines changed: 15 additions & 7 deletions

File tree

cpp/src/parquet/arrow/reader.cc

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,19 @@ Status FileReader::GetFlatColumn(int i, std::unique_ptr<FlatColumnReader>* out)
201201
}
202202

203203
Status FileReader::ReadFlatColumn(int i, std::shared_ptr<Array>* out) {
204-
return impl_->ReadFlatColumn(i, out);
204+
try {
205+
return impl_->ReadFlatColumn(i, out);
206+
} catch (const ::parquet::ParquetException& e) {
207+
return ::arrow::Status::IOError(e.what());
208+
}
205209
}
206210

207211
Status FileReader::ReadFlatTable(std::shared_ptr<Table>* out) {
208-
return impl_->ReadFlatTable(out);
212+
try {
213+
return impl_->ReadFlatTable(out);
214+
} catch (const ::parquet::ParquetException& e) {
215+
return ::arrow::Status::IOError(e.what());
216+
}
209217
}
210218

211219
const ParquetFileReader* FileReader::parquet_reader() const {

cpp/src/parquet/arrow/utils.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626
namespace parquet {
2727
namespace arrow {
2828

29-
#define PARQUET_CATCH_NOT_OK(s) \
30-
try { \
31-
(s); \
32-
} catch (const ::parquet::ParquetException& e) { \
33-
return ::arrow::Status::Invalid(e.what()); \
29+
#define PARQUET_CATCH_NOT_OK(s) \
30+
try { \
31+
(s); \
32+
} catch (const ::parquet::ParquetException& e) { \
33+
return ::arrow::Status::IOError(e.what()); \
3434
}
3535

3636
#define PARQUET_IGNORE_NOT_OK(s) \

0 commit comments

Comments
 (0)