From 13493d3645552c3a3271437460ed535bbad3324d Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Thu, 13 Apr 2023 13:37:46 -0400 Subject: [PATCH] fix(orm)!: duration encoding doesn't handle nil values properly (#15138) Co-authored-by: marbar3778 Co-authored-by: Ryan Christoffersen <12519942+ryanchristo@users.noreply.github.com> --- orm/CHANGELOG.md | 1 + orm/encoding/ormfield/codec_test.go | 35 - orm/encoding/ormfield/duration.go | 170 +- orm/encoding/ormfield/duration_test.go | 158 ++ orm/encoding/ormfield/timestamp.go | 115 +- orm/encoding/ormfield/timestamp_test.go | 126 ++ orm/internal/testpb/test_schema.cosmos_orm.go | 145 ++ orm/internal/testpb/test_schema.pb.go | 199 +- orm/internal/testpb/test_schema.proto | 12 + orm/internal/testpb/test_schema_query.pb.go | 1645 ++++++++++++----- orm/internal/testpb/test_schema_query.proto | 72 + .../testpb/test_schema_query_grpc.pb.go | 76 + orm/internal/testutil/testutil.go | 15 +- orm/model/ormtable/duration_test.go | 103 ++ orm/model/ormtable/table_test.go | 95 - orm/model/ormtable/timestamp_test.go | 103 ++ 16 files changed, 2336 insertions(+), 734 deletions(-) create mode 100644 orm/encoding/ormfield/duration_test.go create mode 100644 orm/encoding/ormfield/timestamp_test.go create mode 100644 orm/model/ormtable/duration_test.go create mode 100644 orm/model/ormtable/timestamp_test.go diff --git a/orm/CHANGELOG.md b/orm/CHANGELOG.md index b8bb40c78d..e02010770f 100644 --- a/orm/CHANGELOG.md +++ b/orm/CHANGELOG.md @@ -47,3 +47,4 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### State-machine Breaking Changes * [#12273](https://github.com/cosmos/cosmos-sdk/pull/12273) The timestamp key encoding was reworked to properly handle nil values. Existing users will need to manually migrate their data to the new encoding before upgrading. +* [#15138](https://github.com/cosmos/cosmos-sdk/pull/15138) The duration key encoding was reworked to properly handle nil values. Existing users will need to manually migrate their data to the new encoding before upgrading. diff --git a/orm/encoding/ormfield/codec_test.go b/orm/encoding/ormfield/codec_test.go index fb5bf35fa7..2394483093 100644 --- a/orm/encoding/ormfield/codec_test.go +++ b/orm/encoding/ormfield/codec_test.go @@ -4,9 +4,6 @@ import ( "bytes" "fmt" "testing" - "time" - - "google.golang.org/protobuf/types/known/timestamppb" "github.com/cosmos/cosmos-sdk/orm/encoding/ormfield" @@ -174,35 +171,3 @@ func TestCompactUInt64(t *testing.T) { assert.Equal(t, y, y2) }) } - -func TestTimestamp(t *testing.T) { - cdc := ormfield.TimestampCodec{} - - // nil value - buf := &bytes.Buffer{} - assert.NilError(t, cdc.Encode(protoreflect.Value{}, buf)) - assert.Equal(t, 1, len(buf.Bytes())) - val, err := cdc.Decode(buf) - assert.NilError(t, err) - assert.Assert(t, !val.IsValid()) - - // no nanos - ts := timestamppb.New(time.Date(2022, 1, 1, 12, 30, 15, 0, time.UTC)) - val = protoreflect.ValueOfMessage(ts.ProtoReflect()) - buf = &bytes.Buffer{} - assert.NilError(t, cdc.Encode(val, buf)) - assert.Equal(t, 6, len(buf.Bytes())) - val2, err := cdc.Decode(buf) - assert.NilError(t, err) - assert.Equal(t, 0, cdc.Compare(val, val2)) - - // nanos - ts = timestamppb.New(time.Date(2022, 1, 1, 12, 30, 15, 235809753, time.UTC)) - val = protoreflect.ValueOfMessage(ts.ProtoReflect()) - buf = &bytes.Buffer{} - assert.NilError(t, cdc.Encode(val, buf)) - assert.Equal(t, 9, len(buf.Bytes())) - val2, err = cdc.Decode(buf) - assert.NilError(t, err) - assert.Equal(t, 0, cdc.Compare(val, val2)) -} diff --git a/orm/encoding/ormfield/duration.go b/orm/encoding/ormfield/duration.go index 09823860c4..ad47173e3f 100644 --- a/orm/encoding/ormfield/duration.go +++ b/orm/encoding/ormfield/duration.go @@ -1,51 +1,102 @@ package ormfield import ( + "fmt" io "io" "google.golang.org/protobuf/reflect/protoreflect" ) -var ( - durationSecondsField = durationMsgType.Descriptor().Fields().ByName("seconds") - durationNanosField = durationMsgType.Descriptor().Fields().ByName("nanos") +const ( + DurationSecondsMin = -315576000000 + DurationSecondsMax = 315576000000 + DurationNanosMin = -999999999 + DurationNanosMax = 999999999 ) -func getDurationSecondsAndNanos(value protoreflect.Value) (protoreflect.Value, protoreflect.Value) { - msg := value.Message() - return msg.Get(durationSecondsField), msg.Get(durationNanosField) -} - -// DurationCodec encodes a google.protobuf.Duration value as 12 bytes using -// Int64Codec for seconds followed by Int32Codec for nanos. This allows for -// sorted iteration. type DurationCodec struct{} -func (d DurationCodec) Decode(r Reader) (protoreflect.Value, error) { - seconds, err := int64Codec.Decode(r) - if err != nil { - return protoreflect.Value{}, err - } - nanos, err := int32Codec.Decode(r) - if err != nil { - return protoreflect.Value{}, err - } - msg := durationMsgType.New() - msg.Set(durationSecondsField, seconds) - msg.Set(durationNanosField, nanos) - return protoreflect.ValueOfMessage(msg), nil -} - func (d DurationCodec) Encode(value protoreflect.Value, w io.Writer) error { + // nil case + if !value.IsValid() { + _, err := w.Write(timestampDurationNilBz) + return err + } + seconds, nanos := getDurationSecondsAndNanos(value) - err := int64Codec.Encode(seconds, w) + secondsInt := seconds.Int() + if secondsInt < DurationSecondsMin || secondsInt > DurationSecondsMax { + return fmt.Errorf("duration seconds is out of range %d, must be between %d and %d", secondsInt, DurationSecondsMin, DurationSecondsMax) + } + negative := secondsInt < 0 + // we subtract the min duration value to make sure secondsInt is always non-negative and starts at 0 + secondsInt -= DurationSecondsMin + err := encodeSeconds(secondsInt, w) if err != nil { return err } - return int32Codec.Encode(nanos, w) + + nanosInt := nanos.Int() + if nanosInt == 0 { + _, err = w.Write(timestampZeroNanosBz) + return err + } + + if negative { + if nanosInt < DurationNanosMin || nanosInt > 0 { + return fmt.Errorf("negative duration nanos is out of range %d, must be between %d and %d", nanosInt, DurationNanosMin, 0) + } + nanosInt = -nanosInt + } else if nanosInt < 0 || nanosInt > DurationNanosMax { + return fmt.Errorf("duration nanos is out of range %d, must be between %d and %d", nanosInt, 0, DurationNanosMax) + } + + return encodeNanos(nanosInt, w) +} + +func (d DurationCodec) Decode(r Reader) (protoreflect.Value, error) { + isNil, seconds, err := decodeSeconds(r) + if isNil || err != nil { + return protoreflect.Value{}, err + } + + // we add the min duration value to get back the original value + seconds += DurationSecondsMin + + negative := seconds < 0 + + msg := durationMsgType.New() + msg.Set(durationSecondsField, protoreflect.ValueOfInt64(seconds)) + + nanos, err := decodeNanos(r) + if err != nil { + return protoreflect.Value{}, err + } + + if nanos == 0 { + return protoreflect.ValueOfMessage(msg), nil + } + + if negative { + nanos = -nanos + } + + msg.Set(durationNanosField, protoreflect.ValueOfInt32(nanos)) + return protoreflect.ValueOfMessage(msg), nil } func (d DurationCodec) Compare(v1, v2 protoreflect.Value) int { + if !v1.IsValid() { + if !v2.IsValid() { + return 0 + } + return 1 + } + + if !v2.IsValid() { + return -1 + } + s1, n1 := getDurationSecondsAndNanos(v1) s2, n2 := getDurationSecondsAndNanos(v2) c := compareInt(s1, s2) @@ -61,9 +112,70 @@ func (d DurationCodec) IsOrdered() bool { } func (d DurationCodec) FixedBufferSize() int { - return 12 + return timestampDurationBufferSize } func (d DurationCodec) ComputeBufferSize(protoreflect.Value) (int, error) { + return timestampDurationBufferSize, nil +} + +var ( + durationSecondsField = durationMsgType.Descriptor().Fields().ByName("seconds") + durationNanosField = durationMsgType.Descriptor().Fields().ByName("nanos") +) + +func getDurationSecondsAndNanos(value protoreflect.Value) (protoreflect.Value, protoreflect.Value) { + msg := value.Message() + return msg.Get(durationSecondsField), msg.Get(durationNanosField) +} + +// DurationV0Codec encodes a google.protobuf.Duration value as 12 bytes using +// Int64Codec for seconds followed by Int32Codec for nanos. This allows for +// sorted iteration. +type DurationV0Codec struct{} + +func (d DurationV0Codec) Decode(r Reader) (protoreflect.Value, error) { + seconds, err := int64Codec.Decode(r) + if err != nil { + return protoreflect.Value{}, err + } + nanos, err := int32Codec.Decode(r) + if err != nil { + return protoreflect.Value{}, err + } + msg := durationMsgType.New() + msg.Set(durationSecondsField, seconds) + msg.Set(durationNanosField, nanos) + return protoreflect.ValueOfMessage(msg), nil +} + +func (d DurationV0Codec) Encode(value protoreflect.Value, w io.Writer) error { + seconds, nanos := getDurationSecondsAndNanos(value) + err := int64Codec.Encode(seconds, w) + if err != nil { + return err + } + return int32Codec.Encode(nanos, w) +} + +func (d DurationV0Codec) Compare(v1, v2 protoreflect.Value) int { + s1, n1 := getDurationSecondsAndNanos(v1) + s2, n2 := getDurationSecondsAndNanos(v2) + c := compareInt(s1, s2) + if c != 0 { + return c + } + return compareInt(n1, n2) +} + +func (d DurationV0Codec) IsOrdered() bool { + return true +} + +func (d DurationV0Codec) FixedBufferSize() int { + return 12 +} + +func (d DurationV0Codec) ComputeBufferSize(protoreflect.Value) (int, error) { return d.FixedBufferSize(), nil } diff --git a/orm/encoding/ormfield/duration_test.go b/orm/encoding/ormfield/duration_test.go new file mode 100644 index 0000000000..dc4ba04b19 --- /dev/null +++ b/orm/encoding/ormfield/duration_test.go @@ -0,0 +1,158 @@ +package ormfield_test + +import ( + "bytes" + "testing" + "time" + + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/types/known/durationpb" + "gotest.tools/v3/assert" + + "github.com/cosmos/cosmos-sdk/orm/encoding/ormfield" +) + +func TestDuration(t *testing.T) { + t.Parallel() + cdc := ormfield.DurationCodec{} + + // nil value + t.Run("nil value", func(t *testing.T) { + t.Parallel() + buf := &bytes.Buffer{} + assert.NilError(t, cdc.Encode(protoreflect.Value{}, buf)) + assert.Equal(t, 1, len(buf.Bytes())) + val, err := cdc.Decode(buf) + assert.NilError(t, err) + assert.Assert(t, !val.IsValid()) + }) + + // no nanos + t.Run("no nanos", func(t *testing.T) { + t.Parallel() + dur, err := time.ParseDuration("100s") + assert.NilError(t, err) + durPb := durationpb.New(dur) + val := protoreflect.ValueOfMessage(durPb.ProtoReflect()) + buf := &bytes.Buffer{} + assert.NilError(t, cdc.Encode(val, buf)) + assert.Equal(t, 6, len(buf.Bytes())) + val2, err := cdc.Decode(buf) + assert.NilError(t, err) + assert.Equal(t, 0, cdc.Compare(val, val2)) + }) + + t.Run("nanos", func(t *testing.T) { + t.Parallel() + dur, err := time.ParseDuration("3879468295ns") + assert.NilError(t, err) + durPb := durationpb.New(dur) + val := protoreflect.ValueOfMessage(durPb.ProtoReflect()) + buf := &bytes.Buffer{} + assert.NilError(t, cdc.Encode(val, buf)) + assert.Equal(t, 9, len(buf.Bytes())) + val2, err := cdc.Decode(buf) + assert.NilError(t, err) + assert.Equal(t, 0, cdc.Compare(val, val2)) + }) + + t.Run("min value", func(t *testing.T) { + t.Parallel() + durPb := &durationpb.Duration{ + Seconds: -315576000000, + Nanos: -999999999, + } + val := protoreflect.ValueOfMessage(durPb.ProtoReflect()) + buf := &bytes.Buffer{} + assert.NilError(t, cdc.Encode(val, buf)) + assert.Equal(t, 9, len(buf.Bytes())) + val2, err := cdc.Decode(buf) + assert.NilError(t, err) + assert.Equal(t, 0, cdc.Compare(val, val2)) + }) + + t.Run("max value", func(t *testing.T) { + t.Parallel() + durPb := &durationpb.Duration{ + Seconds: 315576000000, + Nanos: 999999999, + } + val := protoreflect.ValueOfMessage(durPb.ProtoReflect()) + buf := &bytes.Buffer{} + assert.NilError(t, cdc.Encode(val, buf)) + assert.Equal(t, 9, len(buf.Bytes())) + val2, err := cdc.Decode(buf) + assert.NilError(t, err) + assert.Equal(t, 0, cdc.Compare(val, val2)) + }) +} + +func TestDurationOutOfRange(t *testing.T) { + t.Parallel() + cdc := ormfield.DurationCodec{} + + tt := []struct { + name string + dur *durationpb.Duration + expectErr string + }{ + { + name: "seconds too small", + dur: &durationpb.Duration{ + Seconds: -315576000001, + Nanos: 0, + }, + expectErr: "seconds is out of range", + }, + { + name: "seconds too big", + dur: &durationpb.Duration{ + Seconds: 315576000001, + Nanos: 0, + }, + expectErr: "seconds is out of range", + }, + { + name: "positive seconds negative nanos", + dur: &durationpb.Duration{ + Seconds: 0, + Nanos: -1, + }, + expectErr: "nanos is out of range", + }, + { + name: "positive seconds nanos too big", + dur: &durationpb.Duration{ + Seconds: 0, + Nanos: 1000000000, + }, + expectErr: "nanos is out of range", + }, + { + name: "negative seconds positive nanos", + dur: &durationpb.Duration{ + Seconds: -1, + Nanos: 1, + }, + expectErr: "negative duration nanos is out of range", + }, + { + name: "negative seconds nanos too small", + dur: &durationpb.Duration{ + Seconds: -1, + Nanos: -1000000000, + }, + expectErr: "negative duration nanos is out of range", + }, + } + for _, tc := range tt { + tc := tc + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + val := protoreflect.ValueOfMessage(tc.dur.ProtoReflect()) + buf := &bytes.Buffer{} + err := cdc.Encode(val, buf) + assert.ErrorContains(t, err, tc.expectErr) + }) + } +} diff --git a/orm/encoding/ormfield/timestamp.go b/orm/encoding/ormfield/timestamp.go index f73d3fdc0a..ab3c5049cb 100644 --- a/orm/encoding/ormfield/timestamp.go +++ b/orm/encoding/ormfield/timestamp.go @@ -21,38 +21,33 @@ import ( type TimestampCodec struct{} const ( - timestampNilValue = 0xFF - timestampZeroNanosValue = 0x0 - timestampSecondsMin = -62135579038 - timestampSecondsMax = 253402318799 - timestampNanosMax = 999999999 + timestampDurationNilValue = 0xFF + timestampDurationZeroNanosValue = 0x0 + timestampDurationBufferSize = 9 + TimestampSecondsMin = -62135596800 + TimestampSecondsMax = 253402300799 + TimestampNanosMax = 999999999 ) var ( - timestampNilBz = []byte{timestampNilValue} - timestampZeroNanosBz = []byte{timestampZeroNanosValue} + timestampDurationNilBz = []byte{timestampDurationNilValue} + timestampZeroNanosBz = []byte{timestampDurationZeroNanosValue} ) func (t TimestampCodec) Encode(value protoreflect.Value, w io.Writer) error { // nil case if !value.IsValid() { - _, err := w.Write(timestampNilBz) + _, err := w.Write(timestampDurationNilBz) return err } seconds, nanos := getTimestampSecondsAndNanos(value) secondsInt := seconds.Int() - if secondsInt < timestampSecondsMin || secondsInt > timestampSecondsMax { - return fmt.Errorf("seconds is out of range %d, must be between %d and %d", secondsInt, timestampSecondsMin, timestampSecondsMax) + if secondsInt < TimestampSecondsMin || secondsInt > TimestampSecondsMax { + return fmt.Errorf("timestamp seconds is out of range %d, must be between %d and %d", secondsInt, TimestampSecondsMin, TimestampSecondsMax) } - secondsInt -= timestampSecondsMin - var secondsBz [5]byte - // write the seconds buffer from the end to the front - for i := 4; i >= 0; i-- { - secondsBz[i] = byte(secondsInt) - secondsInt >>= 8 - } - _, err := w.Write(secondsBz[:]) + secondsInt -= TimestampSecondsMin + err := encodeSeconds(secondsInt, w) if err != nil { return err } @@ -63,65 +58,104 @@ func (t TimestampCodec) Encode(value protoreflect.Value, w io.Writer) error { return err } - if nanosInt < 0 || nanosInt > timestampNanosMax { - return fmt.Errorf("nanos is out of range %d, must be between %d and %d", secondsInt, 0, timestampNanosMax) + if nanosInt < 0 || nanosInt > TimestampNanosMax { + return fmt.Errorf("timestamp nanos is out of range %d, must be between %d and %d", secondsInt, 0, TimestampNanosMax) } + return encodeNanos(nanosInt, w) +} + +func encodeSeconds(secondsInt int64, w io.Writer) error { + var secondsBz [5]byte + // write the seconds buffer from the end to the front + for i := 4; i >= 0; i-- { + secondsBz[i] = byte(secondsInt) + secondsInt >>= 8 + } + _, err := w.Write(secondsBz[:]) + return err +} + +func encodeNanos(nanosInt int64, w io.Writer) error { var nanosBz [4]byte for i := 3; i >= 0; i-- { nanosBz[i] = byte(nanosInt) nanosInt >>= 8 } nanosBz[0] |= 0xC0 - _, err = w.Write(nanosBz[:]) + _, err := w.Write(nanosBz[:]) return err } func (t TimestampCodec) Decode(r Reader) (protoreflect.Value, error) { - b0, err := r.ReadByte() + isNil, seconds, err := decodeSeconds(r) + if isNil || err != nil { + return protoreflect.Value{}, err + } + + seconds += TimestampSecondsMin + + msg := timestampMsgType.New() + msg.Set(timestampSecondsField, protoreflect.ValueOfInt64(seconds)) + + nanos, err := decodeNanos(r) if err != nil { return protoreflect.Value{}, err } - if b0 == timestampNilValue { - return protoreflect.Value{}, nil + if nanos == 0 { + return protoreflect.ValueOfMessage(msg), nil + } + + msg.Set(timestampNanosField, protoreflect.ValueOfInt32(nanos)) + return protoreflect.ValueOfMessage(msg), nil +} + +func decodeSeconds(r Reader) (isNil bool, seconds int64, err error) { + b0, err := r.ReadByte() + if err != nil { + return false, 0, err + } + + if b0 == timestampDurationNilValue { + return true, 0, nil } var secondsBz [4]byte n, err := r.Read(secondsBz[:]) if err != nil { - return protoreflect.Value{}, err + return false, 0, err } if n < 4 { - return protoreflect.Value{}, io.EOF + return false, 0, io.EOF } - seconds := int64(b0) + seconds = int64(b0) for i := 0; i < 4; i++ { seconds <<= 8 seconds |= int64(secondsBz[i]) } - seconds += timestampSecondsMin - msg := timestampMsgType.New() - msg.Set(timestampSecondsField, protoreflect.ValueOfInt64(seconds)) + return false, seconds, nil +} - b0, err = r.ReadByte() +func decodeNanos(r Reader) (int32, error) { + b0, err := r.ReadByte() if err != nil { - return protoreflect.Value{}, err + return 0, err } - if b0 == timestampZeroNanosValue { - return protoreflect.ValueOfMessage(msg), nil + if b0 == timestampDurationZeroNanosValue { + return 0, nil } var nanosBz [3]byte - n, err = r.Read(nanosBz[:]) + n, err := r.Read(nanosBz[:]) if err != nil { - return protoreflect.Value{}, err + return 0, err } if n < 3 { - return protoreflect.Value{}, io.EOF + return 0, io.EOF } nanos := int32(b0) & 0x3F // clear first two bits @@ -130,8 +164,7 @@ func (t TimestampCodec) Decode(r Reader) (protoreflect.Value, error) { nanos |= int32(nanosBz[i]) } - msg.Set(timestampNanosField, protoreflect.ValueOfInt32(nanos)) - return protoreflect.ValueOfMessage(msg), nil + return nanos, nil } func (t TimestampCodec) Compare(v1, v2 protoreflect.Value) int { @@ -161,11 +194,11 @@ func (t TimestampCodec) IsOrdered() bool { } func (t TimestampCodec) FixedBufferSize() int { - return 9 + return timestampDurationBufferSize } func (t TimestampCodec) ComputeBufferSize(protoreflect.Value) (int, error) { - return 9, nil + return timestampDurationBufferSize, nil } // TimestampV0Codec encodes a google.protobuf.Timestamp value as 12 bytes using diff --git a/orm/encoding/ormfield/timestamp_test.go b/orm/encoding/ormfield/timestamp_test.go new file mode 100644 index 0000000000..25987b09cf --- /dev/null +++ b/orm/encoding/ormfield/timestamp_test.go @@ -0,0 +1,126 @@ +package ormfield_test + +import ( + "bytes" + "testing" + "time" + + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/types/known/timestamppb" + "gotest.tools/v3/assert" + + "github.com/cosmos/cosmos-sdk/orm/encoding/ormfield" +) + +func TestTimestamp(t *testing.T) { + t.Parallel() + cdc := ormfield.TimestampCodec{} + + t.Run("nil value", func(t *testing.T) { + t.Parallel() + buf := &bytes.Buffer{} + assert.NilError(t, cdc.Encode(protoreflect.Value{}, buf)) + assert.Equal(t, 1, len(buf.Bytes())) + val, err := cdc.Decode(buf) + assert.NilError(t, err) + assert.Assert(t, !val.IsValid()) + }) + + t.Run("no nanos", func(t *testing.T) { + t.Parallel() + ts := timestamppb.New(time.Date(2022, 1, 1, 12, 30, 15, 0, time.UTC)) + val := protoreflect.ValueOfMessage(ts.ProtoReflect()) + buf := &bytes.Buffer{} + assert.NilError(t, cdc.Encode(val, buf)) + assert.Equal(t, 6, len(buf.Bytes())) + val2, err := cdc.Decode(buf) + assert.NilError(t, err) + assert.Equal(t, 0, cdc.Compare(val, val2)) + }) + + t.Run("nanos", func(t *testing.T) { + t.Parallel() + ts := timestamppb.New(time.Date(2022, 1, 1, 12, 30, 15, 235809753, time.UTC)) + val := protoreflect.ValueOfMessage(ts.ProtoReflect()) + buf := &bytes.Buffer{} + assert.NilError(t, cdc.Encode(val, buf)) + assert.Equal(t, 9, len(buf.Bytes())) + val2, err := cdc.Decode(buf) + assert.NilError(t, err) + assert.Equal(t, 0, cdc.Compare(val, val2)) + }) + + t.Run("min value", func(t *testing.T) { + t.Parallel() + ts := timestamppb.New(time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC)) + val := protoreflect.ValueOfMessage(ts.ProtoReflect()) + buf := &bytes.Buffer{} + assert.NilError(t, cdc.Encode(val, buf)) + assert.Equal(t, 6, len(buf.Bytes())) + assert.Assert(t, bytes.Equal(buf.Bytes(), []byte{0, 0, 0, 0, 0, 0})) // the minimum value should be all zeros + val2, err := cdc.Decode(buf) + assert.NilError(t, err) + assert.Equal(t, 0, cdc.Compare(val, val2)) + }) + + t.Run("max value", func(t *testing.T) { + t.Parallel() + ts := timestamppb.New(time.Date(9999, 12, 31, 23, 59, 59, 999999999, time.UTC)) + val := protoreflect.ValueOfMessage(ts.ProtoReflect()) + buf := &bytes.Buffer{} + assert.NilError(t, cdc.Encode(val, buf)) + assert.Equal(t, 9, len(buf.Bytes())) + val2, err := cdc.Decode(buf) + assert.NilError(t, err) + assert.Equal(t, 0, cdc.Compare(val, val2)) + }) +} + +func TestTimestampOutOfRange(t *testing.T) { + t.Parallel() + cdc := ormfield.TimestampCodec{} + + tt := []struct { + name string + ts *timestamppb.Timestamp + expectErr string + }{ + { + name: "before min", + ts: timestamppb.New(time.Date(0, 1, 1, 0, 0, 0, 0, time.UTC)), + expectErr: "timestamp seconds is out of range", + }, + { + name: "after max", + ts: timestamppb.New(time.Date(10000, 1, 1, 0, 0, 0, 0, time.UTC)), + expectErr: "timestamp seconds is out of range", + }, + { + name: "nanos too small", + ts: ×tamppb.Timestamp{ + Seconds: 0, + Nanos: -1, + }, + expectErr: "timestamp nanos is out of range", + }, + + { + name: "nanos too big", + ts: ×tamppb.Timestamp{ + Seconds: 0, + Nanos: 1000000000, + }, + expectErr: "timestamp nanos is out of range", + }, + } + for _, tc := range tt { + tc := tc + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + val := protoreflect.ValueOfMessage(tc.ts.ProtoReflect()) + buf := &bytes.Buffer{} + err := cdc.Encode(val, buf) + assert.ErrorContains(t, err, tc.expectErr) + }) + } +} diff --git a/orm/internal/testpb/test_schema.cosmos_orm.go b/orm/internal/testpb/test_schema.cosmos_orm.go index 93ce0cda02..da2ca27034 100644 --- a/orm/internal/testpb/test_schema.cosmos_orm.go +++ b/orm/internal/testpb/test_schema.cosmos_orm.go @@ -7,6 +7,7 @@ import ( ormlist "github.com/cosmos/cosmos-sdk/orm/model/ormlist" ormtable "github.com/cosmos/cosmos-sdk/orm/model/ormtable" ormerrors "github.com/cosmos/cosmos-sdk/orm/types/ormerrors" + durationpb "google.golang.org/protobuf/types/known/durationpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" ) @@ -540,6 +541,138 @@ func NewExampleTimestampTable(db ormtable.Schema) (ExampleTimestampTable, error) return exampleTimestampTable{table.(ormtable.AutoIncrementTable)}, nil } +type ExampleDurationTable interface { + Insert(ctx context.Context, exampleDuration *ExampleDuration) error + InsertReturningId(ctx context.Context, exampleDuration *ExampleDuration) (uint64, error) + Update(ctx context.Context, exampleDuration *ExampleDuration) error + Save(ctx context.Context, exampleDuration *ExampleDuration) error + Delete(ctx context.Context, exampleDuration *ExampleDuration) error + Has(ctx context.Context, id uint64) (found bool, err error) + // Get returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + Get(ctx context.Context, id uint64) (*ExampleDuration, error) + List(ctx context.Context, prefixKey ExampleDurationIndexKey, opts ...ormlist.Option) (ExampleDurationIterator, error) + ListRange(ctx context.Context, from, to ExampleDurationIndexKey, opts ...ormlist.Option) (ExampleDurationIterator, error) + DeleteBy(ctx context.Context, prefixKey ExampleDurationIndexKey) error + DeleteRange(ctx context.Context, from, to ExampleDurationIndexKey) error + + doNotImplement() +} + +type ExampleDurationIterator struct { + ormtable.Iterator +} + +func (i ExampleDurationIterator) Value() (*ExampleDuration, error) { + var exampleDuration ExampleDuration + err := i.UnmarshalMessage(&exampleDuration) + return &exampleDuration, err +} + +type ExampleDurationIndexKey interface { + id() uint32 + values() []interface{} + exampleDurationIndexKey() +} + +// primary key starting index.. +type ExampleDurationPrimaryKey = ExampleDurationIdIndexKey + +type ExampleDurationIdIndexKey struct { + vs []interface{} +} + +func (x ExampleDurationIdIndexKey) id() uint32 { return 0 } +func (x ExampleDurationIdIndexKey) values() []interface{} { return x.vs } +func (x ExampleDurationIdIndexKey) exampleDurationIndexKey() {} + +func (this ExampleDurationIdIndexKey) WithId(id uint64) ExampleDurationIdIndexKey { + this.vs = []interface{}{id} + return this +} + +type ExampleDurationDurIndexKey struct { + vs []interface{} +} + +func (x ExampleDurationDurIndexKey) id() uint32 { return 1 } +func (x ExampleDurationDurIndexKey) values() []interface{} { return x.vs } +func (x ExampleDurationDurIndexKey) exampleDurationIndexKey() {} + +func (this ExampleDurationDurIndexKey) WithDur(dur *durationpb.Duration) ExampleDurationDurIndexKey { + this.vs = []interface{}{dur} + return this +} + +type exampleDurationTable struct { + table ormtable.AutoIncrementTable +} + +func (this exampleDurationTable) Insert(ctx context.Context, exampleDuration *ExampleDuration) error { + return this.table.Insert(ctx, exampleDuration) +} + +func (this exampleDurationTable) Update(ctx context.Context, exampleDuration *ExampleDuration) error { + return this.table.Update(ctx, exampleDuration) +} + +func (this exampleDurationTable) Save(ctx context.Context, exampleDuration *ExampleDuration) error { + return this.table.Save(ctx, exampleDuration) +} + +func (this exampleDurationTable) Delete(ctx context.Context, exampleDuration *ExampleDuration) error { + return this.table.Delete(ctx, exampleDuration) +} + +func (this exampleDurationTable) InsertReturningId(ctx context.Context, exampleDuration *ExampleDuration) (uint64, error) { + return this.table.InsertReturningPKey(ctx, exampleDuration) +} + +func (this exampleDurationTable) Has(ctx context.Context, id uint64) (found bool, err error) { + return this.table.PrimaryKey().Has(ctx, id) +} + +func (this exampleDurationTable) Get(ctx context.Context, id uint64) (*ExampleDuration, error) { + var exampleDuration ExampleDuration + found, err := this.table.PrimaryKey().Get(ctx, &exampleDuration, id) + if err != nil { + return nil, err + } + if !found { + return nil, ormerrors.NotFound + } + return &exampleDuration, nil +} + +func (this exampleDurationTable) List(ctx context.Context, prefixKey ExampleDurationIndexKey, opts ...ormlist.Option) (ExampleDurationIterator, error) { + it, err := this.table.GetIndexByID(prefixKey.id()).List(ctx, prefixKey.values(), opts...) + return ExampleDurationIterator{it}, err +} + +func (this exampleDurationTable) ListRange(ctx context.Context, from, to ExampleDurationIndexKey, opts ...ormlist.Option) (ExampleDurationIterator, error) { + it, err := this.table.GetIndexByID(from.id()).ListRange(ctx, from.values(), to.values(), opts...) + return ExampleDurationIterator{it}, err +} + +func (this exampleDurationTable) DeleteBy(ctx context.Context, prefixKey ExampleDurationIndexKey) error { + return this.table.GetIndexByID(prefixKey.id()).DeleteBy(ctx, prefixKey.values()...) +} + +func (this exampleDurationTable) DeleteRange(ctx context.Context, from, to ExampleDurationIndexKey) error { + return this.table.GetIndexByID(from.id()).DeleteRange(ctx, from.values(), to.values()) +} + +func (this exampleDurationTable) doNotImplement() {} + +var _ ExampleDurationTable = exampleDurationTable{} + +func NewExampleDurationTable(db ormtable.Schema) (ExampleDurationTable, error) { + table := db.GetTable(&ExampleDuration{}) + if table == nil { + return nil, ormerrors.TableNotFound.Wrap(string((&ExampleDuration{}).ProtoReflect().Descriptor().FullName())) + } + return exampleDurationTable{table.(ormtable.AutoIncrementTable)}, nil +} + type SimpleExampleTable interface { Insert(ctx context.Context, simpleExample *SimpleExample) error Update(ctx context.Context, simpleExample *SimpleExample) error @@ -819,6 +952,7 @@ type TestSchemaStore interface { ExampleAutoIncrementTableTable() ExampleAutoIncrementTableTable ExampleSingletonTable() ExampleSingletonTable ExampleTimestampTable() ExampleTimestampTable + ExampleDurationTable() ExampleDurationTable SimpleExampleTable() SimpleExampleTable ExampleAutoIncFieldNameTable() ExampleAutoIncFieldNameTable @@ -830,6 +964,7 @@ type testSchemaStore struct { exampleAutoIncrementTable ExampleAutoIncrementTableTable exampleSingleton ExampleSingletonTable exampleTimestamp ExampleTimestampTable + exampleDuration ExampleDurationTable simpleExample SimpleExampleTable exampleAutoIncFieldName ExampleAutoIncFieldNameTable } @@ -850,6 +985,10 @@ func (x testSchemaStore) ExampleTimestampTable() ExampleTimestampTable { return x.exampleTimestamp } +func (x testSchemaStore) ExampleDurationTable() ExampleDurationTable { + return x.exampleDuration +} + func (x testSchemaStore) SimpleExampleTable() SimpleExampleTable { return x.simpleExample } @@ -883,6 +1022,11 @@ func NewTestSchemaStore(db ormtable.Schema) (TestSchemaStore, error) { return nil, err } + exampleDurationTable, err := NewExampleDurationTable(db) + if err != nil { + return nil, err + } + simpleExampleTable, err := NewSimpleExampleTable(db) if err != nil { return nil, err @@ -898,6 +1042,7 @@ func NewTestSchemaStore(db ormtable.Schema) (TestSchemaStore, error) { exampleAutoIncrementTableTable, exampleSingletonTable, exampleTimestampTable, + exampleDurationTable, simpleExampleTable, exampleAutoIncFieldNameTable, }, nil diff --git a/orm/internal/testpb/test_schema.pb.go b/orm/internal/testpb/test_schema.pb.go index 8dc30bfc36..59b54f6e4c 100644 --- a/orm/internal/testpb/test_schema.pb.go +++ b/orm/internal/testpb/test_schema.pb.go @@ -480,6 +480,69 @@ func (x *ExampleTimestamp) GetTs() *timestamppb.Timestamp { return nil } +type ExampleDuration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Dur *durationpb.Duration `protobuf:"bytes,3,opt,name=dur,proto3" json:"dur,omitempty"` +} + +func (x *ExampleDuration) Reset() { + *x = ExampleDuration{} + if protoimpl.UnsafeEnabled { + mi := &file_testpb_test_schema_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExampleDuration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExampleDuration) ProtoMessage() {} + +func (x *ExampleDuration) ProtoReflect() protoreflect.Message { + mi := &file_testpb_test_schema_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExampleDuration.ProtoReflect.Descriptor instead. +func (*ExampleDuration) Descriptor() ([]byte, []int) { + return file_testpb_test_schema_proto_rawDescGZIP(), []int{4} +} + +func (x *ExampleDuration) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ExampleDuration) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ExampleDuration) GetDur() *durationpb.Duration { + if x != nil { + return x.Dur + } + return nil +} + type SimpleExample struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -493,7 +556,7 @@ type SimpleExample struct { func (x *SimpleExample) Reset() { *x = SimpleExample{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_proto_msgTypes[4] + mi := &file_testpb_test_schema_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -506,7 +569,7 @@ func (x *SimpleExample) String() string { func (*SimpleExample) ProtoMessage() {} func (x *SimpleExample) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_proto_msgTypes[4] + mi := &file_testpb_test_schema_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -519,7 +582,7 @@ func (x *SimpleExample) ProtoReflect() protoreflect.Message { // Deprecated: Use SimpleExample.ProtoReflect.Descriptor instead. func (*SimpleExample) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_proto_rawDescGZIP(), []int{4} + return file_testpb_test_schema_proto_rawDescGZIP(), []int{5} } func (x *SimpleExample) GetName() string { @@ -556,7 +619,7 @@ type ExampleAutoIncFieldName struct { func (x *ExampleAutoIncFieldName) Reset() { *x = ExampleAutoIncFieldName{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_proto_msgTypes[5] + mi := &file_testpb_test_schema_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -569,7 +632,7 @@ func (x *ExampleAutoIncFieldName) String() string { func (*ExampleAutoIncFieldName) ProtoMessage() {} func (x *ExampleAutoIncFieldName) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_proto_msgTypes[5] + mi := &file_testpb_test_schema_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -582,7 +645,7 @@ func (x *ExampleAutoIncFieldName) ProtoReflect() protoreflect.Message { // Deprecated: Use ExampleAutoIncFieldName.ProtoReflect.Descriptor instead. func (*ExampleAutoIncFieldName) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_proto_rawDescGZIP(), []int{5} + return file_testpb_test_schema_proto_rawDescGZIP(), []int{6} } func (x *ExampleAutoIncFieldName) GetFoo() uint64 { @@ -611,7 +674,7 @@ type ExampleTable_ExampleMessage struct { func (x *ExampleTable_ExampleMessage) Reset() { *x = ExampleTable_ExampleMessage{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_proto_msgTypes[7] + mi := &file_testpb_test_schema_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -624,7 +687,7 @@ func (x *ExampleTable_ExampleMessage) String() string { func (*ExampleTable_ExampleMessage) ProtoMessage() {} func (x *ExampleTable_ExampleMessage) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_proto_msgTypes[7] + mi := &file_testpb_test_schema_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -727,35 +790,43 @@ var file_testpb_test_schema_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x02, 0x74, 0x73, 0x3a, 0x18, 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x12, 0x0a, 0x06, 0x0a, 0x02, 0x69, 0x64, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x74, 0x73, 0x10, 0x01, 0x18, 0x04, - 0x22, 0x7a, 0x0a, 0x0d, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x6e, 0x6f, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x3a, 0x1e, 0xf2, 0x9e, - 0xd3, 0x8e, 0x03, 0x18, 0x0a, 0x06, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0c, 0x0a, 0x06, - 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x10, 0x01, 0x18, 0x01, 0x18, 0x05, 0x22, 0x50, 0x0a, 0x17, - 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x61, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x62, 0x61, 0x72, 0x3a, 0x11, 0xf2, 0x9e, 0xd3, - 0x8e, 0x03, 0x0b, 0x0a, 0x07, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x10, 0x01, 0x18, 0x06, 0x2a, 0x64, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, - 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, - 0x55, 0x4d, 0x5f, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x4e, 0x55, 0x4d, - 0x5f, 0x46, 0x49, 0x56, 0x45, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, - 0x4e, 0x45, 0x47, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x45, 0x10, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x01, 0x42, 0x87, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x73, - 0x74, 0x70, 0x62, 0x42, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x54, 0x58, 0x58, 0xaa, 0x02, - 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0xca, 0x02, 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, - 0xe2, 0x02, 0x12, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x22, 0x7d, 0x0a, 0x0f, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x64, 0x75, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x03, 0x64, 0x75, 0x72, 0x3a, 0x19, 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x13, 0x0a, 0x06, 0x0a, 0x02, + 0x69, 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x64, 0x75, 0x72, 0x10, 0x01, 0x18, 0x04, 0x22, + 0x7a, 0x0a, 0x0d, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x6e, 0x6f, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x3a, 0x1e, 0xf2, 0x9e, 0xd3, + 0x8e, 0x03, 0x18, 0x0a, 0x06, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0c, 0x0a, 0x06, 0x75, + 0x6e, 0x69, 0x71, 0x75, 0x65, 0x10, 0x01, 0x18, 0x01, 0x18, 0x05, 0x22, 0x50, 0x0a, 0x17, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x62, 0x61, 0x72, 0x3a, 0x11, 0xf2, 0x9e, 0xd3, 0x8e, + 0x03, 0x0b, 0x0a, 0x07, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x10, 0x01, 0x18, 0x06, 0x2a, 0x64, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, + 0x4e, 0x55, 0x4d, 0x5f, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x55, + 0x4d, 0x5f, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x4e, 0x55, 0x4d, 0x5f, + 0x46, 0x49, 0x56, 0x45, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x4e, + 0x45, 0x47, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x45, 0x10, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x42, 0x87, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x70, 0x62, 0x42, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, + 0x73, 0x64, 0x6b, 0x2f, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x54, 0x58, 0x58, 0xaa, 0x02, 0x06, + 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0xca, 0x02, 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0xe2, + 0x02, 0x12, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -771,32 +842,34 @@ func file_testpb_test_schema_proto_rawDescGZIP() []byte { } var file_testpb_test_schema_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_testpb_test_schema_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_testpb_test_schema_proto_msgTypes = make([]protoimpl.MessageInfo, 9) var file_testpb_test_schema_proto_goTypes = []interface{}{ (Enum)(0), // 0: testpb.Enum (*ExampleTable)(nil), // 1: testpb.ExampleTable (*ExampleAutoIncrementTable)(nil), // 2: testpb.ExampleAutoIncrementTable (*ExampleSingleton)(nil), // 3: testpb.ExampleSingleton (*ExampleTimestamp)(nil), // 4: testpb.ExampleTimestamp - (*SimpleExample)(nil), // 5: testpb.SimpleExample - (*ExampleAutoIncFieldName)(nil), // 6: testpb.ExampleAutoIncFieldName - nil, // 7: testpb.ExampleTable.MapEntry - (*ExampleTable_ExampleMessage)(nil), // 8: testpb.ExampleTable.ExampleMessage - (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 10: google.protobuf.Duration + (*ExampleDuration)(nil), // 5: testpb.ExampleDuration + (*SimpleExample)(nil), // 6: testpb.SimpleExample + (*ExampleAutoIncFieldName)(nil), // 7: testpb.ExampleAutoIncFieldName + nil, // 8: testpb.ExampleTable.MapEntry + (*ExampleTable_ExampleMessage)(nil), // 9: testpb.ExampleTable.ExampleMessage + (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 11: google.protobuf.Duration } var file_testpb_test_schema_proto_depIdxs = []int32{ - 9, // 0: testpb.ExampleTable.ts:type_name -> google.protobuf.Timestamp - 10, // 1: testpb.ExampleTable.dur:type_name -> google.protobuf.Duration + 10, // 0: testpb.ExampleTable.ts:type_name -> google.protobuf.Timestamp + 11, // 1: testpb.ExampleTable.dur:type_name -> google.protobuf.Duration 0, // 2: testpb.ExampleTable.e:type_name -> testpb.Enum - 7, // 3: testpb.ExampleTable.map:type_name -> testpb.ExampleTable.MapEntry - 8, // 4: testpb.ExampleTable.msg:type_name -> testpb.ExampleTable.ExampleMessage - 9, // 5: testpb.ExampleTimestamp.ts:type_name -> google.protobuf.Timestamp - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 8, // 3: testpb.ExampleTable.map:type_name -> testpb.ExampleTable.MapEntry + 9, // 4: testpb.ExampleTable.msg:type_name -> testpb.ExampleTable.ExampleMessage + 10, // 5: testpb.ExampleTimestamp.ts:type_name -> google.protobuf.Timestamp + 11, // 6: testpb.ExampleDuration.dur:type_name -> google.protobuf.Duration + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_testpb_test_schema_proto_init() } @@ -854,7 +927,7 @@ func file_testpb_test_schema_proto_init() { } } file_testpb_test_schema_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SimpleExample); i { + switch v := v.(*ExampleDuration); i { case 0: return &v.state case 1: @@ -866,6 +939,18 @@ func file_testpb_test_schema_proto_init() { } } file_testpb_test_schema_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SimpleExample); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_testpb_test_schema_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExampleAutoIncFieldName); i { case 0: return &v.state @@ -877,7 +962,7 @@ func file_testpb_test_schema_proto_init() { return nil } } - file_testpb_test_schema_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_testpb_test_schema_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExampleTable_ExampleMessage); i { case 0: return &v.state @@ -899,7 +984,7 @@ func file_testpb_test_schema_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_testpb_test_schema_proto_rawDesc, NumEnums: 1, - NumMessages: 8, + NumMessages: 9, NumExtensions: 0, NumServices: 0, }, diff --git a/orm/internal/testpb/test_schema.proto b/orm/internal/testpb/test_schema.proto index 2a27f8f737..3aed58319e 100644 --- a/orm/internal/testpb/test_schema.proto +++ b/orm/internal/testpb/test_schema.proto @@ -107,6 +107,18 @@ message ExampleTimestamp { google.protobuf.Timestamp ts = 3; } +message ExampleDuration { + option (cosmos.orm.v1.table) = { + id: 4 + primary_key: {fields: "id" auto_increment: true} + index: {id: 1 fields: "dur"} + }; + + uint64 id = 1; + string name = 2; + google.protobuf.Duration dur = 3; +} + message SimpleExample { option (cosmos.orm.v1.table) = { id: 5 diff --git a/orm/internal/testpb/test_schema_query.pb.go b/orm/internal/testpb/test_schema_query.pb.go index 484624eb64..f2dd960727 100644 --- a/orm/internal/testpb/test_schema_query.pb.go +++ b/orm/internal/testpb/test_schema_query.pb.go @@ -12,6 +12,7 @@ import ( v1beta1 "cosmossdk.io/api/cosmos/base/query/v1beta1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" @@ -1084,6 +1085,256 @@ func (x *ListExampleTimestampResponse) GetPagination() *v1beta1.PageResponse { return nil } +// GetExampleDurationRequest is the TestSchemaQuery/GetExampleDurationRequest request type. +type GetExampleDurationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // id specifies the value of the id field in the primary key. + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *GetExampleDurationRequest) Reset() { + *x = GetExampleDurationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_testpb_test_schema_query_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExampleDurationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExampleDurationRequest) ProtoMessage() {} + +func (x *GetExampleDurationRequest) ProtoReflect() protoreflect.Message { + mi := &file_testpb_test_schema_query_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetExampleDurationRequest.ProtoReflect.Descriptor instead. +func (*GetExampleDurationRequest) Descriptor() ([]byte, []int) { + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{18} +} + +func (x *GetExampleDurationRequest) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +// GetExampleDurationResponse is the TestSchemaQuery/GetExampleDurationResponse response type. +type GetExampleDurationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // value is the response value. + Value *ExampleDuration `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *GetExampleDurationResponse) Reset() { + *x = GetExampleDurationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_testpb_test_schema_query_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExampleDurationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExampleDurationResponse) ProtoMessage() {} + +func (x *GetExampleDurationResponse) ProtoReflect() protoreflect.Message { + mi := &file_testpb_test_schema_query_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetExampleDurationResponse.ProtoReflect.Descriptor instead. +func (*GetExampleDurationResponse) Descriptor() ([]byte, []int) { + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{19} +} + +func (x *GetExampleDurationResponse) GetValue() *ExampleDuration { + if x != nil { + return x.Value + } + return nil +} + +// ListExampleDurationRequest is the TestSchemaQuery/ListExampleDurationRequest request type. +type ListExampleDurationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // query specifies the type of query - either a prefix or range query. + // + // Types that are assignable to Query: + // *ListExampleDurationRequest_PrefixQuery + // *ListExampleDurationRequest_RangeQuery_ + Query isListExampleDurationRequest_Query `protobuf_oneof:"query"` + // pagination specifies optional pagination parameters. + Pagination *v1beta1.PageRequest `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *ListExampleDurationRequest) Reset() { + *x = ListExampleDurationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_testpb_test_schema_query_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListExampleDurationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExampleDurationRequest) ProtoMessage() {} + +func (x *ListExampleDurationRequest) ProtoReflect() protoreflect.Message { + mi := &file_testpb_test_schema_query_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListExampleDurationRequest.ProtoReflect.Descriptor instead. +func (*ListExampleDurationRequest) Descriptor() ([]byte, []int) { + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{20} +} + +func (m *ListExampleDurationRequest) GetQuery() isListExampleDurationRequest_Query { + if m != nil { + return m.Query + } + return nil +} + +func (x *ListExampleDurationRequest) GetPrefixQuery() *ListExampleDurationRequest_IndexKey { + if x, ok := x.GetQuery().(*ListExampleDurationRequest_PrefixQuery); ok { + return x.PrefixQuery + } + return nil +} + +func (x *ListExampleDurationRequest) GetRangeQuery() *ListExampleDurationRequest_RangeQuery { + if x, ok := x.GetQuery().(*ListExampleDurationRequest_RangeQuery_); ok { + return x.RangeQuery + } + return nil +} + +func (x *ListExampleDurationRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +type isListExampleDurationRequest_Query interface { + isListExampleDurationRequest_Query() +} + +type ListExampleDurationRequest_PrefixQuery struct { + // prefix_query specifies the index key value to use for the prefix query. + PrefixQuery *ListExampleDurationRequest_IndexKey `protobuf:"bytes,1,opt,name=prefix_query,json=prefixQuery,proto3,oneof"` +} + +type ListExampleDurationRequest_RangeQuery_ struct { + // range_query specifies the index key from/to values to use for the range query. + RangeQuery *ListExampleDurationRequest_RangeQuery `protobuf:"bytes,2,opt,name=range_query,json=rangeQuery,proto3,oneof"` +} + +func (*ListExampleDurationRequest_PrefixQuery) isListExampleDurationRequest_Query() {} + +func (*ListExampleDurationRequest_RangeQuery_) isListExampleDurationRequest_Query() {} + +// ListExampleDurationResponse is the TestSchemaQuery/ListExampleDurationResponse response type. +type ListExampleDurationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // values are the results of the query. + Values []*ExampleDuration `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + // pagination is the pagination response. + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *ListExampleDurationResponse) Reset() { + *x = ListExampleDurationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_testpb_test_schema_query_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListExampleDurationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExampleDurationResponse) ProtoMessage() {} + +func (x *ListExampleDurationResponse) ProtoReflect() protoreflect.Message { + mi := &file_testpb_test_schema_query_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListExampleDurationResponse.ProtoReflect.Descriptor instead. +func (*ListExampleDurationResponse) Descriptor() ([]byte, []int) { + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{21} +} + +func (x *ListExampleDurationResponse) GetValues() []*ExampleDuration { + if x != nil { + return x.Values + } + return nil +} + +func (x *ListExampleDurationResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + // GetSimpleExampleRequest is the TestSchemaQuery/GetSimpleExampleRequest request type. type GetSimpleExampleRequest struct { state protoimpl.MessageState @@ -1097,7 +1348,7 @@ type GetSimpleExampleRequest struct { func (x *GetSimpleExampleRequest) Reset() { *x = GetSimpleExampleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[18] + mi := &file_testpb_test_schema_query_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1110,7 +1361,7 @@ func (x *GetSimpleExampleRequest) String() string { func (*GetSimpleExampleRequest) ProtoMessage() {} func (x *GetSimpleExampleRequest) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[18] + mi := &file_testpb_test_schema_query_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1123,7 +1374,7 @@ func (x *GetSimpleExampleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSimpleExampleRequest.ProtoReflect.Descriptor instead. func (*GetSimpleExampleRequest) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{18} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{22} } func (x *GetSimpleExampleRequest) GetName() string { @@ -1146,7 +1397,7 @@ type GetSimpleExampleResponse struct { func (x *GetSimpleExampleResponse) Reset() { *x = GetSimpleExampleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[19] + mi := &file_testpb_test_schema_query_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1159,7 +1410,7 @@ func (x *GetSimpleExampleResponse) String() string { func (*GetSimpleExampleResponse) ProtoMessage() {} func (x *GetSimpleExampleResponse) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[19] + mi := &file_testpb_test_schema_query_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1172,7 +1423,7 @@ func (x *GetSimpleExampleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSimpleExampleResponse.ProtoReflect.Descriptor instead. func (*GetSimpleExampleResponse) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{19} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{23} } func (x *GetSimpleExampleResponse) GetValue() *SimpleExample { @@ -1194,7 +1445,7 @@ type GetSimpleExampleByUniqueRequest struct { func (x *GetSimpleExampleByUniqueRequest) Reset() { *x = GetSimpleExampleByUniqueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[20] + mi := &file_testpb_test_schema_query_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1207,7 +1458,7 @@ func (x *GetSimpleExampleByUniqueRequest) String() string { func (*GetSimpleExampleByUniqueRequest) ProtoMessage() {} func (x *GetSimpleExampleByUniqueRequest) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[20] + mi := &file_testpb_test_schema_query_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1220,7 +1471,7 @@ func (x *GetSimpleExampleByUniqueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSimpleExampleByUniqueRequest.ProtoReflect.Descriptor instead. func (*GetSimpleExampleByUniqueRequest) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{20} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{24} } func (x *GetSimpleExampleByUniqueRequest) GetUnique() string { @@ -1242,7 +1493,7 @@ type GetSimpleExampleByUniqueResponse struct { func (x *GetSimpleExampleByUniqueResponse) Reset() { *x = GetSimpleExampleByUniqueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[21] + mi := &file_testpb_test_schema_query_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1255,7 +1506,7 @@ func (x *GetSimpleExampleByUniqueResponse) String() string { func (*GetSimpleExampleByUniqueResponse) ProtoMessage() {} func (x *GetSimpleExampleByUniqueResponse) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[21] + mi := &file_testpb_test_schema_query_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1268,7 +1519,7 @@ func (x *GetSimpleExampleByUniqueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSimpleExampleByUniqueResponse.ProtoReflect.Descriptor instead. func (*GetSimpleExampleByUniqueResponse) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{21} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{25} } func (x *GetSimpleExampleByUniqueResponse) GetValue() *SimpleExample { @@ -1298,7 +1549,7 @@ type ListSimpleExampleRequest struct { func (x *ListSimpleExampleRequest) Reset() { *x = ListSimpleExampleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[22] + mi := &file_testpb_test_schema_query_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1311,7 +1562,7 @@ func (x *ListSimpleExampleRequest) String() string { func (*ListSimpleExampleRequest) ProtoMessage() {} func (x *ListSimpleExampleRequest) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[22] + mi := &file_testpb_test_schema_query_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1324,7 +1575,7 @@ func (x *ListSimpleExampleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSimpleExampleRequest.ProtoReflect.Descriptor instead. func (*ListSimpleExampleRequest) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{22} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{26} } func (m *ListSimpleExampleRequest) GetQuery() isListSimpleExampleRequest_Query { @@ -1388,7 +1639,7 @@ type ListSimpleExampleResponse struct { func (x *ListSimpleExampleResponse) Reset() { *x = ListSimpleExampleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[23] + mi := &file_testpb_test_schema_query_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1401,7 +1652,7 @@ func (x *ListSimpleExampleResponse) String() string { func (*ListSimpleExampleResponse) ProtoMessage() {} func (x *ListSimpleExampleResponse) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[23] + mi := &file_testpb_test_schema_query_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1414,7 +1665,7 @@ func (x *ListSimpleExampleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSimpleExampleResponse.ProtoReflect.Descriptor instead. func (*ListSimpleExampleResponse) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{23} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{27} } func (x *ListSimpleExampleResponse) GetValues() []*SimpleExample { @@ -1444,7 +1695,7 @@ type GetExampleAutoIncFieldNameRequest struct { func (x *GetExampleAutoIncFieldNameRequest) Reset() { *x = GetExampleAutoIncFieldNameRequest{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[24] + mi := &file_testpb_test_schema_query_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1457,7 +1708,7 @@ func (x *GetExampleAutoIncFieldNameRequest) String() string { func (*GetExampleAutoIncFieldNameRequest) ProtoMessage() {} func (x *GetExampleAutoIncFieldNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[24] + mi := &file_testpb_test_schema_query_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1470,7 +1721,7 @@ func (x *GetExampleAutoIncFieldNameRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetExampleAutoIncFieldNameRequest.ProtoReflect.Descriptor instead. func (*GetExampleAutoIncFieldNameRequest) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{24} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{28} } func (x *GetExampleAutoIncFieldNameRequest) GetFoo() uint64 { @@ -1493,7 +1744,7 @@ type GetExampleAutoIncFieldNameResponse struct { func (x *GetExampleAutoIncFieldNameResponse) Reset() { *x = GetExampleAutoIncFieldNameResponse{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[25] + mi := &file_testpb_test_schema_query_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1506,7 +1757,7 @@ func (x *GetExampleAutoIncFieldNameResponse) String() string { func (*GetExampleAutoIncFieldNameResponse) ProtoMessage() {} func (x *GetExampleAutoIncFieldNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[25] + mi := &file_testpb_test_schema_query_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1519,7 +1770,7 @@ func (x *GetExampleAutoIncFieldNameResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetExampleAutoIncFieldNameResponse.ProtoReflect.Descriptor instead. func (*GetExampleAutoIncFieldNameResponse) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{25} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{29} } func (x *GetExampleAutoIncFieldNameResponse) GetValue() *ExampleAutoIncFieldName { @@ -1549,7 +1800,7 @@ type ListExampleAutoIncFieldNameRequest struct { func (x *ListExampleAutoIncFieldNameRequest) Reset() { *x = ListExampleAutoIncFieldNameRequest{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[26] + mi := &file_testpb_test_schema_query_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1562,7 +1813,7 @@ func (x *ListExampleAutoIncFieldNameRequest) String() string { func (*ListExampleAutoIncFieldNameRequest) ProtoMessage() {} func (x *ListExampleAutoIncFieldNameRequest) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[26] + mi := &file_testpb_test_schema_query_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1575,7 +1826,7 @@ func (x *ListExampleAutoIncFieldNameRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ListExampleAutoIncFieldNameRequest.ProtoReflect.Descriptor instead. func (*ListExampleAutoIncFieldNameRequest) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{26} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{30} } func (m *ListExampleAutoIncFieldNameRequest) GetQuery() isListExampleAutoIncFieldNameRequest_Query { @@ -1639,7 +1890,7 @@ type ListExampleAutoIncFieldNameResponse struct { func (x *ListExampleAutoIncFieldNameResponse) Reset() { *x = ListExampleAutoIncFieldNameResponse{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[27] + mi := &file_testpb_test_schema_query_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1652,7 +1903,7 @@ func (x *ListExampleAutoIncFieldNameResponse) String() string { func (*ListExampleAutoIncFieldNameResponse) ProtoMessage() {} func (x *ListExampleAutoIncFieldNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[27] + mi := &file_testpb_test_schema_query_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1665,7 +1916,7 @@ func (x *ListExampleAutoIncFieldNameResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use ListExampleAutoIncFieldNameResponse.ProtoReflect.Descriptor instead. func (*ListExampleAutoIncFieldNameResponse) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{27} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{31} } func (x *ListExampleAutoIncFieldNameResponse) GetValues() []*ExampleAutoIncFieldName { @@ -1702,7 +1953,7 @@ type ListExampleTableRequest_IndexKey struct { func (x *ListExampleTableRequest_IndexKey) Reset() { *x = ListExampleTableRequest_IndexKey{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[28] + mi := &file_testpb_test_schema_query_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1715,7 +1966,7 @@ func (x *ListExampleTableRequest_IndexKey) String() string { func (*ListExampleTableRequest_IndexKey) ProtoMessage() {} func (x *ListExampleTableRequest_IndexKey) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[28] + mi := &file_testpb_test_schema_query_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1816,7 +2067,7 @@ type ListExampleTableRequest_RangeQuery struct { func (x *ListExampleTableRequest_RangeQuery) Reset() { *x = ListExampleTableRequest_RangeQuery{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[29] + mi := &file_testpb_test_schema_query_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1829,7 +2080,7 @@ func (x *ListExampleTableRequest_RangeQuery) String() string { func (*ListExampleTableRequest_RangeQuery) ProtoMessage() {} func (x *ListExampleTableRequest_RangeQuery) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[29] + mi := &file_testpb_test_schema_query_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1878,7 +2129,7 @@ type ListExampleTableRequest_IndexKey_U32I64Str struct { func (x *ListExampleTableRequest_IndexKey_U32I64Str) Reset() { *x = ListExampleTableRequest_IndexKey_U32I64Str{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[30] + mi := &file_testpb_test_schema_query_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1891,7 +2142,7 @@ func (x *ListExampleTableRequest_IndexKey_U32I64Str) String() string { func (*ListExampleTableRequest_IndexKey_U32I64Str) ProtoMessage() {} func (x *ListExampleTableRequest_IndexKey_U32I64Str) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[30] + mi := &file_testpb_test_schema_query_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1944,7 +2195,7 @@ type ListExampleTableRequest_IndexKey_U64Str struct { func (x *ListExampleTableRequest_IndexKey_U64Str) Reset() { *x = ListExampleTableRequest_IndexKey_U64Str{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[31] + mi := &file_testpb_test_schema_query_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1957,7 +2208,7 @@ func (x *ListExampleTableRequest_IndexKey_U64Str) String() string { func (*ListExampleTableRequest_IndexKey_U64Str) ProtoMessage() {} func (x *ListExampleTableRequest_IndexKey_U64Str) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[31] + mi := &file_testpb_test_schema_query_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2003,7 +2254,7 @@ type ListExampleTableRequest_IndexKey_StrU32 struct { func (x *ListExampleTableRequest_IndexKey_StrU32) Reset() { *x = ListExampleTableRequest_IndexKey_StrU32{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[32] + mi := &file_testpb_test_schema_query_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2016,7 +2267,7 @@ func (x *ListExampleTableRequest_IndexKey_StrU32) String() string { func (*ListExampleTableRequest_IndexKey_StrU32) ProtoMessage() {} func (x *ListExampleTableRequest_IndexKey_StrU32) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[32] + mi := &file_testpb_test_schema_query_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2062,7 +2313,7 @@ type ListExampleTableRequest_IndexKey_BzStr struct { func (x *ListExampleTableRequest_IndexKey_BzStr) Reset() { *x = ListExampleTableRequest_IndexKey_BzStr{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[33] + mi := &file_testpb_test_schema_query_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2326,7 @@ func (x *ListExampleTableRequest_IndexKey_BzStr) String() string { func (*ListExampleTableRequest_IndexKey_BzStr) ProtoMessage() {} func (x *ListExampleTableRequest_IndexKey_BzStr) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[33] + mi := &file_testpb_test_schema_query_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2123,7 +2374,7 @@ type ListExampleAutoIncrementTableRequest_IndexKey struct { func (x *ListExampleAutoIncrementTableRequest_IndexKey) Reset() { *x = ListExampleAutoIncrementTableRequest_IndexKey{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[34] + mi := &file_testpb_test_schema_query_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2136,7 +2387,7 @@ func (x *ListExampleAutoIncrementTableRequest_IndexKey) String() string { func (*ListExampleAutoIncrementTableRequest_IndexKey) ProtoMessage() {} func (x *ListExampleAutoIncrementTableRequest_IndexKey) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[34] + mi := &file_testpb_test_schema_query_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2211,7 +2462,7 @@ type ListExampleAutoIncrementTableRequest_RangeQuery struct { func (x *ListExampleAutoIncrementTableRequest_RangeQuery) Reset() { *x = ListExampleAutoIncrementTableRequest_RangeQuery{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[35] + mi := &file_testpb_test_schema_query_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2224,7 +2475,7 @@ func (x *ListExampleAutoIncrementTableRequest_RangeQuery) String() string { func (*ListExampleAutoIncrementTableRequest_RangeQuery) ProtoMessage() {} func (x *ListExampleAutoIncrementTableRequest_RangeQuery) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[35] + mi := &file_testpb_test_schema_query_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2267,7 +2518,7 @@ type ListExampleAutoIncrementTableRequest_IndexKey_Id struct { func (x *ListExampleAutoIncrementTableRequest_IndexKey_Id) Reset() { *x = ListExampleAutoIncrementTableRequest_IndexKey_Id{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[36] + mi := &file_testpb_test_schema_query_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2280,7 +2531,7 @@ func (x *ListExampleAutoIncrementTableRequest_IndexKey_Id) String() string { func (*ListExampleAutoIncrementTableRequest_IndexKey_Id) ProtoMessage() {} func (x *ListExampleAutoIncrementTableRequest_IndexKey_Id) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[36] + mi := &file_testpb_test_schema_query_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2316,7 +2567,7 @@ type ListExampleAutoIncrementTableRequest_IndexKey_X struct { func (x *ListExampleAutoIncrementTableRequest_IndexKey_X) Reset() { *x = ListExampleAutoIncrementTableRequest_IndexKey_X{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[37] + mi := &file_testpb_test_schema_query_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2329,7 +2580,7 @@ func (x *ListExampleAutoIncrementTableRequest_IndexKey_X) String() string { func (*ListExampleAutoIncrementTableRequest_IndexKey_X) ProtoMessage() {} func (x *ListExampleAutoIncrementTableRequest_IndexKey_X) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[37] + mi := &file_testpb_test_schema_query_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2370,7 +2621,7 @@ type ListExampleTimestampRequest_IndexKey struct { func (x *ListExampleTimestampRequest_IndexKey) Reset() { *x = ListExampleTimestampRequest_IndexKey{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[38] + mi := &file_testpb_test_schema_query_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2383,7 +2634,7 @@ func (x *ListExampleTimestampRequest_IndexKey) String() string { func (*ListExampleTimestampRequest_IndexKey) ProtoMessage() {} func (x *ListExampleTimestampRequest_IndexKey) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[38] + mi := &file_testpb_test_schema_query_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2456,7 +2707,7 @@ type ListExampleTimestampRequest_RangeQuery struct { func (x *ListExampleTimestampRequest_RangeQuery) Reset() { *x = ListExampleTimestampRequest_RangeQuery{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[39] + mi := &file_testpb_test_schema_query_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2469,7 +2720,7 @@ func (x *ListExampleTimestampRequest_RangeQuery) String() string { func (*ListExampleTimestampRequest_RangeQuery) ProtoMessage() {} func (x *ListExampleTimestampRequest_RangeQuery) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[39] + mi := &file_testpb_test_schema_query_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2512,7 +2763,7 @@ type ListExampleTimestampRequest_IndexKey_Id struct { func (x *ListExampleTimestampRequest_IndexKey_Id) Reset() { *x = ListExampleTimestampRequest_IndexKey_Id{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[40] + mi := &file_testpb_test_schema_query_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2525,7 +2776,7 @@ func (x *ListExampleTimestampRequest_IndexKey_Id) String() string { func (*ListExampleTimestampRequest_IndexKey_Id) ProtoMessage() {} func (x *ListExampleTimestampRequest_IndexKey_Id) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[40] + mi := &file_testpb_test_schema_query_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2561,7 +2812,7 @@ type ListExampleTimestampRequest_IndexKey_Ts struct { func (x *ListExampleTimestampRequest_IndexKey_Ts) Reset() { *x = ListExampleTimestampRequest_IndexKey_Ts{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[41] + mi := &file_testpb_test_schema_query_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2574,7 +2825,7 @@ func (x *ListExampleTimestampRequest_IndexKey_Ts) String() string { func (*ListExampleTimestampRequest_IndexKey_Ts) ProtoMessage() {} func (x *ListExampleTimestampRequest_IndexKey_Ts) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[41] + mi := &file_testpb_test_schema_query_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2597,6 +2848,250 @@ func (x *ListExampleTimestampRequest_IndexKey_Ts) GetTs() *timestamppb.Timestamp return nil } +// IndexKey specifies the value of an index key to use in prefix and range queries. +type ListExampleDurationRequest_IndexKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // key specifies the index key value. + // + // Types that are assignable to Key: + // *ListExampleDurationRequest_IndexKey_Id_ + // *ListExampleDurationRequest_IndexKey_Dur_ + Key isListExampleDurationRequest_IndexKey_Key `protobuf_oneof:"key"` +} + +func (x *ListExampleDurationRequest_IndexKey) Reset() { + *x = ListExampleDurationRequest_IndexKey{} + if protoimpl.UnsafeEnabled { + mi := &file_testpb_test_schema_query_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListExampleDurationRequest_IndexKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExampleDurationRequest_IndexKey) ProtoMessage() {} + +func (x *ListExampleDurationRequest_IndexKey) ProtoReflect() protoreflect.Message { + mi := &file_testpb_test_schema_query_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListExampleDurationRequest_IndexKey.ProtoReflect.Descriptor instead. +func (*ListExampleDurationRequest_IndexKey) Descriptor() ([]byte, []int) { + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{20, 0} +} + +func (m *ListExampleDurationRequest_IndexKey) GetKey() isListExampleDurationRequest_IndexKey_Key { + if m != nil { + return m.Key + } + return nil +} + +func (x *ListExampleDurationRequest_IndexKey) GetId() *ListExampleDurationRequest_IndexKey_Id { + if x, ok := x.GetKey().(*ListExampleDurationRequest_IndexKey_Id_); ok { + return x.Id + } + return nil +} + +func (x *ListExampleDurationRequest_IndexKey) GetDur() *ListExampleDurationRequest_IndexKey_Dur { + if x, ok := x.GetKey().(*ListExampleDurationRequest_IndexKey_Dur_); ok { + return x.Dur + } + return nil +} + +type isListExampleDurationRequest_IndexKey_Key interface { + isListExampleDurationRequest_IndexKey_Key() +} + +type ListExampleDurationRequest_IndexKey_Id_ struct { + // id specifies the value of the Id index key to use in the query. + Id *ListExampleDurationRequest_IndexKey_Id `protobuf:"bytes,1,opt,name=id,proto3,oneof"` +} + +type ListExampleDurationRequest_IndexKey_Dur_ struct { + // dur specifies the value of the Dur index key to use in the query. + Dur *ListExampleDurationRequest_IndexKey_Dur `protobuf:"bytes,2,opt,name=dur,proto3,oneof"` +} + +func (*ListExampleDurationRequest_IndexKey_Id_) isListExampleDurationRequest_IndexKey_Key() {} + +func (*ListExampleDurationRequest_IndexKey_Dur_) isListExampleDurationRequest_IndexKey_Key() {} + +// RangeQuery specifies the from/to index keys for a range query. +type ListExampleDurationRequest_RangeQuery struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // from is the index key to use for the start of the range query. + // To query from the start of an index, specify an index key for that index with empty values. + From *ListExampleDurationRequest_IndexKey `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + // to is the index key to use for the end of the range query. + // The index key type MUST be the same as the index key type used for from. + // To query from to the end of an index it can be omitted. + To *ListExampleDurationRequest_IndexKey `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` +} + +func (x *ListExampleDurationRequest_RangeQuery) Reset() { + *x = ListExampleDurationRequest_RangeQuery{} + if protoimpl.UnsafeEnabled { + mi := &file_testpb_test_schema_query_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListExampleDurationRequest_RangeQuery) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExampleDurationRequest_RangeQuery) ProtoMessage() {} + +func (x *ListExampleDurationRequest_RangeQuery) ProtoReflect() protoreflect.Message { + mi := &file_testpb_test_schema_query_proto_msgTypes[47] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListExampleDurationRequest_RangeQuery.ProtoReflect.Descriptor instead. +func (*ListExampleDurationRequest_RangeQuery) Descriptor() ([]byte, []int) { + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{20, 1} +} + +func (x *ListExampleDurationRequest_RangeQuery) GetFrom() *ListExampleDurationRequest_IndexKey { + if x != nil { + return x.From + } + return nil +} + +func (x *ListExampleDurationRequest_RangeQuery) GetTo() *ListExampleDurationRequest_IndexKey { + if x != nil { + return x.To + } + return nil +} + +type ListExampleDurationRequest_IndexKey_Id struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // id is the value of the id field in the index. + // It can be omitted to query for all valid values of that field in this segment of the index. + Id *uint64 `protobuf:"varint,1,opt,name=id,proto3,oneof" json:"id,omitempty"` +} + +func (x *ListExampleDurationRequest_IndexKey_Id) Reset() { + *x = ListExampleDurationRequest_IndexKey_Id{} + if protoimpl.UnsafeEnabled { + mi := &file_testpb_test_schema_query_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListExampleDurationRequest_IndexKey_Id) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExampleDurationRequest_IndexKey_Id) ProtoMessage() {} + +func (x *ListExampleDurationRequest_IndexKey_Id) ProtoReflect() protoreflect.Message { + mi := &file_testpb_test_schema_query_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListExampleDurationRequest_IndexKey_Id.ProtoReflect.Descriptor instead. +func (*ListExampleDurationRequest_IndexKey_Id) Descriptor() ([]byte, []int) { + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{20, 0, 0} +} + +func (x *ListExampleDurationRequest_IndexKey_Id) GetId() uint64 { + if x != nil && x.Id != nil { + return *x.Id + } + return 0 +} + +type ListExampleDurationRequest_IndexKey_Dur struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // dur is the value of the dur field in the index. + // It can be omitted to query for all valid values of that field in this segment of the index. + Dur *durationpb.Duration `protobuf:"bytes,1,opt,name=dur,proto3,oneof" json:"dur,omitempty"` +} + +func (x *ListExampleDurationRequest_IndexKey_Dur) Reset() { + *x = ListExampleDurationRequest_IndexKey_Dur{} + if protoimpl.UnsafeEnabled { + mi := &file_testpb_test_schema_query_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListExampleDurationRequest_IndexKey_Dur) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListExampleDurationRequest_IndexKey_Dur) ProtoMessage() {} + +func (x *ListExampleDurationRequest_IndexKey_Dur) ProtoReflect() protoreflect.Message { + mi := &file_testpb_test_schema_query_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListExampleDurationRequest_IndexKey_Dur.ProtoReflect.Descriptor instead. +func (*ListExampleDurationRequest_IndexKey_Dur) Descriptor() ([]byte, []int) { + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{20, 0, 1} +} + +func (x *ListExampleDurationRequest_IndexKey_Dur) GetDur() *durationpb.Duration { + if x != nil { + return x.Dur + } + return nil +} + // IndexKey specifies the value of an index key to use in prefix and range queries. type ListSimpleExampleRequest_IndexKey struct { state protoimpl.MessageState @@ -2615,7 +3110,7 @@ type ListSimpleExampleRequest_IndexKey struct { func (x *ListSimpleExampleRequest_IndexKey) Reset() { *x = ListSimpleExampleRequest_IndexKey{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[42] + mi := &file_testpb_test_schema_query_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2628,7 +3123,7 @@ func (x *ListSimpleExampleRequest_IndexKey) String() string { func (*ListSimpleExampleRequest_IndexKey) ProtoMessage() {} func (x *ListSimpleExampleRequest_IndexKey) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[42] + mi := &file_testpb_test_schema_query_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2641,7 +3136,7 @@ func (x *ListSimpleExampleRequest_IndexKey) ProtoReflect() protoreflect.Message // Deprecated: Use ListSimpleExampleRequest_IndexKey.ProtoReflect.Descriptor instead. func (*ListSimpleExampleRequest_IndexKey) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{22, 0} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{26, 0} } func (m *ListSimpleExampleRequest_IndexKey) GetKey() isListSimpleExampleRequest_IndexKey_Key { @@ -2701,7 +3196,7 @@ type ListSimpleExampleRequest_RangeQuery struct { func (x *ListSimpleExampleRequest_RangeQuery) Reset() { *x = ListSimpleExampleRequest_RangeQuery{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[43] + mi := &file_testpb_test_schema_query_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2714,7 +3209,7 @@ func (x *ListSimpleExampleRequest_RangeQuery) String() string { func (*ListSimpleExampleRequest_RangeQuery) ProtoMessage() {} func (x *ListSimpleExampleRequest_RangeQuery) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[43] + mi := &file_testpb_test_schema_query_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2727,7 +3222,7 @@ func (x *ListSimpleExampleRequest_RangeQuery) ProtoReflect() protoreflect.Messag // Deprecated: Use ListSimpleExampleRequest_RangeQuery.ProtoReflect.Descriptor instead. func (*ListSimpleExampleRequest_RangeQuery) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{22, 1} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{26, 1} } func (x *ListSimpleExampleRequest_RangeQuery) GetFrom() *ListSimpleExampleRequest_IndexKey { @@ -2757,7 +3252,7 @@ type ListSimpleExampleRequest_IndexKey_Name struct { func (x *ListSimpleExampleRequest_IndexKey_Name) Reset() { *x = ListSimpleExampleRequest_IndexKey_Name{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[44] + mi := &file_testpb_test_schema_query_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2770,7 +3265,7 @@ func (x *ListSimpleExampleRequest_IndexKey_Name) String() string { func (*ListSimpleExampleRequest_IndexKey_Name) ProtoMessage() {} func (x *ListSimpleExampleRequest_IndexKey_Name) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[44] + mi := &file_testpb_test_schema_query_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2783,7 +3278,7 @@ func (x *ListSimpleExampleRequest_IndexKey_Name) ProtoReflect() protoreflect.Mes // Deprecated: Use ListSimpleExampleRequest_IndexKey_Name.ProtoReflect.Descriptor instead. func (*ListSimpleExampleRequest_IndexKey_Name) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{22, 0, 0} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{26, 0, 0} } func (x *ListSimpleExampleRequest_IndexKey_Name) GetName() string { @@ -2806,7 +3301,7 @@ type ListSimpleExampleRequest_IndexKey_Unique struct { func (x *ListSimpleExampleRequest_IndexKey_Unique) Reset() { *x = ListSimpleExampleRequest_IndexKey_Unique{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[45] + mi := &file_testpb_test_schema_query_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2819,7 +3314,7 @@ func (x *ListSimpleExampleRequest_IndexKey_Unique) String() string { func (*ListSimpleExampleRequest_IndexKey_Unique) ProtoMessage() {} func (x *ListSimpleExampleRequest_IndexKey_Unique) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[45] + mi := &file_testpb_test_schema_query_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2832,7 +3327,7 @@ func (x *ListSimpleExampleRequest_IndexKey_Unique) ProtoReflect() protoreflect.M // Deprecated: Use ListSimpleExampleRequest_IndexKey_Unique.ProtoReflect.Descriptor instead. func (*ListSimpleExampleRequest_IndexKey_Unique) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{22, 0, 1} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{26, 0, 1} } func (x *ListSimpleExampleRequest_IndexKey_Unique) GetUnique() string { @@ -2859,7 +3354,7 @@ type ListExampleAutoIncFieldNameRequest_IndexKey struct { func (x *ListExampleAutoIncFieldNameRequest_IndexKey) Reset() { *x = ListExampleAutoIncFieldNameRequest_IndexKey{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[46] + mi := &file_testpb_test_schema_query_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2872,7 +3367,7 @@ func (x *ListExampleAutoIncFieldNameRequest_IndexKey) String() string { func (*ListExampleAutoIncFieldNameRequest_IndexKey) ProtoMessage() {} func (x *ListExampleAutoIncFieldNameRequest_IndexKey) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[46] + mi := &file_testpb_test_schema_query_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2885,7 +3380,7 @@ func (x *ListExampleAutoIncFieldNameRequest_IndexKey) ProtoReflect() protoreflec // Deprecated: Use ListExampleAutoIncFieldNameRequest_IndexKey.ProtoReflect.Descriptor instead. func (*ListExampleAutoIncFieldNameRequest_IndexKey) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{26, 0} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{30, 0} } func (m *ListExampleAutoIncFieldNameRequest_IndexKey) GetKey() isListExampleAutoIncFieldNameRequest_IndexKey_Key { @@ -2932,7 +3427,7 @@ type ListExampleAutoIncFieldNameRequest_RangeQuery struct { func (x *ListExampleAutoIncFieldNameRequest_RangeQuery) Reset() { *x = ListExampleAutoIncFieldNameRequest_RangeQuery{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[47] + mi := &file_testpb_test_schema_query_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2945,7 +3440,7 @@ func (x *ListExampleAutoIncFieldNameRequest_RangeQuery) String() string { func (*ListExampleAutoIncFieldNameRequest_RangeQuery) ProtoMessage() {} func (x *ListExampleAutoIncFieldNameRequest_RangeQuery) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[47] + mi := &file_testpb_test_schema_query_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2958,7 +3453,7 @@ func (x *ListExampleAutoIncFieldNameRequest_RangeQuery) ProtoReflect() protorefl // Deprecated: Use ListExampleAutoIncFieldNameRequest_RangeQuery.ProtoReflect.Descriptor instead. func (*ListExampleAutoIncFieldNameRequest_RangeQuery) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{26, 1} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{30, 1} } func (x *ListExampleAutoIncFieldNameRequest_RangeQuery) GetFrom() *ListExampleAutoIncFieldNameRequest_IndexKey { @@ -2988,7 +3483,7 @@ type ListExampleAutoIncFieldNameRequest_IndexKey_Foo struct { func (x *ListExampleAutoIncFieldNameRequest_IndexKey_Foo) Reset() { *x = ListExampleAutoIncFieldNameRequest_IndexKey_Foo{} if protoimpl.UnsafeEnabled { - mi := &file_testpb_test_schema_query_proto_msgTypes[48] + mi := &file_testpb_test_schema_query_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3001,7 +3496,7 @@ func (x *ListExampleAutoIncFieldNameRequest_IndexKey_Foo) String() string { func (*ListExampleAutoIncFieldNameRequest_IndexKey_Foo) ProtoMessage() {} func (x *ListExampleAutoIncFieldNameRequest_IndexKey_Foo) ProtoReflect() protoreflect.Message { - mi := &file_testpb_test_schema_query_proto_msgTypes[48] + mi := &file_testpb_test_schema_query_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3014,7 +3509,7 @@ func (x *ListExampleAutoIncFieldNameRequest_IndexKey_Foo) ProtoReflect() protore // Deprecated: Use ListExampleAutoIncFieldNameRequest_IndexKey_Foo.ProtoReflect.Descriptor instead. func (*ListExampleAutoIncFieldNameRequest_IndexKey_Foo) Descriptor() ([]byte, []int) { - return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{26, 0, 0} + return file_testpb_test_schema_query_proto_rawDescGZIP(), []int{30, 0, 0} } func (x *ListExampleAutoIncFieldNameRequest_IndexKey_Foo) GetFoo() uint64 { @@ -3032,6 +3527,8 @@ var file_testpb_test_schema_query_proto_rawDesc = []byte{ 0x12, 0x06, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x1a, 0x2a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2f, 0x74, 0x65, @@ -3270,236 +3767,307 @@ var file_testpb_test_schema_query_proto_rawDesc = []byte{ 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x2d, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x47, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, - 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x39, 0x0a, 0x1f, 0x47, 0x65, - 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x79, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x22, 0x4f, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x6e, 0x69, 0x71, 0x75, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, - 0x62, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x96, 0x05, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, - 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x12, 0x4e, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, - 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xff, 0x01, 0x0a, 0x08, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, - 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4a, - 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x2e, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x48, 0x00, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x1a, 0x28, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x30, 0x0a, 0x06, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x12, 0x1b, - 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x05, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x86, 0x01, - 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3d, 0x0a, 0x04, - 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x73, - 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x39, 0x0a, 0x02, 0x74, - 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, - 0x65, 0x79, 0x52, 0x02, 0x74, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, - 0x93, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0a, + 0x6f, 0x6e, 0x22, 0x2b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x4b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, + 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9c, 0x05, 0x0a, + 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0c, 0x70, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x48, 0x00, + 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x50, 0x0a, + 0x0b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, + 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xfb, 0x01, 0x0a, 0x08, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x4b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x2e, 0x49, 0x64, + 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x03, 0x64, 0x75, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, + 0x2e, 0x44, 0x75, 0x72, 0x48, 0x00, 0x52, 0x03, 0x64, 0x75, 0x72, 0x1a, 0x20, 0x0a, 0x02, 0x49, + 0x64, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, + 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x1a, 0x3f, 0x0a, + 0x03, 0x44, 0x75, 0x72, 0x12, 0x30, 0x0a, 0x03, 0x64, 0x75, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, + 0x64, 0x75, 0x72, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x64, 0x75, 0x72, 0x42, 0x05, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x8a, 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x52, + 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x3b, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x52, 0x02, + 0x74, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x97, 0x01, 0x0a, 0x1b, + 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x35, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, - 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, - 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x22, 0x5b, 0x0a, 0x22, - 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, - 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, - 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xcd, 0x04, 0x0a, 0x22, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x58, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, - 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x70, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x58, 0x0a, 0x0b, 0x72, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x35, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x84, 0x01, 0x0a, - 0x08, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x03, 0x66, 0x6f, 0x6f, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, - 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x2e, 0x46, 0x6f, 0x6f, 0x48, - 0x00, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x1a, 0x24, 0x0a, 0x03, 0x46, 0x6f, 0x6f, 0x12, 0x15, 0x0a, - 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x03, 0x66, 0x6f, - 0x6f, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x66, 0x6f, 0x6f, 0x42, 0x05, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x1a, 0x9a, 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x12, 0x47, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x33, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2d, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, + 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x47, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, + 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x39, 0x0a, + 0x1f, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x42, 0x79, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x22, 0x4f, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x53, + 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x6e, + 0x69, 0x71, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x96, 0x05, 0x0a, 0x18, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, + 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, + 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x4e, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x67, + 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xff, + 0x01, 0x0a, 0x08, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x12, 0x44, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x4b, 0x65, 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x2e, 0x55, 0x6e, 0x69, + 0x71, 0x75, 0x65, 0x48, 0x00, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x1a, 0x28, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x30, 0x0a, 0x06, 0x55, 0x6e, 0x69, 0x71, 0x75, + 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x05, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x1a, 0x86, 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, + 0x3d, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, + 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x39, + 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x4b, 0x65, 0x79, 0x52, 0x02, 0x74, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x22, 0x93, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, + 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2d, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, + 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x35, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x22, + 0x5b, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, + 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x43, 0x0a, 0x02, 0x74, - 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xcd, 0x04, 0x0a, + 0x22, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x52, 0x02, 0x74, 0x6f, - 0x42, 0x07, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0xa7, 0x01, 0x0a, 0x23, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x37, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, - 0x6d, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x32, 0xf9, 0x0b, 0x0a, 0x16, 0x54, 0x65, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x54, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x1e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x36, 0x34, 0x53, 0x74, 0x72, 0x12, - 0x26, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x36, 0x34, 0x53, 0x74, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, - 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x42, 0x79, 0x55, 0x36, 0x34, 0x53, 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x57, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x1c, 0x47, - 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x2e, 0x74, 0x65, + 0x65, 0x73, 0x74, 0x12, 0x58, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, + 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x48, 0x00, + 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x58, 0x0a, + 0x0b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, + 0x84, 0x01, 0x0a, 0x08, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x03, + 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, + 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x2e, 0x46, + 0x6f, 0x6f, 0x48, 0x00, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x1a, 0x24, 0x0a, 0x03, 0x46, 0x6f, 0x6f, + 0x12, 0x15, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, + 0x03, 0x66, 0x6f, 0x6f, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x66, 0x6f, 0x6f, 0x42, + 0x05, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x9a, 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x47, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x43, + 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, + 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4b, 0x65, 0x79, 0x52, + 0x02, 0x74, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0xa7, 0x01, 0x0a, + 0x23, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, + 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x45, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xba, 0x0d, 0x0a, 0x16, 0x54, 0x65, 0x73, 0x74, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x36, 0x34, 0x53, + 0x74, 0x72, 0x12, 0x26, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x36, 0x34, + 0x53, 0x74, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x36, 0x34, 0x53, 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, + 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, + 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2b, + 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, - 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, - 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x58, 0x12, 0x2e, 0x2e, 0x74, - 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x42, 0x79, 0x58, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x74, - 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x42, 0x79, 0x58, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x7e, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, - 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x2c, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x1f, + 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x58, 0x12, + 0x2e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x60, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x69, 0x6e, - 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, - 0x74, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x65, 0x73, - 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x69, - 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x60, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x22, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, - 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x23, 0x2e, 0x74, 0x65, - 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x74, - 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, - 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, - 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x6f, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x12, 0x27, 0x2e, - 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, - 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x58, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x58, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x60, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x69, 0x6e, + 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, + 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x22, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x23, + 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x12, 0x47, + 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x21, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x22, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x42, 0x79, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, - 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x65, 0x73, 0x74, - 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, - 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, - 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x2e, 0x74, - 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x12, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, + 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, + 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x6e, 0x69, 0x71, 0x75, + 0x65, 0x12, 0x27, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x6e, 0x69, + 0x71, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x79, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, + 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x69, 0x6d, 0x70, 0x6c, + 0x65, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, - 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, - 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, + 0x12, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, + 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, + 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x1b, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, + 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, + 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x6e, 0x63, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, - 0x8c, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x42, 0x14, - 0x54, 0x65, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x54, 0x58, 0x58, 0xaa, 0x02, - 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0xca, 0x02, 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, - 0xe2, 0x02, 0x12, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x8c, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x70, 0x62, 0x42, 0x14, 0x54, 0x65, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x6f, 0x72, 0x6d, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x54, + 0x58, 0x58, 0xaa, 0x02, 0x06, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0xca, 0x02, 0x06, 0x54, 0x65, + 0x73, 0x74, 0x70, 0x62, 0xe2, 0x02, 0x12, 0x54, 0x65, 0x73, 0x74, 0x70, 0x62, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x06, 0x54, 0x65, 0x73, 0x74, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3514,7 +4082,7 @@ func file_testpb_test_schema_query_proto_rawDescGZIP() []byte { return file_testpb_test_schema_query_proto_rawDescData } -var file_testpb_test_schema_query_proto_msgTypes = make([]protoimpl.MessageInfo, 49) +var file_testpb_test_schema_query_proto_msgTypes = make([]protoimpl.MessageInfo, 57) var file_testpb_test_schema_query_proto_goTypes = []interface{}{ (*GetExampleTableRequest)(nil), // 0: testpb.GetExampleTableRequest (*GetExampleTableResponse)(nil), // 1: testpb.GetExampleTableResponse @@ -3534,137 +4102,162 @@ var file_testpb_test_schema_query_proto_goTypes = []interface{}{ (*GetExampleTimestampResponse)(nil), // 15: testpb.GetExampleTimestampResponse (*ListExampleTimestampRequest)(nil), // 16: testpb.ListExampleTimestampRequest (*ListExampleTimestampResponse)(nil), // 17: testpb.ListExampleTimestampResponse - (*GetSimpleExampleRequest)(nil), // 18: testpb.GetSimpleExampleRequest - (*GetSimpleExampleResponse)(nil), // 19: testpb.GetSimpleExampleResponse - (*GetSimpleExampleByUniqueRequest)(nil), // 20: testpb.GetSimpleExampleByUniqueRequest - (*GetSimpleExampleByUniqueResponse)(nil), // 21: testpb.GetSimpleExampleByUniqueResponse - (*ListSimpleExampleRequest)(nil), // 22: testpb.ListSimpleExampleRequest - (*ListSimpleExampleResponse)(nil), // 23: testpb.ListSimpleExampleResponse - (*GetExampleAutoIncFieldNameRequest)(nil), // 24: testpb.GetExampleAutoIncFieldNameRequest - (*GetExampleAutoIncFieldNameResponse)(nil), // 25: testpb.GetExampleAutoIncFieldNameResponse - (*ListExampleAutoIncFieldNameRequest)(nil), // 26: testpb.ListExampleAutoIncFieldNameRequest - (*ListExampleAutoIncFieldNameResponse)(nil), // 27: testpb.ListExampleAutoIncFieldNameResponse - (*ListExampleTableRequest_IndexKey)(nil), // 28: testpb.ListExampleTableRequest.IndexKey - (*ListExampleTableRequest_RangeQuery)(nil), // 29: testpb.ListExampleTableRequest.RangeQuery - (*ListExampleTableRequest_IndexKey_U32I64Str)(nil), // 30: testpb.ListExampleTableRequest.IndexKey.U32I64Str - (*ListExampleTableRequest_IndexKey_U64Str)(nil), // 31: testpb.ListExampleTableRequest.IndexKey.U64Str - (*ListExampleTableRequest_IndexKey_StrU32)(nil), // 32: testpb.ListExampleTableRequest.IndexKey.StrU32 - (*ListExampleTableRequest_IndexKey_BzStr)(nil), // 33: testpb.ListExampleTableRequest.IndexKey.BzStr - (*ListExampleAutoIncrementTableRequest_IndexKey)(nil), // 34: testpb.ListExampleAutoIncrementTableRequest.IndexKey - (*ListExampleAutoIncrementTableRequest_RangeQuery)(nil), // 35: testpb.ListExampleAutoIncrementTableRequest.RangeQuery - (*ListExampleAutoIncrementTableRequest_IndexKey_Id)(nil), // 36: testpb.ListExampleAutoIncrementTableRequest.IndexKey.Id - (*ListExampleAutoIncrementTableRequest_IndexKey_X)(nil), // 37: testpb.ListExampleAutoIncrementTableRequest.IndexKey.X - (*ListExampleTimestampRequest_IndexKey)(nil), // 38: testpb.ListExampleTimestampRequest.IndexKey - (*ListExampleTimestampRequest_RangeQuery)(nil), // 39: testpb.ListExampleTimestampRequest.RangeQuery - (*ListExampleTimestampRequest_IndexKey_Id)(nil), // 40: testpb.ListExampleTimestampRequest.IndexKey.Id - (*ListExampleTimestampRequest_IndexKey_Ts)(nil), // 41: testpb.ListExampleTimestampRequest.IndexKey.Ts - (*ListSimpleExampleRequest_IndexKey)(nil), // 42: testpb.ListSimpleExampleRequest.IndexKey - (*ListSimpleExampleRequest_RangeQuery)(nil), // 43: testpb.ListSimpleExampleRequest.RangeQuery - (*ListSimpleExampleRequest_IndexKey_Name)(nil), // 44: testpb.ListSimpleExampleRequest.IndexKey.Name - (*ListSimpleExampleRequest_IndexKey_Unique)(nil), // 45: testpb.ListSimpleExampleRequest.IndexKey.Unique - (*ListExampleAutoIncFieldNameRequest_IndexKey)(nil), // 46: testpb.ListExampleAutoIncFieldNameRequest.IndexKey - (*ListExampleAutoIncFieldNameRequest_RangeQuery)(nil), // 47: testpb.ListExampleAutoIncFieldNameRequest.RangeQuery - (*ListExampleAutoIncFieldNameRequest_IndexKey_Foo)(nil), // 48: testpb.ListExampleAutoIncFieldNameRequest.IndexKey.Foo - (*ExampleTable)(nil), // 49: testpb.ExampleTable - (*v1beta1.PageRequest)(nil), // 50: cosmos.base.query.v1beta1.PageRequest - (*v1beta1.PageResponse)(nil), // 51: cosmos.base.query.v1beta1.PageResponse - (*ExampleAutoIncrementTable)(nil), // 52: testpb.ExampleAutoIncrementTable - (*ExampleSingleton)(nil), // 53: testpb.ExampleSingleton - (*ExampleTimestamp)(nil), // 54: testpb.ExampleTimestamp - (*SimpleExample)(nil), // 55: testpb.SimpleExample - (*ExampleAutoIncFieldName)(nil), // 56: testpb.ExampleAutoIncFieldName - (*timestamppb.Timestamp)(nil), // 57: google.protobuf.Timestamp + (*GetExampleDurationRequest)(nil), // 18: testpb.GetExampleDurationRequest + (*GetExampleDurationResponse)(nil), // 19: testpb.GetExampleDurationResponse + (*ListExampleDurationRequest)(nil), // 20: testpb.ListExampleDurationRequest + (*ListExampleDurationResponse)(nil), // 21: testpb.ListExampleDurationResponse + (*GetSimpleExampleRequest)(nil), // 22: testpb.GetSimpleExampleRequest + (*GetSimpleExampleResponse)(nil), // 23: testpb.GetSimpleExampleResponse + (*GetSimpleExampleByUniqueRequest)(nil), // 24: testpb.GetSimpleExampleByUniqueRequest + (*GetSimpleExampleByUniqueResponse)(nil), // 25: testpb.GetSimpleExampleByUniqueResponse + (*ListSimpleExampleRequest)(nil), // 26: testpb.ListSimpleExampleRequest + (*ListSimpleExampleResponse)(nil), // 27: testpb.ListSimpleExampleResponse + (*GetExampleAutoIncFieldNameRequest)(nil), // 28: testpb.GetExampleAutoIncFieldNameRequest + (*GetExampleAutoIncFieldNameResponse)(nil), // 29: testpb.GetExampleAutoIncFieldNameResponse + (*ListExampleAutoIncFieldNameRequest)(nil), // 30: testpb.ListExampleAutoIncFieldNameRequest + (*ListExampleAutoIncFieldNameResponse)(nil), // 31: testpb.ListExampleAutoIncFieldNameResponse + (*ListExampleTableRequest_IndexKey)(nil), // 32: testpb.ListExampleTableRequest.IndexKey + (*ListExampleTableRequest_RangeQuery)(nil), // 33: testpb.ListExampleTableRequest.RangeQuery + (*ListExampleTableRequest_IndexKey_U32I64Str)(nil), // 34: testpb.ListExampleTableRequest.IndexKey.U32I64Str + (*ListExampleTableRequest_IndexKey_U64Str)(nil), // 35: testpb.ListExampleTableRequest.IndexKey.U64Str + (*ListExampleTableRequest_IndexKey_StrU32)(nil), // 36: testpb.ListExampleTableRequest.IndexKey.StrU32 + (*ListExampleTableRequest_IndexKey_BzStr)(nil), // 37: testpb.ListExampleTableRequest.IndexKey.BzStr + (*ListExampleAutoIncrementTableRequest_IndexKey)(nil), // 38: testpb.ListExampleAutoIncrementTableRequest.IndexKey + (*ListExampleAutoIncrementTableRequest_RangeQuery)(nil), // 39: testpb.ListExampleAutoIncrementTableRequest.RangeQuery + (*ListExampleAutoIncrementTableRequest_IndexKey_Id)(nil), // 40: testpb.ListExampleAutoIncrementTableRequest.IndexKey.Id + (*ListExampleAutoIncrementTableRequest_IndexKey_X)(nil), // 41: testpb.ListExampleAutoIncrementTableRequest.IndexKey.X + (*ListExampleTimestampRequest_IndexKey)(nil), // 42: testpb.ListExampleTimestampRequest.IndexKey + (*ListExampleTimestampRequest_RangeQuery)(nil), // 43: testpb.ListExampleTimestampRequest.RangeQuery + (*ListExampleTimestampRequest_IndexKey_Id)(nil), // 44: testpb.ListExampleTimestampRequest.IndexKey.Id + (*ListExampleTimestampRequest_IndexKey_Ts)(nil), // 45: testpb.ListExampleTimestampRequest.IndexKey.Ts + (*ListExampleDurationRequest_IndexKey)(nil), // 46: testpb.ListExampleDurationRequest.IndexKey + (*ListExampleDurationRequest_RangeQuery)(nil), // 47: testpb.ListExampleDurationRequest.RangeQuery + (*ListExampleDurationRequest_IndexKey_Id)(nil), // 48: testpb.ListExampleDurationRequest.IndexKey.Id + (*ListExampleDurationRequest_IndexKey_Dur)(nil), // 49: testpb.ListExampleDurationRequest.IndexKey.Dur + (*ListSimpleExampleRequest_IndexKey)(nil), // 50: testpb.ListSimpleExampleRequest.IndexKey + (*ListSimpleExampleRequest_RangeQuery)(nil), // 51: testpb.ListSimpleExampleRequest.RangeQuery + (*ListSimpleExampleRequest_IndexKey_Name)(nil), // 52: testpb.ListSimpleExampleRequest.IndexKey.Name + (*ListSimpleExampleRequest_IndexKey_Unique)(nil), // 53: testpb.ListSimpleExampleRequest.IndexKey.Unique + (*ListExampleAutoIncFieldNameRequest_IndexKey)(nil), // 54: testpb.ListExampleAutoIncFieldNameRequest.IndexKey + (*ListExampleAutoIncFieldNameRequest_RangeQuery)(nil), // 55: testpb.ListExampleAutoIncFieldNameRequest.RangeQuery + (*ListExampleAutoIncFieldNameRequest_IndexKey_Foo)(nil), // 56: testpb.ListExampleAutoIncFieldNameRequest.IndexKey.Foo + (*ExampleTable)(nil), // 57: testpb.ExampleTable + (*v1beta1.PageRequest)(nil), // 58: cosmos.base.query.v1beta1.PageRequest + (*v1beta1.PageResponse)(nil), // 59: cosmos.base.query.v1beta1.PageResponse + (*ExampleAutoIncrementTable)(nil), // 60: testpb.ExampleAutoIncrementTable + (*ExampleSingleton)(nil), // 61: testpb.ExampleSingleton + (*ExampleTimestamp)(nil), // 62: testpb.ExampleTimestamp + (*ExampleDuration)(nil), // 63: testpb.ExampleDuration + (*SimpleExample)(nil), // 64: testpb.SimpleExample + (*ExampleAutoIncFieldName)(nil), // 65: testpb.ExampleAutoIncFieldName + (*timestamppb.Timestamp)(nil), // 66: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 67: google.protobuf.Duration } var file_testpb_test_schema_query_proto_depIdxs = []int32{ - 49, // 0: testpb.GetExampleTableResponse.value:type_name -> testpb.ExampleTable - 49, // 1: testpb.GetExampleTableByU64StrResponse.value:type_name -> testpb.ExampleTable - 28, // 2: testpb.ListExampleTableRequest.prefix_query:type_name -> testpb.ListExampleTableRequest.IndexKey - 29, // 3: testpb.ListExampleTableRequest.range_query:type_name -> testpb.ListExampleTableRequest.RangeQuery - 50, // 4: testpb.ListExampleTableRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 49, // 5: testpb.ListExampleTableResponse.values:type_name -> testpb.ExampleTable - 51, // 6: testpb.ListExampleTableResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 52, // 7: testpb.GetExampleAutoIncrementTableResponse.value:type_name -> testpb.ExampleAutoIncrementTable - 52, // 8: testpb.GetExampleAutoIncrementTableByXResponse.value:type_name -> testpb.ExampleAutoIncrementTable - 34, // 9: testpb.ListExampleAutoIncrementTableRequest.prefix_query:type_name -> testpb.ListExampleAutoIncrementTableRequest.IndexKey - 35, // 10: testpb.ListExampleAutoIncrementTableRequest.range_query:type_name -> testpb.ListExampleAutoIncrementTableRequest.RangeQuery - 50, // 11: testpb.ListExampleAutoIncrementTableRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 52, // 12: testpb.ListExampleAutoIncrementTableResponse.values:type_name -> testpb.ExampleAutoIncrementTable - 51, // 13: testpb.ListExampleAutoIncrementTableResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 53, // 14: testpb.GetExampleSingletonResponse.value:type_name -> testpb.ExampleSingleton - 54, // 15: testpb.GetExampleTimestampResponse.value:type_name -> testpb.ExampleTimestamp - 38, // 16: testpb.ListExampleTimestampRequest.prefix_query:type_name -> testpb.ListExampleTimestampRequest.IndexKey - 39, // 17: testpb.ListExampleTimestampRequest.range_query:type_name -> testpb.ListExampleTimestampRequest.RangeQuery - 50, // 18: testpb.ListExampleTimestampRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 54, // 19: testpb.ListExampleTimestampResponse.values:type_name -> testpb.ExampleTimestamp - 51, // 20: testpb.ListExampleTimestampResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 55, // 21: testpb.GetSimpleExampleResponse.value:type_name -> testpb.SimpleExample - 55, // 22: testpb.GetSimpleExampleByUniqueResponse.value:type_name -> testpb.SimpleExample - 42, // 23: testpb.ListSimpleExampleRequest.prefix_query:type_name -> testpb.ListSimpleExampleRequest.IndexKey - 43, // 24: testpb.ListSimpleExampleRequest.range_query:type_name -> testpb.ListSimpleExampleRequest.RangeQuery - 50, // 25: testpb.ListSimpleExampleRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 55, // 26: testpb.ListSimpleExampleResponse.values:type_name -> testpb.SimpleExample - 51, // 27: testpb.ListSimpleExampleResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 56, // 28: testpb.GetExampleAutoIncFieldNameResponse.value:type_name -> testpb.ExampleAutoIncFieldName - 46, // 29: testpb.ListExampleAutoIncFieldNameRequest.prefix_query:type_name -> testpb.ListExampleAutoIncFieldNameRequest.IndexKey - 47, // 30: testpb.ListExampleAutoIncFieldNameRequest.range_query:type_name -> testpb.ListExampleAutoIncFieldNameRequest.RangeQuery - 50, // 31: testpb.ListExampleAutoIncFieldNameRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest - 56, // 32: testpb.ListExampleAutoIncFieldNameResponse.values:type_name -> testpb.ExampleAutoIncFieldName - 51, // 33: testpb.ListExampleAutoIncFieldNameResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse - 30, // 34: testpb.ListExampleTableRequest.IndexKey.u_32_i_64_str:type_name -> testpb.ListExampleTableRequest.IndexKey.U32I64Str - 31, // 35: testpb.ListExampleTableRequest.IndexKey.u_64_str:type_name -> testpb.ListExampleTableRequest.IndexKey.U64Str - 32, // 36: testpb.ListExampleTableRequest.IndexKey.str_u_32:type_name -> testpb.ListExampleTableRequest.IndexKey.StrU32 - 33, // 37: testpb.ListExampleTableRequest.IndexKey.bz_str:type_name -> testpb.ListExampleTableRequest.IndexKey.BzStr - 28, // 38: testpb.ListExampleTableRequest.RangeQuery.from:type_name -> testpb.ListExampleTableRequest.IndexKey - 28, // 39: testpb.ListExampleTableRequest.RangeQuery.to:type_name -> testpb.ListExampleTableRequest.IndexKey - 36, // 40: testpb.ListExampleAutoIncrementTableRequest.IndexKey.id:type_name -> testpb.ListExampleAutoIncrementTableRequest.IndexKey.Id - 37, // 41: testpb.ListExampleAutoIncrementTableRequest.IndexKey.x:type_name -> testpb.ListExampleAutoIncrementTableRequest.IndexKey.X - 34, // 42: testpb.ListExampleAutoIncrementTableRequest.RangeQuery.from:type_name -> testpb.ListExampleAutoIncrementTableRequest.IndexKey - 34, // 43: testpb.ListExampleAutoIncrementTableRequest.RangeQuery.to:type_name -> testpb.ListExampleAutoIncrementTableRequest.IndexKey - 40, // 44: testpb.ListExampleTimestampRequest.IndexKey.id:type_name -> testpb.ListExampleTimestampRequest.IndexKey.Id - 41, // 45: testpb.ListExampleTimestampRequest.IndexKey.ts:type_name -> testpb.ListExampleTimestampRequest.IndexKey.Ts - 38, // 46: testpb.ListExampleTimestampRequest.RangeQuery.from:type_name -> testpb.ListExampleTimestampRequest.IndexKey - 38, // 47: testpb.ListExampleTimestampRequest.RangeQuery.to:type_name -> testpb.ListExampleTimestampRequest.IndexKey - 57, // 48: testpb.ListExampleTimestampRequest.IndexKey.Ts.ts:type_name -> google.protobuf.Timestamp - 44, // 49: testpb.ListSimpleExampleRequest.IndexKey.name:type_name -> testpb.ListSimpleExampleRequest.IndexKey.Name - 45, // 50: testpb.ListSimpleExampleRequest.IndexKey.unique:type_name -> testpb.ListSimpleExampleRequest.IndexKey.Unique - 42, // 51: testpb.ListSimpleExampleRequest.RangeQuery.from:type_name -> testpb.ListSimpleExampleRequest.IndexKey - 42, // 52: testpb.ListSimpleExampleRequest.RangeQuery.to:type_name -> testpb.ListSimpleExampleRequest.IndexKey - 48, // 53: testpb.ListExampleAutoIncFieldNameRequest.IndexKey.foo:type_name -> testpb.ListExampleAutoIncFieldNameRequest.IndexKey.Foo - 46, // 54: testpb.ListExampleAutoIncFieldNameRequest.RangeQuery.from:type_name -> testpb.ListExampleAutoIncFieldNameRequest.IndexKey - 46, // 55: testpb.ListExampleAutoIncFieldNameRequest.RangeQuery.to:type_name -> testpb.ListExampleAutoIncFieldNameRequest.IndexKey - 0, // 56: testpb.TestSchemaQueryService.GetExampleTable:input_type -> testpb.GetExampleTableRequest - 2, // 57: testpb.TestSchemaQueryService.GetExampleTableByU64Str:input_type -> testpb.GetExampleTableByU64StrRequest - 4, // 58: testpb.TestSchemaQueryService.ListExampleTable:input_type -> testpb.ListExampleTableRequest - 6, // 59: testpb.TestSchemaQueryService.GetExampleAutoIncrementTable:input_type -> testpb.GetExampleAutoIncrementTableRequest - 8, // 60: testpb.TestSchemaQueryService.GetExampleAutoIncrementTableByX:input_type -> testpb.GetExampleAutoIncrementTableByXRequest - 10, // 61: testpb.TestSchemaQueryService.ListExampleAutoIncrementTable:input_type -> testpb.ListExampleAutoIncrementTableRequest - 12, // 62: testpb.TestSchemaQueryService.GetExampleSingleton:input_type -> testpb.GetExampleSingletonRequest - 14, // 63: testpb.TestSchemaQueryService.GetExampleTimestamp:input_type -> testpb.GetExampleTimestampRequest - 16, // 64: testpb.TestSchemaQueryService.ListExampleTimestamp:input_type -> testpb.ListExampleTimestampRequest - 18, // 65: testpb.TestSchemaQueryService.GetSimpleExample:input_type -> testpb.GetSimpleExampleRequest - 20, // 66: testpb.TestSchemaQueryService.GetSimpleExampleByUnique:input_type -> testpb.GetSimpleExampleByUniqueRequest - 22, // 67: testpb.TestSchemaQueryService.ListSimpleExample:input_type -> testpb.ListSimpleExampleRequest - 24, // 68: testpb.TestSchemaQueryService.GetExampleAutoIncFieldName:input_type -> testpb.GetExampleAutoIncFieldNameRequest - 26, // 69: testpb.TestSchemaQueryService.ListExampleAutoIncFieldName:input_type -> testpb.ListExampleAutoIncFieldNameRequest - 1, // 70: testpb.TestSchemaQueryService.GetExampleTable:output_type -> testpb.GetExampleTableResponse - 3, // 71: testpb.TestSchemaQueryService.GetExampleTableByU64Str:output_type -> testpb.GetExampleTableByU64StrResponse - 5, // 72: testpb.TestSchemaQueryService.ListExampleTable:output_type -> testpb.ListExampleTableResponse - 7, // 73: testpb.TestSchemaQueryService.GetExampleAutoIncrementTable:output_type -> testpb.GetExampleAutoIncrementTableResponse - 9, // 74: testpb.TestSchemaQueryService.GetExampleAutoIncrementTableByX:output_type -> testpb.GetExampleAutoIncrementTableByXResponse - 11, // 75: testpb.TestSchemaQueryService.ListExampleAutoIncrementTable:output_type -> testpb.ListExampleAutoIncrementTableResponse - 13, // 76: testpb.TestSchemaQueryService.GetExampleSingleton:output_type -> testpb.GetExampleSingletonResponse - 15, // 77: testpb.TestSchemaQueryService.GetExampleTimestamp:output_type -> testpb.GetExampleTimestampResponse - 17, // 78: testpb.TestSchemaQueryService.ListExampleTimestamp:output_type -> testpb.ListExampleTimestampResponse - 19, // 79: testpb.TestSchemaQueryService.GetSimpleExample:output_type -> testpb.GetSimpleExampleResponse - 21, // 80: testpb.TestSchemaQueryService.GetSimpleExampleByUnique:output_type -> testpb.GetSimpleExampleByUniqueResponse - 23, // 81: testpb.TestSchemaQueryService.ListSimpleExample:output_type -> testpb.ListSimpleExampleResponse - 25, // 82: testpb.TestSchemaQueryService.GetExampleAutoIncFieldName:output_type -> testpb.GetExampleAutoIncFieldNameResponse - 27, // 83: testpb.TestSchemaQueryService.ListExampleAutoIncFieldName:output_type -> testpb.ListExampleAutoIncFieldNameResponse - 70, // [70:84] is the sub-list for method output_type - 56, // [56:70] is the sub-list for method input_type - 56, // [56:56] is the sub-list for extension type_name - 56, // [56:56] is the sub-list for extension extendee - 0, // [0:56] is the sub-list for field type_name + 57, // 0: testpb.GetExampleTableResponse.value:type_name -> testpb.ExampleTable + 57, // 1: testpb.GetExampleTableByU64StrResponse.value:type_name -> testpb.ExampleTable + 32, // 2: testpb.ListExampleTableRequest.prefix_query:type_name -> testpb.ListExampleTableRequest.IndexKey + 33, // 3: testpb.ListExampleTableRequest.range_query:type_name -> testpb.ListExampleTableRequest.RangeQuery + 58, // 4: testpb.ListExampleTableRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 57, // 5: testpb.ListExampleTableResponse.values:type_name -> testpb.ExampleTable + 59, // 6: testpb.ListExampleTableResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 60, // 7: testpb.GetExampleAutoIncrementTableResponse.value:type_name -> testpb.ExampleAutoIncrementTable + 60, // 8: testpb.GetExampleAutoIncrementTableByXResponse.value:type_name -> testpb.ExampleAutoIncrementTable + 38, // 9: testpb.ListExampleAutoIncrementTableRequest.prefix_query:type_name -> testpb.ListExampleAutoIncrementTableRequest.IndexKey + 39, // 10: testpb.ListExampleAutoIncrementTableRequest.range_query:type_name -> testpb.ListExampleAutoIncrementTableRequest.RangeQuery + 58, // 11: testpb.ListExampleAutoIncrementTableRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 60, // 12: testpb.ListExampleAutoIncrementTableResponse.values:type_name -> testpb.ExampleAutoIncrementTable + 59, // 13: testpb.ListExampleAutoIncrementTableResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 61, // 14: testpb.GetExampleSingletonResponse.value:type_name -> testpb.ExampleSingleton + 62, // 15: testpb.GetExampleTimestampResponse.value:type_name -> testpb.ExampleTimestamp + 42, // 16: testpb.ListExampleTimestampRequest.prefix_query:type_name -> testpb.ListExampleTimestampRequest.IndexKey + 43, // 17: testpb.ListExampleTimestampRequest.range_query:type_name -> testpb.ListExampleTimestampRequest.RangeQuery + 58, // 18: testpb.ListExampleTimestampRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 62, // 19: testpb.ListExampleTimestampResponse.values:type_name -> testpb.ExampleTimestamp + 59, // 20: testpb.ListExampleTimestampResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 63, // 21: testpb.GetExampleDurationResponse.value:type_name -> testpb.ExampleDuration + 46, // 22: testpb.ListExampleDurationRequest.prefix_query:type_name -> testpb.ListExampleDurationRequest.IndexKey + 47, // 23: testpb.ListExampleDurationRequest.range_query:type_name -> testpb.ListExampleDurationRequest.RangeQuery + 58, // 24: testpb.ListExampleDurationRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 63, // 25: testpb.ListExampleDurationResponse.values:type_name -> testpb.ExampleDuration + 59, // 26: testpb.ListExampleDurationResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 64, // 27: testpb.GetSimpleExampleResponse.value:type_name -> testpb.SimpleExample + 64, // 28: testpb.GetSimpleExampleByUniqueResponse.value:type_name -> testpb.SimpleExample + 50, // 29: testpb.ListSimpleExampleRequest.prefix_query:type_name -> testpb.ListSimpleExampleRequest.IndexKey + 51, // 30: testpb.ListSimpleExampleRequest.range_query:type_name -> testpb.ListSimpleExampleRequest.RangeQuery + 58, // 31: testpb.ListSimpleExampleRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 64, // 32: testpb.ListSimpleExampleResponse.values:type_name -> testpb.SimpleExample + 59, // 33: testpb.ListSimpleExampleResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 65, // 34: testpb.GetExampleAutoIncFieldNameResponse.value:type_name -> testpb.ExampleAutoIncFieldName + 54, // 35: testpb.ListExampleAutoIncFieldNameRequest.prefix_query:type_name -> testpb.ListExampleAutoIncFieldNameRequest.IndexKey + 55, // 36: testpb.ListExampleAutoIncFieldNameRequest.range_query:type_name -> testpb.ListExampleAutoIncFieldNameRequest.RangeQuery + 58, // 37: testpb.ListExampleAutoIncFieldNameRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 65, // 38: testpb.ListExampleAutoIncFieldNameResponse.values:type_name -> testpb.ExampleAutoIncFieldName + 59, // 39: testpb.ListExampleAutoIncFieldNameResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 34, // 40: testpb.ListExampleTableRequest.IndexKey.u_32_i_64_str:type_name -> testpb.ListExampleTableRequest.IndexKey.U32I64Str + 35, // 41: testpb.ListExampleTableRequest.IndexKey.u_64_str:type_name -> testpb.ListExampleTableRequest.IndexKey.U64Str + 36, // 42: testpb.ListExampleTableRequest.IndexKey.str_u_32:type_name -> testpb.ListExampleTableRequest.IndexKey.StrU32 + 37, // 43: testpb.ListExampleTableRequest.IndexKey.bz_str:type_name -> testpb.ListExampleTableRequest.IndexKey.BzStr + 32, // 44: testpb.ListExampleTableRequest.RangeQuery.from:type_name -> testpb.ListExampleTableRequest.IndexKey + 32, // 45: testpb.ListExampleTableRequest.RangeQuery.to:type_name -> testpb.ListExampleTableRequest.IndexKey + 40, // 46: testpb.ListExampleAutoIncrementTableRequest.IndexKey.id:type_name -> testpb.ListExampleAutoIncrementTableRequest.IndexKey.Id + 41, // 47: testpb.ListExampleAutoIncrementTableRequest.IndexKey.x:type_name -> testpb.ListExampleAutoIncrementTableRequest.IndexKey.X + 38, // 48: testpb.ListExampleAutoIncrementTableRequest.RangeQuery.from:type_name -> testpb.ListExampleAutoIncrementTableRequest.IndexKey + 38, // 49: testpb.ListExampleAutoIncrementTableRequest.RangeQuery.to:type_name -> testpb.ListExampleAutoIncrementTableRequest.IndexKey + 44, // 50: testpb.ListExampleTimestampRequest.IndexKey.id:type_name -> testpb.ListExampleTimestampRequest.IndexKey.Id + 45, // 51: testpb.ListExampleTimestampRequest.IndexKey.ts:type_name -> testpb.ListExampleTimestampRequest.IndexKey.Ts + 42, // 52: testpb.ListExampleTimestampRequest.RangeQuery.from:type_name -> testpb.ListExampleTimestampRequest.IndexKey + 42, // 53: testpb.ListExampleTimestampRequest.RangeQuery.to:type_name -> testpb.ListExampleTimestampRequest.IndexKey + 66, // 54: testpb.ListExampleTimestampRequest.IndexKey.Ts.ts:type_name -> google.protobuf.Timestamp + 48, // 55: testpb.ListExampleDurationRequest.IndexKey.id:type_name -> testpb.ListExampleDurationRequest.IndexKey.Id + 49, // 56: testpb.ListExampleDurationRequest.IndexKey.dur:type_name -> testpb.ListExampleDurationRequest.IndexKey.Dur + 46, // 57: testpb.ListExampleDurationRequest.RangeQuery.from:type_name -> testpb.ListExampleDurationRequest.IndexKey + 46, // 58: testpb.ListExampleDurationRequest.RangeQuery.to:type_name -> testpb.ListExampleDurationRequest.IndexKey + 67, // 59: testpb.ListExampleDurationRequest.IndexKey.Dur.dur:type_name -> google.protobuf.Duration + 52, // 60: testpb.ListSimpleExampleRequest.IndexKey.name:type_name -> testpb.ListSimpleExampleRequest.IndexKey.Name + 53, // 61: testpb.ListSimpleExampleRequest.IndexKey.unique:type_name -> testpb.ListSimpleExampleRequest.IndexKey.Unique + 50, // 62: testpb.ListSimpleExampleRequest.RangeQuery.from:type_name -> testpb.ListSimpleExampleRequest.IndexKey + 50, // 63: testpb.ListSimpleExampleRequest.RangeQuery.to:type_name -> testpb.ListSimpleExampleRequest.IndexKey + 56, // 64: testpb.ListExampleAutoIncFieldNameRequest.IndexKey.foo:type_name -> testpb.ListExampleAutoIncFieldNameRequest.IndexKey.Foo + 54, // 65: testpb.ListExampleAutoIncFieldNameRequest.RangeQuery.from:type_name -> testpb.ListExampleAutoIncFieldNameRequest.IndexKey + 54, // 66: testpb.ListExampleAutoIncFieldNameRequest.RangeQuery.to:type_name -> testpb.ListExampleAutoIncFieldNameRequest.IndexKey + 0, // 67: testpb.TestSchemaQueryService.GetExampleTable:input_type -> testpb.GetExampleTableRequest + 2, // 68: testpb.TestSchemaQueryService.GetExampleTableByU64Str:input_type -> testpb.GetExampleTableByU64StrRequest + 4, // 69: testpb.TestSchemaQueryService.ListExampleTable:input_type -> testpb.ListExampleTableRequest + 6, // 70: testpb.TestSchemaQueryService.GetExampleAutoIncrementTable:input_type -> testpb.GetExampleAutoIncrementTableRequest + 8, // 71: testpb.TestSchemaQueryService.GetExampleAutoIncrementTableByX:input_type -> testpb.GetExampleAutoIncrementTableByXRequest + 10, // 72: testpb.TestSchemaQueryService.ListExampleAutoIncrementTable:input_type -> testpb.ListExampleAutoIncrementTableRequest + 12, // 73: testpb.TestSchemaQueryService.GetExampleSingleton:input_type -> testpb.GetExampleSingletonRequest + 14, // 74: testpb.TestSchemaQueryService.GetExampleTimestamp:input_type -> testpb.GetExampleTimestampRequest + 16, // 75: testpb.TestSchemaQueryService.ListExampleTimestamp:input_type -> testpb.ListExampleTimestampRequest + 18, // 76: testpb.TestSchemaQueryService.GetExampleDuration:input_type -> testpb.GetExampleDurationRequest + 20, // 77: testpb.TestSchemaQueryService.ListExampleDuration:input_type -> testpb.ListExampleDurationRequest + 22, // 78: testpb.TestSchemaQueryService.GetSimpleExample:input_type -> testpb.GetSimpleExampleRequest + 24, // 79: testpb.TestSchemaQueryService.GetSimpleExampleByUnique:input_type -> testpb.GetSimpleExampleByUniqueRequest + 26, // 80: testpb.TestSchemaQueryService.ListSimpleExample:input_type -> testpb.ListSimpleExampleRequest + 28, // 81: testpb.TestSchemaQueryService.GetExampleAutoIncFieldName:input_type -> testpb.GetExampleAutoIncFieldNameRequest + 30, // 82: testpb.TestSchemaQueryService.ListExampleAutoIncFieldName:input_type -> testpb.ListExampleAutoIncFieldNameRequest + 1, // 83: testpb.TestSchemaQueryService.GetExampleTable:output_type -> testpb.GetExampleTableResponse + 3, // 84: testpb.TestSchemaQueryService.GetExampleTableByU64Str:output_type -> testpb.GetExampleTableByU64StrResponse + 5, // 85: testpb.TestSchemaQueryService.ListExampleTable:output_type -> testpb.ListExampleTableResponse + 7, // 86: testpb.TestSchemaQueryService.GetExampleAutoIncrementTable:output_type -> testpb.GetExampleAutoIncrementTableResponse + 9, // 87: testpb.TestSchemaQueryService.GetExampleAutoIncrementTableByX:output_type -> testpb.GetExampleAutoIncrementTableByXResponse + 11, // 88: testpb.TestSchemaQueryService.ListExampleAutoIncrementTable:output_type -> testpb.ListExampleAutoIncrementTableResponse + 13, // 89: testpb.TestSchemaQueryService.GetExampleSingleton:output_type -> testpb.GetExampleSingletonResponse + 15, // 90: testpb.TestSchemaQueryService.GetExampleTimestamp:output_type -> testpb.GetExampleTimestampResponse + 17, // 91: testpb.TestSchemaQueryService.ListExampleTimestamp:output_type -> testpb.ListExampleTimestampResponse + 19, // 92: testpb.TestSchemaQueryService.GetExampleDuration:output_type -> testpb.GetExampleDurationResponse + 21, // 93: testpb.TestSchemaQueryService.ListExampleDuration:output_type -> testpb.ListExampleDurationResponse + 23, // 94: testpb.TestSchemaQueryService.GetSimpleExample:output_type -> testpb.GetSimpleExampleResponse + 25, // 95: testpb.TestSchemaQueryService.GetSimpleExampleByUnique:output_type -> testpb.GetSimpleExampleByUniqueResponse + 27, // 96: testpb.TestSchemaQueryService.ListSimpleExample:output_type -> testpb.ListSimpleExampleResponse + 29, // 97: testpb.TestSchemaQueryService.GetExampleAutoIncFieldName:output_type -> testpb.GetExampleAutoIncFieldNameResponse + 31, // 98: testpb.TestSchemaQueryService.ListExampleAutoIncFieldName:output_type -> testpb.ListExampleAutoIncFieldNameResponse + 83, // [83:99] is the sub-list for method output_type + 67, // [67:83] is the sub-list for method input_type + 67, // [67:67] is the sub-list for extension type_name + 67, // [67:67] is the sub-list for extension extendee + 0, // [0:67] is the sub-list for field type_name } func init() { file_testpb_test_schema_query_proto_init() } @@ -3891,7 +4484,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSimpleExampleRequest); i { + switch v := v.(*GetExampleDurationRequest); i { case 0: return &v.state case 1: @@ -3903,7 +4496,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSimpleExampleResponse); i { + switch v := v.(*GetExampleDurationResponse); i { case 0: return &v.state case 1: @@ -3915,7 +4508,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSimpleExampleByUniqueRequest); i { + switch v := v.(*ListExampleDurationRequest); i { case 0: return &v.state case 1: @@ -3927,7 +4520,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSimpleExampleByUniqueResponse); i { + switch v := v.(*ListExampleDurationResponse); i { case 0: return &v.state case 1: @@ -3939,7 +4532,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSimpleExampleRequest); i { + switch v := v.(*GetSimpleExampleRequest); i { case 0: return &v.state case 1: @@ -3951,7 +4544,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSimpleExampleResponse); i { + switch v := v.(*GetSimpleExampleResponse); i { case 0: return &v.state case 1: @@ -3963,7 +4556,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetExampleAutoIncFieldNameRequest); i { + switch v := v.(*GetSimpleExampleByUniqueRequest); i { case 0: return &v.state case 1: @@ -3975,7 +4568,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetExampleAutoIncFieldNameResponse); i { + switch v := v.(*GetSimpleExampleByUniqueResponse); i { case 0: return &v.state case 1: @@ -3987,7 +4580,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleAutoIncFieldNameRequest); i { + switch v := v.(*ListSimpleExampleRequest); i { case 0: return &v.state case 1: @@ -3999,7 +4592,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleAutoIncFieldNameResponse); i { + switch v := v.(*ListSimpleExampleResponse); i { case 0: return &v.state case 1: @@ -4011,7 +4604,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleTableRequest_IndexKey); i { + switch v := v.(*GetExampleAutoIncFieldNameRequest); i { case 0: return &v.state case 1: @@ -4023,7 +4616,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleTableRequest_RangeQuery); i { + switch v := v.(*GetExampleAutoIncFieldNameResponse); i { case 0: return &v.state case 1: @@ -4035,7 +4628,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleTableRequest_IndexKey_U32I64Str); i { + switch v := v.(*ListExampleAutoIncFieldNameRequest); i { case 0: return &v.state case 1: @@ -4047,7 +4640,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleTableRequest_IndexKey_U64Str); i { + switch v := v.(*ListExampleAutoIncFieldNameResponse); i { case 0: return &v.state case 1: @@ -4059,7 +4652,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleTableRequest_IndexKey_StrU32); i { + switch v := v.(*ListExampleTableRequest_IndexKey); i { case 0: return &v.state case 1: @@ -4071,7 +4664,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleTableRequest_IndexKey_BzStr); i { + switch v := v.(*ListExampleTableRequest_RangeQuery); i { case 0: return &v.state case 1: @@ -4083,7 +4676,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleAutoIncrementTableRequest_IndexKey); i { + switch v := v.(*ListExampleTableRequest_IndexKey_U32I64Str); i { case 0: return &v.state case 1: @@ -4095,7 +4688,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleAutoIncrementTableRequest_RangeQuery); i { + switch v := v.(*ListExampleTableRequest_IndexKey_U64Str); i { case 0: return &v.state case 1: @@ -4107,7 +4700,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleAutoIncrementTableRequest_IndexKey_Id); i { + switch v := v.(*ListExampleTableRequest_IndexKey_StrU32); i { case 0: return &v.state case 1: @@ -4119,7 +4712,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleAutoIncrementTableRequest_IndexKey_X); i { + switch v := v.(*ListExampleTableRequest_IndexKey_BzStr); i { case 0: return &v.state case 1: @@ -4131,7 +4724,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleTimestampRequest_IndexKey); i { + switch v := v.(*ListExampleAutoIncrementTableRequest_IndexKey); i { case 0: return &v.state case 1: @@ -4143,7 +4736,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleTimestampRequest_RangeQuery); i { + switch v := v.(*ListExampleAutoIncrementTableRequest_RangeQuery); i { case 0: return &v.state case 1: @@ -4155,7 +4748,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleTimestampRequest_IndexKey_Id); i { + switch v := v.(*ListExampleAutoIncrementTableRequest_IndexKey_Id); i { case 0: return &v.state case 1: @@ -4167,7 +4760,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleTimestampRequest_IndexKey_Ts); i { + switch v := v.(*ListExampleAutoIncrementTableRequest_IndexKey_X); i { case 0: return &v.state case 1: @@ -4179,7 +4772,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSimpleExampleRequest_IndexKey); i { + switch v := v.(*ListExampleTimestampRequest_IndexKey); i { case 0: return &v.state case 1: @@ -4191,7 +4784,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSimpleExampleRequest_RangeQuery); i { + switch v := v.(*ListExampleTimestampRequest_RangeQuery); i { case 0: return &v.state case 1: @@ -4203,7 +4796,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSimpleExampleRequest_IndexKey_Name); i { + switch v := v.(*ListExampleTimestampRequest_IndexKey_Id); i { case 0: return &v.state case 1: @@ -4215,7 +4808,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSimpleExampleRequest_IndexKey_Unique); i { + switch v := v.(*ListExampleTimestampRequest_IndexKey_Ts); i { case 0: return &v.state case 1: @@ -4227,7 +4820,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleAutoIncFieldNameRequest_IndexKey); i { + switch v := v.(*ListExampleDurationRequest_IndexKey); i { case 0: return &v.state case 1: @@ -4239,7 +4832,7 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExampleAutoIncFieldNameRequest_RangeQuery); i { + switch v := v.(*ListExampleDurationRequest_RangeQuery); i { case 0: return &v.state case 1: @@ -4251,6 +4844,102 @@ func file_testpb_test_schema_query_proto_init() { } } file_testpb_test_schema_query_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListExampleDurationRequest_IndexKey_Id); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_testpb_test_schema_query_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListExampleDurationRequest_IndexKey_Dur); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_testpb_test_schema_query_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListSimpleExampleRequest_IndexKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_testpb_test_schema_query_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListSimpleExampleRequest_RangeQuery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_testpb_test_schema_query_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListSimpleExampleRequest_IndexKey_Name); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_testpb_test_schema_query_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListSimpleExampleRequest_IndexKey_Unique); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_testpb_test_schema_query_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListExampleAutoIncFieldNameRequest_IndexKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_testpb_test_schema_query_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListExampleAutoIncFieldNameRequest_RangeQuery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_testpb_test_schema_query_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListExampleAutoIncFieldNameRequest_IndexKey_Foo); i { case 0: return &v.state @@ -4275,53 +4964,63 @@ func file_testpb_test_schema_query_proto_init() { (*ListExampleTimestampRequest_PrefixQuery)(nil), (*ListExampleTimestampRequest_RangeQuery_)(nil), } - file_testpb_test_schema_query_proto_msgTypes[22].OneofWrappers = []interface{}{ + file_testpb_test_schema_query_proto_msgTypes[20].OneofWrappers = []interface{}{ + (*ListExampleDurationRequest_PrefixQuery)(nil), + (*ListExampleDurationRequest_RangeQuery_)(nil), + } + file_testpb_test_schema_query_proto_msgTypes[26].OneofWrappers = []interface{}{ (*ListSimpleExampleRequest_PrefixQuery)(nil), (*ListSimpleExampleRequest_RangeQuery_)(nil), } - file_testpb_test_schema_query_proto_msgTypes[26].OneofWrappers = []interface{}{ + file_testpb_test_schema_query_proto_msgTypes[30].OneofWrappers = []interface{}{ (*ListExampleAutoIncFieldNameRequest_PrefixQuery)(nil), (*ListExampleAutoIncFieldNameRequest_RangeQuery_)(nil), } - file_testpb_test_schema_query_proto_msgTypes[28].OneofWrappers = []interface{}{ + file_testpb_test_schema_query_proto_msgTypes[32].OneofWrappers = []interface{}{ (*ListExampleTableRequest_IndexKey_U_32I_64Str)(nil), (*ListExampleTableRequest_IndexKey_U_64Str)(nil), (*ListExampleTableRequest_IndexKey_StrU_32)(nil), (*ListExampleTableRequest_IndexKey_BzStr_)(nil), } - file_testpb_test_schema_query_proto_msgTypes[30].OneofWrappers = []interface{}{} - file_testpb_test_schema_query_proto_msgTypes[31].OneofWrappers = []interface{}{} - file_testpb_test_schema_query_proto_msgTypes[32].OneofWrappers = []interface{}{} - file_testpb_test_schema_query_proto_msgTypes[33].OneofWrappers = []interface{}{} - file_testpb_test_schema_query_proto_msgTypes[34].OneofWrappers = []interface{}{ - (*ListExampleAutoIncrementTableRequest_IndexKey_Id_)(nil), - (*ListExampleAutoIncrementTableRequest_IndexKey_X_)(nil), - } + file_testpb_test_schema_query_proto_msgTypes[34].OneofWrappers = []interface{}{} + file_testpb_test_schema_query_proto_msgTypes[35].OneofWrappers = []interface{}{} file_testpb_test_schema_query_proto_msgTypes[36].OneofWrappers = []interface{}{} file_testpb_test_schema_query_proto_msgTypes[37].OneofWrappers = []interface{}{} file_testpb_test_schema_query_proto_msgTypes[38].OneofWrappers = []interface{}{ - (*ListExampleTimestampRequest_IndexKey_Id_)(nil), - (*ListExampleTimestampRequest_IndexKey_Ts_)(nil), + (*ListExampleAutoIncrementTableRequest_IndexKey_Id_)(nil), + (*ListExampleAutoIncrementTableRequest_IndexKey_X_)(nil), } file_testpb_test_schema_query_proto_msgTypes[40].OneofWrappers = []interface{}{} file_testpb_test_schema_query_proto_msgTypes[41].OneofWrappers = []interface{}{} file_testpb_test_schema_query_proto_msgTypes[42].OneofWrappers = []interface{}{ - (*ListSimpleExampleRequest_IndexKey_Name_)(nil), - (*ListSimpleExampleRequest_IndexKey_Unique_)(nil), + (*ListExampleTimestampRequest_IndexKey_Id_)(nil), + (*ListExampleTimestampRequest_IndexKey_Ts_)(nil), } file_testpb_test_schema_query_proto_msgTypes[44].OneofWrappers = []interface{}{} file_testpb_test_schema_query_proto_msgTypes[45].OneofWrappers = []interface{}{} file_testpb_test_schema_query_proto_msgTypes[46].OneofWrappers = []interface{}{ - (*ListExampleAutoIncFieldNameRequest_IndexKey_Foo_)(nil), + (*ListExampleDurationRequest_IndexKey_Id_)(nil), + (*ListExampleDurationRequest_IndexKey_Dur_)(nil), } file_testpb_test_schema_query_proto_msgTypes[48].OneofWrappers = []interface{}{} + file_testpb_test_schema_query_proto_msgTypes[49].OneofWrappers = []interface{}{} + file_testpb_test_schema_query_proto_msgTypes[50].OneofWrappers = []interface{}{ + (*ListSimpleExampleRequest_IndexKey_Name_)(nil), + (*ListSimpleExampleRequest_IndexKey_Unique_)(nil), + } + file_testpb_test_schema_query_proto_msgTypes[52].OneofWrappers = []interface{}{} + file_testpb_test_schema_query_proto_msgTypes[53].OneofWrappers = []interface{}{} + file_testpb_test_schema_query_proto_msgTypes[54].OneofWrappers = []interface{}{ + (*ListExampleAutoIncFieldNameRequest_IndexKey_Foo_)(nil), + } + file_testpb_test_schema_query_proto_msgTypes[56].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_testpb_test_schema_query_proto_rawDesc, NumEnums: 0, - NumMessages: 49, + NumMessages: 57, NumExtensions: 0, NumServices: 1, }, diff --git a/orm/internal/testpb/test_schema_query.proto b/orm/internal/testpb/test_schema_query.proto index c6f79a59f7..7fb2bdad97 100644 --- a/orm/internal/testpb/test_schema_query.proto +++ b/orm/internal/testpb/test_schema_query.proto @@ -3,6 +3,7 @@ syntax = "proto3"; package testpb; import "cosmos/base/query/v1beta1/pagination.proto"; +import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; import "testpb/test_schema.proto"; @@ -30,6 +31,10 @@ service TestSchemaQueryService { rpc GetExampleTimestamp(GetExampleTimestampRequest) returns (GetExampleTimestampResponse) {} // ListExampleTimestamp queries the ExampleTimestamp table using prefix and range queries against defined indexes. rpc ListExampleTimestamp(ListExampleTimestampRequest) returns (ListExampleTimestampResponse) {} + // Get queries the ExampleDuration table by its primary key. + rpc GetExampleDuration(GetExampleDurationRequest) returns (GetExampleDurationResponse) {} + // ListExampleDuration queries the ExampleDuration table using prefix and range queries against defined indexes. + rpc ListExampleDuration(ListExampleDurationRequest) returns (ListExampleDurationResponse) {} // Get queries the SimpleExample table by its primary key. rpc GetSimpleExample(GetSimpleExampleRequest) returns (GetSimpleExampleResponse) {} // GetSimpleExampleByUnique queries the SimpleExample table by its Unique index @@ -308,6 +313,73 @@ message ListExampleTimestampResponse { cosmos.base.query.v1beta1.PageResponse pagination = 2; } +// GetExampleDurationRequest is the TestSchemaQuery/GetExampleDurationRequest request type. +message GetExampleDurationRequest { + // id specifies the value of the id field in the primary key. + uint64 id = 1; +} + +// GetExampleDurationResponse is the TestSchemaQuery/GetExampleDurationResponse response type. +message GetExampleDurationResponse { + // value is the response value. + ExampleDuration value = 1; +} + +// ListExampleDurationRequest is the TestSchemaQuery/ListExampleDurationRequest request type. +message ListExampleDurationRequest { + // IndexKey specifies the value of an index key to use in prefix and range queries. + message IndexKey { + // key specifies the index key value. + oneof key { + // id specifies the value of the Id index key to use in the query. + Id id = 1; + // dur specifies the value of the Dur index key to use in the query. + Dur dur = 2; + } + + message Id { + // id is the value of the id field in the index. + // It can be omitted to query for all valid values of that field in this segment of the index. + optional uint64 id = 1; + } + + message Dur { + // dur is the value of the dur field in the index. + // It can be omitted to query for all valid values of that field in this segment of the index. + optional google.protobuf.Duration dur = 1; + } + } + + // query specifies the type of query - either a prefix or range query. + oneof query { + // prefix_query specifies the index key value to use for the prefix query. + IndexKey prefix_query = 1; + // range_query specifies the index key from/to values to use for the range query. + RangeQuery range_query = 2; + } + // pagination specifies optional pagination parameters. + cosmos.base.query.v1beta1.PageRequest pagination = 3; + + // RangeQuery specifies the from/to index keys for a range query. + message RangeQuery { + // from is the index key to use for the start of the range query. + // To query from the start of an index, specify an index key for that index with empty values. + IndexKey from = 1; + // to is the index key to use for the end of the range query. + // The index key type MUST be the same as the index key type used for from. + // To query from to the end of an index it can be omitted. + IndexKey to = 2; + } +} + +// ListExampleDurationResponse is the TestSchemaQuery/ListExampleDurationResponse response type. +message ListExampleDurationResponse { + // values are the results of the query. + repeated ExampleDuration values = 1; + // pagination is the pagination response. + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} + // GetSimpleExampleRequest is the TestSchemaQuery/GetSimpleExampleRequest request type. message GetSimpleExampleRequest { // name specifies the value of the name field in the primary key. diff --git a/orm/internal/testpb/test_schema_query_grpc.pb.go b/orm/internal/testpb/test_schema_query_grpc.pb.go index 61f5da6fb1..4ca286c9c9 100644 --- a/orm/internal/testpb/test_schema_query_grpc.pb.go +++ b/orm/internal/testpb/test_schema_query_grpc.pb.go @@ -40,6 +40,10 @@ type TestSchemaQueryServiceClient interface { GetExampleTimestamp(ctx context.Context, in *GetExampleTimestampRequest, opts ...grpc.CallOption) (*GetExampleTimestampResponse, error) // ListExampleTimestamp queries the ExampleTimestamp table using prefix and range queries against defined indexes. ListExampleTimestamp(ctx context.Context, in *ListExampleTimestampRequest, opts ...grpc.CallOption) (*ListExampleTimestampResponse, error) + // Get queries the ExampleDuration table by its primary key. + GetExampleDuration(ctx context.Context, in *GetExampleDurationRequest, opts ...grpc.CallOption) (*GetExampleDurationResponse, error) + // ListExampleDuration queries the ExampleDuration table using prefix and range queries against defined indexes. + ListExampleDuration(ctx context.Context, in *ListExampleDurationRequest, opts ...grpc.CallOption) (*ListExampleDurationResponse, error) // Get queries the SimpleExample table by its primary key. GetSimpleExample(ctx context.Context, in *GetSimpleExampleRequest, opts ...grpc.CallOption) (*GetSimpleExampleResponse, error) // GetSimpleExampleByUnique queries the SimpleExample table by its Unique index @@ -141,6 +145,24 @@ func (c *testSchemaQueryServiceClient) ListExampleTimestamp(ctx context.Context, return out, nil } +func (c *testSchemaQueryServiceClient) GetExampleDuration(ctx context.Context, in *GetExampleDurationRequest, opts ...grpc.CallOption) (*GetExampleDurationResponse, error) { + out := new(GetExampleDurationResponse) + err := c.cc.Invoke(ctx, "/testpb.TestSchemaQueryService/GetExampleDuration", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *testSchemaQueryServiceClient) ListExampleDuration(ctx context.Context, in *ListExampleDurationRequest, opts ...grpc.CallOption) (*ListExampleDurationResponse, error) { + out := new(ListExampleDurationResponse) + err := c.cc.Invoke(ctx, "/testpb.TestSchemaQueryService/ListExampleDuration", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *testSchemaQueryServiceClient) GetSimpleExample(ctx context.Context, in *GetSimpleExampleRequest, opts ...grpc.CallOption) (*GetSimpleExampleResponse, error) { out := new(GetSimpleExampleResponse) err := c.cc.Invoke(ctx, "/testpb.TestSchemaQueryService/GetSimpleExample", in, out, opts...) @@ -208,6 +230,10 @@ type TestSchemaQueryServiceServer interface { GetExampleTimestamp(context.Context, *GetExampleTimestampRequest) (*GetExampleTimestampResponse, error) // ListExampleTimestamp queries the ExampleTimestamp table using prefix and range queries against defined indexes. ListExampleTimestamp(context.Context, *ListExampleTimestampRequest) (*ListExampleTimestampResponse, error) + // Get queries the ExampleDuration table by its primary key. + GetExampleDuration(context.Context, *GetExampleDurationRequest) (*GetExampleDurationResponse, error) + // ListExampleDuration queries the ExampleDuration table using prefix and range queries against defined indexes. + ListExampleDuration(context.Context, *ListExampleDurationRequest) (*ListExampleDurationResponse, error) // Get queries the SimpleExample table by its primary key. GetSimpleExample(context.Context, *GetSimpleExampleRequest) (*GetSimpleExampleResponse, error) // GetSimpleExampleByUnique queries the SimpleExample table by its Unique index @@ -252,6 +278,12 @@ func (UnimplementedTestSchemaQueryServiceServer) GetExampleTimestamp(context.Con func (UnimplementedTestSchemaQueryServiceServer) ListExampleTimestamp(context.Context, *ListExampleTimestampRequest) (*ListExampleTimestampResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListExampleTimestamp not implemented") } +func (UnimplementedTestSchemaQueryServiceServer) GetExampleDuration(context.Context, *GetExampleDurationRequest) (*GetExampleDurationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetExampleDuration not implemented") +} +func (UnimplementedTestSchemaQueryServiceServer) ListExampleDuration(context.Context, *ListExampleDurationRequest) (*ListExampleDurationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListExampleDuration not implemented") +} func (UnimplementedTestSchemaQueryServiceServer) GetSimpleExample(context.Context, *GetSimpleExampleRequest) (*GetSimpleExampleResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSimpleExample not implemented") } @@ -443,6 +475,42 @@ func _TestSchemaQueryService_ListExampleTimestamp_Handler(srv interface{}, ctx c return interceptor(ctx, in, info, handler) } +func _TestSchemaQueryService_GetExampleDuration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetExampleDurationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TestSchemaQueryServiceServer).GetExampleDuration(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/testpb.TestSchemaQueryService/GetExampleDuration", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TestSchemaQueryServiceServer).GetExampleDuration(ctx, req.(*GetExampleDurationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TestSchemaQueryService_ListExampleDuration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListExampleDurationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TestSchemaQueryServiceServer).ListExampleDuration(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/testpb.TestSchemaQueryService/ListExampleDuration", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TestSchemaQueryServiceServer).ListExampleDuration(ctx, req.(*ListExampleDurationRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _TestSchemaQueryService_GetSimpleExample_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetSimpleExampleRequest) if err := dec(in); err != nil { @@ -576,6 +644,14 @@ var TestSchemaQueryService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListExampleTimestamp", Handler: _TestSchemaQueryService_ListExampleTimestamp_Handler, }, + { + MethodName: "GetExampleDuration", + Handler: _TestSchemaQueryService_GetExampleDuration_Handler, + }, + { + MethodName: "ListExampleDuration", + Handler: _TestSchemaQueryService_ListExampleDuration_Handler, + }, { MethodName: "GetSimpleExample", Handler: _TestSchemaQueryService_GetSimpleExample_Handler, diff --git a/orm/internal/testutil/testutil.go b/orm/internal/testutil/testutil.go index ce27964812..2dd3f43749 100644 --- a/orm/internal/testutil/testutil.go +++ b/orm/internal/testutil/testutil.go @@ -84,8 +84,8 @@ var TestFieldSpecs = []TestFieldSpec{ if isNil >= 0.95 { // draw a nil 5% of the time return nil } - seconds := rapid.Int64Range(-9999999999, 9999999999).Draw(t, "seconds") - nanos := rapid.Int32Range(0, 999999999).Draw(t, "nanos") + seconds := rapid.Int64Range(ormfield.TimestampSecondsMin, ormfield.TimestampSecondsMax).Draw(t, "seconds") + nanos := rapid.Int32Range(0, ormfield.TimestampNanosMax).Draw(t, "nanos") return (×tamppb.Timestamp{ Seconds: seconds, Nanos: nanos, @@ -95,8 +95,15 @@ var TestFieldSpecs = []TestFieldSpec{ { "dur", rapid.Custom(func(t *rapid.T) protoreflect.Message { - seconds := rapid.Int64Range(0, 315576000000).Draw(t, "seconds") - nanos := rapid.Int32Range(0, 999999999).Draw(t, "nanos") + isNil := rapid.Float32().Draw(t, "isNil") + if isNil >= 0.95 { // draw a nil 5% of the time + return nil + } + seconds := rapid.Int64Range(ormfield.DurationNanosMin, ormfield.DurationNanosMax).Draw(t, "seconds") + nanos := rapid.Int32Range(0, ormfield.DurationNanosMax).Draw(t, "nanos") + if seconds < 0 { + nanos = -nanos + } return (&durationpb.Duration{ Seconds: seconds, Nanos: nanos, diff --git a/orm/model/ormtable/duration_test.go b/orm/model/ormtable/duration_test.go new file mode 100644 index 0000000000..16a45408bf --- /dev/null +++ b/orm/model/ormtable/duration_test.go @@ -0,0 +1,103 @@ +package ormtable_test + +import ( + "testing" + "time" + + "google.golang.org/protobuf/types/known/durationpb" + "gotest.tools/v3/assert" + + "github.com/cosmos/cosmos-sdk/orm/internal/testkv" + "github.com/cosmos/cosmos-sdk/orm/internal/testpb" + "github.com/cosmos/cosmos-sdk/orm/model/ormtable" +) + +func TestDurationIndex(t *testing.T) { + table, err := ormtable.Build(ormtable.Options{ + MessageType: (&testpb.ExampleDuration{}).ProtoReflect().Type(), + }) + assert.NilError(t, err) + backend := testkv.NewDebugBackend(testkv.NewSplitMemBackend(), &testkv.EntryCodecDebugger{ + EntryCodec: table, + }) + ctx := ormtable.WrapContextDefault(backend) + store, err := testpb.NewExampleDurationTable(table) + assert.NilError(t, err) + + neg, err := time.ParseDuration("-1h") + assert.NilError(t, err) + zero, err := time.ParseDuration("0") + assert.NilError(t, err) + pos, err := time.ParseDuration("11000ms") + assert.NilError(t, err) + + negPb, zeroPb, posPb := durationpb.New(neg), durationpb.New(zero), durationpb.New(pos) + durOrder := []*durationpb.Duration{negPb, zeroPb, posPb} + + assert.NilError(t, store.Insert(ctx, &testpb.ExampleDuration{ + Name: "foo", + Dur: negPb, + })) + assert.NilError(t, store.Insert(ctx, &testpb.ExampleDuration{ + Name: "bar", + Dur: zeroPb, + })) + assert.NilError(t, store.Insert(ctx, &testpb.ExampleDuration{ + Name: "baz", + Dur: posPb, + })) + + from, to := testpb.ExampleDurationDurIndexKey{}.WithDur(durationpb.New(neg)), + testpb.ExampleDurationDurIndexKey{}.WithDur(durationpb.New(pos)) + it, err := store.ListRange(ctx, from, to) + assert.NilError(t, err) + + i := 0 + for it.Next() { + v, err := it.Value() + assert.NilError(t, err) + assert.Equal(t, durOrder[i].String(), v.Dur.String()) + i++ + } + + // insert a nil entry + id, err := store.InsertReturningId(ctx, &testpb.ExampleDuration{ + Name: "nil", + Dur: nil, + }) + assert.NilError(t, err) + + res, err := store.Get(ctx, id) + assert.NilError(t, err) + assert.Assert(t, res.Dur == nil) + + it, err = store.List(ctx, testpb.ExampleDurationDurIndexKey{}) + assert.NilError(t, err) + + // make sure nils are ordered last + durOrder = append(durOrder, nil) + i = 0 + for it.Next() { + v, err := it.Value() + assert.NilError(t, err) + assert.Assert(t, v != nil) + x := durOrder[i] + if x == nil { + assert.Assert(t, v.Dur == nil) + } else { + assert.Equal(t, x.String(), v.Dur.String()) + } + i++ + } + it.Close() + + // try iterating over just nil timestamps + it, err = store.List(ctx, testpb.ExampleDurationDurIndexKey{}.WithDur(nil)) + assert.NilError(t, err) + assert.Assert(t, it.Next()) + res, err = it.Value() + assert.NilError(t, err) + assert.Assert(t, res.Dur == nil) + assert.Assert(t, !it.Next()) + it.Close() +} diff --git a/orm/model/ormtable/table_test.go b/orm/model/ormtable/table_test.go index 2e0ab601c2..fd1ea08a3c 100644 --- a/orm/model/ormtable/table_test.go +++ b/orm/model/ormtable/table_test.go @@ -7,9 +7,6 @@ import ( "sort" "strings" "testing" - "time" - - "google.golang.org/protobuf/types/known/timestamppb" dbm "github.com/cosmos/cosmos-db" @@ -101,98 +98,6 @@ func TestPaginationLimitCountTotal(t *testing.T) { assert.Equal(t, uint64(3), pr.Total) } -func TestTimestampIndex(t *testing.T) { - table, err := ormtable.Build(ormtable.Options{ - MessageType: (&testpb.ExampleTimestamp{}).ProtoReflect().Type(), - }) - assert.NilError(t, err) - backend := testkv.NewDebugBackend(testkv.NewSplitMemBackend(), &testkv.EntryCodecDebugger{ - EntryCodec: table, - Print: func(s string) { - t.Log(s) - }, - }) - ctx := ormtable.WrapContextDefault(backend) - store, err := testpb.NewExampleTimestampTable(table) - assert.NilError(t, err) - - past, err := time.Parse("2006-01-02", "2000-01-01") - assert.NilError(t, err) - middle, err := time.Parse("2006-01-02", "2020-01-01") - assert.NilError(t, err) - future, err := time.Parse("2006-01-02", "2049-01-01") - assert.NilError(t, err) - - pastPb, middlePb, futurePb := timestamppb.New(past), timestamppb.New(middle), timestamppb.New(future) - timeOrder := []*timestamppb.Timestamp{pastPb, middlePb, futurePb} - - assert.NilError(t, store.Insert(ctx, &testpb.ExampleTimestamp{ - Name: "foo", - Ts: pastPb, - })) - assert.NilError(t, store.Insert(ctx, &testpb.ExampleTimestamp{ - Name: "bar", - Ts: middlePb, - })) - assert.NilError(t, store.Insert(ctx, &testpb.ExampleTimestamp{ - Name: "baz", - Ts: futurePb, - })) - - from, to := testpb.ExampleTimestampTsIndexKey{}.WithTs(timestamppb.New(past)), testpb.ExampleTimestampTsIndexKey{}.WithTs(timestamppb.New(future)) - it, err := store.ListRange(ctx, from, to) - assert.NilError(t, err) - - i := 0 - for it.Next() { - v, err := it.Value() - assert.NilError(t, err) - assert.Equal(t, timeOrder[i].String(), v.Ts.String()) - i++ - } - - // insert a nil entry - id, err := store.InsertReturningId(ctx, &testpb.ExampleTimestamp{ - Name: "nil", - Ts: nil, - }) - assert.NilError(t, err) - - res, err := store.Get(ctx, id) - assert.NilError(t, err) - assert.Assert(t, res.Ts == nil) - - it, err = store.List(ctx, testpb.ExampleTimestampTsIndexKey{}) - assert.NilError(t, err) - - // make sure nils are ordered last - timeOrder = append(timeOrder, nil) - i = 0 - for it.Next() { - v, err := it.Value() - assert.NilError(t, err) - assert.Assert(t, v != nil) - x := timeOrder[i] - if x == nil { - assert.Assert(t, v.Ts == nil) - } else { - assert.Equal(t, x.String(), v.Ts.String()) - } - i++ - } - it.Close() - - // try iterating over just nil timestamps - it, err = store.List(ctx, testpb.ExampleTimestampTsIndexKey{}.WithTs(nil)) - assert.NilError(t, err) - assert.Assert(t, it.Next()) - res, err = it.Value() - assert.NilError(t, err) - assert.Assert(t, res.Ts == nil) - assert.Assert(t, !it.Next()) - it.Close() -} - // check that the ormkv.Entry's decode and encode to the same bytes func checkEncodeDecodeEntries(t *testing.T, table ormtable.Table, store kv.ReadonlyStore) { it, err := store.Iterator(nil, nil) diff --git a/orm/model/ormtable/timestamp_test.go b/orm/model/ormtable/timestamp_test.go new file mode 100644 index 0000000000..3709089676 --- /dev/null +++ b/orm/model/ormtable/timestamp_test.go @@ -0,0 +1,103 @@ +package ormtable_test + +import ( + "testing" + "time" + + "google.golang.org/protobuf/types/known/timestamppb" + + "gotest.tools/v3/assert" + + "github.com/cosmos/cosmos-sdk/orm/internal/testkv" + "github.com/cosmos/cosmos-sdk/orm/internal/testpb" + "github.com/cosmos/cosmos-sdk/orm/model/ormtable" +) + +func TestTimestampIndex(t *testing.T) { + table, err := ormtable.Build(ormtable.Options{ + MessageType: (&testpb.ExampleTimestamp{}).ProtoReflect().Type(), + }) + assert.NilError(t, err) + backend := testkv.NewDebugBackend(testkv.NewSplitMemBackend(), &testkv.EntryCodecDebugger{ + EntryCodec: table, + }) + ctx := ormtable.WrapContextDefault(backend) + store, err := testpb.NewExampleTimestampTable(table) + assert.NilError(t, err) + + past, err := time.Parse("2006-01-02", "2000-01-01") + assert.NilError(t, err) + middle, err := time.Parse("2006-01-02", "2020-01-01") + assert.NilError(t, err) + future, err := time.Parse("2006-01-02", "2049-01-01") + assert.NilError(t, err) + + pastPb, middlePb, futurePb := timestamppb.New(past), timestamppb.New(middle), timestamppb.New(future) + timeOrder := []*timestamppb.Timestamp{pastPb, middlePb, futurePb} + + assert.NilError(t, store.Insert(ctx, &testpb.ExampleTimestamp{ + Name: "foo", + Ts: pastPb, + })) + assert.NilError(t, store.Insert(ctx, &testpb.ExampleTimestamp{ + Name: "bar", + Ts: middlePb, + })) + assert.NilError(t, store.Insert(ctx, &testpb.ExampleTimestamp{ + Name: "baz", + Ts: futurePb, + })) + + from, to := testpb.ExampleTimestampTsIndexKey{}.WithTs(timestamppb.New(past)), testpb.ExampleTimestampTsIndexKey{}.WithTs(timestamppb.New(future)) + it, err := store.ListRange(ctx, from, to) + assert.NilError(t, err) + + i := 0 + for it.Next() { + v, err := it.Value() + assert.NilError(t, err) + assert.Equal(t, timeOrder[i].String(), v.Ts.String()) + i++ + } + + // insert a nil entry + id, err := store.InsertReturningId(ctx, &testpb.ExampleTimestamp{ + Name: "nil", + Ts: nil, + }) + assert.NilError(t, err) + + res, err := store.Get(ctx, id) + assert.NilError(t, err) + assert.Assert(t, res.Ts == nil) + + it, err = store.List(ctx, testpb.ExampleTimestampTsIndexKey{}) + assert.NilError(t, err) + + // make sure nils are ordered last + timeOrder = append(timeOrder, nil) + i = 0 + for it.Next() { + v, err := it.Value() + assert.NilError(t, err) + assert.Assert(t, v != nil) + x := timeOrder[i] + if x == nil { + assert.Assert(t, v.Ts == nil) + } else { + assert.Equal(t, x.String(), v.Ts.String()) + } + i++ + } + it.Close() + + // try iterating over just nil timestamps + it, err = store.List(ctx, testpb.ExampleTimestampTsIndexKey{}.WithTs(nil)) + assert.NilError(t, err) + assert.Assert(t, it.Next()) + res, err = it.Value() + assert.NilError(t, err) + assert.Assert(t, res.Ts == nil) + assert.Assert(t, !it.Next()) + it.Close() +}