From bd035b110830c24f40f509ac4eee9043d4f1bdeb Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 1 Feb 2022 15:32:49 -0800 Subject: [PATCH 1/3] C++20 compatibility: Qualify arrow_vendored::date::format(). --- cpp/src/arrow/array/diff.cc | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/cpp/src/arrow/array/diff.cc b/cpp/src/arrow/array/diff.cc index bcc065c69b4..c431f413709 100644 --- a/cpp/src/arrow/array/diff.cc +++ b/cpp/src/arrow/array/diff.cc @@ -639,7 +639,6 @@ class MakeFormatterImpl { auto fmt = fmt_str.c_str(); auto unit = checked_cast(*array.type()).unit(); auto value = checked_cast&>(array).Value(index); - using arrow_vendored::date::format; using std::chrono::nanoseconds; using std::chrono::microseconds; using std::chrono::milliseconds; @@ -649,32 +648,32 @@ class MakeFormatterImpl { switch (unit) { case TimeUnit::NANO: - *os << format(fmt, static_cast(value) + epoch); + *os << arrow_vendored::date::format(fmt, static_cast(value) + epoch); break; case TimeUnit::MICRO: - *os << format(fmt, static_cast(value) + epoch); + *os << arrow_vendored::date::format(fmt, static_cast(value) + epoch); break; case TimeUnit::MILLI: - *os << format(fmt, static_cast(value) + epoch); + *os << arrow_vendored::date::format(fmt, static_cast(value) + epoch); break; case TimeUnit::SECOND: - *os << format(fmt, static_cast(value) + epoch); + *os << arrow_vendored::date::format(fmt, static_cast(value) + epoch); break; } return; } switch (unit) { case TimeUnit::NANO: - *os << format(fmt, static_cast(value)); + *os << arrow_vendored::date::format(fmt, static_cast(value)); break; case TimeUnit::MICRO: - *os << format(fmt, static_cast(value)); + *os << arrow_vendored::date::format(fmt, static_cast(value)); break; case TimeUnit::MILLI: - *os << format(fmt, static_cast(value)); + *os << arrow_vendored::date::format(fmt, static_cast(value)); break; case TimeUnit::SECOND: - *os << format(fmt, static_cast(value)); + *os << arrow_vendored::date::format(fmt, static_cast(value)); break; } }; From bd49a6849c707c54e8b2427a06b29ec6463c3dbf Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 2 Feb 2022 02:43:38 -0800 Subject: [PATCH 2/3] Shorten lines with a namespace alias. --- cpp/src/arrow/array/diff.cc | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/cpp/src/arrow/array/diff.cc b/cpp/src/arrow/array/diff.cc index c431f413709..ef66ef0678a 100644 --- a/cpp/src/arrow/array/diff.cc +++ b/cpp/src/arrow/array/diff.cc @@ -639,41 +639,42 @@ class MakeFormatterImpl { auto fmt = fmt_str.c_str(); auto unit = checked_cast(*array.type()).unit(); auto value = checked_cast&>(array).Value(index); + namespace avd = arrow_vendored::date; using std::chrono::nanoseconds; using std::chrono::microseconds; using std::chrono::milliseconds; using std::chrono::seconds; if (AddEpoch) { - static arrow_vendored::date::sys_days epoch{arrow_vendored::date::jan / 1 / 1970}; + static avd::sys_days epoch{avd::jan / 1 / 1970}; switch (unit) { case TimeUnit::NANO: - *os << arrow_vendored::date::format(fmt, static_cast(value) + epoch); + *os << avd::format(fmt, static_cast(value) + epoch); break; case TimeUnit::MICRO: - *os << arrow_vendored::date::format(fmt, static_cast(value) + epoch); + *os << avd::format(fmt, static_cast(value) + epoch); break; case TimeUnit::MILLI: - *os << arrow_vendored::date::format(fmt, static_cast(value) + epoch); + *os << avd::format(fmt, static_cast(value) + epoch); break; case TimeUnit::SECOND: - *os << arrow_vendored::date::format(fmt, static_cast(value) + epoch); + *os << avd::format(fmt, static_cast(value) + epoch); break; } return; } switch (unit) { case TimeUnit::NANO: - *os << arrow_vendored::date::format(fmt, static_cast(value)); + *os << avd::format(fmt, static_cast(value)); break; case TimeUnit::MICRO: - *os << arrow_vendored::date::format(fmt, static_cast(value)); + *os << avd::format(fmt, static_cast(value)); break; case TimeUnit::MILLI: - *os << arrow_vendored::date::format(fmt, static_cast(value)); + *os << avd::format(fmt, static_cast(value)); break; case TimeUnit::SECOND: - *os << arrow_vendored::date::format(fmt, static_cast(value)); + *os << avd::format(fmt, static_cast(value)); break; } }; From e147dabdc57ce97f82d76500245384183dfc350e Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Wed, 2 Feb 2022 14:20:01 +0100 Subject: [PATCH 3/3] Add comment --- cpp/src/arrow/array/diff.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/src/arrow/array/diff.cc b/cpp/src/arrow/array/diff.cc index ef66ef0678a..16f4f9c7638 100644 --- a/cpp/src/arrow/array/diff.cc +++ b/cpp/src/arrow/array/diff.cc @@ -639,6 +639,8 @@ class MakeFormatterImpl { auto fmt = fmt_str.c_str(); auto unit = checked_cast(*array.type()).unit(); auto value = checked_cast&>(array).Value(index); + // Using unqualified `format` directly would produce ambiguous + // lookup because of `std::format` (ARROW-15520). namespace avd = arrow_vendored::date; using std::chrono::nanoseconds; using std::chrono::microseconds;