diff --git a/pkg/meta/meta.go b/pkg/meta/meta.go index 838c57f83..4c2a3bd8c 100644 --- a/pkg/meta/meta.go +++ b/pkg/meta/meta.go @@ -272,6 +272,9 @@ func processAlterDistribution(ctx context.Context, astmt spqrparser.Statement, m rels := []*distributions.DistributedRelation{} for _, drel := range stmt.Relations { + if stmt.Distribution.Replicated && !drel.ReplicatedRelation { + return spqrerror.New(spqrerror.SPQR_NO_DISTRIBUTION, "non replicated relation should be attached to non replicated distribution") + } rels = append(rels, distributions.DistributedRelationFromSQL(drel)) } diff --git a/pkg/models/distributions/distribution.go b/pkg/models/distributions/distribution.go index ca040f183..ff5cef42a 100644 --- a/pkg/models/distributions/distribution.go +++ b/pkg/models/distributions/distribution.go @@ -12,8 +12,9 @@ type DistributionKeyEntry struct { } type DistributedRelation struct { - Name string - DistributionKey []DistributionKeyEntry + Name string + DistributionKey []DistributionKeyEntry + ReplicatedRelation bool } // DistributedRelationFromDB creates a DistributedRelation object from a qdb.DistributedRelation object. @@ -35,6 +36,8 @@ func DistributedRelationFromDB(rel *qdb.DistributedRelation) *DistributedRelatio }) } + rdistr.ReplicatedRelation = rel.ReplicatedRelation + return rdistr } @@ -58,6 +61,8 @@ func DistributedRelationToDB(rel *DistributedRelation) *qdb.DistributedRelation }) } + rdistr.ReplicatedRelation = rel.ReplicatedRelation + return rdistr } @@ -81,6 +86,8 @@ func DistributedRelatitonToProto(rel *DistributedRelation) *proto.DistributedRel }) } + rdistr.ReplicatedRelation = rel.ReplicatedRelation + return rdistr } @@ -103,6 +110,8 @@ func DistributedRelationFromProto(rel *proto.DistributedRelation) *DistributedRe }) } + rdistr.ReplicatedRelation = rel.ReplicatedRelation + return rdistr } @@ -125,6 +134,8 @@ func DistributedRelationFromSQL(rel *spqrparser.DistributedRelation) *Distribute }) } + rdistr.ReplicatedRelation = rel.ReplicatedRelation + return rdistr } diff --git a/pkg/protos/distribution.pb.go b/pkg/protos/distribution.pb.go index 980aab253..3d9595abf 100644 --- a/pkg/protos/distribution.pb.go +++ b/pkg/protos/distribution.pb.go @@ -80,8 +80,9 @@ type DistributedRelation struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - DistributionKey []*DistributionKeyEntry `protobuf:"bytes,2,rep,name=distributionKey,proto3" json:"distributionKey,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + DistributionKey []*DistributionKeyEntry `protobuf:"bytes,2,rep,name=distributionKey,proto3" json:"distributionKey,omitempty"` + ReplicatedRelation bool `protobuf:"varint,3,opt,name=ReplicatedRelation,proto3" json:"ReplicatedRelation,omitempty"` } func (x *DistributedRelation) Reset() { @@ -130,6 +131,13 @@ func (x *DistributedRelation) GetDistributionKey() []*DistributionKeyEntry { return nil } +func (x *DistributedRelation) GetReplicatedRelation() bool { + if x != nil { + return x.ReplicatedRelation + } + return false +} + type Distribution struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -840,117 +848,120 @@ var file_protos_distribution_proto_rawDesc = []byte{ 0x75, 0x6d, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x68, 0x61, 0x73, 0x68, 0x46, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6f, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x44, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x71, 0x72, - 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x22, 0x79, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, - 0x71, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x52, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0x55, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, - 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x44, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x1a, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x52, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x38, 0x0a, 0x0d, 0x64, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x2b, 0x0a, 0x17, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, - 0x22, 0x17, 0x0a, 0x15, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x8b, 0x01, 0x0a, 0x1e, 0x41, 0x6c, - 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, - 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x37, - 0x0a, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x41, 0x6c, 0x74, 0x65, 0x72, - 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x4c, 0x0a, 0x1e, 0x41, 0x6c, 0x74, 0x65, 0x72, - 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6c, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x28, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x74, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9f, 0x01, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x44, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x71, + 0x72, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, + 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x12, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x79, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x43, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, + 0x70, 0x71, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x52, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0x55, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x38, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x44, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1a, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0x52, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x38, 0x0a, 0x0d, 0x64, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2b, 0x0a, 0x17, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x4e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x73, 0x70, 0x71, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x30, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x56, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x12, 0x36, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x44, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x98, 0x05, 0x0a, 0x13, 0x44, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x56, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, + 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, + 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x8b, 0x01, 0x0a, 0x1e, 0x41, + 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, + 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, + 0x37, 0x0a, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x4c, 0x0a, 0x1e, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, + 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, + 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, + 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x63, + 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x28, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x22, 0x4e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x30, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x56, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, + 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x98, 0x05, 0x0a, 0x13, 0x44, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x56, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x10, 0x44, 0x72, 0x6f, - 0x70, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x70, 0x71, 0x72, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x10, 0x44, 0x72, + 0x6f, 0x70, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, + 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, - 0x70, 0x71, 0x72, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x11, 0x4c, - 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x1e, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1c, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, - 0x12, 0x65, 0x0a, 0x17, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x12, 0x24, 0x2e, 0x73, 0x70, - 0x71, 0x72, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x17, 0x41, 0x6c, 0x74, 0x65, 0x72, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x11, + 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, + 0x00, 0x12, 0x65, 0x0a, 0x17, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x12, 0x24, 0x2e, 0x73, + 0x70, 0x71, 0x72, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x17, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, + 0x61, 0x63, 0x68, 0x12, 0x24, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, - 0x63, 0x68, 0x12, 0x24, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x63, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, - 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4d, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1c, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x70, 0x71, 0x72, + 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, + 0x4d, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1a, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x65, + 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x73, 0x70, 0x71, 0x72, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1a, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x65, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, - 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x22, 0x00, 0x42, 0x0c, 0x5a, 0x0a, 0x73, 0x70, 0x71, 0x72, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x22, 0x2e, 0x73, 0x70, 0x71, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x22, 0x00, 0x42, 0x0c, 0x5a, 0x0a, 0x73, 0x70, 0x71, 0x72, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protos/distribution.proto b/protos/distribution.proto index abf237592..270666bd2 100644 --- a/protos/distribution.proto +++ b/protos/distribution.proto @@ -12,6 +12,7 @@ message DistributionKeyEntry { message DistributedRelation { string name = 1; repeated DistributionKeyEntry distributionKey = 2; + bool ReplicatedRelation = 3; } message Distribution { diff --git a/qdb/models.go b/qdb/models.go index 934ce067a..50b52483a 100644 --- a/qdb/models.go +++ b/qdb/models.go @@ -82,8 +82,9 @@ type DistributionKeyEntry struct { } type DistributedRelation struct { - Name string `json:"name"` - DistributionKey []DistributionKeyEntry `json:"column_names"` + Name string `json:"name"` + DistributionKey []DistributionKeyEntry `json:"column_names"` + ReplicatedRelation bool `json:"replicated_relation,omitempty"` } type Distribution struct { diff --git a/yacc/console/ast.go b/yacc/console/ast.go index 9fc07f2c4..b61fac1d3 100644 --- a/yacc/console/ast.go +++ b/yacc/console/ast.go @@ -152,7 +152,8 @@ type ShardingRuleSelector struct { } type DistributionSelector struct { - ID string + ID string + Replicated bool } type ShardSelector struct { @@ -225,8 +226,9 @@ type DistributionKeyEntry struct { } type DistributedRelation struct { - Name string - DistributionKey []DistributionKeyEntry + Name string + DistributionKey []DistributionKeyEntry + ReplicatedRelation bool } type AttachRelation struct { diff --git a/yacc/console/gram.go b/yacc/console/gram.go index 5116ed182..e206a779b 100644 --- a/yacc/console/gram.go +++ b/yacc/console/gram.go @@ -133,42 +133,43 @@ const KEY = 57384 const RANGE = 57385 const DISTRIBUTION = 57386 const RELATION = 57387 -const SHARDS = 57388 -const KEY_RANGES = 57389 -const ROUTERS = 57390 -const SHARD = 57391 -const HOST = 57392 -const SHARDING_RULES = 57393 -const RULE = 57394 -const COLUMNS = 57395 -const VERSION = 57396 -const HOSTS = 57397 -const BY = 57398 -const FROM = 57399 -const TO = 57400 -const WITH = 57401 -const UNITE = 57402 -const ALL = 57403 -const ADDRESS = 57404 -const FOR = 57405 -const CLIENT = 57406 -const IDENTITY = 57407 -const MURMUR = 57408 -const CITY = 57409 -const START = 57410 -const STOP = 57411 -const TRACE = 57412 -const MESSAGES = 57413 -const TASK = 57414 -const GROUP = 57415 -const VARCHAR = 57416 -const INTEGER = 57417 -const INT = 57418 -const TYPES = 57419 -const OP = 57420 -const ASC = 57421 -const DESC = 57422 -const ORDER = 57423 +const REPLICATED = 57388 +const SHARDS = 57389 +const KEY_RANGES = 57390 +const ROUTERS = 57391 +const SHARD = 57392 +const HOST = 57393 +const SHARDING_RULES = 57394 +const RULE = 57395 +const COLUMNS = 57396 +const VERSION = 57397 +const HOSTS = 57398 +const BY = 57399 +const FROM = 57400 +const TO = 57401 +const WITH = 57402 +const UNITE = 57403 +const ALL = 57404 +const ADDRESS = 57405 +const FOR = 57406 +const CLIENT = 57407 +const IDENTITY = 57408 +const MURMUR = 57409 +const CITY = 57410 +const START = 57411 +const STOP = 57412 +const TRACE = 57413 +const MESSAGES = 57414 +const TASK = 57415 +const GROUP = 57416 +const VARCHAR = 57417 +const INTEGER = 57418 +const INT = 57419 +const TYPES = 57420 +const OP = 57421 +const ASC = 57422 +const DESC = 57423 +const ORDER = 57424 var yyToknames = [...]string{ "$end", @@ -216,6 +217,7 @@ var yyToknames = [...]string{ "RANGE", "DISTRIBUTION", "RELATION", + "REPLICATED", "SHARDS", "KEY_RANGES", "ROUTERS", @@ -260,7 +262,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line gram.y:864 +//line gram.y:874 //line yacctab:1 var yyExca = [...]int8{ @@ -271,70 +273,70 @@ var yyExca = [...]int8{ const yyPrivate = 57344 -const yyLast = 251 +const yyLast = 254 var yyAct = [...]uint8{ - 134, 180, 220, 154, 183, 175, 146, 153, 152, 158, - 133, 131, 145, 141, 116, 92, 130, 27, 28, 155, - 208, 209, 176, 177, 178, 97, 143, 122, 89, 30, - 29, 34, 35, 69, 52, 21, 20, 24, 25, 26, - 31, 32, 51, 68, 81, 182, 36, 85, 214, 215, - 216, 148, 87, 120, 138, 88, 82, 82, 56, 95, - 96, 82, 82, 54, 82, 58, 149, 106, 217, 82, - 59, 33, 205, 105, 151, 104, 182, 107, 108, 22, - 23, 95, 169, 160, 115, 118, 101, 103, 157, 121, - 91, 125, 127, 60, 148, 83, 142, 82, 201, 125, - 139, 117, 98, 67, 90, 135, 136, 137, 123, 149, - 128, 197, 80, 126, 124, 84, 86, 210, 150, 109, - 62, 94, 119, 202, 44, 159, 184, 114, 199, 45, - 144, 43, 117, 112, 93, 111, 46, 57, 77, 76, - 171, 42, 170, 173, 165, 38, 41, 188, 188, 185, - 186, 102, 181, 40, 172, 39, 53, 179, 203, 189, - 187, 159, 224, 50, 82, 188, 191, 190, 49, 198, - 195, 192, 100, 193, 79, 48, 132, 47, 196, 162, - 167, 200, 61, 63, 164, 163, 181, 168, 73, 74, - 75, 71, 194, 82, 65, 206, 204, 37, 71, 1, - 70, 72, 212, 18, 211, 17, 218, 70, 156, 162, - 16, 221, 15, 14, 164, 163, 12, 13, 222, 8, - 223, 9, 207, 129, 226, 221, 225, 227, 113, 174, - 140, 110, 78, 19, 213, 147, 219, 6, 5, 4, - 3, 7, 11, 10, 66, 64, 55, 2, 166, 161, - 99, + 136, 182, 222, 156, 185, 177, 148, 155, 154, 160, + 135, 133, 147, 143, 118, 93, 132, 27, 28, 98, + 157, 210, 211, 178, 179, 180, 124, 145, 90, 30, + 29, 34, 35, 70, 52, 21, 20, 24, 25, 26, + 31, 32, 51, 69, 82, 184, 36, 86, 216, 217, + 218, 88, 122, 140, 89, 83, 83, 150, 56, 96, + 97, 83, 83, 54, 83, 58, 108, 61, 219, 207, + 83, 59, 33, 151, 107, 153, 106, 171, 109, 110, + 22, 23, 96, 184, 162, 117, 120, 159, 103, 105, + 123, 92, 127, 129, 60, 84, 204, 203, 81, 150, + 61, 127, 83, 199, 68, 212, 99, 137, 138, 139, + 125, 130, 144, 128, 126, 151, 44, 141, 87, 111, + 152, 45, 95, 43, 121, 100, 91, 161, 85, 46, + 63, 186, 146, 201, 119, 116, 114, 119, 113, 57, + 94, 78, 173, 77, 172, 175, 167, 38, 42, 190, + 190, 187, 188, 83, 183, 41, 174, 40, 53, 181, + 205, 191, 189, 161, 39, 134, 104, 226, 190, 192, + 50, 193, 197, 194, 200, 195, 80, 49, 102, 48, + 198, 83, 66, 202, 62, 64, 47, 37, 183, 164, + 74, 75, 76, 1, 166, 165, 169, 208, 206, 18, + 72, 17, 196, 170, 214, 72, 213, 16, 220, 71, + 73, 164, 15, 223, 71, 158, 166, 165, 14, 12, + 224, 13, 225, 8, 9, 209, 228, 223, 227, 229, + 131, 115, 176, 142, 112, 79, 19, 215, 149, 221, + 6, 5, 4, 3, 7, 11, 10, 67, 65, 55, + 2, 168, 163, 101, } var yyPact = [...]int16{ - 11, -1000, 130, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 11, -1000, 132, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 87, 87, -28, -36, 21, 78, 78, 190, 39, 187, - -1000, 78, 78, 78, 117, 116, 68, -1000, -1000, -1000, - -1000, -1000, -1000, 189, 43, 72, 57, -1000, -1000, -1000, - -1000, -9, -43, -1000, 61, -1000, 38, 101, 60, 189, - -48, -1000, 59, -1000, 164, -1000, 137, 137, -1000, -1000, - -1000, -1000, -1000, 18, 15, 8, 189, 58, -1000, 99, - 189, 89, -1000, 93, 65, -6, 34, -44, 137, -1000, - 53, 52, -1000, -1000, 101, -1000, -1000, -1000, 189, -65, - 160, -1000, -1000, -1000, 189, 189, 189, -8, -1000, -1000, - -1000, 55, 51, -1000, -51, 62, 56, 189, 17, 194, - 33, 187, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 27, 205, 160, 176, -1000, 26, -1000, -1000, 187, 189, - 51, -1000, 189, -52, 56, 13, -1000, 86, 189, 189, - -1000, 194, 136, -1000, -1000, -1000, -1000, 187, 154, -1000, - 189, 160, -1000, -1000, -1000, 175, 187, -1000, -1000, 194, - -1000, -1000, -1000, 67, 157, -1000, 88, -1000, -1000, 13, - -1000, -1000, 54, -1000, 82, -1000, -1000, 135, 194, 14, - 154, 187, -59, 205, -1000, -1000, 153, 75, -52, -1000, - -1000, 189, -17, 10, -1000, 189, -1000, -1000, -1000, -1000, - 189, -1000, -1000, -1000, -1000, -1000, -1000, 189, -18, 150, - -1000, 86, -18, -1000, 189, -1000, -1000, -1000, + 79, 79, -29, -37, 21, 88, 88, 178, 39, 196, + -1000, 88, 88, 88, 121, 119, 54, -1000, -1000, -1000, + -1000, -1000, -1000, 177, 42, 85, 58, -1000, -1000, -1000, + -1000, -11, -44, -1000, 83, -1000, 38, 107, 60, 177, + -55, 62, -1000, 82, -1000, 170, -1000, 152, 152, -1000, + -1000, -1000, -1000, -1000, 18, 15, 6, 177, 57, -1000, + 102, 177, 97, -1000, 98, 66, -8, 34, -46, 152, + -1000, 52, 51, -1000, -1000, 107, -1000, -1000, -1000, -1000, + 177, -66, 149, -1000, -1000, -1000, 177, 177, 177, -10, + -1000, -1000, -1000, 72, 67, -1000, -51, 95, 61, 177, + 17, 201, 31, 196, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 27, 207, 149, 192, -1000, 20, -1000, -1000, + 196, 177, 67, -1000, 177, -52, 61, 19, -1000, 91, + 177, 177, -1000, 201, 138, -1000, -1000, -1000, -1000, 196, + 159, -1000, 177, 149, -1000, -1000, -1000, 185, 196, -1000, + -1000, 201, -1000, -1000, -1000, 59, 162, -1000, 93, -1000, + -1000, 19, -1000, -1000, 53, -1000, 55, -1000, -1000, 137, + 201, 10, 159, 196, -59, 207, -1000, -1000, 156, 63, + -52, -1000, -1000, 177, -18, 9, -1000, 177, -1000, -1000, + -1000, -1000, 177, -1000, -1000, -1000, -1000, -1000, -1000, 177, + -19, 155, -1000, 91, -19, -1000, 177, -1000, -1000, -1000, } var yyPgo = [...]uint8{ - 0, 250, 11, 7, 8, 249, 248, 10, 3, 0, - 19, 247, 246, 156, 137, 245, 244, 243, 242, 241, - 240, 239, 238, 237, 155, 153, 146, 141, 12, 236, - 6, 2, 14, 235, 4, 234, 1, 233, 232, 231, - 230, 13, 229, 228, 9, 5, 15, 223, 222, 221, - 219, 217, 216, 213, 212, 210, 205, 203, 199, 197, + 0, 253, 11, 7, 8, 252, 251, 10, 3, 0, + 20, 250, 249, 158, 139, 248, 247, 246, 245, 244, + 243, 242, 241, 240, 164, 157, 155, 148, 12, 239, + 6, 2, 14, 238, 4, 237, 1, 236, 235, 234, + 233, 13, 232, 231, 9, 5, 15, 230, 225, 224, + 223, 221, 219, 218, 212, 207, 201, 199, 193, 187, } var yyR1 = [...]int8{ @@ -344,13 +346,13 @@ var yyR1 = [...]int8{ 6, 7, 2, 2, 2, 1, 1, 15, 16, 46, 46, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 22, 22, 23, 37, 38, 38, 29, - 29, 31, 41, 40, 40, 39, 21, 21, 21, 21, - 48, 48, 48, 47, 47, 17, 50, 24, 43, 43, - 42, 42, 45, 45, 45, 45, 25, 25, 28, 28, - 30, 32, 32, 33, 33, 35, 35, 35, 34, 34, - 36, 36, 3, 3, 4, 4, 26, 26, 27, 27, - 44, 44, 49, 12, 13, 14, 53, 18, 18, 54, - 55, 52, 51, 56, 57, 57, + 29, 31, 41, 41, 40, 40, 39, 21, 21, 21, + 21, 48, 48, 48, 47, 47, 17, 50, 24, 43, + 43, 42, 42, 45, 45, 45, 45, 25, 25, 28, + 28, 30, 32, 32, 33, 33, 35, 35, 35, 34, + 34, 36, 36, 3, 3, 4, 4, 26, 26, 27, + 27, 44, 44, 49, 12, 13, 14, 14, 53, 18, + 18, 54, 55, 52, 51, 56, 57, 57, } var yyR2 = [...]int8{ @@ -360,65 +362,65 @@ var yyR2 = [...]int8{ 1, 1, 3, 3, 3, 0, 2, 1, 1, 1, 0, 2, 4, 2, 4, 3, 4, 3, 3, 2, 2, 2, 2, 4, 4, 3, 2, 2, 4, 3, - 1, 2, 5, 1, 2, 2, 2, 2, 2, 2, - 1, 1, 0, 4, 0, 4, 2, 3, 3, 0, - 3, 1, 1, 2, 1, 1, 6, 5, 1, 2, - 2, 2, 0, 2, 2, 1, 1, 1, 3, 0, - 3, 0, 1, 1, 1, 3, 9, 8, 5, 4, - 1, 3, 2, 3, 3, 2, 6, 3, 3, 4, - 4, 2, 1, 5, 3, 3, + 1, 2, 5, 2, 1, 2, 2, 2, 2, 2, + 2, 1, 1, 0, 4, 0, 4, 2, 3, 3, + 0, 3, 1, 1, 2, 1, 1, 6, 5, 1, + 2, 2, 2, 0, 2, 2, 1, 1, 1, 3, + 0, 3, 0, 1, 1, 1, 3, 9, 8, 5, + 4, 1, 3, 2, 3, 3, 2, 2, 6, 3, + 3, 4, 4, 2, 1, 5, 3, 3, } var yyChk = [...]int16{ -1000, -58, -11, -20, -21, -22, -23, -19, -50, -49, -17, -18, -52, -51, -53, -54, -55, -56, -57, -37, - 25, 24, 68, 69, 26, 27, 28, 6, 7, 19, - 18, 29, 30, 60, 20, 21, 35, -59, 15, -24, - -25, -26, -27, 44, 37, 42, 49, -24, -25, -26, - -27, 70, 70, -13, 42, -12, 37, -14, 44, 49, - 72, -13, 42, -13, -15, 4, -16, 64, 4, -8, - 13, 4, 14, -13, -13, -13, 22, 22, -38, -14, - 44, -9, 4, 52, 43, -9, 59, 61, 64, 71, - 43, 52, -46, 33, 61, -9, -9, 73, 43, -1, - 8, -10, 14, -10, 57, 58, 59, -9, -9, 61, - -39, 36, 34, -43, 38, -9, -32, 39, -9, 57, - 59, 55, 71, -10, 61, -9, 61, -9, -46, -47, - 81, -2, 16, -7, -9, -9, -9, -9, 62, 45, - -40, -41, 45, 77, -32, -28, -30, -33, 38, 53, - -9, 57, -4, -3, -8, -10, 14, 55, -44, -8, - 56, -5, 4, 10, 9, -2, -6, 4, 11, 56, - -8, -9, -41, -9, -42, -45, 74, 75, 76, -28, - -36, -30, 63, -34, 40, -9, -9, -4, 12, 23, - -44, 12, -7, -2, 17, -8, -4, 44, 12, 40, - -36, 44, 41, 23, -3, 58, -8, -48, 79, 80, - 42, -45, -9, -35, 65, 66, 67, 58, -9, -29, - -31, -9, -9, -36, 12, -34, -36, -31, + 25, 24, 69, 70, 26, 27, 28, 6, 7, 19, + 18, 29, 30, 61, 20, 21, 35, -59, 15, -24, + -25, -26, -27, 44, 37, 42, 50, -24, -25, -26, + -27, 71, 71, -13, 42, -12, 37, -14, 44, 50, + 73, 46, -13, 42, -13, -15, 4, -16, 65, 4, + -8, 13, 4, 14, -13, -13, -13, 22, 22, -38, + -14, 44, -9, 4, 53, 43, -9, 60, 62, 65, + 72, 43, 53, -46, 33, 62, -9, -9, 74, 44, + 43, -1, 8, -10, 14, -10, 58, 59, 60, -9, + -9, 62, -39, 36, 34, -43, 38, -9, -32, 39, + -9, 58, 60, 56, 72, -10, 62, -9, 62, -9, + -46, -47, 82, -2, 16, -7, -9, -9, -9, -9, + 63, 45, -40, -41, 45, 78, -32, -28, -30, -33, + 38, 54, -9, 58, -4, -3, -8, -10, 14, 56, + -44, -8, 57, -5, 4, 10, 9, -2, -6, 4, + 11, 57, -8, -9, -41, -9, -42, -45, 75, 76, + 77, -28, -36, -30, 64, -34, 40, -9, -9, -4, + 12, 23, -44, 12, -7, -2, 17, -8, -4, 44, + 12, 40, -36, 44, 41, 23, -3, 59, -8, -48, + 80, 81, 42, -45, -9, -35, 66, 67, 68, 59, + -9, -29, -31, -9, -9, -36, 12, -34, -36, -31, } var yyDef = [...]int8{ 0, -2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 122, 0, 0, 0, 0, 0, 0, 1, 3, 49, - 50, 51, 52, 0, 0, 0, 0, 66, 67, 68, - 69, 0, 0, 41, 0, 43, 0, 40, 0, 0, - 0, 76, 0, 112, 35, 37, 0, 0, 38, 121, - 22, 23, 24, 0, 0, 0, 0, 0, 56, 0, - 0, 79, 25, 92, 0, 0, 0, 0, 0, 55, - 0, 0, 45, 39, 40, 115, 47, 48, 0, 74, - 0, 117, 21, 118, 0, 0, 0, 0, 124, 125, - 57, 0, 0, 77, 0, 92, 0, 0, 0, 0, - 0, 0, 53, 54, 42, 114, 44, 113, 46, 75, - 0, 36, 0, 0, 31, 0, 119, 120, 0, 0, - 65, 63, 0, 0, 0, 101, 88, 99, 0, 0, - 91, 0, 0, 104, 102, 103, 21, 0, 109, 110, - 0, 0, 26, 27, 28, 0, 0, 29, 30, 0, - 123, 58, 64, 0, 78, 81, 82, 84, 85, 101, - 87, 89, 0, 90, 0, 93, 94, 0, 0, 0, - 108, 0, 72, 34, 32, 33, 116, 0, 0, 83, - 86, 0, 0, 0, 105, 0, 111, 73, 70, 71, - 0, 80, 100, 98, 95, 96, 97, 0, 101, 62, - 60, 99, 101, 107, 0, 61, 106, 59, + 124, 0, 0, 0, 0, 0, 0, 1, 3, 49, + 50, 51, 52, 0, 0, 0, 0, 67, 68, 69, + 70, 0, 0, 41, 0, 43, 0, 40, 0, 0, + 0, 0, 77, 0, 113, 35, 37, 0, 0, 38, + 123, 22, 23, 24, 0, 0, 0, 0, 0, 56, + 0, 0, 80, 25, 93, 0, 0, 0, 0, 0, + 55, 0, 0, 45, 39, 40, 116, 47, 48, 117, + 0, 75, 0, 119, 21, 120, 0, 0, 0, 0, + 126, 127, 57, 0, 0, 78, 0, 93, 0, 0, + 0, 0, 0, 0, 53, 54, 42, 115, 44, 114, + 46, 76, 0, 36, 0, 0, 31, 0, 121, 122, + 0, 0, 66, 64, 0, 0, 0, 102, 89, 100, + 0, 0, 92, 0, 0, 105, 103, 104, 21, 0, + 110, 111, 0, 0, 26, 27, 28, 0, 0, 29, + 30, 0, 125, 58, 65, 63, 79, 82, 83, 85, + 86, 102, 88, 90, 0, 91, 0, 94, 95, 0, + 0, 0, 109, 0, 73, 34, 32, 33, 118, 0, + 0, 84, 87, 0, 0, 0, 106, 0, 112, 74, + 71, 72, 0, 81, 101, 99, 96, 97, 98, 0, + 102, 62, 60, 100, 102, 108, 0, 61, 107, 59, } var yyTok1 = [...]int8{ @@ -434,6 +436,7 @@ var yyTok2 = [...]int8{ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, } var yyTok3 = [...]int8{ @@ -1182,158 +1185,167 @@ yydefault: } } case 63: + yyDollar = yyS[yypt-2 : yypt+1] +//line gram.y:534 + { + yyVAL.distributed_relation = &DistributedRelation{ + Name: yyDollar[2].str, + ReplicatedRelation: true, + } + } + case 64: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:536 +//line gram.y:544 { yyVAL.relations = []*DistributedRelation{yyDollar[1].distributed_relation} } - case 64: + case 65: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:538 +//line gram.y:546 { yyVAL.relations = append(yyDollar[1].relations, yyDollar[2].distributed_relation) } - case 65: + case 66: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:543 +//line gram.y:551 { yyVAL.relations = yyDollar[2].relations } - case 66: + case 67: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:549 +//line gram.y:557 { yyVAL.create = &Create{Element: yyDollar[2].ds} } - case 67: + case 68: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:554 +//line gram.y:562 { yyVAL.create = &Create{Element: yyDollar[2].sharding_rule} } - case 68: + case 69: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:559 +//line gram.y:567 { yyVAL.create = &Create{Element: yyDollar[2].kr} } - case 69: + case 70: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:563 +//line gram.y:571 { yyVAL.create = &Create{Element: yyDollar[2].shard} } - case 70: + case 71: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:568 +//line gram.y:576 { yyVAL.opt_asc_desc = &SortByAsc{} } - case 71: + case 72: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:569 +//line gram.y:577 { yyVAL.opt_asc_desc = &SortByDesc{} } - case 72: + case 73: yyDollar = yyS[yypt-0 : yypt+1] -//line gram.y:570 +//line gram.y:578 { yyVAL.opt_asc_desc = &SortByDefault{} } - case 73: + case 74: yyDollar = yyS[yypt-4 : yypt+1] -//line gram.y:574 +//line gram.y:582 { yyVAL.order_clause = &Order{Col: yyDollar[3].colref, OptAscDesc: yyDollar[4].opt_asc_desc} } - case 74: + case 75: yyDollar = yyS[yypt-0 : yypt+1] -//line gram.y:577 +//line gram.y:585 { yyVAL.order_clause = OrderClause(nil) } - case 75: + case 76: yyDollar = yyS[yypt-4 : yypt+1] -//line gram.y:582 +//line gram.y:590 { yyVAL.show = &Show{Cmd: yyDollar[2].str, Where: yyDollar[3].where, Order: yyDollar[4].order_clause} } - case 76: + case 77: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:587 +//line gram.y:595 { yyVAL.lock = &Lock{KeyRangeID: yyDollar[2].key_range_selector.KeyRangeID} } - case 77: + case 78: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:595 +//line gram.y:603 { yyVAL.ds = &DistributionDefinition{ ID: yyDollar[2].str, ColTypes: yyDollar[3].strlist, } } - case 78: + case 79: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:603 +//line gram.y:611 { yyVAL.strlist = yyDollar[3].strlist } - case 79: + case 80: yyDollar = yyS[yypt-0 : yypt+1] -//line gram.y:605 +//line gram.y:613 { /* empty column types should be prohibited */ yyVAL.strlist = nil } - case 80: + case 81: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:611 +//line gram.y:619 { yyVAL.strlist = append(yyDollar[1].strlist, yyDollar[3].str) } - case 81: + case 82: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:613 +//line gram.y:621 { yyVAL.strlist = []string{ yyDollar[1].str, } } - case 82: + case 83: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:620 +//line gram.y:628 { yyVAL.str = "varchar" } - case 83: + case 84: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:622 +//line gram.y:630 { yyVAL.str = "varchar hashed" } - case 84: + case 85: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:624 +//line gram.y:632 { yyVAL.str = "integer" } - case 85: + case 86: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:626 +//line gram.y:634 { yyVAL.str = "integer" } - case 86: + case 87: yyDollar = yyS[yypt-6 : yypt+1] -//line gram.y:632 +//line gram.y:640 { yyVAL.sharding_rule = &ShardingRuleDefinition{ID: yyDollar[3].str, TableName: yyDollar[4].str, Entries: yyDollar[5].entrieslist, Distribution: yyDollar[6].str} } - case 87: + case 88: yyDollar = yyS[yypt-5 : yypt+1] -//line gram.y:637 +//line gram.y:645 { str, err := randomHex(6) if err != nil { @@ -1341,111 +1353,111 @@ yydefault: } yyVAL.sharding_rule = &ShardingRuleDefinition{ID: "shrule" + str, TableName: yyDollar[3].str, Entries: yyDollar[4].entrieslist, Distribution: yyDollar[5].str} } - case 88: + case 89: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:646 +//line gram.y:654 { yyVAL.entrieslist = make([]ShardingRuleEntry, 0) yyVAL.entrieslist = append(yyVAL.entrieslist, yyDollar[1].shruleEntry) } - case 89: + case 90: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:652 +//line gram.y:660 { yyVAL.entrieslist = append(yyDollar[1].entrieslist, yyDollar[2].shruleEntry) } - case 90: + case 91: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:658 +//line gram.y:666 { yyVAL.shruleEntry = ShardingRuleEntry{ Column: yyDollar[1].str, HashFunction: yyDollar[2].str, } } - case 91: + case 92: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:667 +//line gram.y:675 { yyVAL.str = yyDollar[2].str } - case 92: + case 93: yyDollar = yyS[yypt-0 : yypt+1] -//line gram.y:670 +//line gram.y:678 { yyVAL.str = "" } - case 93: + case 94: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:674 +//line gram.y:682 { yyVAL.str = yyDollar[2].str } - case 94: + case 95: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:679 +//line gram.y:687 { yyVAL.str = yyDollar[2].str } - case 95: + case 96: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:685 +//line gram.y:693 { yyVAL.str = "identity" } - case 96: + case 97: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:687 +//line gram.y:695 { yyVAL.str = "murmur" } - case 97: + case 98: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:689 +//line gram.y:697 { yyVAL.str = "city" } - case 98: + case 99: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:695 +//line gram.y:703 { yyVAL.str = yyDollar[3].str } - case 99: + case 100: yyDollar = yyS[yypt-0 : yypt+1] -//line gram.y:697 +//line gram.y:705 { yyVAL.str = "" } - case 100: + case 101: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:702 +//line gram.y:710 { yyVAL.str = yyDollar[3].str } - case 101: + case 102: yyDollar = yyS[yypt-0 : yypt+1] -//line gram.y:704 +//line gram.y:712 { yyVAL.str = "default" } - case 102: + case 103: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:709 +//line gram.y:717 { yyVAL.bytes = []byte(yyDollar[1].str) } - case 103: + case 104: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:712 +//line gram.y:720 { buf := make([]byte, 8) binary.PutVarint(buf, int64(yyDollar[1].uinteger)) yyVAL.bytes = buf } - case 104: + case 105: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:719 +//line gram.y:727 { yyVAL.krbound = &KeyRangeBound{ Pivots: [][]byte{ @@ -1453,17 +1465,17 @@ yydefault: }, } } - case 105: + case 106: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:726 +//line gram.y:734 { yyVAL.krbound = &KeyRangeBound{ Pivots: append(yyDollar[1].krbound.Pivots, yyDollar[3].bytes), } } - case 106: + case 107: yyDollar = yyS[yypt-9 : yypt+1] -//line gram.y:735 +//line gram.y:743 { yyVAL.kr = &KeyRangeDefinition{ KeyRangeID: yyDollar[3].str, @@ -1472,9 +1484,9 @@ yydefault: Distribution: yyDollar[9].str, } } - case 107: + case 108: yyDollar = yyS[yypt-8 : yypt+1] -//line gram.y:744 +//line gram.y:752 { str, err := randomHex(6) if err != nil { @@ -1487,15 +1499,15 @@ yydefault: KeyRangeID: "kr" + str, } } - case 108: + case 109: yyDollar = yyS[yypt-5 : yypt+1] -//line gram.y:759 +//line gram.y:767 { yyVAL.shard = &ShardDefinition{Id: yyDollar[2].str, Hosts: yyDollar[5].strlist} } - case 109: + case 110: yyDollar = yyS[yypt-4 : yypt+1] -//line gram.y:764 +//line gram.y:772 { str, err := randomHex(6) if err != nil { @@ -1503,99 +1515,105 @@ yydefault: } yyVAL.shard = &ShardDefinition{Id: "shard" + str, Hosts: yyDollar[4].strlist} } - case 110: + case 111: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:774 +//line gram.y:782 { yyVAL.strlist = []string{yyDollar[1].str} } - case 111: + case 112: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:779 +//line gram.y:787 { yyVAL.strlist = append(yyDollar[1].strlist, yyDollar[3].str) } - case 112: + case 113: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:785 +//line gram.y:793 { yyVAL.unlock = &Unlock{KeyRangeID: yyDollar[2].key_range_selector.KeyRangeID} } - case 113: + case 114: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:791 +//line gram.y:799 { yyVAL.sharding_rule_selector = &ShardingRuleSelector{ID: yyDollar[3].str} } - case 114: + case 115: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:797 +//line gram.y:805 { yyVAL.key_range_selector = &KeyRangeSelector{KeyRangeID: yyDollar[3].str} } - case 115: + case 116: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:803 +//line gram.y:811 { - yyVAL.distribution_selector = &DistributionSelector{ID: yyDollar[2].str} + yyVAL.distribution_selector = &DistributionSelector{ID: yyDollar[2].str, Replicated: false} } - case 116: + case 117: + yyDollar = yyS[yypt-2 : yypt+1] +//line gram.y:813 + { + yyVAL.distribution_selector = &DistributionSelector{Replicated: true} + } + case 118: yyDollar = yyS[yypt-6 : yypt+1] -//line gram.y:809 +//line gram.y:819 { yyVAL.split = &SplitKeyRange{KeyRangeID: yyDollar[2].key_range_selector.KeyRangeID, KeyRangeFromID: yyDollar[4].str, Border: yyDollar[6].krbound} } - case 117: + case 119: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:815 +//line gram.y:825 { yyVAL.kill = &Kill{Cmd: yyDollar[2].str, Target: yyDollar[3].uinteger} } - case 118: + case 120: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:818 +//line gram.y:828 { yyVAL.kill = &Kill{Cmd: "client", Target: yyDollar[3].uinteger} } - case 119: + case 121: yyDollar = yyS[yypt-4 : yypt+1] -//line gram.y:824 +//line gram.y:834 { yyVAL.move = &MoveKeyRange{KeyRangeID: yyDollar[2].key_range_selector.KeyRangeID, DestShardID: yyDollar[4].str} } - case 120: + case 122: yyDollar = yyS[yypt-4 : yypt+1] -//line gram.y:830 +//line gram.y:840 { yyVAL.unite = &UniteKeyRange{KeyRangeIDL: yyDollar[2].key_range_selector.KeyRangeID, KeyRangeIDR: yyDollar[4].str} } - case 121: + case 123: yyDollar = yyS[yypt-2 : yypt+1] -//line gram.y:836 +//line gram.y:846 { yyVAL.listen = &Listen{addr: yyDollar[2].str} } - case 122: + case 124: yyDollar = yyS[yypt-1 : yypt+1] -//line gram.y:842 +//line gram.y:852 { yyVAL.shutdown = &Shutdown{} } - case 123: + case 125: yyDollar = yyS[yypt-5 : yypt+1] -//line gram.y:850 +//line gram.y:860 { yyVAL.register_router = &RegisterRouter{ID: yyDollar[3].str, Addr: yyDollar[5].str} } - case 124: + case 126: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:856 +//line gram.y:866 { yyVAL.unregister_router = &UnregisterRouter{ID: yyDollar[3].str} } - case 125: + case 127: yyDollar = yyS[yypt-3 : yypt+1] -//line gram.y:861 +//line gram.y:871 { yyVAL.unregister_router = &UnregisterRouter{ID: `*`} } diff --git a/yacc/console/gram.y b/yacc/console/gram.y index db47a1bd7..c89301f87 100644 --- a/yacc/console/gram.y +++ b/yacc/console/gram.y @@ -141,7 +141,7 @@ func randomHex(n int) (string, error) { %token SHUTDOWN LISTEN REGISTER UNREGISTER ROUTER ROUTE %token CREATE ADD DROP LOCK UNLOCK SPLIT MOVE COMPOSE SET CASCADE ATTACH ALTER DETACH -%token SHARDING COLUMN TABLE HASH FUNCTION KEY RANGE DISTRIBUTION RELATION +%token SHARDING COLUMN TABLE HASH FUNCTION KEY RANGE DISTRIBUTION RELATION REPLICATED %token SHARDS KEY_RANGES ROUTERS SHARD HOST SHARDING_RULES RULE COLUMNS VERSION HOSTS %token BY FROM TO WITH UNITE ALL ADDRESS FOR %token CLIENT @@ -529,9 +529,17 @@ distributed_relation_def: Name: $2, DistributionKey: $5, } + } | + RELATION any_id + { + $$ = &DistributedRelation{ + Name: $2, + ReplicatedRelation: true, + } } + distributed_relation_list_def: distributed_relation_def { $$ = []*DistributedRelation{$1} @@ -801,7 +809,9 @@ key_range_stmt: distribution_select_stmt: DISTRIBUTION any_id { - $$ = &DistributionSelector{ID: $2} + $$ = &DistributionSelector{ID: $2, Replicated: false} + } | REPLICATED DISTRIBUTION { + $$ = &DistributionSelector{ Replicated: true} } split_key_range_stmt: diff --git a/yacc/console/lex.go b/yacc/console/lex.go index d50f272af..778150994 100644 --- a/yacc/console/lex.go +++ b/yacc/console/lex.go @@ -10,7 +10,7 @@ import ( -//line lex.go:14 +//line lex.go:12 const lexer_start int = 4 const lexer_first_final int = 4 const lexer_error int = 0 @@ -36,7 +36,7 @@ func NewLexer(data []byte) *Lexer { pe: len(data), } -//line lex.go:40 +//line lex.go:36 { lex.cs = lexer_start lex.ts = 0 @@ -52,7 +52,7 @@ func ResetLexer(lex *Lexer, data []byte) { lex.pe = len(data) lex.data = data -//line lex.go:56 +//line lex.go:50 { lex.cs = lexer_start lex.ts = 0 @@ -73,7 +73,7 @@ func (lex *Lexer) Lex(lval *yySymType) int { var tok int -//line lex.go:77 +//line lex.go:69 { if ( lex.p) == ( lex.pe) { goto _test_eof @@ -212,7 +212,7 @@ tr24: //line NONE:1 lex.ts = ( lex.p) -//line lex.go:216 +//line lex.go:208 switch lex.data[( lex.p)] { case 32: goto st5 @@ -307,7 +307,7 @@ tr17: goto _test_eof6 } st_case_6: -//line lex.go:311 +//line lex.go:303 switch lex.data[( lex.p)] { case 33: goto tr8 @@ -356,7 +356,7 @@ tr19: goto _test_eof7 } st_case_7: -//line lex.go:360 +//line lex.go:352 switch lex.data[( lex.p)] { case 34: goto tr19 @@ -511,7 +511,7 @@ tr15: goto _test_eof12 } st_case_12: -//line lex.go:515 +//line lex.go:507 switch lex.data[( lex.p)] { case 34: goto st8 @@ -572,7 +572,7 @@ tr5: goto _test_eof13 } st_case_13: -//line lex.go:576 +//line lex.go:568 if lex.data[( lex.p)] == 42 { goto st3 } diff --git a/yacc/console/reserved_keyword.go b/yacc/console/reserved_keyword.go index dac2d462a..b302fdc82 100644 --- a/yacc/console/reserved_keyword.go +++ b/yacc/console/reserved_keyword.go @@ -61,4 +61,5 @@ var reservedWords = map[string]int{ "hosts": HOSTS, "task": TASK, "group": GROUP, + "replicated": REPLICATED, } diff --git a/yacc/console/yx_test.go b/yacc/console/yx_test.go index ef03ee7f9..abdf682ab 100644 --- a/yacc/console/yx_test.go +++ b/yacc/console/yx_test.go @@ -504,6 +504,26 @@ func TestAlter(t *testing.T) { }, err: nil, }, + + { + query: "ALTER REPLICATED DISTRIBUTION ATTACH RELATION t;", + exp: &spqrparser.Alter{ + Element: &spqrparser.AlterDistribution{ + Element: &spqrparser.AttachRelation{ + Distribution: &spqrparser.DistributionSelector{ + Replicated: true, + }, + Relations: []*spqrparser.DistributedRelation{ + { + Name: "t", + ReplicatedRelation: true, + }, + }, + }, + }, + }, + err: nil, + }, } { tmp, err := spqrparser.Parse(tt.query)