From dd4a1996982534636734674db66e44464b0c0d83 Mon Sep 17 00:00:00 2001 From: Ruihang Xia Date: Tue, 8 Apr 2025 15:47:19 +0800 Subject: [PATCH] feat: add tag_columns to series normalize plan (#223) * feat: add tag_columns to series normalize plan Signed-off-by: Ruihang Xia * feat: add `manifest_version` to `GrantedRegion` (#224) * feat: add backend option to `SetFulltext` (#226) Signed-off-by: Zhenchi * feat: add `extensions` field to `GrantedRegion` (#227) --------- Signed-off-by: Ruihang Xia Signed-off-by: Zhenchi Co-authored-by: Weny Xu Co-authored-by: Zhenchi --- c++/substrait_extension/promql_plan.pb.cc | 77 ++++- c++/substrait_extension/promql_plan.pb.h | 101 ++++++ go/substrait_extension/promql_plan.pb.go | 77 +++-- .../java/substrait_extension/PromqlPlan.java | 312 +++++++++++++++++- proto/substrait_extension/promql_plan.proto | 2 + 5 files changed, 506 insertions(+), 63 deletions(-) diff --git a/c++/substrait_extension/promql_plan.pb.cc b/c++/substrait_extension/promql_plan.pb.cc index 800565c..cbcac9a 100644 --- a/c++/substrait_extension/promql_plan.pb.cc +++ b/c++/substrait_extension/promql_plan.pb.cc @@ -56,7 +56,8 @@ struct InstantManipulateDefaultTypeInternal { PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 InstantManipulateDefaultTypeInternal _InstantManipulate_default_instance_; PROTOBUF_CONSTEXPR SeriesNormalize::SeriesNormalize( ::_pbi::ConstantInitialized): _impl_{ - /*decltype(_impl_.time_index_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}} + /*decltype(_impl_.tag_columns_)*/{} + , /*decltype(_impl_.time_index_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}} , /*decltype(_impl_.offset_)*/int64_t{0} , /*decltype(_impl_.filter_nan_)*/false , /*decltype(_impl_._cached_size_)*/{}} {} @@ -154,6 +155,7 @@ const uint32_t TableStruct_substrait_5fextension_2fpromql_5fplan_2eproto::offset PROTOBUF_FIELD_OFFSET(::substrait_extension::SeriesNormalize, _impl_.offset_), PROTOBUF_FIELD_OFFSET(::substrait_extension::SeriesNormalize, _impl_.time_index_), PROTOBUF_FIELD_OFFSET(::substrait_extension::SeriesNormalize, _impl_.filter_nan_), + PROTOBUF_FIELD_OFFSET(::substrait_extension::SeriesNormalize, _impl_.tag_columns_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::substrait_extension::SeriesDivide, _internal_metadata_), ~0u, // no _extensions_ @@ -190,9 +192,9 @@ static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protode { 0, -1, -1, sizeof(::substrait_extension::EmptyMetric)}, { 9, -1, -1, sizeof(::substrait_extension::InstantManipulate)}, { 21, -1, -1, sizeof(::substrait_extension::SeriesNormalize)}, - { 30, -1, -1, sizeof(::substrait_extension::SeriesDivide)}, - { 37, -1, -1, sizeof(::substrait_extension::RangeManipulate)}, - { 49, -1, -1, sizeof(::substrait_extension::ScalarCalculate)}, + { 31, -1, -1, sizeof(::substrait_extension::SeriesDivide)}, + { 38, -1, -1, sizeof(::substrait_extension::RangeManipulate)}, + { 50, -1, -1, sizeof(::substrait_extension::ScalarCalculate)}, }; static const ::_pb::Message* const file_default_instances[] = { @@ -211,22 +213,22 @@ const char descriptor_table_protodef_substrait_5fextension_2fpromql_5fplan_2epro "\003\"\202\001\n\021InstantManipulate\022\r\n\005start\030\001 \001(\003\022\013" "\n\003end\030\002 \001(\003\022\020\n\010interval\030\003 \001(\003\022\026\n\016lookbac" "k_delta\030\004 \001(\003\022\022\n\ntime_index\030\005 \001(\t\022\023\n\013fie" - "ld_index\030\006 \001(\t\"I\n\017SeriesNormalize\022\016\n\006off" + "ld_index\030\006 \001(\t\"^\n\017SeriesNormalize\022\016\n\006off" "set\030\001 \001(\003\022\022\n\ntime_index\030\002 \001(\t\022\022\n\nfilter_" - "nan\030\003 \001(\010\"#\n\014SeriesDivide\022\023\n\013tag_columns" - "\030\001 \003(\t\"w\n\017RangeManipulate\022\r\n\005start\030\001 \001(\003" - "\022\013\n\003end\030\002 \001(\003\022\020\n\010interval\030\003 \001(\003\022\r\n\005range" - "\030\004 \001(\003\022\022\n\ntime_index\030\005 \001(\t\022\023\n\013tag_column" - "s\030\006 \003(\t\"~\n\017ScalarCalculate\022\r\n\005start\030\001 \001(" - "\003\022\013\n\003end\030\002 \001(\003\022\020\n\010interval\030\003 \001(\003\022\022\n\ntime" - "_index\030\005 \001(\t\022\023\n\013tag_columns\030\006 \003(\t\022\024\n\014fie" - "ld_column\030\007 \001(\tB\?Z=github.com/GreptimeTe" - "am/greptime-proto/go/substrait_extension" - "b\006proto3" + "nan\030\003 \001(\010\022\023\n\013tag_columns\030\004 \003(\t\"#\n\014Series" + "Divide\022\023\n\013tag_columns\030\001 \003(\t\"w\n\017RangeMani" + "pulate\022\r\n\005start\030\001 \001(\003\022\013\n\003end\030\002 \001(\003\022\020\n\010in" + "terval\030\003 \001(\003\022\r\n\005range\030\004 \001(\003\022\022\n\ntime_inde" + "x\030\005 \001(\t\022\023\n\013tag_columns\030\006 \003(\t\"~\n\017ScalarCa" + "lculate\022\r\n\005start\030\001 \001(\003\022\013\n\003end\030\002 \001(\003\022\020\n\010i" + "nterval\030\003 \001(\003\022\022\n\ntime_index\030\005 \001(\t\022\023\n\013tag" + "_columns\030\006 \003(\t\022\024\n\014field_column\030\007 \001(\tB\?Z=" + "github.com/GreptimeTeam/greptime-proto/g" + "o/substrait_extensionb\006proto3" ; static ::_pbi::once_flag descriptor_table_substrait_5fextension_2fpromql_5fplan_2eproto_once; const ::_pbi::DescriptorTable descriptor_table_substrait_5fextension_2fpromql_5fplan_2eproto = { - false, false, 688, descriptor_table_protodef_substrait_5fextension_2fpromql_5fplan_2eproto, + false, false, 709, descriptor_table_protodef_substrait_5fextension_2fpromql_5fplan_2eproto, "substrait_extension/promql_plan.proto", &descriptor_table_substrait_5fextension_2fpromql_5fplan_2eproto_once, nullptr, 0, 6, schemas, file_default_instances, TableStruct_substrait_5fextension_2fpromql_5fplan_2eproto::offsets, @@ -853,7 +855,8 @@ SeriesNormalize::SeriesNormalize(const SeriesNormalize& from) : ::PROTOBUF_NAMESPACE_ID::Message() { SeriesNormalize* const _this = this; (void)_this; new (&_impl_) Impl_{ - decltype(_impl_.time_index_){} + decltype(_impl_.tag_columns_){from._impl_.tag_columns_} + , decltype(_impl_.time_index_){} , decltype(_impl_.offset_){} , decltype(_impl_.filter_nan_){} , /*decltype(_impl_._cached_size_)*/{}}; @@ -878,7 +881,8 @@ inline void SeriesNormalize::SharedCtor( (void)arena; (void)is_message_owned; new (&_impl_) Impl_{ - decltype(_impl_.time_index_){} + decltype(_impl_.tag_columns_){arena} + , decltype(_impl_.time_index_){} , decltype(_impl_.offset_){int64_t{0}} , decltype(_impl_.filter_nan_){false} , /*decltype(_impl_._cached_size_)*/{} @@ -900,6 +904,7 @@ SeriesNormalize::~SeriesNormalize() { inline void SeriesNormalize::SharedDtor() { GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + _impl_.tag_columns_.~RepeatedPtrField(); _impl_.time_index_.Destroy(); } @@ -913,6 +918,7 @@ void SeriesNormalize::Clear() { // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; + _impl_.tag_columns_.Clear(); _impl_.time_index_.ClearToEmpty(); ::memset(&_impl_.offset_, 0, static_cast( reinterpret_cast(&_impl_.filter_nan_) - @@ -952,6 +958,21 @@ const char* SeriesNormalize::_InternalParse(const char* ptr, ::_pbi::ParseContex } else goto handle_unusual; continue; + // repeated string tag_columns = 4; + case 4: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 34)) { + ptr -= 1; + do { + ptr += 1; + auto str = _internal_add_tag_columns(); + ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx); + CHK_(ptr); + CHK_(::_pbi::VerifyUTF8(str, "substrait_extension.SeriesNormalize.tag_columns")); + if (!ctx->DataAvailable(ptr)) break; + } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); + } else + goto handle_unusual; + continue; default: goto handle_unusual; } // switch @@ -1003,6 +1024,16 @@ uint8_t* SeriesNormalize::_InternalSerialize( target = ::_pbi::WireFormatLite::WriteBoolToArray(3, this->_internal_filter_nan(), target); } + // repeated string tag_columns = 4; + for (int i = 0, n = this->_internal_tag_columns_size(); i < n; i++) { + const auto& s = this->_internal_tag_columns(i); + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( + s.data(), static_cast(s.length()), + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, + "substrait_extension.SeriesNormalize.tag_columns"); + target = stream->WriteString(4, s, target); + } + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); @@ -1019,6 +1050,14 @@ size_t SeriesNormalize::ByteSizeLong() const { // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; + // repeated string tag_columns = 4; + total_size += 1 * + ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.tag_columns_.size()); + for (int i = 0, n = _impl_.tag_columns_.size(); i < n; i++) { + total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( + _impl_.tag_columns_.Get(i)); + } + // string time_index = 2; if (!this->_internal_time_index().empty()) { total_size += 1 + @@ -1054,6 +1093,7 @@ void SeriesNormalize::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const uint32_t cached_has_bits = 0; (void) cached_has_bits; + _this->_impl_.tag_columns_.MergeFrom(from._impl_.tag_columns_); if (!from._internal_time_index().empty()) { _this->_internal_set_time_index(from._internal_time_index()); } @@ -1082,6 +1122,7 @@ void SeriesNormalize::InternalSwap(SeriesNormalize* other) { auto* lhs_arena = GetArenaForAllocation(); auto* rhs_arena = other->GetArenaForAllocation(); _internal_metadata_.InternalSwap(&other->_internal_metadata_); + _impl_.tag_columns_.InternalSwap(&other->_impl_.tag_columns_); ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap( &_impl_.time_index_, lhs_arena, &other->_impl_.time_index_, rhs_arena diff --git a/c++/substrait_extension/promql_plan.pb.h b/c++/substrait_extension/promql_plan.pb.h index 234028f..bc2a313 100644 --- a/c++/substrait_extension/promql_plan.pb.h +++ b/c++/substrait_extension/promql_plan.pb.h @@ -580,10 +580,35 @@ class SeriesNormalize final : // accessors ------------------------------------------------------- enum : int { + kTagColumnsFieldNumber = 4, kTimeIndexFieldNumber = 2, kOffsetFieldNumber = 1, kFilterNanFieldNumber = 3, }; + // repeated string tag_columns = 4; + int tag_columns_size() const; + private: + int _internal_tag_columns_size() const; + public: + void clear_tag_columns(); + const std::string& tag_columns(int index) const; + std::string* mutable_tag_columns(int index); + void set_tag_columns(int index, const std::string& value); + void set_tag_columns(int index, std::string&& value); + void set_tag_columns(int index, const char* value); + void set_tag_columns(int index, const char* value, size_t size); + std::string* add_tag_columns(); + void add_tag_columns(const std::string& value); + void add_tag_columns(std::string&& value); + void add_tag_columns(const char* value); + void add_tag_columns(const char* value, size_t size); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField& tag_columns() const; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField* mutable_tag_columns(); + private: + const std::string& _internal_tag_columns(int index) const; + std::string* _internal_add_tag_columns(); + public: + // string time_index = 2; void clear_time_index(); const std::string& time_index() const; @@ -624,6 +649,7 @@ class SeriesNormalize final : typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; struct Impl_ { + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField tag_columns_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr time_index_; int64_t offset_; bool filter_nan_; @@ -1595,6 +1621,81 @@ inline void SeriesNormalize::set_filter_nan(bool value) { // @@protoc_insertion_point(field_set:substrait_extension.SeriesNormalize.filter_nan) } +// repeated string tag_columns = 4; +inline int SeriesNormalize::_internal_tag_columns_size() const { + return _impl_.tag_columns_.size(); +} +inline int SeriesNormalize::tag_columns_size() const { + return _internal_tag_columns_size(); +} +inline void SeriesNormalize::clear_tag_columns() { + _impl_.tag_columns_.Clear(); +} +inline std::string* SeriesNormalize::add_tag_columns() { + std::string* _s = _internal_add_tag_columns(); + // @@protoc_insertion_point(field_add_mutable:substrait_extension.SeriesNormalize.tag_columns) + return _s; +} +inline const std::string& SeriesNormalize::_internal_tag_columns(int index) const { + return _impl_.tag_columns_.Get(index); +} +inline const std::string& SeriesNormalize::tag_columns(int index) const { + // @@protoc_insertion_point(field_get:substrait_extension.SeriesNormalize.tag_columns) + return _internal_tag_columns(index); +} +inline std::string* SeriesNormalize::mutable_tag_columns(int index) { + // @@protoc_insertion_point(field_mutable:substrait_extension.SeriesNormalize.tag_columns) + return _impl_.tag_columns_.Mutable(index); +} +inline void SeriesNormalize::set_tag_columns(int index, const std::string& value) { + _impl_.tag_columns_.Mutable(index)->assign(value); + // @@protoc_insertion_point(field_set:substrait_extension.SeriesNormalize.tag_columns) +} +inline void SeriesNormalize::set_tag_columns(int index, std::string&& value) { + _impl_.tag_columns_.Mutable(index)->assign(std::move(value)); + // @@protoc_insertion_point(field_set:substrait_extension.SeriesNormalize.tag_columns) +} +inline void SeriesNormalize::set_tag_columns(int index, const char* value) { + GOOGLE_DCHECK(value != nullptr); + _impl_.tag_columns_.Mutable(index)->assign(value); + // @@protoc_insertion_point(field_set_char:substrait_extension.SeriesNormalize.tag_columns) +} +inline void SeriesNormalize::set_tag_columns(int index, const char* value, size_t size) { + _impl_.tag_columns_.Mutable(index)->assign( + reinterpret_cast(value), size); + // @@protoc_insertion_point(field_set_pointer:substrait_extension.SeriesNormalize.tag_columns) +} +inline std::string* SeriesNormalize::_internal_add_tag_columns() { + return _impl_.tag_columns_.Add(); +} +inline void SeriesNormalize::add_tag_columns(const std::string& value) { + _impl_.tag_columns_.Add()->assign(value); + // @@protoc_insertion_point(field_add:substrait_extension.SeriesNormalize.tag_columns) +} +inline void SeriesNormalize::add_tag_columns(std::string&& value) { + _impl_.tag_columns_.Add(std::move(value)); + // @@protoc_insertion_point(field_add:substrait_extension.SeriesNormalize.tag_columns) +} +inline void SeriesNormalize::add_tag_columns(const char* value) { + GOOGLE_DCHECK(value != nullptr); + _impl_.tag_columns_.Add()->assign(value); + // @@protoc_insertion_point(field_add_char:substrait_extension.SeriesNormalize.tag_columns) +} +inline void SeriesNormalize::add_tag_columns(const char* value, size_t size) { + _impl_.tag_columns_.Add()->assign(reinterpret_cast(value), size); + // @@protoc_insertion_point(field_add_pointer:substrait_extension.SeriesNormalize.tag_columns) +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField& +SeriesNormalize::tag_columns() const { + // @@protoc_insertion_point(field_list:substrait_extension.SeriesNormalize.tag_columns) + return _impl_.tag_columns_; +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField* +SeriesNormalize::mutable_tag_columns() { + // @@protoc_insertion_point(field_mutable_list:substrait_extension.SeriesNormalize.tag_columns) + return &_impl_.tag_columns_; +} + // ------------------------------------------------------------------- // SeriesDivide diff --git a/go/substrait_extension/promql_plan.pb.go b/go/substrait_extension/promql_plan.pb.go index 0533ef2..c5ae070 100644 --- a/go/substrait_extension/promql_plan.pb.go +++ b/go/substrait_extension/promql_plan.pb.go @@ -204,6 +204,8 @@ type SeriesNormalize struct { TimeIndex string `protobuf:"bytes,2,opt,name=time_index,json=timeIndex,proto3" json:"time_index,omitempty"` // Whether to filter out NaN value FilterNan bool `protobuf:"varint,3,opt,name=filter_nan,json=filterNan,proto3" json:"filter_nan,omitempty"` + // Names of tag columns + TagColumns []string `protobuf:"bytes,4,rep,name=tag_columns,json=tagColumns,proto3" json:"tag_columns,omitempty"` } func (x *SeriesNormalize) Reset() { @@ -259,6 +261,13 @@ func (x *SeriesNormalize) GetFilterNan() bool { return false } +func (x *SeriesNormalize) GetTagColumns() []string { + if x != nil { + return x.TagColumns + } + return nil +} + type SeriesDivide struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -517,43 +526,45 @@ var file_substrait_extension_promql_plan_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x22, 0x67, 0x0a, 0x0f, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, - 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, - 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6e, 0x22, 0x2f, 0x0a, 0x0c, 0x53, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x67, - 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, - 0x74, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x0f, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x14, + 0x22, 0x88, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x4e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, + 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0a, 0x74, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x2f, 0x0a, 0x0c, 0x53, + 0x65, 0x72, 0x69, 0x65, 0x73, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, + 0x61, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0a, 0x74, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0xab, 0x01, 0x0a, + 0x0f, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x67, + 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, + 0x74, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x0f, 0x53, + 0x63, 0x61, 0x6c, 0x61, 0x72, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x67, 0x5f, 0x63, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, - 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x0f, 0x53, 0x63, 0x61, - 0x6c, 0x61, 0x72, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x03, 0x65, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, - 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, - 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x42, 0x3f, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x47, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x2f, 0x67, - 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, - 0x2f, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x43, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x42, 0x3f, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, + 0x2f, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x67, 0x6f, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x5f, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/java/src/main/java/substrait_extension/PromqlPlan.java b/java/src/main/java/substrait_extension/PromqlPlan.java index aff93ee..267485b 100644 --- a/java/src/main/java/substrait_extension/PromqlPlan.java +++ b/java/src/main/java/substrait_extension/PromqlPlan.java @@ -1906,6 +1906,47 @@ public final class PromqlPlan { * @return The filterNan. */ boolean getFilterNan(); + + /** + *
+     * Names of tag columns
+     * 
+ * + * repeated string tag_columns = 4; + * @return A list containing the tagColumns. + */ + java.util.List + getTagColumnsList(); + /** + *
+     * Names of tag columns
+     * 
+ * + * repeated string tag_columns = 4; + * @return The count of tagColumns. + */ + int getTagColumnsCount(); + /** + *
+     * Names of tag columns
+     * 
+ * + * repeated string tag_columns = 4; + * @param index The index of the element to return. + * @return The tagColumns at the given index. + */ + java.lang.String getTagColumns(int index); + /** + *
+     * Names of tag columns
+     * 
+ * + * repeated string tag_columns = 4; + * @param index The index of the value to return. + * @return The bytes of the tagColumns at the given index. + */ + com.google.protobuf.ByteString + getTagColumnsBytes(int index); } /** * Protobuf type {@code substrait_extension.SeriesNormalize} @@ -1921,6 +1962,7 @@ public final class PromqlPlan { } private SeriesNormalize() { timeIndex_ = ""; + tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY; } @java.lang.Override @@ -1943,6 +1985,7 @@ public final class PromqlPlan { if (extensionRegistry == null) { throw new java.lang.NullPointerException(); } + int mutable_bitField0_ = 0; com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); try { @@ -1969,6 +2012,15 @@ public final class PromqlPlan { filterNan_ = input.readBool(); break; } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + tagColumns_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + tagColumns_.add(s); + break; + } default: { if (!parseUnknownField( input, unknownFields, extensionRegistry, tag)) { @@ -1986,6 +2038,9 @@ public final class PromqlPlan { throw new com.google.protobuf.InvalidProtocolBufferException( e).setUnfinishedMessage(this); } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + tagColumns_ = tagColumns_.getUnmodifiableView(); + } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } @@ -2079,6 +2134,57 @@ public final class PromqlPlan { return filterNan_; } + public static final int TAG_COLUMNS_FIELD_NUMBER = 4; + private com.google.protobuf.LazyStringList tagColumns_; + /** + *
+     * Names of tag columns
+     * 
+ * + * repeated string tag_columns = 4; + * @return A list containing the tagColumns. + */ + public com.google.protobuf.ProtocolStringList + getTagColumnsList() { + return tagColumns_; + } + /** + *
+     * Names of tag columns
+     * 
+ * + * repeated string tag_columns = 4; + * @return The count of tagColumns. + */ + public int getTagColumnsCount() { + return tagColumns_.size(); + } + /** + *
+     * Names of tag columns
+     * 
+ * + * repeated string tag_columns = 4; + * @param index The index of the element to return. + * @return The tagColumns at the given index. + */ + public java.lang.String getTagColumns(int index) { + return tagColumns_.get(index); + } + /** + *
+     * Names of tag columns
+     * 
+ * + * repeated string tag_columns = 4; + * @param index The index of the value to return. + * @return The bytes of the tagColumns at the given index. + */ + public com.google.protobuf.ByteString + getTagColumnsBytes(int index) { + return tagColumns_.getByteString(index); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -2102,6 +2208,9 @@ public final class PromqlPlan { if (filterNan_ != false) { output.writeBool(3, filterNan_); } + for (int i = 0; i < tagColumns_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, tagColumns_.getRaw(i)); + } unknownFields.writeTo(output); } @@ -2122,6 +2231,14 @@ public final class PromqlPlan { size += com.google.protobuf.CodedOutputStream .computeBoolSize(3, filterNan_); } + { + int dataSize = 0; + for (int i = 0; i < tagColumns_.size(); i++) { + dataSize += computeStringSizeNoTag(tagColumns_.getRaw(i)); + } + size += dataSize; + size += 1 * getTagColumnsList().size(); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -2143,6 +2260,8 @@ public final class PromqlPlan { .equals(other.getTimeIndex())) return false; if (getFilterNan() != other.getFilterNan()) return false; + if (!getTagColumnsList() + .equals(other.getTagColumnsList())) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -2162,6 +2281,10 @@ public final class PromqlPlan { hash = (37 * hash) + FILTER_NAN_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( getFilterNan()); + if (getTagColumnsCount() > 0) { + hash = (37 * hash) + TAG_COLUMNS_FIELD_NUMBER; + hash = (53 * hash) + getTagColumnsList().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -2301,6 +2424,8 @@ public final class PromqlPlan { filterNan_ = false; + tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); return this; } @@ -2327,9 +2452,15 @@ public final class PromqlPlan { @java.lang.Override public substrait_extension.PromqlPlan.SeriesNormalize buildPartial() { substrait_extension.PromqlPlan.SeriesNormalize result = new substrait_extension.PromqlPlan.SeriesNormalize(this); + int from_bitField0_ = bitField0_; result.offset_ = offset_; result.timeIndex_ = timeIndex_; result.filterNan_ = filterNan_; + if (((bitField0_ & 0x00000001) != 0)) { + tagColumns_ = tagColumns_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.tagColumns_ = tagColumns_; onBuilt(); return result; } @@ -2388,6 +2519,16 @@ public final class PromqlPlan { if (other.getFilterNan() != false) { setFilterNan(other.getFilterNan()); } + if (!other.tagColumns_.isEmpty()) { + if (tagColumns_.isEmpty()) { + tagColumns_ = other.tagColumns_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureTagColumnsIsMutable(); + tagColumns_.addAll(other.tagColumns_); + } + onChanged(); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -2416,6 +2557,7 @@ public final class PromqlPlan { } return this; } + private int bitField0_; private long offset_ ; /** @@ -2598,6 +2740,152 @@ public final class PromqlPlan { onChanged(); return this; } + + private com.google.protobuf.LazyStringList tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureTagColumnsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + tagColumns_ = new com.google.protobuf.LazyStringArrayList(tagColumns_); + bitField0_ |= 0x00000001; + } + } + /** + *
+       * Names of tag columns
+       * 
+ * + * repeated string tag_columns = 4; + * @return A list containing the tagColumns. + */ + public com.google.protobuf.ProtocolStringList + getTagColumnsList() { + return tagColumns_.getUnmodifiableView(); + } + /** + *
+       * Names of tag columns
+       * 
+ * + * repeated string tag_columns = 4; + * @return The count of tagColumns. + */ + public int getTagColumnsCount() { + return tagColumns_.size(); + } + /** + *
+       * Names of tag columns
+       * 
+ * + * repeated string tag_columns = 4; + * @param index The index of the element to return. + * @return The tagColumns at the given index. + */ + public java.lang.String getTagColumns(int index) { + return tagColumns_.get(index); + } + /** + *
+       * Names of tag columns
+       * 
+ * + * repeated string tag_columns = 4; + * @param index The index of the value to return. + * @return The bytes of the tagColumns at the given index. + */ + public com.google.protobuf.ByteString + getTagColumnsBytes(int index) { + return tagColumns_.getByteString(index); + } + /** + *
+       * Names of tag columns
+       * 
+ * + * repeated string tag_columns = 4; + * @param index The index to set the value at. + * @param value The tagColumns to set. + * @return This builder for chaining. + */ + public Builder setTagColumns( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagColumnsIsMutable(); + tagColumns_.set(index, value); + onChanged(); + return this; + } + /** + *
+       * Names of tag columns
+       * 
+ * + * repeated string tag_columns = 4; + * @param value The tagColumns to add. + * @return This builder for chaining. + */ + public Builder addTagColumns( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureTagColumnsIsMutable(); + tagColumns_.add(value); + onChanged(); + return this; + } + /** + *
+       * Names of tag columns
+       * 
+ * + * repeated string tag_columns = 4; + * @param values The tagColumns to add. + * @return This builder for chaining. + */ + public Builder addAllTagColumns( + java.lang.Iterable values) { + ensureTagColumnsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, tagColumns_); + onChanged(); + return this; + } + /** + *
+       * Names of tag columns
+       * 
+ * + * repeated string tag_columns = 4; + * @return This builder for chaining. + */ + public Builder clearTagColumns() { + tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + *
+       * Names of tag columns
+       * 
+ * + * repeated string tag_columns = 4; + * @param value The bytes of the tagColumns to add. + * @return This builder for chaining. + */ + public Builder addTagColumnsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureTagColumnsIsMutable(); + tagColumns_.add(value); + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -6015,18 +6303,18 @@ public final class PromqlPlan { "\003\"\202\001\n\021InstantManipulate\022\r\n\005start\030\001 \001(\003\022\013" + "\n\003end\030\002 \001(\003\022\020\n\010interval\030\003 \001(\003\022\026\n\016lookbac" + "k_delta\030\004 \001(\003\022\022\n\ntime_index\030\005 \001(\t\022\023\n\013fie" + - "ld_index\030\006 \001(\t\"I\n\017SeriesNormalize\022\016\n\006off" + + "ld_index\030\006 \001(\t\"^\n\017SeriesNormalize\022\016\n\006off" + "set\030\001 \001(\003\022\022\n\ntime_index\030\002 \001(\t\022\022\n\nfilter_" + - "nan\030\003 \001(\010\"#\n\014SeriesDivide\022\023\n\013tag_columns" + - "\030\001 \003(\t\"w\n\017RangeManipulate\022\r\n\005start\030\001 \001(\003" + - "\022\013\n\003end\030\002 \001(\003\022\020\n\010interval\030\003 \001(\003\022\r\n\005range" + - "\030\004 \001(\003\022\022\n\ntime_index\030\005 \001(\t\022\023\n\013tag_column" + - "s\030\006 \003(\t\"~\n\017ScalarCalculate\022\r\n\005start\030\001 \001(" + - "\003\022\013\n\003end\030\002 \001(\003\022\020\n\010interval\030\003 \001(\003\022\022\n\ntime" + - "_index\030\005 \001(\t\022\023\n\013tag_columns\030\006 \003(\t\022\024\n\014fie" + - "ld_column\030\007 \001(\tB?Z=github.com/GreptimeTe" + - "am/greptime-proto/go/substrait_extension" + - "b\006proto3" + "nan\030\003 \001(\010\022\023\n\013tag_columns\030\004 \003(\t\"#\n\014Series" + + "Divide\022\023\n\013tag_columns\030\001 \003(\t\"w\n\017RangeMani" + + "pulate\022\r\n\005start\030\001 \001(\003\022\013\n\003end\030\002 \001(\003\022\020\n\010in" + + "terval\030\003 \001(\003\022\r\n\005range\030\004 \001(\003\022\022\n\ntime_inde" + + "x\030\005 \001(\t\022\023\n\013tag_columns\030\006 \003(\t\"~\n\017ScalarCa" + + "lculate\022\r\n\005start\030\001 \001(\003\022\013\n\003end\030\002 \001(\003\022\020\n\010i" + + "nterval\030\003 \001(\003\022\022\n\ntime_index\030\005 \001(\t\022\023\n\013tag" + + "_columns\030\006 \003(\t\022\024\n\014field_column\030\007 \001(\tB?Z=" + + "github.com/GreptimeTeam/greptime-proto/g" + + "o/substrait_extensionb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -6049,7 +6337,7 @@ public final class PromqlPlan { internal_static_substrait_extension_SeriesNormalize_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_substrait_extension_SeriesNormalize_descriptor, - new java.lang.String[] { "Offset", "TimeIndex", "FilterNan", }); + new java.lang.String[] { "Offset", "TimeIndex", "FilterNan", "TagColumns", }); internal_static_substrait_extension_SeriesDivide_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_substrait_extension_SeriesDivide_fieldAccessorTable = new diff --git a/proto/substrait_extension/promql_plan.proto b/proto/substrait_extension/promql_plan.proto index 7143d81..70930cc 100644 --- a/proto/substrait_extension/promql_plan.proto +++ b/proto/substrait_extension/promql_plan.proto @@ -49,6 +49,8 @@ message SeriesNormalize { string time_index = 2; // Whether to filter out NaN value bool filter_nan = 3; + // Names of tag columns + repeated string tag_columns = 4; } message SeriesDivide {