summaryrefslogtreecommitdiffstats
path: root/yt/cpp/mapreduce/interface/protobuf_format.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'yt/cpp/mapreduce/interface/protobuf_format.cpp')
-rw-r--r--yt/cpp/mapreduce/interface/protobuf_format.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/yt/cpp/mapreduce/interface/protobuf_format.cpp b/yt/cpp/mapreduce/interface/protobuf_format.cpp
index 65090aa4d5b..cfd8ef9c31e 100644
--- a/yt/cpp/mapreduce/interface/protobuf_format.cpp
+++ b/yt/cpp/mapreduce/interface/protobuf_format.cpp
@@ -237,7 +237,6 @@ EWrapperOneofFlag::Enum OptionToOneofFlag(TOneofOption option)
return std::visit(TVisitor(), option);
}
-
template <typename T, typename TOptionToFlag>
void SetOption(TMaybe<T>& option, T newOption, TOptionToFlag optionToFlag)
{
@@ -496,6 +495,18 @@ private:
////////////////////////////////////////////////////////////////////////////////
+TString GetOneofName(const ::google::protobuf::OneofDescriptor* descriptor)
+{
+ auto nameFromExtension = descriptor->options().GetExtension(variant_field_name);
+ if (nameFromExtension.empty()) {
+ return FromProto<TString>(descriptor->name());
+ } else {
+ return nameFromExtension;
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
} // namespace
////////////////////////////////////////////////////////////////////////////////
@@ -1126,6 +1137,12 @@ TMaybe<TVector<TString>> InferColumnFilter(const ::google::protobuf::Descriptor&
result.push_back(GetColumnName(*field));
}
}
+
+ for (int i = 0; i < descriptor.real_oneof_decl_count(); ++i) {
+ const auto* oneof = descriptor.oneof_decl(i);
+ result.push_back(GetOneofName(oneof));
+ }
+
return result;
}