diff options
| author | ermolovd <[email protected]> | 2025-09-17 14:47:26 +0300 |
|---|---|---|
| committer | ermolovd <[email protected]> | 2025-09-17 15:41:40 +0300 |
| commit | 9f850526f9cea07d55a28f3cab6047074e994bac (patch) | |
| tree | b73f764928ebb4e27f1942196dba288081a5264b /yt/cpp/mapreduce/interface/common.cpp | |
| parent | 83cc51995c595f710b027094fcd4532535d1b8af (diff) | |
YT-15805: introduce tz-types into type info
#### Добавление поддержки временных типов с часовым поясом (TZ-типы) 📝
- 🧱 Добавлены новые примитивные типы для представления даты, даты-времени и меток времени с часовым поясом: `TzDate32`, `TzDatetime64`, `TzTimestamp64`.
- 🧪 В модульные тесты добавлены проверки корректности создания и идентификации новых временных типов.
- 📦 Обновлена логика сериализации/десериализации: TZ-типы отображаются в строковый формат при работе с различными протоколами (Skiff, protobuf, JSON).
- ⚠️ В местах чтения данных добавлена заглушка, которая выбрасывает исключение при попытке обработки новых типов — это временное решение до реализации полной поддержки.
- 🔧 Упрощена иерархия классов примитивных типов за счёт использования шаблона `TPrimitiveTypeBase`.
- 🗂️ Изменён подход к обработке неизвестных типов в нескольких компонентах: вместо явного перечисления всех поддерживаемых типов теперь используется `default` ветка с общим обработчиком.
---
**Оценить качество описания можно [здесь](https://nda.ya.ru/t/_MxIaV0Q7FnCMG**
<a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"><font size="2">Autodescription by Code Assistant</font></a>
commit_hash:265cf034372d36f60988238e273cbfe532c2a4e5
Diffstat (limited to 'yt/cpp/mapreduce/interface/common.cpp')
| -rw-r--r-- | yt/cpp/mapreduce/interface/common.cpp | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/yt/cpp/mapreduce/interface/common.cpp b/yt/cpp/mapreduce/interface/common.cpp index 7abbef91277..840ec3eda2b 100644 --- a/yt/cpp/mapreduce/interface/common.cpp +++ b/yt/cpp/mapreduce/interface/common.cpp @@ -185,6 +185,14 @@ static NTi::TTypePtr OldTypeToTypeV3(EValueType type) return NTi::Datetime(); case VT_TIMESTAMP: return NTi::Timestamp(); + + case VT_TZ_DATE: + return NTi::TzDate(); + case VT_TZ_DATETIME: + return NTi::TzDatetime(); + case VT_TZ_TIMESTAMP: + return NTi::TzTimestamp(); + case VT_INTERVAL: return NTi::Interval(); @@ -199,6 +207,14 @@ static NTi::TTypePtr OldTypeToTypeV3(EValueType type) return NTi::Datetime64(); case VT_TIMESTAMP64: return NTi::Timestamp64(); + + case VT_TZ_DATE32: + return NTi::TzDate32(); + case VT_TZ_DATETIME64: + return NTi::TzDatetime64(); + case VT_TZ_TIMESTAMP64: + return NTi::TzTimestamp64(); + case VT_INTERVAL64: return NTi::Interval64(); @@ -253,9 +269,11 @@ static std::pair<EValueType, bool> Simplify(const NTi::TTypePtr& type) return {VT_INTERVAL, true}; case ETypeName::TzDate: + return {VT_TZ_DATE, true}; case ETypeName::TzDatetime: + return {VT_TZ_DATETIME, true}; case ETypeName::TzTimestamp: - break; + return {VT_TZ_TIMESTAMP, true}; case ETypeName::Json: return {VT_JSON, true}; @@ -272,6 +290,14 @@ static std::pair<EValueType, bool> Simplify(const NTi::TTypePtr& type) return {VT_DATETIME64, true}; case ETypeName::Timestamp64: return {VT_TIMESTAMP64, true}; + + case ETypeName::TzDate32: + return {VT_TZ_DATE32, true}; + case ETypeName::TzDatetime64: + return {VT_TZ_DATETIME64, true}; + case ETypeName::TzTimestamp64: + return {VT_TZ_TIMESTAMP64, true}; + case ETypeName::Interval64: return {VT_INTERVAL64, true}; @@ -689,6 +715,14 @@ TString ToString(EValueType type) return "datetime"; case VT_TIMESTAMP: return "timestamp"; + + case VT_TZ_DATE: + return "tz_date"; + case VT_TZ_DATETIME: + return "tz_datetime"; + case VT_TZ_TIMESTAMP: + return "tz_timestamp"; + case VT_INTERVAL: return "interval"; @@ -704,6 +738,14 @@ TString ToString(EValueType type) return "datetime64"; case VT_TIMESTAMP64: return "timestamp64"; + + case VT_TZ_DATE32: + return "tz_date32"; + case VT_TZ_DATETIME64: + return "tz_datetime64"; + case VT_TZ_TIMESTAMP64: + return "tz_timestamp64"; + case VT_INTERVAL64: return "interval64"; |
