Fix timestamp field issues

This commit is contained in:
Ben Johnson 2021-04-09 08:26:12 -06:00
parent 6caae41432
commit d70eb737cb
10 changed files with 181 additions and 128 deletions

1
api.go
View file

@ -1590,7 +1590,6 @@ func (api *API) ImportValueWithTx(ctx context.Context, qcx *Qcx, req *ImportValu
// if we're importing into a specific shard
if req.Shard != math.MaxUint64 {
// Check that column IDs match the stated shard.
if s1, s2 := req.ColumnIDs[0]/ShardWidth, req.ColumnIDs[len(req.ColumnIDs)-1]/ShardWidth; s1 != s2 && s2 != req.Shard {
return errors.Errorf("shard %d specified, but import spans shards %d to %d", req.Shard, s1, s2)

View file

@ -461,11 +461,10 @@ func TestAPI_ImportValue(t *testing.T) {
}
// Generate some records.
t0 := time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC)
values := []time.Time{}
colIDs := []uint64{}
for i := 0; i < 10; i++ {
values = append(values, t0.AddDate(0, 1, 0))
values = append(values, pilosa.MinTimestamp.Add(time.Duration(i)*time.Second))
colIDs = append(colIDs, uint64(i))
}
@ -478,13 +477,13 @@ func TestAPI_ImportValue(t *testing.T) {
TimestampValues: values,
}
qcx := m1.API.Txf().NewQcx()
if err := m1.API.ImportValue(ctx, qcx, req); err != nil {
qcx := m2.API.Txf().NewQcx()
if err := m2.API.ImportValue(ctx, qcx, req); err != nil {
t.Fatal(err)
}
PanicOn(qcx.Finish())
query := fmt.Sprintf("Row(%s>6)", field)
query := fmt.Sprintf("Row(%s>'1833-11-24T17:31:50Z')", field)
// Query node0.
if res, err := m0.API.Query(ctx, &pilosa.QueryRequest{Index: index, Query: query}); err != nil {

View file

@ -690,6 +690,7 @@ func (s Serializer) encodeFieldOptions(o *pilosa.FieldOptions) *pb.FieldOptions
Scale: o.Scale,
BitDepth: uint64(o.BitDepth),
TimeQuantum: string(o.TimeQuantum),
TimeUnit: string(o.TimeUnit),
Keys: o.Keys,
ForeignIndex: o.ForeignIndex,
}
@ -1050,6 +1051,7 @@ func (s Serializer) decodeFieldOptions(options *pb.FieldOptions, m *pilosa.Field
m.Scale = options.Scale
m.BitDepth = uint64(options.BitDepth)
m.TimeQuantum = pilosa.TimeQuantum(options.TimeQuantum)
m.TimeUnit = options.TimeUnit
m.Keys = options.Keys
m.ForeignIndex = options.ForeignIndex
}

View file

@ -8268,7 +8268,7 @@ func getScaledInt(f *Field, v interface{}) (int64, error) {
} else if opt.Type == FieldTypeTimestamp {
switch tv := v.(type) {
case time.Time:
value = tv.UnixNano()
value = tv.UnixNano() / TimeUnitNano(f.options.TimeUnit)
default:
return 0, errors.Errorf("unexpected timestamp value type %T, val %v", tv, tv)
}

View file

@ -1029,7 +1029,7 @@ func TestExecutor_Execute_SetValue(t *testing.T) {
t.Fatal(err)
} else if !exists {
t.Fatal("expected value to exist")
} else if value != time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC).UnixNano() {
} else if value != time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC).UnixNano()/int64(time.Second) {
t.Fatalf("unexpected value: %v", value)
}
@ -1037,7 +1037,7 @@ func TestExecutor_Execute_SetValue(t *testing.T) {
t.Fatal(err)
} else if !exists {
t.Fatal("expected value to exist")
} else if value != time.Date(2000, time.January, 2, 0, 0, 0, 0, time.UTC).UnixNano() {
} else if value != time.Date(2000, time.January, 2, 0, 0, 0, 0, time.UTC).UnixNano()/int64(time.Second) {
t.Fatalf("unexpected value: %v", value)
}
})

View file

@ -210,8 +210,8 @@ func OptFieldTypeInt(min, max int64) FieldOption {
// provide any respective configuration values.
func OptFieldTypeTimestamp(min, max time.Time, timeUnit string) FieldOption {
return func(fo *FieldOptions) error {
minNano := min.UnixNano()
maxNano := max.UnixNano()
minValue := min.UnixNano() / TimeUnitNano(timeUnit)
maxValue := max.UnixNano() / TimeUnitNano(timeUnit)
if fo.Type != "" {
return errors.Errorf("field type is already set to: %s", fo.Type)
}
@ -220,14 +220,18 @@ func OptFieldTypeTimestamp(min, max time.Time, timeUnit string) FieldOption {
} else if !IsValidTimeUnit(timeUnit) {
return errors.Errorf("invalid time unit: %q", fo.TimeUnit)
}
if min.After(max) {
if min.Before(MinTimestamp) {
return errors.New("timestamp field min is too low")
} else if max.After(MaxTimestamp) {
return errors.New("timestamp field max is too high")
} else if min.After(max) {
return errors.New("timestamp field min cannot be greater than max")
}
fo.Type = FieldTypeTimestamp
fo.TimeUnit = timeUnit
fo.Min = pql.NewDecimal(minNano, 0)
fo.Max = pql.NewDecimal(maxNano, 0)
fo.Base = bsiBase(minNano, maxNano)
fo.Min = pql.NewDecimal(minValue, 0)
fo.Max = pql.NewDecimal(maxValue, 0)
fo.Base = bsiBase(minValue, maxValue)
return nil
}
}
@ -1417,7 +1421,7 @@ func (f *Field) MaxForShard(tx Tx, shard uint64, filter *Row) (ValCount, error)
dec := pql.NewDecimal(max+bsig.Base, bsig.Scale)
valCount.DecimalVal = &dec
} else if f.Options().Type == FieldTypeTimestamp {
valCount.TimestampVal = time.Unix(0, (max + bsig.Base)).UTC()
valCount.TimestampVal = time.Unix(0, (max+bsig.Base)*TimeUnitNano(f.options.TimeUnit)).UTC()
} else {
valCount.Val = max + bsig.Base
}
@ -1463,7 +1467,7 @@ func (f *Field) MinForShard(tx Tx, shard uint64, filter *Row) (ValCount, error)
dec := pql.NewDecimal(min+bsig.Base, bsig.Scale)
valCount.DecimalVal = &dec
} else if f.Options().Type == FieldTypeTimestamp {
valCount.TimestampVal = time.Unix(0, (min + bsig.Base)).UTC()
valCount.TimestampVal = time.Unix(0, (min+bsig.Base)*TimeUnitNano(f.options.TimeUnit)).UTC()
} else {
valCount.Val = min + bsig.Base
}
@ -1907,20 +1911,20 @@ func (o *FieldOptions) MarshalJSON() ([]byte, error) {
})
case FieldTypeTimestamp:
return json.Marshal(struct {
Type string `json:"type"`
Base int64 `json:"base"`
BitDepth uint64 `json:"bitDepth"`
Min pql.Decimal `json:"min"`
Max pql.Decimal `json:"max"`
Keys bool `json:"keys"`
TimeUnit string `json:"timeUnit"`
ForeignIndex string `json:"foreignIndex"`
Type string `json:"type"`
BaseTimestamp time.Time `json:"baseTimestamp"`
BitDepth uint64 `json:"bitDepth"`
MinTimestamp time.Time `json:"minTimestamp"`
MaxTimestamp time.Time `json:"maxTimestamp"`
Keys bool `json:"keys"`
TimeUnit string `json:"timeUnit"`
ForeignIndex string `json:"foreignIndex"`
}{
o.Type,
o.Base,
time.Unix(0, o.Base*TimeUnitNano(o.TimeUnit)).UTC(),
o.BitDepth,
o.Min,
o.Max,
time.Unix(0, o.Min.Value*TimeUnitNano(o.TimeUnit)).UTC(),
time.Unix(0, o.Max.Value*TimeUnitNano(o.TimeUnit)).UTC(),
o.Keys,
o.TimeUnit,
o.ForeignIndex,
@ -2136,8 +2140,8 @@ func (f *Field) persistView(ctx context.Context, cvm *CreateViewMessage) error {
// Timestamp field range.
var (
MinTimestamp = time.Unix(-1<<42, 0).UTC()
MaxTimestamp = time.Unix(1<<42, 0).UTC()
MinTimestamp = time.Unix(-1<<32, 0).UTC() // 1833-11-24T17:31:44Z
MaxTimestamp = time.Unix(1<<32, 0).UTC() // 2106-02-07T06:28:16Z
)
// List of time units.

View file

@ -12,9 +12,6 @@
// See the License for the specific language governing permissions and
// limitations under the License.
// package ctl contains all pilosa subcommands other than 'server'. These are
// generally administration, testing, and debugging tools.
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: private.proto
@ -109,6 +106,7 @@ type FieldOptions struct {
ForeignIndex string `protobuf:"bytes,16,opt,name=ForeignIndex,proto3" json:"ForeignIndex,omitempty"`
Min *Decimal `protobuf:"bytes,17,opt,name=Min,proto3" json:"Min,omitempty"`
Max *Decimal `protobuf:"bytes,18,opt,name=Max,proto3" json:"Max,omitempty"`
TimeUnit string `protobuf:"bytes,19,opt,name=TimeUnit,proto3" json:"TimeUnit,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -245,6 +243,13 @@ func (m *FieldOptions) GetMax() *Decimal {
return nil
}
func (m *FieldOptions) GetTimeUnit() string {
if m != nil {
return m.TimeUnit
}
return ""
}
type ImportResponse struct {
Err string `protobuf:"bytes,1,opt,name=Err,proto3" json:"Err,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -2534,97 +2539,98 @@ func init() {
func init() { proto.RegisterFile("private.proto", fileDescriptor_d2a91b51c7bdc125) }
var fileDescriptor_d2a91b51c7bdc125 = []byte{
// 1436 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xdd, 0x6e, 0x1b, 0xc5,
0x17, 0xff, 0xef, 0x87, 0x63, 0xfb, 0x38, 0x4e, 0x9c, 0xf9, 0x47, 0x65, 0xfb, 0x41, 0xe4, 0x0e,
0x88, 0x86, 0x4a, 0x44, 0xa2, 0x5c, 0x14, 0xc1, 0x4d, 0x93, 0x38, 0x2d, 0xa6, 0xa4, 0x0d, 0xe3,
0xb4, 0xb7, 0x68, 0xbc, 0x1e, 0x35, 0xab, 0xac, 0x77, 0xcd, 0x7e, 0xa4, 0x76, 0x2f, 0x90, 0x40,
0x20, 0x78, 0x00, 0x2e, 0x78, 0x11, 0xde, 0x81, 0x1b, 0x24, 0x1e, 0x01, 0x95, 0x17, 0x41, 0x73,
0x66, 0x66, 0x77, 0xed, 0xba, 0x35, 0x44, 0xdc, 0xed, 0xf9, 0x9d, 0x99, 0x73, 0x7e, 0xe7, 0x63,
0xce, 0xcc, 0x42, 0x7b, 0x92, 0x04, 0x17, 0x3c, 0x13, 0x7b, 0x93, 0x24, 0xce, 0x62, 0x62, 0x4f,
0x86, 0xd7, 0xd6, 0x27, 0xf9, 0x30, 0x0c, 0x7c, 0x85, 0xd0, 0x07, 0xd0, 0xec, 0x47, 0x23, 0x31,
0x3d, 0x16, 0x19, 0x27, 0x04, 0xdc, 0x87, 0x62, 0x96, 0x7a, 0x4e, 0xd7, 0xda, 0x6d, 0x30, 0xfc,
0x26, 0xef, 0xc1, 0xc6, 0x69, 0xc2, 0xfd, 0xf3, 0xa3, 0x69, 0x90, 0x66, 0x22, 0xf2, 0x85, 0xe7,
0xa2, 0x76, 0x01, 0xa5, 0x3f, 0x3b, 0xb0, 0x7e, 0x3f, 0x10, 0xe1, 0xe8, 0xf1, 0x24, 0x0b, 0xe2,
0x28, 0x95, 0xc6, 0x4e, 0x67, 0x13, 0xe1, 0x35, 0xba, 0xd6, 0x6e, 0x93, 0xe1, 0x37, 0xb9, 0x01,
0xcd, 0x43, 0xee, 0x9f, 0x09, 0x54, 0x38, 0xa8, 0x28, 0x81, 0x42, 0x3b, 0x08, 0x5e, 0x28, 0x2f,
0x6d, 0x56, 0x02, 0xa4, 0x0b, 0xad, 0xd3, 0x60, 0x2c, 0xbe, 0xcc, 0x79, 0x94, 0xe5, 0x63, 0xaf,
0x86, 0xbb, 0xab, 0x10, 0xb9, 0x02, 0x6b, 0x8f, 0xc3, 0xd1, 0x71, 0x10, 0x79, 0xcd, 0xae, 0xb5,
0xeb, 0x30, 0x2d, 0x19, 0x9c, 0x4f, 0x3d, 0x28, 0x71, 0x3e, 0x2d, 0xc2, 0x6d, 0xcd, 0x87, 0xfb,
0x28, 0x1e, 0x64, 0x3c, 0x1a, 0xf1, 0x64, 0xf4, 0x34, 0x10, 0xcf, 0xbd, 0x75, 0x15, 0xee, 0x3c,
0x2a, 0xf7, 0x1e, 0xf0, 0x54, 0x78, 0x6d, 0xb4, 0x88, 0xdf, 0xe4, 0x1a, 0x34, 0x0e, 0x82, 0xac,
0x27, 0x26, 0xd9, 0x99, 0xb7, 0xd1, 0xb5, 0x76, 0x5d, 0x56, 0xc8, 0x64, 0x1b, 0x6a, 0x03, 0x9f,
0x87, 0xc2, 0xdb, 0xc4, 0x0d, 0x4a, 0x20, 0x14, 0xd6, 0xef, 0xc7, 0x89, 0x08, 0x9e, 0x45, 0x58,
0x04, 0xaf, 0x83, 0x41, 0xcd, 0x61, 0xe4, 0x6d, 0x70, 0x64, 0x48, 0x5b, 0x5d, 0x6b, 0xb7, 0x75,
0xa7, 0xb5, 0x37, 0x19, 0xee, 0xf5, 0x84, 0x1f, 0x8c, 0x79, 0xc8, 0x24, 0x8e, 0x6a, 0x3e, 0xf5,
0xc8, 0x32, 0x35, 0x9f, 0x52, 0x0a, 0x1b, 0xfd, 0xf1, 0x24, 0x4e, 0x32, 0x26, 0xd2, 0x49, 0x1c,
0xa5, 0x82, 0x74, 0xc0, 0x39, 0x4a, 0x12, 0xcf, 0x42, 0x57, 0xf2, 0x93, 0x7e, 0x03, 0x9d, 0x83,
0x30, 0xf6, 0xcf, 0x7b, 0x3c, 0xe3, 0x4c, 0x7c, 0x9d, 0x8b, 0x34, 0x93, 0x7c, 0x15, 0x25, 0xb5,
0x4e, 0x09, 0x12, 0xc5, 0x1a, 0x7b, 0xb6, 0x42, 0x51, 0x90, 0xb9, 0xc0, 0x4c, 0xa9, 0x92, 0xe0,
0x37, 0xc6, 0x7b, 0xc6, 0x93, 0x11, 0xd6, 0xd1, 0x65, 0x4a, 0x90, 0x28, 0x7a, 0xc2, 0xda, 0xbb,
0x4c, 0x09, 0xb4, 0x0f, 0x5b, 0x15, 0xff, 0x9a, 0xe6, 0x15, 0x58, 0x63, 0xf1, 0xf3, 0x7e, 0x2f,
0xf5, 0xac, 0xae, 0xb3, 0xeb, 0x32, 0x2d, 0x61, 0x93, 0xc4, 0x61, 0x3e, 0x8e, 0xa4, 0xca, 0x46,
0x55, 0x09, 0xd0, 0xab, 0x50, 0xc3, 0x8e, 0x91, 0x51, 0x96, 0x7b, 0xe5, 0x27, 0xfd, 0xd6, 0x82,
0xe6, 0x31, 0x9f, 0x22, 0x91, 0x94, 0xdc, 0x85, 0x86, 0xa9, 0x27, 0x2e, 0x6a, 0xdd, 0xb9, 0x2e,
0x73, 0x57, 0x2c, 0xd8, 0x33, 0xda, 0xa3, 0x28, 0x4b, 0x66, 0xac, 0x58, 0x7c, 0xed, 0x53, 0x68,
0xcf, 0xa9, 0xa4, 0xa7, 0x73, 0x31, 0x33, 0xf9, 0x3c, 0x17, 0x33, 0x19, 0xe5, 0x05, 0x0f, 0x73,
0x81, 0x59, 0x72, 0x99, 0x12, 0x3e, 0xb1, 0x3f, 0xb6, 0xe8, 0x53, 0x20, 0x87, 0x89, 0xe0, 0x99,
0x40, 0x27, 0xc7, 0x22, 0x4d, 0xf9, 0x33, 0xb1, 0x2a, 0xd7, 0x4e, 0x35, 0xd7, 0x45, 0x5e, 0xed,
0x4a, 0x5e, 0xe9, 0x6d, 0x20, 0x3d, 0x11, 0x8a, 0x4c, 0xe8, 0xb3, 0xfc, 0x06, 0xbb, 0xf4, 0xdc,
0x70, 0x58, 0xbd, 0x96, 0xdc, 0x04, 0x57, 0x0e, 0x06, 0x74, 0xd6, 0xba, 0xd3, 0x96, 0x19, 0x2a,
0xa6, 0x05, 0x43, 0x15, 0xd6, 0x03, 0xcd, 0x8d, 0xf6, 0x33, 0xa4, 0xea, 0xb0, 0x12, 0xa0, 0xdf,
0x5b, 0xc6, 0x1b, 0xd2, 0xff, 0x87, 0x11, 0xcf, 0x75, 0xd7, 0xbb, 0x9a, 0x83, 0x83, 0x1c, 0x3a,
0x92, 0x43, 0x75, 0xce, 0x2c, 0xa3, 0xe1, 0x2e, 0xd2, 0xb8, 0x67, 0xf2, 0x73, 0x59, 0x16, 0xd4,
0x87, 0xeb, 0xca, 0xc2, 0xfe, 0x05, 0x0f, 0x42, 0x3e, 0x0c, 0xff, 0x55, 0x09, 0xe7, 0x02, 0xf2,
0xa0, 0x8e, 0x7b, 0xfb, 0x3d, 0x7d, 0x0c, 0x8c, 0x48, 0x73, 0x28, 0x4f, 0xd4, 0x23, 0x3e, 0x16,
0xda, 0x1a, 0x7e, 0x17, 0x79, 0xb0, 0xdf, 0x98, 0x87, 0x6d, 0xa8, 0xc9, 0xf3, 0x27, 0x67, 0xb8,
0x23, 0x5d, 0xa2, 0xb0, 0x22, 0x3b, 0x1f, 0xc0, 0xda, 0xc0, 0x3f, 0x13, 0x63, 0x4e, 0xde, 0x81,
0x3a, 0x32, 0x17, 0xa9, 0x3e, 0x14, 0xcd, 0xa2, 0xe4, 0xcc, 0x68, 0xe8, 0x0f, 0x96, 0x0e, 0x76,
0x29, 0xcd, 0x39, 0x57, 0xf6, 0x82, 0x2b, 0x72, 0x0b, 0xea, 0x9a, 0x2f, 0x4e, 0x8b, 0x57, 0x7a,
0xca, 0x68, 0xc9, 0x4d, 0x58, 0xc3, 0xe8, 0x52, 0xcf, 0x2d, 0x89, 0x20, 0xc2, 0xb4, 0x82, 0x1e,
0x81, 0xf3, 0x84, 0xf5, 0xe5, 0xa0, 0x40, 0xf6, 0x86, 0x86, 0x96, 0x24, 0xb9, 0xcf, 0xe2, 0x34,
0xd3, 0xb9, 0xc7, 0x6f, 0x89, 0x9d, 0xc4, 0x89, 0xea, 0xd3, 0x36, 0xc3, 0x6f, 0xfa, 0x93, 0x05,
0xee, 0xa3, 0x78, 0x24, 0xc8, 0x06, 0xd8, 0xfd, 0x9e, 0x36, 0x62, 0xf7, 0x7b, 0xe4, 0x2a, 0xda,
0xd7, 0xf9, 0xae, 0x4b, 0xff, 0x4f, 0x58, 0x9f, 0xa1, 0xcf, 0x1b, 0xd0, 0xec, 0xa7, 0x27, 0x49,
0x30, 0xe6, 0xc9, 0x4c, 0xdf, 0x96, 0x25, 0x80, 0x67, 0x34, 0xe3, 0x99, 0xba, 0xc3, 0x9a, 0x4c,
0x09, 0xe4, 0x26, 0xd4, 0x1f, 0xb0, 0x93, 0x43, 0x69, 0xb2, 0x36, 0x6f, 0xd2, 0xe0, 0xf4, 0x1e,
0x74, 0x24, 0x13, 0x5c, 0x6f, 0x3a, 0xeb, 0x0a, 0xac, 0x49, 0xac, 0x60, 0xa6, 0xa5, 0xd2, 0x89,
0x5d, 0x71, 0x42, 0xef, 0x2b, 0x0b, 0x47, 0x17, 0x22, 0xca, 0x2a, 0xbd, 0x89, 0x32, 0x1a, 0x68,
0x33, 0x25, 0x90, 0x1b, 0x2a, 0x6a, 0x1d, 0x5e, 0x43, 0x72, 0x91, 0x32, 0x43, 0x94, 0xce, 0x00,
0x0c, 0x93, 0x3c, 0x2d, 0xd6, 0x5a, 0xcb, 0xd6, 0x12, 0x6a, 0xda, 0x47, 0x1f, 0x51, 0x90, 0x7a,
0x85, 0x30, 0xd3, 0x58, 0xef, 0x97, 0x8d, 0xa5, 0xea, 0xb9, 0x59, 0xd4, 0x5d, 0xf9, 0x28, 0xdb,
0xeb, 0x0c, 0x5a, 0x15, 0x7c, 0x69, 0x8f, 0xdd, 0x2a, 0x9a, 0xc3, 0x2e, 0x8d, 0x21, 0xa2, 0x8d,
0x69, 0xf5, 0x8a, 0xe1, 0x14, 0x40, 0xab, 0xb2, 0x69, 0xa9, 0xa7, 0x5d, 0xd8, 0x9c, 0x3f, 0xf0,
0xe6, 0xce, 0x59, 0x84, 0x57, 0xb8, 0xfa, 0xd1, 0x82, 0xf6, 0x61, 0x98, 0xa7, 0x99, 0x48, 0x8a,
0x9c, 0x36, 0x35, 0x50, 0x94, 0xb6, 0x04, 0x96, 0x57, 0x97, 0xec, 0x40, 0x4d, 0x66, 0x5c, 0x1d,
0xee, 0x6a, 0x21, 0x14, 0x5c, 0xa9, 0x84, 0xfb, 0xba, 0x4a, 0xd0, 0xa7, 0xd0, 0x38, 0x18, 0xf4,
0x1f, 0x24, 0x71, 0x3e, 0x59, 0x1a, 0xb1, 0x79, 0xb6, 0xd9, 0x95, 0x67, 0x5b, 0x47, 0x3d, 0x41,
0x54, 0x54, 0xf8, 0xea, 0xe8, 0xa8, 0x57, 0x87, 0xab, 0x11, 0x3e, 0xa5, 0x03, 0xd8, 0x52, 0xe1,
0xca, 0x89, 0x73, 0x99, 0xb1, 0x68, 0x5e, 0x11, 0x4e, 0xf9, 0x8a, 0x90, 0x46, 0xd5, 0xd4, 0xfd,
0x2f, 0x8d, 0xfe, 0x6e, 0xc3, 0x16, 0x13, 0x69, 0xf0, 0x42, 0xf4, 0xa3, 0x34, 0x4b, 0x72, 0x5f,
0x4e, 0x1c, 0xb9, 0xff, 0xf3, 0x78, 0xa8, 0x6b, 0xe1, 0x30, 0x25, 0xbc, 0xf9, 0x94, 0x10, 0x0a,
0xf5, 0xea, 0x10, 0xa8, 0x2e, 0x30, 0x0a, 0x72, 0x1b, 0xea, 0x83, 0x38, 0x4f, 0xfc, 0xa2, 0xf3,
0x71, 0x72, 0x2b, 0xff, 0x4a, 0xc1, 0xcc, 0x02, 0xf2, 0x10, 0xc8, 0x69, 0xc2, 0xa3, 0x34, 0xe4,
0x92, 0x92, 0xd9, 0xd6, 0x28, 0x9f, 0x27, 0x15, 0xed, 0x9c, 0x85, 0x25, 0xdb, 0xc8, 0x5e, 0xf5,
0x08, 0x7b, 0x75, 0xe4, 0xb7, 0x61, 0xf8, 0xe9, 0x73, 0x52, 0x3d, 0xe4, 0x77, 0x17, 0x3a, 0xd4,
0x5b, 0xc3, 0x2d, 0x5b, 0x72, 0xcb, 0x9c, 0x82, 0xcd, 0xaf, 0xa3, 0xdf, 0x59, 0xb0, 0x5e, 0x65,
0xb3, 0x62, 0x5c, 0x14, 0xe5, 0xb3, 0x57, 0xbf, 0x76, 0x4c, 0xf9, 0xdc, 0x65, 0x2f, 0xcb, 0x5a,
0xf5, 0x05, 0x14, 0xc3, 0x5b, 0xaf, 0x49, 0xce, 0xa5, 0xe8, 0x74, 0xa1, 0x75, 0xc2, 0x93, 0x2c,
0x90, 0xc6, 0xf4, 0x3d, 0x5d, 0x63, 0x55, 0x88, 0x0a, 0xb8, 0xfa, 0x4a, 0x13, 0x1d, 0xc6, 0xe3,
0x89, 0xec, 0xd6, 0x4b, 0x35, 0x93, 0x1c, 0xd3, 0x49, 0x12, 0x27, 0x26, 0x03, 0x28, 0xd0, 0x03,
0x68, 0x9c, 0xc6, 0x93, 0x38, 0x8c, 0x9f, 0xcd, 0x56, 0x8c, 0x0c, 0x0f, 0xea, 0xea, 0x6a, 0x50,
0x23, 0xaa, 0xc9, 0x8c, 0x48, 0xff, 0x2f, 0xfb, 0xdd, 0xe7, 0xa1, 0x9f, 0x87, 0x3c, 0x13, 0xf8,
0x3e, 0x46, 0xf0, 0x8b, 0x98, 0x8f, 0xd4, 0x54, 0xd0, 0x47, 0x8b, 0x7e, 0xa5, 0x1b, 0x90, 0x63,
0x38, 0x95, 0x2b, 0x68, 0x1f, 0x01, 0x73, 0x05, 0x29, 0x89, 0x7c, 0x08, 0xad, 0xca, 0x6a, 0x1d,
0xd6, 0x66, 0xd1, 0xa7, 0x0a, 0x66, 0xd5, 0x35, 0xf4, 0x57, 0x6b, 0x6e, 0xcf, 0x2b, 0x77, 0xae,
0x76, 0x75, 0xa1, 0x92, 0xd4, 0x60, 0x5a, 0x92, 0xa1, 0x1f, 0x4d, 0xfd, 0x30, 0x4f, 0xa5, 0x4a,
0x5f, 0xb8, 0x05, 0x20, 0x43, 0x97, 0xff, 0x81, 0x71, 0x6e, 0x1e, 0x37, 0x46, 0x94, 0xbf, 0x64,
0x3d, 0xc1, 0x47, 0x61, 0x10, 0x09, 0xec, 0x17, 0x87, 0x15, 0x32, 0xb9, 0xad, 0x66, 0xac, 0x69,
0xf4, 0xed, 0x05, 0xe2, 0xa8, 0x53, 0x93, 0x37, 0xa5, 0x04, 0x3a, 0x8b, 0x2a, 0xba, 0x0d, 0x44,
0x75, 0xc0, 0xfe, 0x30, 0x4e, 0xcc, 0x6d, 0x4b, 0x0f, 0xcd, 0x70, 0x91, 0xd9, 0x5f, 0x75, 0x89,
0x97, 0x99, 0xb5, 0xab, 0x99, 0x3d, 0xe8, 0xfc, 0xf6, 0x72, 0xc7, 0xfa, 0xe3, 0xe5, 0x8e, 0xf5,
0xe7, 0xcb, 0x1d, 0xeb, 0x97, 0xbf, 0x76, 0xfe, 0x37, 0x5c, 0xc3, 0xdf, 0xf5, 0x8f, 0xfe, 0x0e,
0x00, 0x00, 0xff, 0xff, 0x77, 0x8c, 0x9b, 0xf7, 0xd1, 0x0f, 0x00, 0x00,
// 1450 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x5d, 0x6f, 0x1b, 0x45,
0x17, 0x7e, 0xf7, 0xc3, 0xb1, 0x7d, 0x1c, 0x27, 0xce, 0x34, 0xea, 0xbb, 0xfd, 0x78, 0x23, 0x77,
0x5e, 0x44, 0x43, 0x25, 0x22, 0x51, 0x2e, 0x8a, 0xe0, 0xa6, 0x49, 0x9c, 0x16, 0x53, 0xd2, 0x86,
0x71, 0xda, 0x5b, 0x34, 0x5e, 0x8f, 0x9a, 0x55, 0xd6, 0xbb, 0x66, 0x3f, 0x52, 0xbb, 0x17, 0x48,
0x20, 0x10, 0xfc, 0x04, 0x7e, 0x06, 0x37, 0xfc, 0x07, 0x6e, 0x90, 0xf8, 0x09, 0xa8, 0xfc, 0x11,
0x34, 0x67, 0x66, 0x76, 0xd7, 0xae, 0x5b, 0x43, 0xc4, 0xdd, 0x9e, 0xe7, 0xcc, 0x9c, 0xf3, 0x9c,
0x8f, 0x39, 0x33, 0x0b, 0xed, 0x49, 0x12, 0x5c, 0xf0, 0x4c, 0xec, 0x4d, 0x92, 0x38, 0x8b, 0x89,
0x3d, 0x19, 0x5e, 0x5f, 0x9f, 0xe4, 0xc3, 0x30, 0xf0, 0x15, 0x42, 0x1f, 0x42, 0xb3, 0x1f, 0x8d,
0xc4, 0xf4, 0x58, 0x64, 0x9c, 0x10, 0x70, 0x1f, 0x89, 0x59, 0xea, 0x39, 0x5d, 0x6b, 0xb7, 0xc1,
0xf0, 0x9b, 0xbc, 0x0b, 0x1b, 0xa7, 0x09, 0xf7, 0xcf, 0x8f, 0xa6, 0x41, 0x9a, 0x89, 0xc8, 0x17,
0x9e, 0x8b, 0xda, 0x05, 0x94, 0xfe, 0xec, 0xc0, 0xfa, 0x83, 0x40, 0x84, 0xa3, 0x27, 0x93, 0x2c,
0x88, 0xa3, 0x54, 0x1a, 0x3b, 0x9d, 0x4d, 0x84, 0xd7, 0xe8, 0x5a, 0xbb, 0x4d, 0x86, 0xdf, 0xe4,
0x26, 0x34, 0x0f, 0xb9, 0x7f, 0x26, 0x50, 0xe1, 0xa0, 0xa2, 0x04, 0x0a, 0xed, 0x20, 0x78, 0xa9,
0xbc, 0xb4, 0x59, 0x09, 0x90, 0x2e, 0xb4, 0x4e, 0x83, 0xb1, 0xf8, 0x22, 0xe7, 0x51, 0x96, 0x8f,
0xbd, 0x1a, 0xee, 0xae, 0x42, 0xe4, 0x2a, 0xac, 0x3d, 0x09, 0x47, 0xc7, 0x41, 0xe4, 0x35, 0xbb,
0xd6, 0xae, 0xc3, 0xb4, 0x64, 0x70, 0x3e, 0xf5, 0xa0, 0xc4, 0xf9, 0xb4, 0x08, 0xb7, 0x35, 0x1f,
0xee, 0xe3, 0x78, 0x90, 0xf1, 0x68, 0xc4, 0x93, 0xd1, 0xb3, 0x40, 0xbc, 0xf0, 0xd6, 0x55, 0xb8,
0xf3, 0xa8, 0xdc, 0x7b, 0xc0, 0x53, 0xe1, 0xb5, 0xd1, 0x22, 0x7e, 0x93, 0xeb, 0xd0, 0x38, 0x08,
0xb2, 0x9e, 0x98, 0x64, 0x67, 0xde, 0x46, 0xd7, 0xda, 0x75, 0x59, 0x21, 0x93, 0x6d, 0xa8, 0x0d,
0x7c, 0x1e, 0x0a, 0x6f, 0x13, 0x37, 0x28, 0x81, 0x50, 0x58, 0x7f, 0x10, 0x27, 0x22, 0x78, 0x1e,
0x61, 0x11, 0xbc, 0x0e, 0x06, 0x35, 0x87, 0x91, 0xff, 0x81, 0x23, 0x43, 0xda, 0xea, 0x5a, 0xbb,
0xad, 0xbb, 0xad, 0xbd, 0xc9, 0x70, 0xaf, 0x27, 0xfc, 0x60, 0xcc, 0x43, 0x26, 0x71, 0x54, 0xf3,
0xa9, 0x47, 0x96, 0xa9, 0xf9, 0x54, 0x72, 0x92, 0x29, 0x7a, 0x1a, 0x05, 0x99, 0x77, 0x05, 0xad,
0x17, 0x32, 0xa5, 0xb0, 0xd1, 0x1f, 0x4f, 0xe2, 0x24, 0x63, 0x22, 0x9d, 0xc4, 0x51, 0x2a, 0x48,
0x07, 0x9c, 0xa3, 0x24, 0xf1, 0x2c, 0x5c, 0x28, 0x3f, 0xe9, 0xd7, 0xd0, 0x39, 0x08, 0x63, 0xff,
0xbc, 0xc7, 0x33, 0xce, 0xc4, 0x57, 0xb9, 0x48, 0x33, 0x19, 0x8b, 0xa2, 0xab, 0xd6, 0x29, 0x41,
0xa2, 0x58, 0x7f, 0xcf, 0x56, 0x28, 0x0a, 0x32, 0x4f, 0x98, 0x45, 0x55, 0x2e, 0xfc, 0xc6, 0x5c,
0x9c, 0xf1, 0x64, 0x84, 0x35, 0x76, 0x99, 0x12, 0x24, 0x8a, 0x9e, 0xb0, 0x2f, 0x5c, 0xa6, 0x04,
0xda, 0x87, 0xad, 0x8a, 0x7f, 0x4d, 0xf3, 0x2a, 0xac, 0xb1, 0xf8, 0x45, 0xbf, 0x97, 0x7a, 0x56,
0xd7, 0xd9, 0x75, 0x99, 0x96, 0xb0, 0x81, 0xe2, 0x30, 0x1f, 0x47, 0x52, 0x65, 0xa3, 0xaa, 0x04,
0xe8, 0x35, 0xa8, 0x61, 0x37, 0xc9, 0x28, 0xcb, 0xbd, 0xf2, 0x93, 0x7e, 0x63, 0x41, 0xf3, 0x98,
0x4f, 0x91, 0x48, 0x4a, 0xee, 0x41, 0xc3, 0xd4, 0x1a, 0x17, 0xb5, 0xee, 0xde, 0x90, 0x79, 0x2d,
0x16, 0xec, 0x19, 0xed, 0x51, 0x94, 0x25, 0x33, 0x56, 0x2c, 0xbe, 0xfe, 0x09, 0xb4, 0xe7, 0x54,
0xd2, 0xd3, 0xb9, 0x98, 0x99, 0x7c, 0x9e, 0x8b, 0x99, 0x8c, 0xf2, 0x82, 0x87, 0xb9, 0xc0, 0x2c,
0xb9, 0x4c, 0x09, 0x1f, 0xdb, 0x1f, 0x59, 0xf4, 0x19, 0x90, 0xc3, 0x44, 0xf0, 0x4c, 0xa0, 0x93,
0x63, 0x91, 0xa6, 0xfc, 0xb9, 0x58, 0x95, 0x6b, 0xa7, 0x9a, 0xeb, 0x22, 0xaf, 0x76, 0x25, 0xaf,
0xf4, 0x0e, 0x90, 0x9e, 0x08, 0x45, 0x26, 0xf4, 0x39, 0x7f, 0x8b, 0x5d, 0x7a, 0x6e, 0x38, 0xac,
0x5e, 0x4b, 0x6e, 0x81, 0x2b, 0x87, 0x06, 0x3a, 0x6b, 0xdd, 0x6d, 0xcb, 0x0c, 0x15, 0x93, 0x84,
0xa1, 0x0a, 0xeb, 0x81, 0xe6, 0x46, 0xfb, 0x19, 0x52, 0x75, 0x58, 0x09, 0xd0, 0xef, 0x2c, 0xe3,
0x0d, 0xe9, 0xff, 0xcd, 0x88, 0xe7, 0xba, 0xeb, 0x1d, 0xcd, 0xc1, 0x41, 0x0e, 0x1d, 0xc9, 0xa1,
0x3a, 0x83, 0x96, 0xd1, 0x70, 0x17, 0x69, 0xdc, 0x37, 0xf9, 0xb9, 0x2c, 0x0b, 0xea, 0xc3, 0x0d,
0x65, 0x61, 0xff, 0x82, 0x07, 0x21, 0x1f, 0x86, 0xff, 0xa8, 0x84, 0x73, 0x01, 0x79, 0x50, 0xc7,
0xbd, 0xfd, 0x9e, 0x3e, 0x06, 0x46, 0xa4, 0x39, 0x94, 0x27, 0xea, 0x31, 0x1f, 0x0b, 0x6d, 0x0d,
0xbf, 0x8b, 0x3c, 0xd8, 0x6f, 0xcd, 0xc3, 0x36, 0xd4, 0xe4, 0xf9, 0x93, 0xf3, 0xdd, 0x91, 0x2e,
0x51, 0x58, 0x91, 0x9d, 0xf7, 0x61, 0x6d, 0xe0, 0x9f, 0x89, 0x31, 0x27, 0xff, 0x87, 0x3a, 0x32,
0x17, 0xa9, 0x3e, 0x14, 0xcd, 0xa2, 0xe4, 0xcc, 0x68, 0xe8, 0xf7, 0x96, 0x0e, 0x76, 0x29, 0xcd,
0x39, 0x57, 0xf6, 0x82, 0x2b, 0x72, 0x1b, 0xea, 0x9a, 0x2f, 0x4e, 0x8b, 0xd7, 0x7a, 0xca, 0x68,
0xc9, 0x2d, 0x58, 0xc3, 0xe8, 0x52, 0xcf, 0x2d, 0x89, 0x20, 0xc2, 0xb4, 0x82, 0x1e, 0x81, 0xf3,
0x94, 0xf5, 0xe5, 0xa0, 0x40, 0xf6, 0x86, 0x86, 0x96, 0x24, 0xb9, 0x4f, 0xe3, 0x34, 0xd3, 0xb9,
0xc7, 0x6f, 0x89, 0x9d, 0xc4, 0x89, 0xea, 0xd3, 0x36, 0xc3, 0x6f, 0xfa, 0xa3, 0x05, 0xee, 0xe3,
0x78, 0x24, 0xc8, 0x06, 0xd8, 0xfd, 0x9e, 0x36, 0x62, 0xf7, 0x7b, 0xe4, 0x1a, 0xda, 0xd7, 0xf9,
0xae, 0x4b, 0xff, 0x4f, 0x59, 0x9f, 0xa1, 0xcf, 0x9b, 0xd0, 0xec, 0xa7, 0x27, 0x49, 0x30, 0xe6,
0xc9, 0x4c, 0xdf, 0xa4, 0x25, 0x80, 0x67, 0x34, 0xe3, 0x99, 0xba, 0xdf, 0x9a, 0x4c, 0x09, 0xe4,
0x16, 0xd4, 0x1f, 0xb2, 0x93, 0x43, 0x69, 0xb2, 0x36, 0x6f, 0xd2, 0xe0, 0xf4, 0x3e, 0x74, 0x24,
0x13, 0x5c, 0x6f, 0x3a, 0xeb, 0x2a, 0xac, 0x49, 0xac, 0x60, 0xa6, 0xa5, 0xd2, 0x89, 0x5d, 0x71,
0x42, 0x1f, 0x28, 0x0b, 0x47, 0x17, 0x22, 0xca, 0x2a, 0xbd, 0x89, 0x32, 0x1a, 0x68, 0x33, 0x25,
0x90, 0x9b, 0x2a, 0x6a, 0x1d, 0x5e, 0x43, 0x72, 0x91, 0x32, 0x43, 0x94, 0xce, 0x00, 0x0c, 0x93,
0x3c, 0x2d, 0xd6, 0x5a, 0xcb, 0xd6, 0x12, 0x6a, 0xda, 0x47, 0x1f, 0x51, 0x90, 0x7a, 0x85, 0x30,
0xd3, 0x58, 0xef, 0x95, 0x8d, 0xa5, 0xea, 0xb9, 0x59, 0xd4, 0x5d, 0xf9, 0x28, 0xdb, 0xeb, 0x0c,
0x5a, 0x15, 0x7c, 0x69, 0x8f, 0xdd, 0x2e, 0x9a, 0xc3, 0x2e, 0x8d, 0x21, 0xa2, 0x8d, 0x69, 0xf5,
0x8a, 0xe1, 0x14, 0x40, 0xab, 0xb2, 0x69, 0xa9, 0xa7, 0x5d, 0xd8, 0x9c, 0x3f, 0xf0, 0xe6, 0xce,
0x59, 0x84, 0x57, 0xb8, 0xfa, 0xc1, 0x82, 0xf6, 0x61, 0x98, 0xa7, 0x99, 0x48, 0x8a, 0x9c, 0x36,
0x35, 0x50, 0x94, 0xb6, 0x04, 0x96, 0x57, 0x97, 0xec, 0x40, 0x4d, 0x66, 0x5c, 0x1d, 0xee, 0x6a,
0x21, 0x14, 0x5c, 0xa9, 0x84, 0xfb, 0xa6, 0x4a, 0xd0, 0x67, 0xd0, 0x38, 0x18, 0xf4, 0x1f, 0x26,
0x71, 0x3e, 0x59, 0x1a, 0xb1, 0x79, 0xd2, 0xd9, 0x95, 0x27, 0x5d, 0x47, 0x3d, 0x4f, 0x54, 0x54,
0xf8, 0x22, 0xe9, 0xa8, 0x17, 0x89, 0xab, 0x11, 0x3e, 0xa5, 0x03, 0xd8, 0x52, 0xe1, 0xca, 0x89,
0x73, 0x99, 0xb1, 0x68, 0x5e, 0x11, 0x4e, 0xf9, 0x8a, 0x90, 0x46, 0xd5, 0xd4, 0xfd, 0x37, 0x8d,
0xfe, 0x66, 0xc3, 0x16, 0x13, 0x69, 0xf0, 0x52, 0xf4, 0xa3, 0x34, 0x4b, 0x72, 0x5f, 0x4e, 0x1c,
0xb9, 0xff, 0xb3, 0x78, 0xa8, 0x6b, 0xe1, 0x30, 0x25, 0xbc, 0xfd, 0x94, 0x10, 0x0a, 0xf5, 0xea,
0x10, 0xa8, 0x2e, 0x30, 0x0a, 0x72, 0x07, 0xea, 0x83, 0x38, 0x4f, 0xfc, 0xa2, 0xf3, 0x71, 0x72,
0x2b, 0xff, 0x4a, 0xc1, 0xcc, 0x02, 0xf2, 0x08, 0xc8, 0x69, 0xc2, 0xa3, 0x34, 0xe4, 0x92, 0x92,
0xd9, 0xd6, 0x28, 0x9f, 0x27, 0x15, 0xed, 0x9c, 0x85, 0x25, 0xdb, 0xc8, 0x5e, 0xf5, 0x08, 0x7b,
0x75, 0xe4, 0xb7, 0x61, 0xf8, 0xe9, 0x73, 0x52, 0x3d, 0xe4, 0xf7, 0x16, 0x3a, 0xd4, 0x5b, 0xc3,
0x2d, 0x5b, 0x72, 0xcb, 0x9c, 0x82, 0xcd, 0xaf, 0xa3, 0xdf, 0x5a, 0xb0, 0x5e, 0x65, 0xb3, 0x62,
0x5c, 0x14, 0xe5, 0xb3, 0x57, 0xbf, 0x76, 0x4c, 0xf9, 0xdc, 0x65, 0x2f, 0xcb, 0x5a, 0xf5, 0x05,
0x14, 0xc3, 0x7f, 0xdf, 0x90, 0x9c, 0x4b, 0xd1, 0xe9, 0x42, 0xeb, 0x84, 0x27, 0x59, 0x20, 0x8d,
0xe9, 0x7b, 0xba, 0xc6, 0xaa, 0x10, 0x15, 0x70, 0xed, 0xb5, 0x26, 0x3a, 0x8c, 0xc7, 0x13, 0xd9,
0xad, 0x97, 0x6a, 0x26, 0x39, 0xa6, 0x93, 0x24, 0x4e, 0x4c, 0x06, 0x50, 0xa0, 0x07, 0xd0, 0x38,
0x8d, 0x27, 0x71, 0x18, 0x3f, 0x9f, 0xad, 0x18, 0x19, 0x1e, 0xd4, 0xd5, 0xd5, 0xa0, 0x46, 0x54,
0x93, 0x19, 0x91, 0x5e, 0x91, 0xfd, 0xee, 0xf3, 0xd0, 0xcf, 0x43, 0x9e, 0x09, 0x7c, 0x1f, 0x23,
0xf8, 0x79, 0xcc, 0x47, 0x6a, 0x2a, 0xe8, 0xa3, 0x45, 0xbf, 0xd4, 0x0d, 0xc8, 0x31, 0x9c, 0xca,
0x15, 0xb4, 0x8f, 0x80, 0xb9, 0x82, 0x94, 0x44, 0x3e, 0x80, 0x56, 0x65, 0xb5, 0x0e, 0x6b, 0xb3,
0xe8, 0x53, 0x05, 0xb3, 0xea, 0x1a, 0xfa, 0x8b, 0x35, 0xb7, 0xe7, 0xb5, 0x3b, 0x57, 0xbb, 0xba,
0x50, 0x49, 0x6a, 0x30, 0x2d, 0xc9, 0xd0, 0x8f, 0xa6, 0x7e, 0x98, 0xa7, 0x52, 0xa5, 0x2f, 0xdc,
0x02, 0x90, 0xa1, 0xcb, 0x1f, 0x9e, 0x38, 0x37, 0x8f, 0x1b, 0x23, 0xca, 0x5f, 0xa3, 0x9e, 0xe0,
0xa3, 0x30, 0x88, 0x04, 0xf6, 0x8b, 0xc3, 0x0a, 0x99, 0xdc, 0x51, 0x33, 0xd6, 0x34, 0xfa, 0xf6,
0x02, 0x71, 0xd4, 0xa9, 0xc9, 0x9b, 0x52, 0x02, 0x9d, 0x45, 0x15, 0xdd, 0x06, 0xa2, 0x3a, 0x60,
0x7f, 0x18, 0x27, 0xe6, 0xb6, 0xa5, 0x87, 0x66, 0xb8, 0xc8, 0xec, 0xaf, 0xba, 0xc4, 0xcb, 0xcc,
0xda, 0xd5, 0xcc, 0x1e, 0x74, 0x7e, 0x7d, 0xb5, 0x63, 0xfd, 0xfe, 0x6a, 0xc7, 0xfa, 0xe3, 0xd5,
0x8e, 0xf5, 0xd3, 0x9f, 0x3b, 0xff, 0x19, 0xae, 0xe1, 0xaf, 0xfc, 0x87, 0x7f, 0x05, 0x00, 0x00,
0xff, 0xff, 0x6d, 0xf8, 0xe6, 0x6b, 0xed, 0x0f, 0x00, 0x00,
}
func (m *IndexMeta) Marshal() (dAtA []byte, err error) {
@ -2698,6 +2704,15 @@ func (m *FieldOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
if len(m.TimeUnit) > 0 {
i -= len(m.TimeUnit)
copy(dAtA[i:], m.TimeUnit)
i = encodeVarintPrivate(dAtA, i, uint64(len(m.TimeUnit)))
i--
dAtA[i] = 0x1
i--
dAtA[i] = 0x9a
}
if m.Max != nil {
{
size, err := m.Max.MarshalToSizedBuffer(dAtA[:i])
@ -4762,6 +4777,10 @@ func (m *FieldOptions) Size() (n int) {
l = m.Max.Size()
n += 2 + l + sovPrivate(uint64(l))
}
l = len(m.TimeUnit)
if l > 0 {
n += 2 + l + sovPrivate(uint64(l))
}
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
}
@ -6106,6 +6125,38 @@ func (m *FieldOptions) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
case 19:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field TimeUnit", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowPrivate
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthPrivate
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthPrivate
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.TimeUnit = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipPrivate(dAtA[iNdEx:])

View file

@ -24,6 +24,7 @@ message FieldOptions {
string ForeignIndex = 16;
Decimal Min = 17;
Decimal Max = 18;
string TimeUnit = 19;
}
message ImportResponse {

View file

@ -1076,7 +1076,7 @@ func formatValue(v interface{}) string {
case []uint64:
return joinUint64Slice(v)
case time.Time:
return fmt.Sprintf("\"%s\"", v.Format(timeFormat))
return fmt.Sprintf("\"%s\"", v.Format(time.RFC3339Nano))
case *Condition:
return v.String()
default:

View file

@ -25,9 +25,6 @@ import (
"github.com/pkg/errors"
)
// timeFormat is the go-style time format used to parse string dates.
const timeFormat = "2006-01-02T15:04"
// error strings in the parser
const duplicateArgErrorMessage = "duplicate argument provided"
const intOutOfRangeError = "integer is not in signed 64-bit range"