diff --git a/_vendor/src/github.com/pingcap/kvproto/pkg/kvrpcpb/kvrpcpb.pb.go b/_vendor/src/github.com/pingcap/kvproto/pkg/kvrpcpb/kvrpcpb.pb.go index 012e6c60d4..8dd34143f8 100644 --- a/_vendor/src/github.com/pingcap/kvproto/pkg/kvrpcpb/kvrpcpb.pb.go +++ b/_vendor/src/github.com/pingcap/kvproto/pkg/kvrpcpb/kvrpcpb.pb.go @@ -53,6 +53,8 @@ MvccGetByKeyResponse MvccGetByStartTsRequest MvccGetByStartTsResponse + SplitRegionRequest + SplitRegionResponse */ package kvrpcpb @@ -230,6 +232,7 @@ type Context struct { Term uint64 `protobuf:"varint,5,opt,name=term,proto3" json:"term,omitempty"` Priority CommandPri `protobuf:"varint,6,opt,name=priority,proto3,enum=kvrpcpb.CommandPri" json:"priority,omitempty"` IsolationLevel IsolationLevel `protobuf:"varint,7,opt,name=isolation_level,json=isolationLevel,proto3,enum=kvrpcpb.IsolationLevel" json:"isolation_level,omitempty"` + NotFillCache bool `protobuf:"varint,8,opt,name=not_fill_cache,json=notFillCache,proto3" json:"not_fill_cache,omitempty"` } func (m *Context) Reset() { *m = Context{} } @@ -279,6 +282,13 @@ func (m *Context) GetIsolationLevel() IsolationLevel { return IsolationLevel_SI } +func (m *Context) GetNotFillCache() bool { + if m != nil { + return m.NotFillCache + } + return false +} + type GetRequest struct { Context *Context `protobuf:"bytes,1,opt,name=context" json:"context,omitempty"` Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` @@ -1497,6 +1507,62 @@ func (m *MvccGetByStartTsResponse) GetInfo() *MvccInfo { return nil } +type SplitRegionRequest struct { + Context *Context `protobuf:"bytes,1,opt,name=context" json:"context,omitempty"` + SplitKey []byte `protobuf:"bytes,2,opt,name=split_key,json=splitKey,proto3" json:"split_key,omitempty"` +} + +func (m *SplitRegionRequest) Reset() { *m = SplitRegionRequest{} } +func (m *SplitRegionRequest) String() string { return proto.CompactTextString(m) } +func (*SplitRegionRequest) ProtoMessage() {} +func (*SplitRegionRequest) Descriptor() ([]byte, []int) { return fileDescriptorKvrpcpb, []int{44} } + +func (m *SplitRegionRequest) GetContext() *Context { + if m != nil { + return m.Context + } + return nil +} + +func (m *SplitRegionRequest) GetSplitKey() []byte { + if m != nil { + return m.SplitKey + } + return nil +} + +type SplitRegionResponse struct { + RegionError *errorpb.Error `protobuf:"bytes,1,opt,name=region_error,json=regionError" json:"region_error,omitempty"` + Left *metapb.Region `protobuf:"bytes,2,opt,name=left" json:"left,omitempty"` + Right *metapb.Region `protobuf:"bytes,3,opt,name=right" json:"right,omitempty"` +} + +func (m *SplitRegionResponse) Reset() { *m = SplitRegionResponse{} } +func (m *SplitRegionResponse) String() string { return proto.CompactTextString(m) } +func (*SplitRegionResponse) ProtoMessage() {} +func (*SplitRegionResponse) Descriptor() ([]byte, []int) { return fileDescriptorKvrpcpb, []int{45} } + +func (m *SplitRegionResponse) GetRegionError() *errorpb.Error { + if m != nil { + return m.RegionError + } + return nil +} + +func (m *SplitRegionResponse) GetLeft() *metapb.Region { + if m != nil { + return m.Left + } + return nil +} + +func (m *SplitRegionResponse) GetRight() *metapb.Region { + if m != nil { + return m.Right + } + return nil +} + func init() { proto.RegisterType((*LockInfo)(nil), "kvrpcpb.LockInfo") proto.RegisterType((*KeyError)(nil), "kvrpcpb.KeyError") @@ -1542,6 +1608,8 @@ func init() { proto.RegisterType((*MvccGetByKeyResponse)(nil), "kvrpcpb.MvccGetByKeyResponse") proto.RegisterType((*MvccGetByStartTsRequest)(nil), "kvrpcpb.MvccGetByStartTsRequest") proto.RegisterType((*MvccGetByStartTsResponse)(nil), "kvrpcpb.MvccGetByStartTsResponse") + proto.RegisterType((*SplitRegionRequest)(nil), "kvrpcpb.SplitRegionRequest") + proto.RegisterType((*SplitRegionResponse)(nil), "kvrpcpb.SplitRegionResponse") proto.RegisterEnum("kvrpcpb.CommandPri", CommandPri_name, CommandPri_value) proto.RegisterEnum("kvrpcpb.IsolationLevel", IsolationLevel_name, IsolationLevel_value) proto.RegisterEnum("kvrpcpb.Op", Op_name, Op_value) @@ -1681,6 +1749,16 @@ func (m *Context) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintKvrpcpb(dAtA, i, uint64(m.IsolationLevel)) } + if m.NotFillCache { + dAtA[i] = 0x40 + i++ + if m.NotFillCache { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } return i, nil } @@ -3321,6 +3399,88 @@ func (m *MvccGetByStartTsResponse) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *SplitRegionRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SplitRegionRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Context != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintKvrpcpb(dAtA, i, uint64(m.Context.Size())) + n50, err := m.Context.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n50 + } + if len(m.SplitKey) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintKvrpcpb(dAtA, i, uint64(len(m.SplitKey))) + i += copy(dAtA[i:], m.SplitKey) + } + return i, nil +} + +func (m *SplitRegionResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SplitRegionResponse) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.RegionError != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintKvrpcpb(dAtA, i, uint64(m.RegionError.Size())) + n51, err := m.RegionError.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n51 + } + if m.Left != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintKvrpcpb(dAtA, i, uint64(m.Left.Size())) + n52, err := m.Left.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n52 + } + if m.Right != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintKvrpcpb(dAtA, i, uint64(m.Right.Size())) + n53, err := m.Right.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n53 + } + return i, nil +} + func encodeFixed64Kvrpcpb(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) dAtA[offset+1] = uint8(v >> 8) @@ -3409,6 +3569,9 @@ func (m *Context) Size() (n int) { if m.IsolationLevel != 0 { n += 1 + sovKvrpcpb(uint64(m.IsolationLevel)) } + if m.NotFillCache { + n += 2 + } return n } @@ -4100,6 +4263,38 @@ func (m *MvccGetByStartTsResponse) Size() (n int) { return n } +func (m *SplitRegionRequest) Size() (n int) { + var l int + _ = l + if m.Context != nil { + l = m.Context.Size() + n += 1 + l + sovKvrpcpb(uint64(l)) + } + l = len(m.SplitKey) + if l > 0 { + n += 1 + l + sovKvrpcpb(uint64(l)) + } + return n +} + +func (m *SplitRegionResponse) Size() (n int) { + var l int + _ = l + if m.RegionError != nil { + l = m.RegionError.Size() + n += 1 + l + sovKvrpcpb(uint64(l)) + } + if m.Left != nil { + l = m.Left.Size() + n += 1 + l + sovKvrpcpb(uint64(l)) + } + if m.Right != nil { + l = m.Right.Size() + n += 1 + l + sovKvrpcpb(uint64(l)) + } + return n +} + func sovKvrpcpb(x uint64) (n int) { for { n++ @@ -4575,6 +4770,26 @@ func (m *Context) Unmarshal(dAtA []byte) error { break } } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NotFillCache", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.NotFillCache = bool(v != 0) default: iNdEx = preIndex skippy, err := skipKvrpcpb(dAtA[iNdEx:]) @@ -9850,6 +10065,269 @@ func (m *MvccGetByStartTsResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *SplitRegionRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SplitRegionRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SplitRegionRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Context", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthKvrpcpb + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Context == nil { + m.Context = &Context{} + } + if err := m.Context.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SplitKey", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthKvrpcpb + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SplitKey = append(m.SplitKey[:0], dAtA[iNdEx:postIndex]...) + if m.SplitKey == nil { + m.SplitKey = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipKvrpcpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthKvrpcpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SplitRegionResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SplitRegionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SplitRegionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RegionError", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthKvrpcpb + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RegionError == nil { + m.RegionError = &errorpb.Error{} + } + if err := m.RegionError.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Left", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthKvrpcpb + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Left == nil { + m.Left = &metapb.Region{} + } + if err := m.Left.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Right", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKvrpcpb + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthKvrpcpb + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Right == nil { + m.Right = &metapb.Region{} + } + if err := m.Right.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipKvrpcpb(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthKvrpcpb + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipKvrpcpb(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 @@ -9958,96 +10436,101 @@ var ( func init() { proto.RegisterFile("kvrpcpb.proto", fileDescriptorKvrpcpb) } var fileDescriptorKvrpcpb = []byte{ - // 1445 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x5f, 0x8f, 0xdb, 0x44, - 0x10, 0xaf, 0x1d, 0x27, 0x71, 0x26, 0xff, 0xdc, 0xbd, 0xab, 0x9a, 0xb6, 0x70, 0x4d, 0x0d, 0xa7, - 0x5e, 0x0f, 0x29, 0x15, 0x41, 0xe2, 0x19, 0x35, 0xad, 0xca, 0xf5, 0x5a, 0x2e, 0xda, 0xab, 0xae, - 0xaa, 0x84, 0x1a, 0x7c, 0xce, 0x36, 0xb1, 0xec, 0x78, 0x5d, 0x7b, 0x93, 0xab, 0x85, 0x10, 0x4f, - 0x20, 0x21, 0xf1, 0x88, 0x04, 0x42, 0xbc, 0xf0, 0xc8, 0x37, 0xe1, 0x91, 0x8f, 0x80, 0xca, 0x17, - 0x41, 0xbb, 0xfe, 0x97, 0x5c, 0x52, 0x38, 0x59, 0x69, 0x9e, 0x92, 0x9d, 0x99, 0xdd, 0x99, 0xdf, - 0xcc, 0x6f, 0x67, 0xbd, 0x0b, 0x75, 0x7b, 0xe6, 0x7b, 0xa6, 0x77, 0xda, 0xf1, 0x7c, 0xca, 0x28, - 0x2a, 0xc7, 0xc3, 0xeb, 0xb5, 0x09, 0x61, 0x46, 0x22, 0xbe, 0x5e, 0x27, 0xbe, 0x4f, 0xfd, 0x74, - 0xb8, 0x3d, 0xa2, 0x23, 0x2a, 0xfe, 0xde, 0xe5, 0xff, 0x22, 0xa9, 0xfe, 0x0d, 0xa8, 0x8f, 0xa9, - 0x69, 0x1f, 0xb8, 0x2f, 0x29, 0xba, 0x05, 0x35, 0xcf, 0xb7, 0x26, 0x86, 0x1f, 0x0e, 0x1c, 0x6a, - 0xda, 0x2d, 0xa9, 0x2d, 0xed, 0xd5, 0x70, 0x35, 0x96, 0x71, 0x33, 0x6e, 0xc2, 0x55, 0x83, 0x19, - 0xf1, 0x03, 0x8b, 0xba, 0x2d, 0xb9, 0x2d, 0xed, 0x29, 0xb8, 0xca, 0x65, 0x27, 0x91, 0x08, 0x69, - 0x50, 0xb0, 0x49, 0xd8, 0x2a, 0x88, 0xc9, 0xfc, 0x2f, 0xba, 0x06, 0xaa, 0x98, 0xc4, 0x98, 0xd3, - 0x52, 0xc4, 0x84, 0x32, 0x1f, 0x3f, 0x65, 0x8e, 0x6e, 0x81, 0x7a, 0x48, 0xc2, 0x07, 0x3c, 0x50, - 0x74, 0x07, 0x4a, 0x5c, 0x4c, 0x86, 0xc2, 0x71, 0xb5, 0x7b, 0xb9, 0x93, 0xc0, 0x4c, 0x22, 0xc4, - 0xb1, 0x01, 0x7a, 0x0f, 0x2a, 0x3e, 0x61, 0x7e, 0x68, 0x9c, 0x3a, 0x44, 0xc4, 0x50, 0xc1, 0x99, - 0x00, 0x6d, 0x43, 0xd1, 0x38, 0xa5, 0x3e, 0x13, 0x31, 0x54, 0x70, 0x34, 0xd0, 0x7f, 0x95, 0xa1, - 0xdc, 0xa3, 0x2e, 0x23, 0xaf, 0x19, 0xba, 0xc1, 0xe7, 0x8f, 0x2c, 0xea, 0x0e, 0xac, 0xc8, 0x9b, - 0x82, 0xd5, 0x48, 0x70, 0x30, 0x44, 0x9f, 0x42, 0x2d, 0x56, 0x12, 0x8f, 0x9a, 0x63, 0xb1, 0x7e, - 0xb5, 0xbb, 0xd5, 0x89, 0x93, 0x8b, 0x85, 0xee, 0x01, 0x57, 0xe1, 0xaa, 0x9f, 0x0d, 0x50, 0x1b, - 0x14, 0x8f, 0x10, 0x5f, 0x78, 0xad, 0x76, 0x6b, 0x89, 0x7d, 0x9f, 0x10, 0x1f, 0x0b, 0x0d, 0x42, - 0xa0, 0x30, 0xe2, 0x4f, 0x5a, 0x45, 0xe1, 0x51, 0xfc, 0x47, 0x77, 0x41, 0xf5, 0x7c, 0x8b, 0xfa, - 0x16, 0x0b, 0x5b, 0xa5, 0xb6, 0xb4, 0xd7, 0xe8, 0x6e, 0xa5, 0xb8, 0x7b, 0x74, 0x32, 0x31, 0xdc, - 0x61, 0xdf, 0xb7, 0x70, 0x6a, 0x84, 0x3e, 0x83, 0xa6, 0x15, 0x50, 0xc7, 0x60, 0x3c, 0x42, 0x87, - 0xcc, 0x88, 0xd3, 0x2a, 0x8b, 0x79, 0x57, 0xd3, 0x79, 0x07, 0x89, 0xfe, 0x31, 0x57, 0xe3, 0x86, - 0xb5, 0x30, 0x7e, 0xa4, 0xa8, 0x8a, 0x56, 0xe4, 0xb1, 0x1b, 0xc3, 0xc1, 0xab, 0x29, 0xf5, 0xa7, - 0x13, 0x7d, 0x08, 0xf0, 0x90, 0x30, 0x4c, 0x5e, 0x4d, 0x49, 0xc0, 0xd0, 0x3e, 0x94, 0xcd, 0x28, - 0x53, 0x71, 0x29, 0xb4, 0xb9, 0x90, 0x84, 0x1c, 0x27, 0x06, 0x49, 0xb9, 0xe5, 0xac, 0xdc, 0x2d, - 0x28, 0x27, 0xf4, 0x28, 0x44, 0xd5, 0x8e, 0x87, 0xfa, 0xb7, 0x50, 0x15, 0x5e, 0x02, 0x8f, 0xba, - 0x01, 0x41, 0x1f, 0x67, 0x89, 0xe6, 0x04, 0x88, 0x7d, 0x35, 0x3a, 0x09, 0x6f, 0x05, 0x2d, 0xd2, - 0x1c, 0x0b, 0x8e, 0xdc, 0x86, 0x62, 0x64, 0x2b, 0x9f, 0xa3, 0x48, 0xc2, 0x22, 0x1c, 0xe9, 0x39, - 0x07, 0x66, 0x86, 0x33, 0x25, 0x31, 0x0f, 0xa3, 0x81, 0xfe, 0xbb, 0x04, 0xd5, 0x63, 0xd3, 0x70, - 0xf3, 0x00, 0xbd, 0x01, 0x95, 0x80, 0x19, 0x3e, 0x1b, 0x64, 0x70, 0x55, 0x21, 0x38, 0x24, 0x21, - 0x77, 0xe7, 0x58, 0x13, 0x2b, 0xa2, 0x5c, 0x1d, 0x47, 0x83, 0xf9, 0x4c, 0x28, 0x0b, 0x99, 0xe0, - 0x5b, 0xc2, 0x26, 0xe1, 0x80, 0xba, 0x4e, 0x28, 0xd8, 0xa0, 0xe2, 0xb2, 0x4d, 0xc2, 0x23, 0xd7, - 0x09, 0xf5, 0xe7, 0x50, 0x3a, 0x9c, 0xf5, 0x0d, 0x6b, 0x0e, 0xac, 0xf4, 0x3f, 0x60, 0x97, 0x6b, - 0xb0, 0x1a, 0xfe, 0x18, 0x6a, 0x11, 0xfa, 0xfc, 0x05, 0xd8, 0x85, 0xa2, 0x67, 0x58, 0x7e, 0xd0, - 0x92, 0xdb, 0x85, 0xbd, 0x6a, 0xb7, 0x99, 0xc5, 0x24, 0x62, 0xc6, 0x91, 0x56, 0x3f, 0x02, 0xf5, - 0xc9, 0x94, 0x09, 0xce, 0xa1, 0x1b, 0x20, 0x53, 0x4f, 0xac, 0xdd, 0xe8, 0x56, 0x53, 0xfb, 0x23, - 0x0f, 0xcb, 0xd4, 0xbb, 0x70, 0xe8, 0xdf, 0xc9, 0xd0, 0xec, 0xfb, 0xe4, 0xcc, 0xb7, 0x18, 0xc9, - 0x53, 0xbd, 0xbb, 0x50, 0x99, 0xc4, 0x01, 0x25, 0xb1, 0x67, 0xf9, 0x4c, 0x42, 0xc5, 0x99, 0xcd, - 0x52, 0x33, 0x2c, 0x2c, 0x37, 0xc3, 0x0f, 0xa0, 0x1e, 0x31, 0x62, 0xb1, 0xc8, 0x35, 0x21, 0x3c, - 0xc9, 0x2a, 0x9d, 0x36, 0xbf, 0xe2, 0x42, 0xf3, 0x43, 0x5d, 0xb8, 0x12, 0xd8, 0x96, 0x37, 0x30, - 0xa9, 0x1b, 0x30, 0xdf, 0xb0, 0x5c, 0x36, 0x30, 0xc7, 0xc4, 0xb4, 0x45, 0x1f, 0x50, 0xf1, 0x16, - 0x57, 0xf6, 0x52, 0x5d, 0x8f, 0xab, 0x74, 0x0f, 0xb4, 0x2c, 0x0d, 0xf9, 0xcb, 0x78, 0x07, 0x4a, - 0x42, 0xbb, 0x9c, 0x8b, 0x94, 0x5b, 0xb1, 0x81, 0xfe, 0x87, 0x04, 0x75, 0xde, 0x88, 0xac, 0x5c, - 0xed, 0x61, 0x29, 0x47, 0xf2, 0x8a, 0x1c, 0x21, 0x50, 0x6c, 0x12, 0x06, 0xad, 0x42, 0xbb, 0xb0, - 0x57, 0xc3, 0xe2, 0x3f, 0xda, 0x85, 0x86, 0x29, 0xbc, 0x9e, 0xcb, 0x6e, 0x3d, 0x92, 0xc6, 0x53, - 0x1f, 0x29, 0x6a, 0x51, 0x2b, 0xe1, 0xd2, 0xa9, 0xe5, 0x3a, 0x74, 0xa4, 0x3b, 0xd0, 0x48, 0x42, - 0x7d, 0xf7, 0x3d, 0x46, 0x1f, 0x41, 0xfd, 0x60, 0xe2, 0x51, 0x3f, 0x4d, 0xcc, 0x02, 0xc9, 0xa4, - 0x0b, 0x90, 0x6c, 0x19, 0xa4, 0xbc, 0x02, 0xa4, 0xfe, 0x1c, 0x1a, 0x89, 0xa3, 0xfc, 0xb0, 0xb6, - 0xe7, 0x61, 0x55, 0x12, 0x0c, 0x5f, 0xc3, 0xf6, 0x3d, 0x83, 0x99, 0x63, 0x4c, 0x1d, 0xe7, 0xd4, - 0x30, 0xed, 0x4d, 0xd6, 0x58, 0x0f, 0xe0, 0xca, 0x39, 0xe7, 0x1b, 0xa8, 0x5a, 0x00, 0x8d, 0x9e, - 0x43, 0x0c, 0x77, 0xea, 0xad, 0xe7, 0xb8, 0x5b, 0x42, 0x5f, 0x58, 0x46, 0xaf, 0xff, 0x24, 0x41, - 0x33, 0xf5, 0xba, 0x81, 0xe3, 0x6f, 0x99, 0x58, 0x85, 0x55, 0xc4, 0xb2, 0xa1, 0x29, 0x0a, 0x90, - 0xf3, 0xec, 0x4f, 0x6a, 0x2a, 0xcf, 0xed, 0xdb, 0xb7, 0x9f, 0xfe, 0x0e, 0x68, 0x99, 0xb3, 0x77, - 0x7e, 0x02, 0xbd, 0x80, 0x26, 0x3f, 0xeb, 0x78, 0xa3, 0xce, 0x03, 0xed, 0x26, 0x54, 0x27, 0xc6, - 0xeb, 0x73, 0x8c, 0x86, 0x89, 0xf1, 0x3a, 0x49, 0xdd, 0xcf, 0x12, 0x68, 0x99, 0x83, 0x0d, 0x94, - 0xf4, 0x36, 0x14, 0xf9, 0xc1, 0x11, 0xed, 0xa0, 0x95, 0x5f, 0xc7, 0x91, 0x5e, 0xff, 0x51, 0x02, - 0x84, 0x49, 0x40, 0x9d, 0x19, 0xc9, 0x8b, 0xfe, 0x42, 0x3b, 0xfa, 0x82, 0x1c, 0x7b, 0x05, 0x5b, - 0x0b, 0xd1, 0x6c, 0x60, 0x8b, 0x9f, 0x40, 0xe5, 0x61, 0x2f, 0x0f, 0xee, 0xf7, 0x01, 0x02, 0xe3, - 0x25, 0x19, 0x78, 0xd4, 0x72, 0x59, 0x0c, 0xba, 0xc2, 0x25, 0x7d, 0x2e, 0xd0, 0xc7, 0x00, 0x7c, - 0xdd, 0x0d, 0x20, 0x78, 0x02, 0x75, 0x6c, 0x9c, 0xad, 0xeb, 0x93, 0x5c, 0xa7, 0xd0, 0x48, 0x96, - 0x5b, 0xf3, 0x01, 0xf2, 0x96, 0xcf, 0x35, 0x53, 0xc4, 0xdf, 0x9f, 0xae, 0xe9, 0x4a, 0xb1, 0xda, - 0xc9, 0x73, 0x81, 0x4a, 0x38, 0x59, 0xf7, 0xb1, 0xd8, 0x07, 0x0d, 0x1b, 0x67, 0xf7, 0x89, 0x43, - 0xf2, 0x7d, 0x6e, 0x2e, 0x97, 0xe0, 0x4b, 0xb8, 0x3c, 0xb7, 0xe2, 0xba, 0xe3, 0x9d, 0x01, 0x8a, - 0x97, 0x36, 0xdc, 0x11, 0x59, 0xfb, 0xf5, 0xe6, 0x2a, 0x94, 0x89, 0x3b, 0x1c, 0x64, 0xf7, 0xfa, - 0x12, 0x71, 0x87, 0x87, 0x24, 0xd4, 0x5f, 0xc0, 0xd6, 0x82, 0xdf, 0x75, 0xe3, 0x8a, 0x88, 0xbb, - 0xb9, 0x2b, 0x9b, 0x3e, 0x82, 0x66, 0xea, 0x30, 0x3f, 0x98, 0x5b, 0x50, 0xb0, 0x67, 0x6f, 0x3d, - 0xa1, 0xb8, 0x4e, 0x1f, 0x42, 0xe5, 0x19, 0xff, 0x8a, 0x17, 0x2f, 0x2f, 0xd7, 0x20, 0x8a, 0x6b, - 0xc0, 0x82, 0xf8, 0x39, 0xa2, 0x2c, 0xc6, 0x4f, 0x03, 0x74, 0x13, 0x14, 0x16, 0x7a, 0xd1, 0x2b, - 0xc7, 0xb9, 0xfb, 0x93, 0x50, 0x70, 0x90, 0x71, 0x1b, 0x66, 0x41, 0xdc, 0x81, 0xd5, 0x48, 0xf0, - 0x34, 0xd0, 0x9f, 0x41, 0xe5, 0x84, 0xef, 0x15, 0xe1, 0x25, 0xdd, 0x45, 0xd2, 0xdc, 0x2e, 0x42, - 0x0d, 0x90, 0x59, 0x10, 0xf7, 0x3a, 0x99, 0x05, 0xe8, 0x43, 0x68, 0x58, 0xc1, 0x20, 0x18, 0x53, - 0xde, 0xfe, 0xd3, 0x4d, 0xa7, 0xe2, 0x9a, 0x15, 0x1c, 0x73, 0xa1, 0x58, 0x4f, 0xff, 0x41, 0x02, - 0xf5, 0xc9, 0xcc, 0x34, 0xc5, 0xc2, 0xbb, 0xa0, 0xa4, 0x0f, 0x46, 0x2b, 0x4f, 0x26, 0xa1, 0x46, - 0xfb, 0x50, 0x12, 0x17, 0x97, 0x24, 0x31, 0x28, 0x35, 0x4c, 0x33, 0x81, 0x63, 0x0b, 0x6e, 0x2b, - 0x9c, 0x27, 0xc7, 0x5d, 0x66, 0x9b, 0xe2, 0xc1, 0xb1, 0x85, 0x7e, 0x0c, 0x5b, 0x3c, 0x94, 0x87, - 0x84, 0xdd, 0x0b, 0x0f, 0x49, 0xb8, 0x9e, 0xfd, 0xfa, 0xbd, 0x04, 0xdb, 0x8b, 0xab, 0xae, 0xbb, - 0x73, 0xee, 0x82, 0x62, 0xb9, 0x2f, 0x69, 0xfc, 0x5e, 0x34, 0x77, 0x51, 0x88, 0xd3, 0x8a, 0x85, - 0x5a, 0xff, 0x0a, 0xae, 0xa6, 0x71, 0x1c, 0x47, 0xa4, 0xc8, 0x83, 0x70, 0x9e, 0x62, 0xf2, 0x02, - 0xc5, 0xf4, 0xdf, 0x24, 0x68, 0x2d, 0xbb, 0x58, 0x37, 0xdc, 0xe5, 0x77, 0xc1, 0x24, 0x01, 0xca, - 0x7f, 0x26, 0x60, 0xff, 0x23, 0x80, 0xec, 0x21, 0x0c, 0x01, 0x94, 0xbe, 0xa0, 0xfe, 0xc4, 0x70, - 0xb4, 0x4b, 0xa8, 0x0c, 0x85, 0xc7, 0xf4, 0x4c, 0x93, 0x90, 0x0a, 0xca, 0xe7, 0xd6, 0x68, 0xac, - 0xc9, 0xfb, 0x6d, 0x68, 0x2c, 0xbe, 0x7e, 0xa1, 0x12, 0xc8, 0xc7, 0x07, 0xda, 0x25, 0xfe, 0x8b, - 0x7b, 0x9a, 0xb4, 0xdf, 0x01, 0xf9, 0xc8, 0xe3, 0x53, 0xfb, 0x53, 0x16, 0xad, 0x71, 0x9f, 0x38, - 0xd1, 0x1a, 0x9c, 0xaf, 0x9a, 0x8c, 0x6a, 0xa0, 0x26, 0x37, 0x12, 0xad, 0x70, 0x6f, 0xff, 0xcf, - 0x37, 0x3b, 0xd2, 0x5f, 0x6f, 0x76, 0xa4, 0xbf, 0xdf, 0xec, 0x48, 0xbf, 0xfc, 0xb3, 0x73, 0x09, - 0x5a, 0x26, 0x9d, 0x74, 0x3c, 0xcb, 0x1d, 0x99, 0x86, 0xd7, 0x61, 0x96, 0x3d, 0xeb, 0xd8, 0x33, - 0xf1, 0x9a, 0x7a, 0x5a, 0x12, 0x3f, 0x9f, 0xfc, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xe8, 0x76, 0x89, - 0x7e, 0xa1, 0x15, 0x00, 0x00, + // 1534 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4f, 0x6f, 0xdb, 0xc6, + 0x12, 0x0f, 0x29, 0x4a, 0xa2, 0x46, 0x7f, 0xcc, 0xac, 0x1d, 0x44, 0x49, 0xde, 0x73, 0x14, 0xbe, + 0x18, 0x71, 0xfc, 0x00, 0x05, 0x75, 0x81, 0x9e, 0x8b, 0x28, 0x69, 0xea, 0x38, 0xa9, 0x85, 0x75, + 0xe0, 0x20, 0x40, 0x1b, 0x95, 0xa6, 0xd6, 0xd2, 0x42, 0x14, 0x97, 0x21, 0x57, 0x72, 0x88, 0xa2, + 0xe8, 0xa9, 0x05, 0x0a, 0xf4, 0x54, 0x14, 0x68, 0x0f, 0xbd, 0xf4, 0xd8, 0x6f, 0xd1, 0x63, 0x8f, + 0xfd, 0x08, 0x45, 0xfa, 0x45, 0x8a, 0x5d, 0xfe, 0x93, 0x2c, 0xa7, 0x35, 0x08, 0x45, 0x27, 0x69, + 0x67, 0x66, 0x77, 0xe6, 0x37, 0xf3, 0xdb, 0x59, 0xee, 0x42, 0x7d, 0x34, 0xf5, 0x3d, 0xdb, 0x3b, + 0x6e, 0x7b, 0x3e, 0xe3, 0x0c, 0x95, 0xe3, 0xe1, 0xf5, 0xda, 0x98, 0x70, 0x2b, 0x11, 0x5f, 0xaf, + 0x13, 0xdf, 0x67, 0x7e, 0x3a, 0xdc, 0x18, 0xb0, 0x01, 0x93, 0x7f, 0xef, 0x89, 0x7f, 0x91, 0xd4, + 0xfc, 0x12, 0xf4, 0x27, 0xcc, 0x1e, 0xed, 0xb9, 0x27, 0x0c, 0xdd, 0x82, 0x9a, 0xe7, 0xd3, 0xb1, + 0xe5, 0x87, 0x3d, 0x87, 0xd9, 0xa3, 0xa6, 0xd2, 0x52, 0xb6, 0x6b, 0xb8, 0x1a, 0xcb, 0x84, 0x99, + 0x30, 0x11, 0xaa, 0xde, 0x94, 0xf8, 0x01, 0x65, 0x6e, 0x53, 0x6d, 0x29, 0xdb, 0x1a, 0xae, 0x0a, + 0xd9, 0x51, 0x24, 0x42, 0x06, 0x14, 0x46, 0x24, 0x6c, 0x16, 0xe4, 0x64, 0xf1, 0x17, 0x5d, 0x03, + 0x5d, 0x4e, 0xe2, 0xdc, 0x69, 0x6a, 0x72, 0x42, 0x59, 0x8c, 0x9f, 0x71, 0xc7, 0xa4, 0xa0, 0xef, + 0x93, 0xf0, 0xa1, 0x08, 0x14, 0xdd, 0x85, 0x92, 0x10, 0x93, 0xbe, 0x74, 0x5c, 0xdd, 0xbd, 0xdc, + 0x4e, 0x60, 0x26, 0x11, 0xe2, 0xd8, 0x00, 0xfd, 0x07, 0x2a, 0x3e, 0xe1, 0x7e, 0x68, 0x1d, 0x3b, + 0x44, 0xc6, 0x50, 0xc1, 0x99, 0x00, 0x6d, 0x40, 0xd1, 0x3a, 0x66, 0x3e, 0x97, 0x31, 0x54, 0x70, + 0x34, 0x30, 0x7f, 0x53, 0xa1, 0xdc, 0x61, 0x2e, 0x27, 0xaf, 0x39, 0xba, 0x21, 0xe6, 0x0f, 0x28, + 0x73, 0x7b, 0x34, 0xf2, 0xa6, 0x61, 0x3d, 0x12, 0xec, 0xf5, 0xd1, 0x07, 0x50, 0x8b, 0x95, 0xc4, + 0x63, 0xf6, 0x50, 0xae, 0x5f, 0xdd, 0x5d, 0x6f, 0xc7, 0xc9, 0xc5, 0x52, 0xf7, 0x50, 0xa8, 0x70, + 0xd5, 0xcf, 0x06, 0xa8, 0x05, 0x9a, 0x47, 0x88, 0x2f, 0xbd, 0x56, 0x77, 0x6b, 0x89, 0x7d, 0x97, + 0x10, 0x1f, 0x4b, 0x0d, 0x42, 0xa0, 0x71, 0xe2, 0x8f, 0x9b, 0x45, 0xe9, 0x51, 0xfe, 0x47, 0xf7, + 0x40, 0xf7, 0x7c, 0xca, 0x7c, 0xca, 0xc3, 0x66, 0xa9, 0xa5, 0x6c, 0x37, 0x76, 0xd7, 0x53, 0xdc, + 0x1d, 0x36, 0x1e, 0x5b, 0x6e, 0xbf, 0xeb, 0x53, 0x9c, 0x1a, 0xa1, 0x0f, 0x61, 0x8d, 0x06, 0xcc, + 0xb1, 0xb8, 0x88, 0xd0, 0x21, 0x53, 0xe2, 0x34, 0xcb, 0x72, 0xde, 0xd5, 0x74, 0xde, 0x5e, 0xa2, + 0x7f, 0x22, 0xd4, 0xb8, 0x41, 0xe7, 0xc6, 0xe8, 0x36, 0x34, 0x5c, 0xc6, 0x7b, 0x27, 0xd4, 0x71, + 0x7a, 0xb6, 0x65, 0x0f, 0x49, 0x53, 0x6f, 0x29, 0xdb, 0x3a, 0xae, 0xb9, 0x8c, 0x7f, 0x44, 0x1d, + 0xa7, 0x23, 0x64, 0x8f, 0x35, 0x5d, 0x33, 0x8a, 0x02, 0xa1, 0xd5, 0xef, 0xbd, 0x9a, 0x30, 0x7f, + 0x32, 0x36, 0xfb, 0x00, 0x8f, 0x08, 0xc7, 0xe4, 0xd5, 0x84, 0x04, 0x1c, 0xed, 0x40, 0xd9, 0x8e, + 0xf2, 0x19, 0x17, 0xcc, 0x98, 0x09, 0x5c, 0xca, 0x71, 0x62, 0x90, 0x90, 0x42, 0xcd, 0x48, 0xd1, + 0x84, 0x72, 0x42, 0xa2, 0x42, 0xc4, 0x89, 0x78, 0x68, 0x7e, 0x05, 0x55, 0xe9, 0x25, 0xf0, 0x98, + 0x1b, 0x10, 0xf4, 0x5e, 0x56, 0x0e, 0x41, 0x93, 0xd8, 0x57, 0xa3, 0x9d, 0xb0, 0x5b, 0x92, 0x27, + 0xad, 0x84, 0x64, 0xd2, 0x1d, 0x28, 0x46, 0xb6, 0xea, 0x19, 0x22, 0x25, 0x5c, 0xc3, 0x91, 0x5e, + 0x30, 0x65, 0x6a, 0x39, 0x13, 0x12, 0xb3, 0x35, 0x1a, 0x98, 0xbf, 0x28, 0x50, 0x3d, 0xb4, 0x2d, + 0x37, 0x0f, 0xd0, 0x1b, 0x50, 0x09, 0xb8, 0xe5, 0xf3, 0x5e, 0x06, 0x57, 0x97, 0x82, 0x7d, 0x12, + 0x0a, 0x77, 0x0e, 0x1d, 0xd3, 0x88, 0x98, 0x75, 0x1c, 0x0d, 0x66, 0x33, 0xa1, 0xcd, 0x65, 0x42, + 0x6c, 0x9c, 0x11, 0x09, 0x7b, 0xcc, 0x75, 0x42, 0xc9, 0x19, 0x1d, 0x97, 0x47, 0x24, 0x3c, 0x70, + 0x9d, 0xd0, 0x7c, 0x01, 0xa5, 0xfd, 0x69, 0xd7, 0xa2, 0x33, 0x60, 0x95, 0x7f, 0x01, 0xbb, 0x58, + 0x83, 0xf3, 0xe1, 0x0f, 0xa1, 0x16, 0xa1, 0xcf, 0x5f, 0x80, 0x2d, 0x28, 0x7a, 0x16, 0xf5, 0x83, + 0xa6, 0xda, 0x2a, 0x6c, 0x57, 0x77, 0xd7, 0xb2, 0x98, 0x64, 0xcc, 0x38, 0xd2, 0x9a, 0x07, 0xa0, + 0x3f, 0x9d, 0x70, 0xc9, 0x4c, 0x74, 0x03, 0x54, 0xe6, 0xc9, 0xb5, 0x1b, 0xbb, 0xd5, 0xd4, 0xfe, + 0xc0, 0xc3, 0x2a, 0xf3, 0x2e, 0x1c, 0xfa, 0xd7, 0x2a, 0xac, 0x75, 0x7d, 0x72, 0xea, 0x53, 0x4e, + 0xf2, 0x54, 0xef, 0x1e, 0x54, 0xc6, 0x71, 0x40, 0x49, 0xec, 0x59, 0x3e, 0x93, 0x50, 0x71, 0x66, + 0xb3, 0xd0, 0x32, 0x0b, 0x8b, 0x2d, 0xf3, 0x7f, 0x50, 0x8f, 0x18, 0x31, 0x5f, 0xe4, 0x9a, 0x14, + 0x1e, 0x65, 0x95, 0x4e, 0x5b, 0x64, 0x71, 0xae, 0x45, 0xa2, 0x5d, 0xb8, 0x12, 0x8c, 0xa8, 0xd7, + 0xb3, 0x99, 0x1b, 0x70, 0xdf, 0xa2, 0x2e, 0xef, 0xd9, 0x43, 0x62, 0x8f, 0x64, 0xb7, 0xd0, 0xf1, + 0xba, 0x50, 0x76, 0x52, 0x5d, 0x47, 0xa8, 0x4c, 0x0f, 0x8c, 0x2c, 0x0d, 0xf9, 0xcb, 0x78, 0x17, + 0x4a, 0x52, 0xbb, 0x98, 0x8b, 0x94, 0x5b, 0xb1, 0x81, 0xf9, 0xab, 0x02, 0x75, 0xd1, 0xae, 0x68, + 0xae, 0xf6, 0xb0, 0x90, 0x23, 0xf5, 0x9c, 0x1c, 0x21, 0xd0, 0x46, 0x24, 0x0c, 0x9a, 0x85, 0x56, + 0x61, 0xbb, 0x86, 0xe5, 0x7f, 0xb4, 0x05, 0x0d, 0x5b, 0x7a, 0x3d, 0x93, 0xdd, 0x7a, 0x24, 0x8d, + 0xa7, 0x3e, 0xd6, 0xf4, 0xa2, 0x51, 0xc2, 0xa5, 0x63, 0xea, 0x3a, 0x6c, 0x60, 0x3a, 0xd0, 0x48, + 0x42, 0x7d, 0xf7, 0x3d, 0xc6, 0x1c, 0x40, 0x7d, 0x6f, 0xec, 0x31, 0x3f, 0x4d, 0xcc, 0x1c, 0xc9, + 0x94, 0x0b, 0x90, 0x6c, 0x11, 0xa4, 0x7a, 0x0e, 0x48, 0xf3, 0x05, 0x34, 0x12, 0x47, 0xf9, 0x61, + 0x6d, 0xcc, 0xc2, 0xaa, 0x24, 0x18, 0xbe, 0x80, 0x8d, 0xfb, 0x16, 0xb7, 0x87, 0x98, 0x39, 0xce, + 0xb1, 0x65, 0x8f, 0x56, 0x59, 0x63, 0x33, 0x80, 0x2b, 0x67, 0x9c, 0xaf, 0xa0, 0x6a, 0x01, 0x34, + 0x3a, 0x0e, 0xb1, 0xdc, 0x89, 0xb7, 0x9c, 0xe3, 0x6e, 0x01, 0x7d, 0x61, 0x11, 0xbd, 0xf9, 0x83, + 0x02, 0x6b, 0xa9, 0xd7, 0x15, 0x1c, 0x7f, 0x8b, 0xc4, 0x2a, 0x9c, 0x47, 0xac, 0x11, 0xac, 0xc9, + 0x02, 0xe4, 0x3c, 0xfb, 0x93, 0x9a, 0xaa, 0x33, 0xfb, 0xf6, 0xed, 0xa7, 0xbf, 0x03, 0x46, 0xe6, + 0xec, 0x9d, 0x9f, 0x40, 0x2f, 0x61, 0x4d, 0x9c, 0x75, 0xa2, 0x51, 0xe7, 0x81, 0x76, 0x13, 0xaa, + 0x63, 0xeb, 0xf5, 0x19, 0x46, 0xc3, 0xd8, 0x7a, 0x9d, 0xa4, 0xee, 0x47, 0x05, 0x8c, 0xcc, 0xc1, + 0x0a, 0x4a, 0x7a, 0x07, 0x8a, 0xe2, 0xe0, 0x88, 0x76, 0xd0, 0xb9, 0xdf, 0xd0, 0x91, 0xde, 0xfc, + 0x4e, 0x01, 0x84, 0x49, 0xc0, 0x9c, 0x29, 0xc9, 0x8b, 0xfe, 0x42, 0x3b, 0xfa, 0x82, 0x1c, 0x7b, + 0x05, 0xeb, 0x73, 0xd1, 0xac, 0x60, 0x8b, 0x1f, 0x41, 0xe5, 0x51, 0x27, 0x0f, 0xee, 0xff, 0x02, + 0x04, 0xd6, 0x09, 0xe9, 0x79, 0x8c, 0xba, 0x3c, 0x06, 0x5d, 0x11, 0x92, 0xae, 0x10, 0x98, 0x43, + 0x00, 0xb1, 0xee, 0x0a, 0x10, 0x3c, 0x85, 0x3a, 0xb6, 0x4e, 0x97, 0xf5, 0x49, 0x6e, 0x32, 0x68, + 0x24, 0xcb, 0x2d, 0xf9, 0x00, 0x79, 0xcb, 0xe7, 0x9a, 0x2d, 0xe3, 0xef, 0x4e, 0x96, 0x74, 0xa5, + 0x38, 0xdf, 0xc9, 0x0b, 0x89, 0x4a, 0x3a, 0x59, 0xf6, 0xb1, 0xd8, 0x05, 0x03, 0x5b, 0xa7, 0x0f, + 0x88, 0x43, 0xf2, 0x7d, 0x6e, 0x2e, 0x96, 0xe0, 0x53, 0xb8, 0x3c, 0xb3, 0xe2, 0xb2, 0xe3, 0x9d, + 0x02, 0x8a, 0x97, 0xb6, 0xdc, 0x01, 0x59, 0xfa, 0xf5, 0xe6, 0x2a, 0x94, 0x89, 0xdb, 0xef, 0x65, + 0xb7, 0xff, 0x12, 0x71, 0xfb, 0xfb, 0x24, 0x34, 0x5f, 0xc2, 0xfa, 0x9c, 0xdf, 0x65, 0xe3, 0x8a, + 0x88, 0xbb, 0xba, 0x2b, 0x9b, 0x39, 0x80, 0xb5, 0xd4, 0x61, 0x7e, 0x30, 0xb7, 0xa0, 0x30, 0x9a, + 0xbe, 0xf5, 0x84, 0x12, 0x3a, 0xb3, 0x0f, 0x95, 0xe7, 0xe2, 0x2b, 0x5e, 0xbe, 0xcf, 0x5c, 0x83, + 0x28, 0xae, 0x1e, 0x0f, 0xe2, 0x47, 0x8b, 0xb2, 0x1c, 0x3f, 0x0b, 0xd0, 0x4d, 0xd0, 0x78, 0xe8, + 0x45, 0x6f, 0x21, 0x67, 0xee, 0x4f, 0x52, 0x21, 0x40, 0xc6, 0x6d, 0x98, 0x07, 0x71, 0x07, 0xd6, + 0x23, 0xc1, 0xb3, 0xc0, 0x7c, 0x0e, 0x95, 0x23, 0xb1, 0x57, 0xa4, 0x97, 0x74, 0x17, 0x29, 0x33, + 0xbb, 0x08, 0x35, 0x40, 0xe5, 0x41, 0xdc, 0xeb, 0x54, 0x1e, 0xa0, 0xdb, 0xd0, 0xa0, 0x41, 0x2f, + 0x18, 0x32, 0xd1, 0xfe, 0xd3, 0x4d, 0xa7, 0xe3, 0x1a, 0x0d, 0x0e, 0x85, 0x50, 0xae, 0x67, 0x7e, + 0xab, 0x80, 0xfe, 0x74, 0x6a, 0xdb, 0x72, 0xe1, 0x2d, 0xd0, 0xd2, 0x67, 0xa5, 0x73, 0x4f, 0x26, + 0xa9, 0x46, 0x3b, 0x50, 0x92, 0x17, 0x97, 0x24, 0x31, 0x28, 0x35, 0x4c, 0x33, 0x81, 0x63, 0x0b, + 0x61, 0x2b, 0x9d, 0x27, 0xc7, 0x5d, 0x66, 0x9b, 0xe2, 0xc1, 0xb1, 0x85, 0x79, 0x08, 0xeb, 0x22, + 0x94, 0x47, 0x84, 0xdf, 0x0f, 0xf7, 0x49, 0xb8, 0x9c, 0xfd, 0xfa, 0x8d, 0x02, 0x1b, 0xf3, 0xab, + 0x2e, 0xbb, 0x73, 0x6e, 0x81, 0x46, 0xdd, 0x13, 0x16, 0xbf, 0x2a, 0xcd, 0x5c, 0x14, 0xe2, 0xb4, + 0x62, 0xa9, 0x36, 0x3f, 0x87, 0xab, 0x69, 0x1c, 0x87, 0x11, 0x29, 0xf2, 0x20, 0x9c, 0xa5, 0x98, + 0x3a, 0x47, 0x31, 0xf3, 0x67, 0x05, 0x9a, 0x8b, 0x2e, 0x96, 0x0d, 0x77, 0xf1, 0xf5, 0x30, 0x49, + 0x80, 0xf6, 0xcf, 0x09, 0xf8, 0x0c, 0xd0, 0xa1, 0xe7, 0x88, 0x3b, 0x9d, 0x70, 0x91, 0xb7, 0x0f, + 0x88, 0x15, 0xe6, 0xfa, 0x80, 0x10, 0x88, 0x16, 0xf6, 0xbd, 0x02, 0xeb, 0x73, 0xeb, 0xe7, 0x07, + 0x6e, 0x82, 0xe6, 0x90, 0x13, 0x1e, 0x9f, 0xee, 0x8d, 0xf9, 0x77, 0x45, 0x2c, 0x75, 0xe8, 0x36, + 0x14, 0x7d, 0x3a, 0x18, 0xf2, 0xb8, 0xec, 0x67, 0x8d, 0x22, 0xe5, 0xce, 0xff, 0x01, 0xb2, 0x27, + 0x42, 0x04, 0x50, 0xfa, 0x84, 0xf9, 0x63, 0xcb, 0x31, 0x2e, 0xa1, 0x32, 0x14, 0x9e, 0xb0, 0x53, + 0x43, 0x41, 0x3a, 0x68, 0x1f, 0xd3, 0xc1, 0xd0, 0x50, 0x77, 0x5a, 0xd0, 0x98, 0x7f, 0x17, 0x44, + 0x25, 0x50, 0x0f, 0xf7, 0x8c, 0x4b, 0xe2, 0x17, 0x77, 0x0c, 0x65, 0xa7, 0x0d, 0xea, 0x81, 0x27, + 0xa6, 0x76, 0x27, 0x3c, 0x5a, 0xe3, 0x01, 0x71, 0xa2, 0x35, 0xc4, 0x1e, 0x35, 0x54, 0x54, 0x03, + 0x3d, 0xb9, 0x85, 0x19, 0x85, 0xfb, 0x3b, 0xbf, 0xbf, 0xd9, 0x54, 0xfe, 0x78, 0xb3, 0xa9, 0xfc, + 0xf9, 0x66, 0x53, 0xf9, 0xe9, 0xaf, 0xcd, 0x4b, 0xd0, 0xb4, 0xd9, 0xb8, 0xed, 0x51, 0x77, 0x60, + 0x5b, 0x5e, 0x9b, 0xd3, 0xd1, 0xb4, 0x3d, 0x9a, 0xca, 0x77, 0xe6, 0xe3, 0x92, 0xfc, 0x79, 0xff, + 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5b, 0x32, 0xfb, 0xfb, 0xbb, 0x16, 0x00, 0x00, } diff --git a/_vendor/src/github.com/pingcap/kvproto/pkg/tikvpb/tikvpb.pb.go b/_vendor/src/github.com/pingcap/kvproto/pkg/tikvpb/tikvpb.pb.go index f4dba945e4..956df40649 100644 --- a/_vendor/src/github.com/pingcap/kvproto/pkg/tikvpb/tikvpb.pb.go +++ b/_vendor/src/github.com/pingcap/kvproto/pkg/tikvpb/tikvpb.pb.go @@ -74,6 +74,8 @@ type TikvClient interface { // Raft commands (tikv <-> tikv). Raft(ctx context.Context, opts ...grpc.CallOption) (Tikv_RaftClient, error) Snapshot(ctx context.Context, opts ...grpc.CallOption) (Tikv_SnapshotClient, error) + // Region commands. + SplitRegion(ctx context.Context, in *kvrpcpb.SplitRegionRequest, opts ...grpc.CallOption) (*kvrpcpb.SplitRegionResponse, error) // transaction debugger commands. MvccGetByKey(ctx context.Context, in *kvrpcpb.MvccGetByKeyRequest, opts ...grpc.CallOption) (*kvrpcpb.MvccGetByKeyResponse, error) MvccGetByStartTs(ctx context.Context, in *kvrpcpb.MvccGetByStartTsRequest, opts ...grpc.CallOption) (*kvrpcpb.MvccGetByStartTsResponse, error) @@ -308,6 +310,15 @@ func (x *tikvSnapshotClient) CloseAndRecv() (*raft_serverpb.Done, error) { return m, nil } +func (c *tikvClient) SplitRegion(ctx context.Context, in *kvrpcpb.SplitRegionRequest, opts ...grpc.CallOption) (*kvrpcpb.SplitRegionResponse, error) { + out := new(kvrpcpb.SplitRegionResponse) + err := grpc.Invoke(ctx, "/tikvpb.Tikv/SplitRegion", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *tikvClient) MvccGetByKey(ctx context.Context, in *kvrpcpb.MvccGetByKeyRequest, opts ...grpc.CallOption) (*kvrpcpb.MvccGetByKeyResponse, error) { out := new(kvrpcpb.MvccGetByKeyResponse) err := grpc.Invoke(ctx, "/tikvpb.Tikv/MvccGetByKey", in, out, c.cc, opts...) @@ -352,6 +363,8 @@ type TikvServer interface { // Raft commands (tikv <-> tikv). Raft(Tikv_RaftServer) error Snapshot(Tikv_SnapshotServer) error + // Region commands. + SplitRegion(context.Context, *kvrpcpb.SplitRegionRequest) (*kvrpcpb.SplitRegionResponse, error) // transaction debugger commands. MvccGetByKey(context.Context, *kvrpcpb.MvccGetByKeyRequest) (*kvrpcpb.MvccGetByKeyResponse, error) MvccGetByStartTs(context.Context, *kvrpcpb.MvccGetByStartTsRequest) (*kvrpcpb.MvccGetByStartTsResponse, error) @@ -719,6 +732,24 @@ func (x *tikvSnapshotServer) Recv() (*raft_serverpb.SnapshotChunk, error) { return m, nil } +func _Tikv_SplitRegion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(kvrpcpb.SplitRegionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TikvServer).SplitRegion(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tikvpb.Tikv/SplitRegion", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TikvServer).SplitRegion(ctx, req.(*kvrpcpb.SplitRegionRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Tikv_MvccGetByKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(kvrpcpb.MvccGetByKeyRequest) if err := dec(in); err != nil { @@ -827,6 +858,10 @@ var _Tikv_serviceDesc = grpc.ServiceDesc{ MethodName: "Coprocessor", Handler: _Tikv_Coprocessor_Handler, }, + { + MethodName: "SplitRegion", + Handler: _Tikv_SplitRegion_Handler, + }, { MethodName: "MvccGetByKey", Handler: _Tikv_MvccGetByKey_Handler, @@ -854,42 +889,43 @@ var _Tikv_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("tikvpb.proto", fileDescriptorTikvpb) } var fileDescriptorTikvpb = []byte{ - // 579 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x95, 0xdd, 0x8e, 0xd2, 0x4e, - 0x18, 0xc6, 0x97, 0x84, 0x3f, 0xff, 0xdd, 0xd9, 0xdd, 0xa8, 0x03, 0x2a, 0x5b, 0x77, 0x89, 0xee, - 0x91, 0xf1, 0xa0, 0xc6, 0x8f, 0xc4, 0x03, 0x3f, 0xa2, 0x94, 0x84, 0x98, 0x2e, 0x09, 0x29, 0x7b, - 0xe2, 0x91, 0x19, 0x26, 0xef, 0x02, 0x29, 0x74, 0xea, 0xcc, 0x30, 0x64, 0xaf, 0xc2, 0x53, 0x2f, - 0xc9, 0x43, 0x2f, 0xc1, 0xe0, 0x8d, 0x98, 0xb6, 0xcc, 0x74, 0x86, 0x82, 0x47, 0xb4, 0xbf, 0xe7, - 0x7d, 0x9e, 0xbe, 0xf3, 0x09, 0x3a, 0x91, 0xb3, 0x58, 0xa5, 0x63, 0x3f, 0xe5, 0x4c, 0x32, 0xdc, - 0x28, 0xde, 0xbc, 0x7b, 0x94, 0xa5, 0x9c, 0x51, 0x10, 0x82, 0xf1, 0x42, 0xf2, 0x4e, 0x63, 0xc5, - 0x53, 0xaa, 0x2b, 0xbd, 0x26, 0x27, 0x37, 0xf2, 0xab, 0x00, 0xae, 0x80, 0x1b, 0xd8, 0x9a, 0xb0, - 0x09, 0xcb, 0x1f, 0x9f, 0x67, 0x4f, 0x05, 0x7d, 0xf9, 0xfd, 0x18, 0xd5, 0xaf, 0x67, 0xb1, 0xc2, - 0xaf, 0xd1, 0x7f, 0xa1, 0xea, 0x83, 0xc4, 0x4d, 0x5f, 0x87, 0xf5, 0x41, 0x46, 0xf0, 0x6d, 0x09, - 0x42, 0x7a, 0x2d, 0x17, 0x8a, 0x94, 0x25, 0x02, 0x2e, 0x0f, 0xf0, 0x1b, 0xd4, 0x08, 0xd5, 0x88, - 0x92, 0x04, 0x97, 0x15, 0xd9, 0xab, 0xf6, 0xdd, 0xdf, 0xa2, 0xc6, 0x18, 0x20, 0x14, 0xaa, 0x21, - 0x87, 0x15, 0x9f, 0x49, 0xc0, 0x6d, 0x53, 0xa6, 0x91, 0x0e, 0x38, 0xdb, 0xa1, 0x98, 0x90, 0xf7, - 0xe8, 0x30, 0x54, 0x01, 0x5b, 0x2c, 0x66, 0x12, 0x3f, 0x30, 0x85, 0x05, 0xd0, 0x01, 0x0f, 0x2b, - 0xdc, 0xb5, 0x7f, 0x5e, 0xa4, 0x8c, 0xdb, 0xf6, 0x02, 0x54, 0xed, 0x9a, 0x1b, 0xfb, 0x47, 0x74, - 0x14, 0xaa, 0x60, 0x0e, 0x24, 0x59, 0xa6, 0xd8, 0xfa, 0x4c, 0x41, 0x74, 0x40, 0xbb, 0x2a, 0xb8, - 0x93, 0xd0, 0x25, 0x92, 0x4e, 0xb3, 0x89, 0x2f, 0x2b, 0x35, 0xaa, 0x4e, 0x42, 0xa9, 0x98, 0x90, - 0x08, 0xdd, 0xd9, 0x84, 0x44, 0x6c, 0x3e, 0x1f, 0x13, 0x1a, 0xe3, 0x0b, 0xb7, 0x5e, 0x73, 0x1d, - 0xd7, 0xd9, 0x27, 0xbb, 0x8d, 0x65, 0x2b, 0x76, 0xc5, 0x68, 0x6c, 0x35, 0xa6, 0x51, 0xb5, 0xb1, - 0x52, 0x31, 0x21, 0x57, 0xe8, 0x34, 0x54, 0x11, 0x08, 0x36, 0x57, 0x90, 0xe7, 0x3c, 0x32, 0xd5, - 0x16, 0xd5, 0x51, 0xe7, 0xbb, 0x45, 0x93, 0xf6, 0x02, 0xd5, 0x43, 0xd5, 0x0f, 0x30, 0x2e, 0x77, - 0x62, 0xa0, 0xbd, 0x4d, 0x87, 0xb9, 0x0d, 0xf4, 0x60, 0x0e, 0x12, 0x22, 0x92, 0x4c, 0xc0, 0x6a, - 0xc0, 0xa2, 0xd5, 0x06, 0x1c, 0xd1, 0xa4, 0xbd, 0x45, 0x8d, 0x88, 0xac, 0xb2, 0x85, 0x2a, 0xf7, - 0x4a, 0x01, 0xaa, 0x7b, 0x45, 0xf3, 0x2d, 0xf3, 0x70, 0xb9, 0x65, 0x1e, 0x2e, 0x77, 0x9b, 0x73, - 0x6e, 0xcc, 0x3d, 0x74, 0x14, 0x91, 0x55, 0xd1, 0x15, 0x3e, 0xb3, 0xeb, 0x36, 0x9d, 0x6e, 0x22, - 0xbc, 0x5d, 0x92, 0x49, 0xf9, 0x80, 0xfe, 0x8f, 0xc8, 0x2a, 0x3f, 0xab, 0xce, 0xb7, 0xec, 0xe3, - 0xda, 0xae, 0x0a, 0xc6, 0xff, 0x0e, 0x1d, 0x07, 0xe5, 0xc5, 0x83, 0x5b, 0xbe, 0x7d, 0x0d, 0x95, - 0xe7, 0xdd, 0xa5, 0xd6, 0x04, 0xd4, 0x23, 0x72, 0x23, 0xb1, 0xe7, 0xbb, 0x77, 0x53, 0x06, 0x07, - 0x20, 0x04, 0x99, 0x80, 0xd7, 0xdc, 0xd2, 0x7a, 0x2c, 0x81, 0xcb, 0x83, 0xa7, 0x35, 0xfc, 0x09, - 0x1d, 0x8e, 0x12, 0x92, 0x8a, 0x29, 0x93, 0xf8, 0x7c, 0xab, 0x48, 0x0b, 0xc1, 0x74, 0x99, 0xc4, - 0xfb, 0x23, 0x06, 0xe8, 0x64, 0xa0, 0x28, 0xed, 0x83, 0xec, 0xde, 0x86, 0x70, 0x8b, 0xcb, 0xd5, - 0xb6, 0xb1, 0x1e, 0xc6, 0xc5, 0x1e, 0xd5, 0x0c, 0xe7, 0x0b, 0xba, 0x6b, 0x94, 0x91, 0x24, 0x5c, - 0x5e, 0x0b, 0xfc, 0xb8, 0x6a, 0xda, 0x48, 0x3a, 0xf6, 0xc9, 0x3f, 0x2a, 0x74, 0x74, 0xf7, 0xd9, - 0xcf, 0x75, 0xa7, 0xf6, 0x6b, 0xdd, 0xa9, 0xfd, 0x5e, 0x77, 0x6a, 0x3f, 0xfe, 0x74, 0x0e, 0x50, - 0x9b, 0xb2, 0x85, 0x9f, 0xce, 0x92, 0x09, 0x25, 0xa9, 0x9f, 0xfd, 0x09, 0xf8, 0xb1, 0xca, 0x6f, - 0xef, 0x71, 0x23, 0xff, 0x79, 0xf5, 0x37, 0x00, 0x00, 0xff, 0xff, 0x04, 0xb8, 0x87, 0xcd, 0x29, - 0x06, 0x00, 0x00, + // 597 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x95, 0x4f, 0x6f, 0xd3, 0x30, + 0x18, 0xc6, 0x57, 0xa9, 0x94, 0xcd, 0xdd, 0x04, 0xb8, 0x05, 0xba, 0xb0, 0x55, 0xb0, 0x13, 0xe2, + 0x10, 0xc4, 0x1f, 0x89, 0x03, 0x7f, 0x04, 0x4d, 0xa5, 0x0a, 0xb2, 0x4a, 0x55, 0xba, 0x0b, 0x27, + 0xe4, 0x46, 0xef, 0xd2, 0x28, 0x69, 0x1c, 0x62, 0xd7, 0xd5, 0xbe, 0x09, 0x1f, 0x89, 0x23, 0x77, + 0x2e, 0xa8, 0x7c, 0x11, 0x94, 0xa4, 0x76, 0xec, 0xa6, 0xe5, 0xd4, 0xe4, 0xf7, 0xbc, 0xcf, 0x93, + 0xb7, 0xce, 0x6b, 0x07, 0x1d, 0xf3, 0x30, 0x12, 0xe9, 0xcc, 0x4e, 0x33, 0xca, 0x29, 0x6e, 0x95, + 0x77, 0xd6, 0x3d, 0x9f, 0xa6, 0x19, 0xf5, 0x81, 0x31, 0x9a, 0x95, 0x92, 0x75, 0x12, 0x89, 0x2c, + 0xf5, 0x65, 0xa5, 0xd5, 0xc9, 0xc8, 0x35, 0xff, 0xc6, 0x20, 0x13, 0x90, 0x29, 0xd8, 0x0d, 0x68, + 0x40, 0x8b, 0xcb, 0xe7, 0xf9, 0x55, 0x49, 0x5f, 0xfe, 0x6e, 0xa3, 0xe6, 0x55, 0x18, 0x09, 0xfc, + 0x1a, 0xdd, 0x72, 0xc5, 0x08, 0x38, 0xee, 0xd8, 0x32, 0x6c, 0x04, 0xdc, 0x83, 0xef, 0x4b, 0x60, + 0xdc, 0xea, 0x9a, 0x90, 0xa5, 0x34, 0x61, 0x70, 0x71, 0x80, 0xdf, 0xa0, 0x96, 0x2b, 0xa6, 0x3e, + 0x49, 0x70, 0x55, 0x91, 0xdf, 0x4a, 0xdf, 0xfd, 0x2d, 0xaa, 0x8c, 0x0e, 0x42, 0xae, 0x98, 0x64, + 0xb0, 0xca, 0x42, 0x0e, 0xb8, 0xa7, 0xca, 0x24, 0x92, 0x01, 0xa7, 0x3b, 0x14, 0x15, 0xf2, 0x1e, + 0x1d, 0xba, 0xc2, 0xa1, 0x8b, 0x45, 0xc8, 0xf1, 0x03, 0x55, 0x58, 0x02, 0x19, 0xf0, 0xb0, 0xc6, + 0x4d, 0xfb, 0xe7, 0x45, 0x4a, 0x33, 0xdd, 0x5e, 0x82, 0xba, 0x5d, 0x72, 0x65, 0xff, 0x88, 0x8e, + 0x5c, 0xe1, 0xc4, 0x40, 0x92, 0x65, 0x8a, 0xb5, 0xc7, 0x94, 0x44, 0x06, 0xf4, 0xea, 0x82, 0xb9, + 0x08, 0x03, 0xc2, 0xfd, 0x79, 0xbe, 0xf0, 0x55, 0xa5, 0x44, 0xf5, 0x45, 0xa8, 0x14, 0x15, 0xe2, + 0xa1, 0x3b, 0x9b, 0x10, 0x8f, 0xc6, 0xf1, 0x8c, 0xf8, 0x11, 0x3e, 0x37, 0xeb, 0x25, 0x97, 0x71, + 0xfd, 0x7d, 0xb2, 0xd9, 0x58, 0xfe, 0xc6, 0x2e, 0xa9, 0x1f, 0x69, 0x8d, 0x49, 0x54, 0x6f, 0xac, + 0x52, 0x54, 0xc8, 0x25, 0x3a, 0x71, 0x85, 0x07, 0x8c, 0xc6, 0x02, 0x8a, 0x9c, 0x47, 0xaa, 0x5a, + 0xa3, 0x32, 0xea, 0x6c, 0xb7, 0xa8, 0xd2, 0x5e, 0xa0, 0xa6, 0x2b, 0x46, 0x0e, 0xc6, 0xd5, 0x24, + 0x3a, 0xd2, 0xdb, 0x31, 0x98, 0xd9, 0xc0, 0x10, 0x62, 0xe0, 0xe0, 0x91, 0x24, 0x00, 0xad, 0x01, + 0x8d, 0xd6, 0x1b, 0x30, 0x44, 0x95, 0xf6, 0x16, 0xb5, 0x3c, 0xb2, 0xca, 0x5f, 0x54, 0x35, 0x2b, + 0x25, 0xa8, 0xcf, 0x8a, 0xe4, 0x5b, 0xe6, 0xc9, 0x72, 0xcb, 0x3c, 0x59, 0xee, 0x36, 0x17, 0x5c, + 0x99, 0x87, 0xe8, 0xc8, 0x23, 0xab, 0xb2, 0x2b, 0x7c, 0xaa, 0xd7, 0x6d, 0x3a, 0xdd, 0x44, 0x58, + 0xbb, 0x24, 0x95, 0xf2, 0x01, 0xdd, 0xf6, 0xc8, 0xaa, 0xd8, 0xab, 0xc6, 0xb3, 0xf4, 0xed, 0xda, + 0xab, 0x0b, 0xca, 0xff, 0x0e, 0xb5, 0x9d, 0xea, 0xe0, 0xc1, 0x5d, 0x5b, 0x3f, 0x86, 0xaa, 0xfd, + 0x6e, 0x52, 0x6d, 0x01, 0x9a, 0x1e, 0xb9, 0xe6, 0xd8, 0xb2, 0xcd, 0xb3, 0x29, 0x87, 0x63, 0x60, + 0x8c, 0x04, 0x60, 0x75, 0xb6, 0xb4, 0x21, 0x4d, 0xe0, 0xe2, 0xe0, 0x69, 0x03, 0x7f, 0x42, 0x87, + 0xd3, 0x84, 0xa4, 0x6c, 0x4e, 0x39, 0x3e, 0xdb, 0x2a, 0x92, 0x82, 0x33, 0x5f, 0x26, 0xd1, 0xfe, + 0x88, 0x2f, 0xa8, 0x3d, 0x4d, 0xe3, 0x7c, 0xfb, 0x07, 0x21, 0x4d, 0xb4, 0x49, 0xd0, 0x68, 0x7d, + 0x12, 0x0c, 0x51, 0xfd, 0x97, 0x31, 0x3a, 0x1e, 0x0b, 0xdf, 0x1f, 0x01, 0x1f, 0xdc, 0xb8, 0x70, + 0x83, 0xab, 0x7a, 0x1d, 0xcb, 0xb4, 0xf3, 0x3d, 0xaa, 0x8a, 0xfb, 0x8a, 0xee, 0x2a, 0x65, 0xca, + 0x49, 0xc6, 0xaf, 0x18, 0x7e, 0x5c, 0x37, 0x6d, 0x24, 0x19, 0xfb, 0xe4, 0x3f, 0x15, 0x32, 0x7a, + 0xf0, 0xec, 0xe7, 0xba, 0xdf, 0xf8, 0xb5, 0xee, 0x37, 0xfe, 0xac, 0xfb, 0x8d, 0x1f, 0x7f, 0xfb, + 0x07, 0xa8, 0xe7, 0xd3, 0x85, 0x9d, 0x86, 0x49, 0xe0, 0x93, 0xd4, 0xce, 0x3f, 0x28, 0x76, 0x24, + 0x8a, 0x2f, 0xc1, 0xac, 0x55, 0xfc, 0xbc, 0xfa, 0x17, 0x00, 0x00, 0xff, 0xff, 0x0e, 0x4a, 0xad, + 0x04, 0x75, 0x06, 0x00, 0x00, } diff --git a/config/config.go b/config/config.go index e75e62ef12..84e296fcd1 100644 --- a/config/config.go +++ b/config/config.go @@ -29,6 +29,7 @@ type Config struct { BinlogSocket string `toml:"binlog-socket" json:"binlog-socket"` Lease string `toml:"lease" json:"lease"` RunDDL bool `toml:"run-ddl" json:"run-ddl"` + SplitTable bool `toml:"split-table" json:"split-table"` Log Log `toml:"log" json:"log"` Security Security `toml:"security" json:"security"` diff --git a/config/config.toml.example b/config/config.toml.example index a1b1730172..3dc3c52b42 100644 --- a/config/config.toml.example +++ b/config/config.toml.example @@ -24,6 +24,9 @@ run-ddl = true # Schema lease duration, very dangerous to change only if you know what you do. lease = "10s" +# When create table, split a separated region for it. +# split-table = false + [log] # Log level: info, debug, warn, error, fatal. level = "info" diff --git a/ddl/ddl.go b/ddl/ddl.go index e4131a6bbc..2443457409 100644 --- a/ddl/ddl.go +++ b/ddl/ddl.go @@ -53,6 +53,10 @@ var ( // TableColumnCountLimit is limit of the number of columns in a table. // It's exported for testing. TableColumnCountLimit = 512 + // EnableSplitTableRegion is a flag to decide whether to split a new region for + // a newly created table. It takes effect only if the Storage supports split + // region. + EnableSplitTableRegion = false ) var ( diff --git a/ddl/table.go b/ddl/table.go index 14c36205f8..6c609d0607 100644 --- a/ddl/table.go +++ b/ddl/table.go @@ -18,6 +18,7 @@ import ( "github.com/juju/errors" "github.com/pingcap/tidb/infoschema" + "github.com/pingcap/tidb/kv" "github.com/pingcap/tidb/meta" "github.com/pingcap/tidb/meta/autoid" "github.com/pingcap/tidb/model" @@ -54,6 +55,12 @@ func (d *ddl) onCreateTable(t *meta.Meta, job *model.Job) (ver int64, _ error) { if err != nil { return ver, errors.Trace(err) } + if EnableSplitTableRegion { + err = d.splitTableRegion(tbInfo.ID) + if err != nil { + return ver, errors.Trace(err) + } + } // Finish this job. job.State = model.JobDone job.BinlogInfo.AddTableInfo(ver, tbInfo) @@ -124,6 +131,25 @@ func (d *ddl) onDropTable(t *meta.Meta, job *model.Job) (ver int64, _ error) { return ver, errors.Trace(err) } +func (d *ddl) splitTableRegion(tableID int64) error { + type splitableStore interface { + SplitRegion(splitKey kv.Key) error + } + store, ok := d.store.(splitableStore) + if !ok { + return nil + } + tableStartKey := tablecodec.GenTablePrefix(tableID) + if err := store.SplitRegion(tableStartKey); err != nil { + return errors.Trace(err) + } + nextTableStartKey := tablecodec.GenTablePrefix(tableID + 1) + if err := store.SplitRegion(nextTableStartKey); err != nil { + return errors.Trace(err) + } + return nil +} + // Maximum number of keys to delete for each reorg table job run. var reorgTableDeleteLimit = 65536 diff --git a/ddl/table_split_test.go b/ddl/table_split_test.go new file mode 100644 index 0000000000..15f7756921 --- /dev/null +++ b/ddl/table_split_test.go @@ -0,0 +1,54 @@ +// Copyright 2017 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// See the License for the specific language governing permissions and +// limitations under the License. + +package ddl_test + +import ( + . "github.com/pingcap/check" + "github.com/pingcap/tidb" + "github.com/pingcap/tidb/ddl" + "github.com/pingcap/tidb/model" + "github.com/pingcap/tidb/store/tikv" + "github.com/pingcap/tidb/tablecodec" + "golang.org/x/net/context" +) + +type testDDLTableSplitSuite struct{} + +var _ = Suite(&testDDLTableSplitSuite{}) + +func (s *testDDLTableSplitSuite) TestTableSplit(c *C) { + store, err := tikv.NewMockTikvStore() + c.Assert(err, IsNil) + tidb.SetSchemaLease(0) + tidb.SetStatsLease(0) + ddl.EnableSplitTableRegion = true + dom, err := tidb.BootstrapSession(store) + c.Assert(err, IsNil) + ddl.EnableSplitTableRegion = false + infoSchema := dom.InfoSchema() + c.Assert(infoSchema, NotNil) + t, err := infoSchema.TableByName(model.NewCIStr("mysql"), model.NewCIStr("tidb")) + c.Assert(err, IsNil) + regionStartKey := tablecodec.EncodeTablePrefix(t.Meta().ID) + regionEndKey := tablecodec.EncodeTablePrefix(t.Meta().ID + 1) + + type kvStore interface { + GetRegionCache() *tikv.RegionCache + } + cache := store.(kvStore).GetRegionCache() + loc, err := cache.LocateKey(tikv.NewBackoffer(5000, context.Background()), regionStartKey) + c.Assert(err, IsNil) + c.Assert(loc.StartKey, BytesEquals, []byte(regionStartKey)) + c.Assert(loc.EndKey, BytesEquals, []byte(regionEndKey)) +} diff --git a/glide.lock b/glide.lock index 0b03d451f0..8d11e3da20 100644 --- a/glide.lock +++ b/glide.lock @@ -121,7 +121,7 @@ imports: - leveldb/table - leveldb/util - name: github.com/pingcap/kvproto - version: bef5d90e19c200dff99effb226a5bc336ee6b258 + version: ef910f10e3ee568b62a12aa881f430acad2acba9 subpackages: - pkg/coprocessor - pkg/eraftpb diff --git a/glide.yaml b/glide.yaml index 2fe6f3b4b4..c23ca03962 100644 --- a/glide.yaml +++ b/glide.yaml @@ -158,7 +158,7 @@ import: - go-tipb - sharedbytes - package: github.com/pingcap/kvproto - version: bef5d90e19c200dff99effb226a5bc336ee6b258 + version: ef910f10e3ee568b62a12aa881f430acad2acba9 - package: github.com/gogo/protobuf version: ^0.3.0 subpackages: diff --git a/store/tikv/backoff.go b/store/tikv/backoff.go index 0ab1f1a368..788c5fe314 100644 --- a/store/tikv/backoff.go +++ b/store/tikv/backoff.go @@ -128,6 +128,7 @@ const ( gcResolveLockMaxBackoff = 100000 gcDeleteRangeMaxBackoff = 100000 rawkvMaxBackoff = 20000 + splitRegionBackoff = 20000 ) var commitMaxBackoff = 20000 diff --git a/store/tikv/client.go b/store/tikv/client.go index 227c92b20c..fb5de878b8 100644 --- a/store/tikv/client.go +++ b/store/tikv/client.go @@ -186,136 +186,53 @@ func (c *rpcClient) SendReq(ctx goctx.Context, addr string, req *tikvrpc.Request func (c *rpcClient) callRPC(ctx goctx.Context, client tikvpb.TikvClient, req *tikvrpc.Request) (*tikvrpc.Response, error) { resp := &tikvrpc.Response{} resp.Type = req.Type + var err error switch req.Type { case tikvrpc.CmdGet: - r, err := client.KvGet(ctx, req.Get) - if err != nil { - return nil, errors.Trace(err) - } - resp.Get = r - return resp, nil + resp.Get, err = client.KvGet(ctx, req.Get) case tikvrpc.CmdScan: - r, err := client.KvScan(ctx, req.Scan) - if err != nil { - return nil, errors.Trace(err) - } - resp.Scan = r - return resp, nil + resp.Scan, err = client.KvScan(ctx, req.Scan) case tikvrpc.CmdPrewrite: - r, err := client.KvPrewrite(ctx, req.Prewrite) - if err != nil { - return nil, errors.Trace(err) - } - resp.Prewrite = r - return resp, nil + resp.Prewrite, err = client.KvPrewrite(ctx, req.Prewrite) case tikvrpc.CmdCommit: - r, err := client.KvCommit(ctx, req.Commit) - if err != nil { - return nil, errors.Trace(err) - } - resp.Commit = r - return resp, nil + resp.Commit, err = client.KvCommit(ctx, req.Commit) case tikvrpc.CmdCleanup: - r, err := client.KvCleanup(ctx, req.Cleanup) - if err != nil { - return nil, errors.Trace(err) - } - resp.Cleanup = r - return resp, nil + resp.Cleanup, err = client.KvCleanup(ctx, req.Cleanup) case tikvrpc.CmdBatchGet: - r, err := client.KvBatchGet(ctx, req.BatchGet) - if err != nil { - return nil, errors.Trace(err) - } - resp.BatchGet = r - return resp, nil + resp.BatchGet, err = client.KvBatchGet(ctx, req.BatchGet) case tikvrpc.CmdBatchRollback: - r, err := client.KvBatchRollback(ctx, req.BatchRollback) - if err != nil { - return nil, errors.Trace(err) - } - resp.BatchRollback = r - return resp, nil + resp.BatchRollback, err = client.KvBatchRollback(ctx, req.BatchRollback) case tikvrpc.CmdScanLock: - r, err := client.KvScanLock(ctx, req.ScanLock) - if err != nil { - return nil, errors.Trace(err) - } - resp.ScanLock = r - return resp, nil + resp.ScanLock, err = client.KvScanLock(ctx, req.ScanLock) case tikvrpc.CmdResolveLock: - r, err := client.KvResolveLock(ctx, req.ResolveLock) - if err != nil { - return nil, errors.Trace(err) - } - resp.ResolveLock = r - return resp, nil + resp.ResolveLock, err = client.KvResolveLock(ctx, req.ResolveLock) case tikvrpc.CmdGC: - r, err := client.KvGC(ctx, req.GC) - if err != nil { - return nil, errors.Trace(err) - } - resp.GC = r - return resp, nil + resp.GC, err = client.KvGC(ctx, req.GC) case tikvrpc.CmdDeleteRange: - r, err := client.KvDeleteRange(ctx, req.DeleteRange) - if err != nil { - return nil, errors.Trace(err) - } - resp.DeleteRange = r - return resp, nil + resp.DeleteRange, err = client.KvDeleteRange(ctx, req.DeleteRange) case tikvrpc.CmdRawGet: - r, err := client.RawGet(ctx, req.RawGet) - if err != nil { - return nil, errors.Trace(err) - } - resp.RawGet = r - return resp, nil + resp.RawGet, err = client.RawGet(ctx, req.RawGet) case tikvrpc.CmdRawPut: - r, err := client.RawPut(ctx, req.RawPut) - if err != nil { - return nil, errors.Trace(err) - } - resp.RawPut = r - return resp, nil + resp.RawPut, err = client.RawPut(ctx, req.RawPut) case tikvrpc.CmdRawDelete: - r, err := client.RawDelete(ctx, req.RawDelete) - if err != nil { - return nil, errors.Trace(err) - } - resp.RawDelete = r - return resp, nil + resp.RawDelete, err = client.RawDelete(ctx, req.RawDelete) case tikvrpc.CmdRawScan: - r, err := client.RawScan(ctx, req.RawScan) - if err != nil { - return nil, errors.Trace(err) - } - resp.RawScan = r - return resp, nil + resp.RawScan, err = client.RawScan(ctx, req.RawScan) case tikvrpc.CmdCop: - r, err := client.Coprocessor(ctx, req.Cop) - if err != nil { - return nil, errors.Trace(err) - } - resp.Cop = r - return resp, nil + resp.Cop, err = client.Coprocessor(ctx, req.Cop) case tikvrpc.CmdMvccGetByKey: - r, err := client.MvccGetByKey(ctx, req.MvccGetByKey) - if err != nil { - return nil, errors.Trace(err) - } - resp.MvccGetByKey = r - return resp, nil + resp.MvccGetByKey, err = client.MvccGetByKey(ctx, req.MvccGetByKey) case tikvrpc.CmdMvccGetByStartTs: - r, err := client.MvccGetByStartTs(ctx, req.MvccGetByStartTs) - if err != nil { - return nil, errors.Trace(err) - } - resp.MvccGetByStartTS = r - return resp, nil + resp.MvccGetByStartTS, err = client.MvccGetByStartTs(ctx, req.MvccGetByStartTs) + case tikvrpc.CmdSplitRegion: + resp.SplitRegion, err = client.SplitRegion(ctx, req.SplitRegion) default: return nil, errors.Errorf("invalid request type: %v", req.Type) } + if err != nil { + return nil, errors.Trace(err) + } + return resp, nil } func (c *rpcClient) Close() error { diff --git a/store/tikv/mock-tikv/rpc.go b/store/tikv/mock-tikv/rpc.go index 057fc4994e..d43cb7514a 100644 --- a/store/tikv/mock-tikv/rpc.go +++ b/store/tikv/mock-tikv/rpc.go @@ -14,6 +14,7 @@ package mocktikv import ( + "bytes" "io" "github.com/golang/protobuf/proto" @@ -396,6 +397,17 @@ func (h *rpcHandler) handleKvRawScan(req *kvrpcpb.RawScanRequest) *kvrpcpb.RawSc } } +func (h *rpcHandler) handleSplitRegion(req *kvrpcpb.SplitRegionRequest) *kvrpcpb.SplitRegionResponse { + key := NewMvccKey(req.GetSplitKey()) + region, _ := h.cluster.GetRegionByKey(key) + if bytes.Equal(region.GetStartKey(), key) { + return &kvrpcpb.SplitRegionResponse{} + } + newRegionID, newPeerIDs := h.cluster.AllocID(), h.cluster.AllocIDs(len(region.Peers)) + h.cluster.SplitRaw(region.GetId(), newRegionID, key, newPeerIDs, newPeerIDs[0]) + return &kvrpcpb.SplitRegionResponse{} +} + // RPCClient sends kv RPC calls to mock cluster. type RPCClient struct { Cluster *Cluster @@ -596,6 +608,13 @@ func (c *RPCClient) SendReq(ctx goctx.Context, addr string, req *tikvrpc.Request return resp, nil } resp.MvccGetByStartTS = handler.handleMvccGetByStartTS(r) + case tikvrpc.CmdSplitRegion: + r := req.SplitRegion + if err := handler.checkRequest(reqCtx, r.Size()); err != nil { + resp.SplitRegion = &kvrpcpb.SplitRegionResponse{RegionError: err} + return resp, nil + } + resp.SplitRegion = handler.handleSplitRegion(r) default: return nil, errors.Errorf("unsupport this request type %v", req.Type) } diff --git a/store/tikv/region_request_test.go b/store/tikv/region_request_test.go index c00edad0cb..534c0d7461 100644 --- a/store/tikv/region_request_test.go +++ b/store/tikv/region_request_test.go @@ -223,6 +223,9 @@ func (s *mockTikvGrpcServer) MvccGetByKey(goctx.Context, *kvrpcpb.MvccGetByKeyRe func (s *mockTikvGrpcServer) MvccGetByStartTs(goctx.Context, *kvrpcpb.MvccGetByStartTsRequest) (*kvrpcpb.MvccGetByStartTsResponse, error) { return nil, errors.New("unreachable") } +func (s *mockTikvGrpcServer) SplitRegion(goctx.Context, *kvrpcpb.SplitRegionRequest) (*kvrpcpb.SplitRegionResponse, error) { + return nil, errors.New("unreachable") +} func (s *testRegionRequestSuite) TestNoReloadRegionForGrpcWhenCtxCanceled(c *C) { // prepare a mock tikv grpc server diff --git a/store/tikv/split_region.go b/store/tikv/split_region.go new file mode 100644 index 0000000000..f431a450fc --- /dev/null +++ b/store/tikv/split_region.go @@ -0,0 +1,67 @@ +// Copyright 2017 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// See the License for the specific language governing permissions and +// limitations under the License. + +package tikv + +import ( + "bytes" + + log "github.com/Sirupsen/logrus" + "github.com/juju/errors" + "github.com/pingcap/kvproto/pkg/kvrpcpb" + "github.com/pingcap/tidb/kv" + "github.com/pingcap/tidb/store/tikv/tikvrpc" + goctx "golang.org/x/net/context" +) + +// SplitRegion splits the region contains splitKey into 2 regions: [start, +// splitKey) and [splitKey, end). +func (s *tikvStore) SplitRegion(splitKey kv.Key) error { + log.Infof("start split_region at %q", splitKey) + bo := NewBackoffer(splitRegionBackoff, goctx.Background()) + sender := NewRegionRequestSender(s.regionCache, s.client, kvrpcpb.IsolationLevel_SI) + req := &tikvrpc.Request{ + Type: tikvrpc.CmdSplitRegion, + Priority: kvrpcpb.CommandPri_Normal, + SplitRegion: &kvrpcpb.SplitRegionRequest{ + SplitKey: splitKey, + }, + } + for { + loc, err := s.regionCache.LocateKey(bo, splitKey) + if err != nil { + return errors.Trace(err) + } + if bytes.Equal(splitKey, loc.StartKey) { + log.Infof("skip split_region region at %q", splitKey) + return nil + } + res, err := sender.SendReq(bo, req, loc.Region, readTimeoutShort) + if err != nil { + return errors.Trace(err) + } + regionErr, err := res.GetRegionError() + if err != nil { + return errors.Trace(err) + } + if regionErr != nil { + err := bo.Backoff(boRegionMiss, errors.New(regionErr.String())) + if err != nil { + return errors.Trace(err) + } + continue + } + log.Infof("split_region at %q complete, new regions: %v, %v", splitKey, res.SplitRegion.GetLeft(), res.SplitRegion.GetRight()) + return nil + } +} diff --git a/store/tikv/tikvrpc/tikvrpc.go b/store/tikv/tikvrpc/tikvrpc.go index 0a4724bf1a..0e40d5bd53 100644 --- a/store/tikv/tikvrpc/tikvrpc.go +++ b/store/tikv/tikvrpc/tikvrpc.go @@ -47,6 +47,7 @@ const ( CmdMvccGetByKey CmdType = 1024 + iota CmdMvccGetByStartTs + CmdSplitRegion ) // Request wraps all kv/coprocessor requests. @@ -71,6 +72,7 @@ type Request struct { Cop *coprocessor.Request MvccGetByKey *kvrpcpb.MvccGetByKeyRequest MvccGetByStartTs *kvrpcpb.MvccGetByStartTsRequest + SplitRegion *kvrpcpb.SplitRegionRequest } // GetContext returns the rpc context for the underlying concrete request. @@ -113,6 +115,8 @@ func (req *Request) GetContext() (*kvrpcpb.Context, error) { c = req.MvccGetByKey.GetContext() case CmdMvccGetByStartTs: c = req.MvccGetByStartTs.GetContext() + case CmdSplitRegion: + c = req.SplitRegion.GetContext() default: return nil, fmt.Errorf("invalid request type %v", req.Type) } @@ -140,6 +144,7 @@ type Response struct { Cop *coprocessor.Response MvccGetByKey *kvrpcpb.MvccGetByKeyResponse MvccGetByStartTS *kvrpcpb.MvccGetByStartTsResponse + SplitRegion *kvrpcpb.SplitRegionResponse } // SetContext set the Context field for the given req to the specified ctx. @@ -182,6 +187,8 @@ func SetContext(req *Request, ctx *kvrpcpb.Context) error { req.MvccGetByKey.Context = ctx case CmdMvccGetByStartTs: req.MvccGetByStartTs.Context = ctx + case CmdSplitRegion: + req.SplitRegion.Context = ctx default: return fmt.Errorf("invalid request type %v", req.Type) } @@ -266,6 +273,10 @@ func GenRegionErrorResp(req *Request, e *errorpb.Error) (*Response, error) { resp.MvccGetByStartTS = &kvrpcpb.MvccGetByStartTsResponse{ RegionError: e, } + case CmdSplitRegion: + resp.SplitRegion = &kvrpcpb.SplitRegionResponse{ + RegionError: e, + } default: return nil, fmt.Errorf("invalid request type %v", req.Type) } @@ -312,6 +323,8 @@ func (resp *Response) GetRegionError() (*errorpb.Error, error) { e = resp.MvccGetByKey.GetRegionError() case CmdMvccGetByStartTs: e = resp.MvccGetByStartTS.GetRegionError() + case CmdSplitRegion: + e = resp.SplitRegion.GetRegionError() default: return nil, fmt.Errorf("invalid response type %v", resp.Type) } diff --git a/tablecodec/tablecodec.go b/tablecodec/tablecodec.go index ae0c721ce9..63dacbd9ab 100644 --- a/tablecodec/tablecodec.go +++ b/tablecodec/tablecodec.go @@ -513,6 +513,14 @@ func GenTableIndexPrefix(tableID int64) kv.Key { return appendTableIndexPrefix(buf, tableID) } +// GenTablePrefix composes table record and index prefix: "t[tableID]". +func GenTablePrefix(tableID int64) kv.Key { + buf := make([]byte, 0, len(tablePrefix)+8) + buf = append(buf, tablePrefix...) + buf = codec.EncodeInt(buf, tableID) + return buf +} + // TruncateToRowKeyLen truncates the key to row key length if the key is longer than row key. func TruncateToRowKeyLen(key kv.Key) kv.Key { if len(key) > recordRowKeyLen { diff --git a/tidb-server/main.go b/tidb-server/main.go index f1a09a1ced..dae8ae7c47 100644 --- a/tidb-server/main.go +++ b/tidb-server/main.go @@ -318,6 +318,7 @@ func setGlobalVars() { statsLeaseDuration := parseLease(cfg.Performance.StatsLease) tidb.SetStatsLease(statsLeaseDuration) ddl.RunWorker = cfg.RunDDL + ddl.EnableSplitTableRegion = cfg.SplitTable tidb.SetCommitRetryLimit(cfg.Performance.RetryLimit) plan.JoinConcurrency = cfg.Performance.JoinConcurrency plan.AllowCartesianProduct = cfg.Performance.CrossJoin