Skip to content

Commit

Permalink
teach CheckTimeZoneDatabaseAvailability how to inspect conda environm…
Browse files Browse the repository at this point in the history
…ents
  • Loading branch information
h-vetinari committed May 21, 2024
1 parent 8169d6e commit ca5a639
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions cpp/src/arrow/adapters/orc/adapter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -189,15 +189,21 @@ liborc::RowReaderOptions DefaultRowReaderOptions() {
#ifdef ARROW_ORC_NEED_TIME_ZONE_DATABASE_CHECK
// Proactively check timezone database availability for ORC versions older than 2.0.0
Status CheckTimeZoneDatabaseAvailability() {
auto tz_dir = std::getenv("TZDIR");
bool is_tzdb_avaiable = tz_dir != nullptr
// orc >=2.0.1 will look for tzdb in $CONDA_PREFIX/share/zoneinfo,
// which is provided by the package `tzdata` (if installed)
auto conda_prefix = std::getenv("CONDA_PREFIX");
auto tz_dir_raw = std::getenv("TZDIR");
std::string tz_dir = conda_prefix != nullptr
? std::string(conda_prefix) + "/share/zoneinfo"
: std::string(tz_dir_raw != nullptr ? tz_dir_raw : "");
bool is_tzdb_available = (!tz_dir.empty())
? std::filesystem::exists(tz_dir)
: std::filesystem::exists("/usr/share/zoneinfo");
if (!is_tzdb_avaiable) {
if (!is_tzdb_available) {
return Status::Invalid(
"IANA time zone database is unavailable but required by ORC."
" Please install it to /usr/share/zoneinfo or set TZDIR env to the installed"
" directory");
" directory. If you are using conda, simply install the package `tzdata`.");
}
return Status::OK();
}
Expand Down

0 comments on commit ca5a639

Please sign in to comment.