diff --git a/pkg/frontend/mysql_cmd_executor.go b/pkg/frontend/mysql_cmd_executor.go index 223797f2ea5ddd636931121ddf36f769c8a900c5..983f24df83c8f95a0e0437ac6ecf3d14611d98f3 100644 --- a/pkg/frontend/mysql_cmd_executor.go +++ b/pkg/frontend/mysql_cmd_executor.go @@ -1481,10 +1481,11 @@ func (cw *ComputationWrapperImpl) Run(ts uint64) error { var _ ComputationWrapper = &TxnComputationWrapper{} type TxnComputationWrapper struct { - stmt tree.Statement - plan *plan2.Plan - proc *process.Process - ses *Session + stmt tree.Statement + plan *plan2.Plan + proc *process.Process + ses *Session + compile *compile2.Compile } func InitTxnComputationWrapper(ses *Session, stmt tree.Statement, proc *process.Process) *TxnComputationWrapper { @@ -1520,7 +1521,7 @@ func (cwft *TxnComputationWrapper) GetColumns() ([]interface{}, error) { } func (cwft *TxnComputationWrapper) GetAffectedRows() uint64 { - return 0 + return cwft.compile.GetAffectedRows() } func (cwft *TxnComputationWrapper) Compile(u interface{}, fill func(interface{}, *batch.Batch) error) (interface{}, error) { @@ -1533,12 +1534,12 @@ func (cwft *TxnComputationWrapper) Compile(u interface{}, fill func(interface{}, cwft.proc.UnixTime = time.Now().UnixNano() txnHandler := cwft.ses.GetTxnHandler() cwft.proc.Snapshot = txnHandler.GetTxn().GetCtx() - comp := compile2.New(cwft.ses.GetDatabaseName(), cwft.ses.GetSql(), cwft.ses.GetUserName(), cwft.ses.GetStorage(), cwft.proc) - err = comp.Compile(cwft.plan, cwft.ses, fill) + cwft.compile = compile2.New(cwft.ses.GetDatabaseName(), cwft.ses.GetSql(), cwft.ses.GetUserName(), cwft.ses.GetStorage(), cwft.proc) + err = cwft.compile.Compile(cwft.plan, cwft.ses, fill) if err != nil { return nil, err } - return comp, err + return cwft.compile, err } func (cwft *TxnComputationWrapper) Run(ts uint64) error { @@ -1810,6 +1811,12 @@ func (mce *MysqlCmdExecutor) doComQuery(sql string) (retErr error) { goto handleFailed } } + case *tree.Delete: + ses.GetTxnCompileCtx().SetQueryType(TXN_DELETE) + case *tree.Update: + ses.GetTxnCompileCtx().SetQueryType(TXN_UPDATE) + default: + ses.GetTxnCompileCtx().SetQueryType(TXN_DEFAULT) } if selfHandle { diff --git a/pkg/frontend/session.go b/pkg/frontend/session.go index c0dbe961a59f67c7dcb9cda5fba362e36aa25a02..1c303823bf250dc03a8ac09df925f7e0daaf5e9c 100644 --- a/pkg/frontend/session.go +++ b/pkg/frontend/session.go @@ -215,6 +215,10 @@ func (ses *Session) GetGlobalVar(name string) (interface{}, error) { return nil, errorSystemVariableDoesNotExist } +func (ses *Session) GetTxnCompileCtx() *TxnCompilerContext { + return ses.txnCompileCtx +} + // SetSessionVar sets the value of system variable in session func (ses *Session) SetSessionVar(name string, value interface{}) error { if def, _, ok := ses.gSysVars.GetGlobalSysVar(name); ok { @@ -565,8 +569,17 @@ func (th *TxnHandler) CleanTxn() error { var _ plan2.CompilerContext = &TxnCompilerContext{} +type QueryType int + +const ( + TXN_DEFAULT QueryType = iota + TXN_DELETE + TXN_UPDATE +) + type TxnCompilerContext struct { dbName string + QryTyp QueryType txnHandler *TxnHandler } @@ -574,7 +587,11 @@ func InitTxnCompilerContext(txn *TxnHandler, db string) *TxnCompilerContext { if len(db) == 0 { db = "mo_catalog" } - return &TxnCompilerContext{txnHandler: txn, dbName: db} + return &TxnCompilerContext{txnHandler: txn, dbName: db, QryTyp: TXN_DEFAULT} +} + +func (tcc *TxnCompilerContext) SetQueryType(qryTyp QueryType) { + tcc.QryTyp = qryTyp } func (tcc *TxnCompilerContext) SetDatabase(db string) { @@ -635,6 +652,18 @@ func (tcc *TxnCompilerContext) Resolve(dbName string, tableName string) (*plan2. }) } } + if tcc.QryTyp != TXN_DEFAULT { + hideKey := table.GetHideKey(tcc.txnHandler.GetTxn().GetCtx()) + defs = append(defs, &plan2.ColDef{ + Name: hideKey.Name, + Typ: &plan2.Type{ + Id: plan.Type_TypeId(hideKey.Type.Oid), + Width: hideKey.Type.Width, + Precision: hideKey.Type.Precision, + }, + Primary: hideKey.Primary, + }) + } //convert obj := &plan2.ObjectRef{ diff --git a/pkg/pb/plan/plan.pb.go b/pkg/pb/plan/plan.pb.go index 347c5b9af45ebe0aed94812faddfa303d1e05bef..b987ebe73740ed908e33a950be3b72be6a14da74 100644 --- a/pkg/pb/plan/plan.pb.go +++ b/pkg/pb/plan/plan.pb.go @@ -721,52 +721,6 @@ func (Node_AggMode) EnumDescriptor() ([]byte, []int) { return file_plan_proto_rawDescGZIP(), []int{27, 2} } -type DeleteInfo_DeleteType int32 - -const ( - DeleteInfo_FILTER_DEFAULT DeleteInfo_DeleteType = 0 - DeleteInfo_FILTER_PRIMARY DeleteInfo_DeleteType = 1 -) - -// Enum value maps for DeleteInfo_DeleteType. -var ( - DeleteInfo_DeleteType_name = map[int32]string{ - 0: "FILTER_DEFAULT", - 1: "FILTER_PRIMARY", - } - DeleteInfo_DeleteType_value = map[string]int32{ - "FILTER_DEFAULT": 0, - "FILTER_PRIMARY": 1, - } -) - -func (x DeleteInfo_DeleteType) Enum() *DeleteInfo_DeleteType { - p := new(DeleteInfo_DeleteType) - *p = x - return p -} - -func (x DeleteInfo_DeleteType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DeleteInfo_DeleteType) Descriptor() protoreflect.EnumDescriptor { - return file_plan_proto_enumTypes[9].Descriptor() -} - -func (DeleteInfo_DeleteType) Type() protoreflect.EnumType { - return &file_plan_proto_enumTypes[9] -} - -func (x DeleteInfo_DeleteType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DeleteInfo_DeleteType.Descriptor instead. -func (DeleteInfo_DeleteType) EnumDescriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{28, 0} -} - type Query_StatementType int32 const ( @@ -809,11 +763,11 @@ func (x Query_StatementType) String() string { } func (Query_StatementType) Descriptor() protoreflect.EnumDescriptor { - return file_plan_proto_enumTypes[10].Descriptor() + return file_plan_proto_enumTypes[9].Descriptor() } func (Query_StatementType) Type() protoreflect.EnumType { - return &file_plan_proto_enumTypes[10] + return &file_plan_proto_enumTypes[9] } func (x Query_StatementType) Number() protoreflect.EnumNumber { @@ -822,7 +776,7 @@ func (x Query_StatementType) Number() protoreflect.EnumNumber { // Deprecated: Use Query_StatementType.Descriptor instead. func (Query_StatementType) EnumDescriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{29, 0} + return file_plan_proto_rawDescGZIP(), []int{28, 0} } type TransationControl_TclType int32 @@ -858,11 +812,11 @@ func (x TransationControl_TclType) String() string { } func (TransationControl_TclType) Descriptor() protoreflect.EnumDescriptor { - return file_plan_proto_enumTypes[11].Descriptor() + return file_plan_proto_enumTypes[10].Descriptor() } func (TransationControl_TclType) Type() protoreflect.EnumType { - return &file_plan_proto_enumTypes[11] + return &file_plan_proto_enumTypes[10] } func (x TransationControl_TclType) Number() protoreflect.EnumNumber { @@ -871,7 +825,7 @@ func (x TransationControl_TclType) Number() protoreflect.EnumNumber { // Deprecated: Use TransationControl_TclType.Descriptor instead. func (TransationControl_TclType) EnumDescriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{30, 0} + return file_plan_proto_rawDescGZIP(), []int{29, 0} } type TransationBegin_TransationMode int32 @@ -907,11 +861,11 @@ func (x TransationBegin_TransationMode) String() string { } func (TransationBegin_TransationMode) Descriptor() protoreflect.EnumDescriptor { - return file_plan_proto_enumTypes[12].Descriptor() + return file_plan_proto_enumTypes[11].Descriptor() } func (TransationBegin_TransationMode) Type() protoreflect.EnumType { - return &file_plan_proto_enumTypes[12] + return &file_plan_proto_enumTypes[11] } func (x TransationBegin_TransationMode) Number() protoreflect.EnumNumber { @@ -920,7 +874,7 @@ func (x TransationBegin_TransationMode) Number() protoreflect.EnumNumber { // Deprecated: Use TransationBegin_TransationMode.Descriptor instead. func (TransationBegin_TransationMode) EnumDescriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{31, 0} + return file_plan_proto_rawDescGZIP(), []int{30, 0} } type DataDefinition_DdlType int32 @@ -1010,11 +964,11 @@ func (x DataDefinition_DdlType) String() string { } func (DataDefinition_DdlType) Descriptor() protoreflect.EnumDescriptor { - return file_plan_proto_enumTypes[13].Descriptor() + return file_plan_proto_enumTypes[12].Descriptor() } func (DataDefinition_DdlType) Type() protoreflect.EnumType { - return &file_plan_proto_enumTypes[13] + return &file_plan_proto_enumTypes[12] } func (x DataDefinition_DdlType) Number() protoreflect.EnumNumber { @@ -1023,7 +977,7 @@ func (x DataDefinition_DdlType) Number() protoreflect.EnumNumber { // Deprecated: Use DataDefinition_DdlType.Descriptor instead. func (DataDefinition_DdlType) EnumDescriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{35, 0} + return file_plan_proto_rawDescGZIP(), []int{34, 0} } type Type struct { @@ -3113,7 +3067,7 @@ type Node struct { ObjRef *ObjectRef `protobuf:"bytes,18,opt,name=obj_ref,json=objRef,proto3" json:"obj_ref,omitempty"` RowsetData *RowsetData `protobuf:"bytes,19,opt,name=rowset_data,json=rowsetData,proto3" json:"rowset_data,omitempty"` ExtraOptions string `protobuf:"bytes,20,opt,name=extra_options,json=extraOptions,proto3" json:"extra_options,omitempty"` - DeleteInfo *DeleteInfo `protobuf:"bytes,21,opt,name=delete_info,json=deleteInfo,proto3" json:"delete_info,omitempty"` + UseDeleteKey string `protobuf:"bytes,21,opt,name=useDeleteKey,proto3" json:"useDeleteKey,omitempty"` } func (x *Node) Reset() { @@ -3288,66 +3242,11 @@ func (x *Node) GetExtraOptions() string { return "" } -func (x *Node) GetDeleteInfo() *DeleteInfo { +func (x *Node) GetUseDeleteKey() string { if x != nil { - return x.DeleteInfo + return x.UseDeleteKey } - return nil -} - -type DeleteInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DeleteType DeleteInfo_DeleteType `protobuf:"varint,1,opt,name=delete_type,json=deleteType,proto3,enum=DeleteInfo_DeleteType" json:"delete_type,omitempty"` - DeleteKeys []string `protobuf:"bytes,2,rep,name=delete_keys,json=deleteKeys,proto3" json:"delete_keys,omitempty"` -} - -func (x *DeleteInfo) Reset() { - *x = DeleteInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeleteInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteInfo) ProtoMessage() {} - -func (x *DeleteInfo) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteInfo.ProtoReflect.Descriptor instead. -func (*DeleteInfo) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{28} -} - -func (x *DeleteInfo) GetDeleteType() DeleteInfo_DeleteType { - if x != nil { - return x.DeleteType - } - return DeleteInfo_FILTER_DEFAULT -} - -func (x *DeleteInfo) GetDeleteKeys() []string { - if x != nil { - return x.DeleteKeys - } - return nil + return "" } type Query struct { @@ -3369,7 +3268,7 @@ type Query struct { func (x *Query) Reset() { *x = Query{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[29] + mi := &file_plan_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3382,7 +3281,7 @@ func (x *Query) String() string { func (*Query) ProtoMessage() {} func (x *Query) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[29] + mi := &file_plan_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3395,7 +3294,7 @@ func (x *Query) ProtoReflect() protoreflect.Message { // Deprecated: Use Query.ProtoReflect.Descriptor instead. func (*Query) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{29} + return file_plan_proto_rawDescGZIP(), []int{28} } func (x *Query) GetStmtType() Query_StatementType { @@ -3443,7 +3342,7 @@ type TransationControl struct { func (x *TransationControl) Reset() { *x = TransationControl{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[30] + mi := &file_plan_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3456,7 +3355,7 @@ func (x *TransationControl) String() string { func (*TransationControl) ProtoMessage() {} func (x *TransationControl) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[30] + mi := &file_plan_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3469,7 +3368,7 @@ func (x *TransationControl) ProtoReflect() protoreflect.Message { // Deprecated: Use TransationControl.ProtoReflect.Descriptor instead. func (*TransationControl) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{30} + return file_plan_proto_rawDescGZIP(), []int{29} } func (x *TransationControl) GetTclType() TransationControl_TclType { @@ -3540,7 +3439,7 @@ type TransationBegin struct { func (x *TransationBegin) Reset() { *x = TransationBegin{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[31] + mi := &file_plan_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3553,7 +3452,7 @@ func (x *TransationBegin) String() string { func (*TransationBegin) ProtoMessage() {} func (x *TransationBegin) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[31] + mi := &file_plan_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3566,7 +3465,7 @@ func (x *TransationBegin) ProtoReflect() protoreflect.Message { // Deprecated: Use TransationBegin.ProtoReflect.Descriptor instead. func (*TransationBegin) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{31} + return file_plan_proto_rawDescGZIP(), []int{30} } func (x *TransationBegin) GetMode() TransationBegin_TransationMode { @@ -3587,7 +3486,7 @@ type TransationCommit struct { func (x *TransationCommit) Reset() { *x = TransationCommit{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[32] + mi := &file_plan_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3600,7 +3499,7 @@ func (x *TransationCommit) String() string { func (*TransationCommit) ProtoMessage() {} func (x *TransationCommit) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[32] + mi := &file_plan_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3613,7 +3512,7 @@ func (x *TransationCommit) ProtoReflect() protoreflect.Message { // Deprecated: Use TransationCommit.ProtoReflect.Descriptor instead. func (*TransationCommit) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{32} + return file_plan_proto_rawDescGZIP(), []int{31} } func (x *TransationCommit) GetCompletionType() TransationCompletionType { @@ -3634,7 +3533,7 @@ type TransationRollback struct { func (x *TransationRollback) Reset() { *x = TransationRollback{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[33] + mi := &file_plan_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3647,7 +3546,7 @@ func (x *TransationRollback) String() string { func (*TransationRollback) ProtoMessage() {} func (x *TransationRollback) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[33] + mi := &file_plan_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3660,7 +3559,7 @@ func (x *TransationRollback) ProtoReflect() protoreflect.Message { // Deprecated: Use TransationRollback.ProtoReflect.Descriptor instead. func (*TransationRollback) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{33} + return file_plan_proto_rawDescGZIP(), []int{32} } func (x *TransationRollback) GetCompletionType() TransationCompletionType { @@ -3685,7 +3584,7 @@ type Plan struct { func (x *Plan) Reset() { *x = Plan{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[34] + mi := &file_plan_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3698,7 +3597,7 @@ func (x *Plan) String() string { func (*Plan) ProtoMessage() {} func (x *Plan) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[34] + mi := &file_plan_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3711,7 +3610,7 @@ func (x *Plan) ProtoReflect() protoreflect.Message { // Deprecated: Use Plan.ProtoReflect.Descriptor instead. func (*Plan) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{34} + return file_plan_proto_rawDescGZIP(), []int{33} } func (m *Plan) GetPlan() isPlan_Plan { @@ -3793,7 +3692,7 @@ type DataDefinition struct { func (x *DataDefinition) Reset() { *x = DataDefinition{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[35] + mi := &file_plan_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3806,7 +3705,7 @@ func (x *DataDefinition) String() string { func (*DataDefinition) ProtoMessage() {} func (x *DataDefinition) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[35] + mi := &file_plan_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3819,7 +3718,7 @@ func (x *DataDefinition) ProtoReflect() protoreflect.Message { // Deprecated: Use DataDefinition.ProtoReflect.Descriptor instead. func (*DataDefinition) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{35} + return file_plan_proto_rawDescGZIP(), []int{34} } func (x *DataDefinition) GetDdlType() DataDefinition_DdlType { @@ -4002,7 +3901,7 @@ type CreateDatabase struct { func (x *CreateDatabase) Reset() { *x = CreateDatabase{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[36] + mi := &file_plan_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4015,7 +3914,7 @@ func (x *CreateDatabase) String() string { func (*CreateDatabase) ProtoMessage() {} func (x *CreateDatabase) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[36] + mi := &file_plan_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4028,7 +3927,7 @@ func (x *CreateDatabase) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateDatabase.ProtoReflect.Descriptor instead. func (*CreateDatabase) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{36} + return file_plan_proto_rawDescGZIP(), []int{35} } func (x *CreateDatabase) GetIfNotExists() bool { @@ -4057,7 +3956,7 @@ type AlterDatabase struct { func (x *AlterDatabase) Reset() { *x = AlterDatabase{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[37] + mi := &file_plan_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4070,7 +3969,7 @@ func (x *AlterDatabase) String() string { func (*AlterDatabase) ProtoMessage() {} func (x *AlterDatabase) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[37] + mi := &file_plan_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4083,7 +3982,7 @@ func (x *AlterDatabase) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterDatabase.ProtoReflect.Descriptor instead. func (*AlterDatabase) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{37} + return file_plan_proto_rawDescGZIP(), []int{36} } func (x *AlterDatabase) GetIfExists() bool { @@ -4112,7 +4011,7 @@ type DropDatabase struct { func (x *DropDatabase) Reset() { *x = DropDatabase{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[38] + mi := &file_plan_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4125,7 +4024,7 @@ func (x *DropDatabase) String() string { func (*DropDatabase) ProtoMessage() {} func (x *DropDatabase) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[38] + mi := &file_plan_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4138,7 +4037,7 @@ func (x *DropDatabase) ProtoReflect() protoreflect.Message { // Deprecated: Use DropDatabase.ProtoReflect.Descriptor instead. func (*DropDatabase) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{38} + return file_plan_proto_rawDescGZIP(), []int{37} } func (x *DropDatabase) GetIfExists() bool { @@ -4169,7 +4068,7 @@ type CreateTable struct { func (x *CreateTable) Reset() { *x = CreateTable{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[39] + mi := &file_plan_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4182,7 +4081,7 @@ func (x *CreateTable) String() string { func (*CreateTable) ProtoMessage() {} func (x *CreateTable) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[39] + mi := &file_plan_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4195,7 +4094,7 @@ func (x *CreateTable) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTable.ProtoReflect.Descriptor instead. func (*CreateTable) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{39} + return file_plan_proto_rawDescGZIP(), []int{38} } func (x *CreateTable) GetIfNotExists() bool { @@ -4238,7 +4137,7 @@ type AlterTable struct { func (x *AlterTable) Reset() { *x = AlterTable{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[40] + mi := &file_plan_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4251,7 +4150,7 @@ func (x *AlterTable) String() string { func (*AlterTable) ProtoMessage() {} func (x *AlterTable) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[40] + mi := &file_plan_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4264,7 +4163,7 @@ func (x *AlterTable) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterTable.ProtoReflect.Descriptor instead. func (*AlterTable) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{40} + return file_plan_proto_rawDescGZIP(), []int{39} } func (x *AlterTable) GetTable() string { @@ -4294,7 +4193,7 @@ type DropTable struct { func (x *DropTable) Reset() { *x = DropTable{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[41] + mi := &file_plan_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4307,7 +4206,7 @@ func (x *DropTable) String() string { func (*DropTable) ProtoMessage() {} func (x *DropTable) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[41] + mi := &file_plan_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4320,7 +4219,7 @@ func (x *DropTable) ProtoReflect() protoreflect.Message { // Deprecated: Use DropTable.ProtoReflect.Descriptor instead. func (*DropTable) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{41} + return file_plan_proto_rawDescGZIP(), []int{40} } func (x *DropTable) GetIfExists() bool { @@ -4356,7 +4255,7 @@ type CreateIndex struct { func (x *CreateIndex) Reset() { *x = CreateIndex{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[42] + mi := &file_plan_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4369,7 +4268,7 @@ func (x *CreateIndex) String() string { func (*CreateIndex) ProtoMessage() {} func (x *CreateIndex) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[42] + mi := &file_plan_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4382,7 +4281,7 @@ func (x *CreateIndex) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateIndex.ProtoReflect.Descriptor instead. func (*CreateIndex) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{42} + return file_plan_proto_rawDescGZIP(), []int{41} } func (x *CreateIndex) GetIfNotExists() bool { @@ -4410,7 +4309,7 @@ type AlterIndex struct { func (x *AlterIndex) Reset() { *x = AlterIndex{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[43] + mi := &file_plan_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4423,7 +4322,7 @@ func (x *AlterIndex) String() string { func (*AlterIndex) ProtoMessage() {} func (x *AlterIndex) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[43] + mi := &file_plan_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4436,7 +4335,7 @@ func (x *AlterIndex) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterIndex.ProtoReflect.Descriptor instead. func (*AlterIndex) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{43} + return file_plan_proto_rawDescGZIP(), []int{42} } func (x *AlterIndex) GetIndex() string { @@ -4458,7 +4357,7 @@ type DropIndex struct { func (x *DropIndex) Reset() { *x = DropIndex{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[44] + mi := &file_plan_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4471,7 +4370,7 @@ func (x *DropIndex) String() string { func (*DropIndex) ProtoMessage() {} func (x *DropIndex) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[44] + mi := &file_plan_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4484,7 +4383,7 @@ func (x *DropIndex) ProtoReflect() protoreflect.Message { // Deprecated: Use DropIndex.ProtoReflect.Descriptor instead. func (*DropIndex) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{44} + return file_plan_proto_rawDescGZIP(), []int{43} } func (x *DropIndex) GetIfExists() bool { @@ -4512,7 +4411,7 @@ type TruncateTable struct { func (x *TruncateTable) Reset() { *x = TruncateTable{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[45] + mi := &file_plan_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4525,7 +4424,7 @@ func (x *TruncateTable) String() string { func (*TruncateTable) ProtoMessage() {} func (x *TruncateTable) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[45] + mi := &file_plan_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4538,7 +4437,7 @@ func (x *TruncateTable) ProtoReflect() protoreflect.Message { // Deprecated: Use TruncateTable.ProtoReflect.Descriptor instead. func (*TruncateTable) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{45} + return file_plan_proto_rawDescGZIP(), []int{44} } func (x *TruncateTable) GetTable() string { @@ -4560,7 +4459,7 @@ type ShowVariables struct { func (x *ShowVariables) Reset() { *x = ShowVariables{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[46] + mi := &file_plan_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4573,7 +4472,7 @@ func (x *ShowVariables) String() string { func (*ShowVariables) ProtoMessage() {} func (x *ShowVariables) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[46] + mi := &file_plan_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4586,7 +4485,7 @@ func (x *ShowVariables) ProtoReflect() protoreflect.Message { // Deprecated: Use ShowVariables.ProtoReflect.Descriptor instead. func (*ShowVariables) Descriptor() ([]byte, []int) { - return file_plan_proto_rawDescGZIP(), []int{46} + return file_plan_proto_rawDescGZIP(), []int{45} } func (x *ShowVariables) GetGlobal() bool { @@ -4618,7 +4517,7 @@ type TableDef_DefType struct { func (x *TableDef_DefType) Reset() { *x = TableDef_DefType{} if protoimpl.UnsafeEnabled { - mi := &file_plan_proto_msgTypes[47] + mi := &file_plan_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4631,7 +4530,7 @@ func (x *TableDef_DefType) String() string { func (*TableDef_DefType) ProtoMessage() {} func (x *TableDef_DefType) ProtoReflect() protoreflect.Message { - mi := &file_plan_proto_msgTypes[47] + mi := &file_plan_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4956,7 +4855,7 @@ var file_plan_proto_rawDesc = []byte{ 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x45, - 0x78, 0x70, 0x72, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x9a, 0x0a, 0x0a, 0x04, + 0x78, 0x70, 0x72, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x90, 0x0a, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, @@ -5003,238 +4902,228 @@ var file_plan_proto_rawDesc = []byte{ 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xff, 0x02, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0e, 0x0a, 0x0a, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x10, 0x01, 0x12, - 0x0e, 0x0a, 0x0a, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x10, 0x02, 0x12, - 0x11, 0x0a, 0x0d, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x41, 0x4e, - 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x53, - 0x43, 0x41, 0x4e, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x41, 0x54, 0x45, 0x52, 0x49, 0x41, - 0x4c, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x4a, - 0x45, 0x43, 0x54, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, - 0x4c, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0b, 0x12, 0x0c, 0x0a, 0x08, - 0x4d, 0x41, 0x54, 0x45, 0x52, 0x49, 0x41, 0x4c, 0x10, 0x14, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, - 0x43, 0x55, 0x52, 0x53, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x54, 0x45, 0x10, 0x15, 0x12, 0x08, 0x0a, - 0x04, 0x53, 0x49, 0x4e, 0x4b, 0x10, 0x16, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x49, 0x4e, 0x4b, 0x5f, - 0x53, 0x43, 0x41, 0x4e, 0x10, 0x17, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x47, 0x47, 0x10, 0x1e, 0x12, - 0x08, 0x0a, 0x04, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x1f, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x41, 0x4d, - 0x50, 0x4c, 0x45, 0x10, 0x20, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x4f, 0x52, 0x54, 0x10, 0x21, 0x12, - 0x09, 0x0a, 0x05, 0x55, 0x4e, 0x49, 0x4f, 0x4e, 0x10, 0x22, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, - 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x23, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x4e, 0x49, - 0x51, 0x55, 0x45, 0x10, 0x24, 0x12, 0x0a, 0x0a, 0x06, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x10, - 0x25, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x10, 0x28, - 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x4c, 0x49, 0x54, 0x10, 0x29, 0x12, 0x0a, 0x0a, 0x06, 0x47, - 0x41, 0x54, 0x48, 0x45, 0x52, 0x10, 0x2a, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x53, 0x53, 0x45, 0x52, - 0x54, 0x10, 0x32, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x33, 0x12, - 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x34, 0x12, 0x0a, 0x0a, 0x06, 0x44, - 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x35, 0x22, 0x55, 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x46, - 0x6c, 0x61, 0x67, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x00, 0x12, 0x09, - 0x0a, 0x05, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4d, - 0x49, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x4e, 0x54, 0x49, 0x10, 0x04, 0x12, 0x0a, 0x0a, - 0x06, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x41, 0x52, - 0x4b, 0x10, 0x10, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x10, 0x20, 0x22, 0x28, - 0x0a, 0x07, 0x41, 0x67, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, - 0x4c, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x10, 0x01, 0x12, - 0x07, 0x0a, 0x03, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x22, 0x9c, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x37, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, - 0x73, 0x22, 0x34, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x12, 0x0a, 0x0e, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, - 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x52, - 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x22, 0xe5, 0x01, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x12, 0x31, 0x0a, 0x09, 0x73, 0x74, 0x6d, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x73, 0x74, 0x6d, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x12, 0x1b, 0x0a, 0x05, 0x6e, 0x6f, - 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x57, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, - 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x10, 0x01, - 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, - 0x54, 0x45, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x45, 0x52, 0x47, 0x45, 0x10, 0x05, 0x22, - 0x8e, 0x02, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x63, 0x6c, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x63, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x07, 0x74, 0x63, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x05, - 0x62, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x48, 0x00, 0x52, - 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x12, 0x2b, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x12, 0x31, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x08, 0x72, 0x6f, - 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x22, 0x2e, 0x0a, 0x07, 0x54, 0x63, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, - 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x4f, 0x4c, 0x4c, - 0x42, 0x41, 0x43, 0x4b, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x81, 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x65, 0x67, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x65, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x39, 0x0a, 0x0e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, - 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, - 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x57, 0x52, 0x49, - 0x54, 0x45, 0x10, 0x02, 0x22, 0x56, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x58, 0x0a, 0x12, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, - 0x63, 0x6b, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x7b, 0x0a, 0x04, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x1e, - 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x26, - 0x0a, 0x03, 0x74, 0x63, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x48, - 0x00, 0x52, 0x03, 0x74, 0x63, 0x6c, 0x12, 0x23, 0x0a, 0x03, 0x64, 0x64, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x64, 0x64, 0x6c, 0x42, 0x06, 0x0a, 0x04, 0x70, - 0x6c, 0x61, 0x6e, 0x22, 0xc4, 0x08, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x64, 0x64, 0x6c, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x44, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x64, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x07, 0x64, 0x64, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x05, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0f, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0e, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x41, - 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, - 0x61, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x34, 0x0a, - 0x0d, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x0b, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x41, 0x6c, - 0x74, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x6c, 0x74, 0x65, - 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x0a, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x44, 0x72, 0x6f, - 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x09, 0x64, 0x72, 0x6f, 0x70, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2e, 0x0a, 0x0b, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x41, 0x6c, - 0x74, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x6c, 0x74, 0x65, - 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2b, 0x0a, 0x0a, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x44, 0x72, 0x6f, - 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x48, 0x00, 0x52, 0x09, 0x64, 0x72, 0x6f, 0x70, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x37, 0x0a, 0x0e, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x54, 0x72, - 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x74, - 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x0e, - 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x94, 0x03, 0x0a, 0x07, 0x44, 0x64, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, - 0x42, 0x41, 0x53, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, - 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x52, - 0x4f, 0x50, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, - 0x0c, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, - 0x0f, 0x0a, 0x0b, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, - 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, - 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, - 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, - 0x58, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x44, 0x45, - 0x58, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x52, 0x55, 0x4e, 0x43, 0x41, 0x54, 0x45, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x48, 0x4f, 0x57, 0x5f, - 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x0a, - 0x12, 0x14, 0x0a, 0x10, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x54, - 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x44, - 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x48, - 0x4f, 0x57, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x0d, 0x12, 0x10, 0x0a, 0x0c, 0x53, - 0x48, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x53, 0x10, 0x0e, 0x12, 0x0e, 0x0a, - 0x0a, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x0f, 0x12, 0x12, 0x0a, - 0x0e, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, - 0x10, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, - 0x47, 0x53, 0x10, 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x53, 0x10, 0x12, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x10, 0x13, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x50, - 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x14, 0x42, 0x0c, 0x0a, 0x0a, - 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x0e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0d, - 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, 0x48, 0x0a, 0x0d, - 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x0a, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, + 0x73, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x22, 0xff, 0x02, 0x0a, 0x08, + 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x53, + 0x43, 0x41, 0x4e, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, + 0x43, 0x41, 0x4e, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x58, 0x54, 0x45, + 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x4d, + 0x41, 0x54, 0x45, 0x52, 0x49, 0x41, 0x4c, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x10, 0x05, 0x12, 0x0b, + 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, 0x45, + 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x41, 0x54, 0x45, 0x52, 0x49, 0x41, 0x4c, 0x10, 0x14, + 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x43, 0x55, 0x52, 0x53, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x54, + 0x45, 0x10, 0x15, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x49, 0x4e, 0x4b, 0x10, 0x16, 0x12, 0x0d, 0x0a, + 0x09, 0x53, 0x49, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x10, 0x17, 0x12, 0x07, 0x0a, 0x03, + 0x41, 0x47, 0x47, 0x10, 0x1e, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x1f, 0x12, + 0x0a, 0x0a, 0x06, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x20, 0x12, 0x08, 0x0a, 0x04, 0x53, + 0x4f, 0x52, 0x54, 0x10, 0x21, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x4e, 0x49, 0x4f, 0x4e, 0x10, 0x22, + 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x23, 0x12, + 0x0a, 0x0a, 0x06, 0x55, 0x4e, 0x49, 0x51, 0x55, 0x45, 0x10, 0x24, 0x12, 0x0a, 0x0a, 0x06, 0x57, + 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x10, 0x25, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x52, 0x4f, 0x41, 0x44, + 0x43, 0x41, 0x53, 0x54, 0x10, 0x28, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x4c, 0x49, 0x54, 0x10, + 0x29, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x41, 0x54, 0x48, 0x45, 0x52, 0x10, 0x2a, 0x12, 0x0a, 0x0a, + 0x06, 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x10, 0x32, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x53, + 0x45, 0x52, 0x54, 0x10, 0x33, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, + 0x34, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x35, 0x22, 0x55, 0x0a, + 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, 0x4e, + 0x45, 0x52, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, + 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4d, 0x49, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x4e, 0x54, + 0x49, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x08, 0x12, + 0x08, 0x0a, 0x04, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x10, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x50, 0x50, + 0x4c, 0x59, 0x10, 0x20, 0x22, 0x28, 0x0a, 0x07, 0x41, 0x67, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x4f, 0x54, + 0x54, 0x4f, 0x4d, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x22, 0xe5, + 0x01, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x31, 0x0a, 0x09, 0x73, 0x74, 0x6d, 0x74, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x08, 0x73, 0x74, 0x6d, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x74, 0x65, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x65, 0x70, + 0x73, 0x12, 0x1b, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x05, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1d, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, + 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x57, 0x0a, + 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, + 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, + 0x45, 0x4c, 0x45, 0x43, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x53, 0x45, 0x52, + 0x54, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x12, + 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x4d, + 0x45, 0x52, 0x47, 0x45, 0x10, 0x05, 0x22, 0x8e, 0x02, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x35, 0x0a, 0x08, + 0x74, 0x63, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x54, 0x63, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x74, 0x63, 0x6c, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x65, 0x67, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x12, 0x2b, 0x0a, + 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x31, 0x0a, 0x08, 0x72, 0x6f, + 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, + 0x6b, 0x48, 0x00, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x22, 0x2e, 0x0a, + 0x07, 0x54, 0x63, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x45, 0x47, 0x49, + 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x52, 0x4f, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x02, 0x42, 0x08, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x39, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, + 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, + 0x45, 0x41, 0x44, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x22, 0x56, 0x0a, 0x10, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, + 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x22, 0x58, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x7b, 0x0a, + 0x04, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x1e, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x05, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x74, 0x63, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x03, 0x74, 0x63, 0x6c, 0x12, 0x23, 0x0a, + 0x03, 0x64, 0x64, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x64, + 0x64, 0x6c, 0x42, 0x06, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x22, 0xc4, 0x08, 0x0a, 0x0e, 0x44, + 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, + 0x08, 0x64, 0x64, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x17, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x44, 0x64, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x64, 0x64, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1c, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x06, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, + 0x3a, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0e, 0x61, + 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0d, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x72, + 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x72, + 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, + 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2e, 0x0a, + 0x0b, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, + 0x00, 0x52, 0x0a, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, + 0x0a, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0a, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, + 0x09, 0x64, 0x72, 0x6f, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x48, 0x00, + 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2e, 0x0a, + 0x0b, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x48, + 0x00, 0x52, 0x0a, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2b, 0x0a, + 0x0a, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0a, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x48, 0x00, 0x52, + 0x09, 0x64, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x37, 0x0a, 0x0e, 0x74, 0x72, + 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x0e, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x53, 0x68, + 0x6f, 0x77, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x73, + 0x68, 0x6f, 0x77, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x94, 0x03, 0x0a, + 0x07, 0x44, 0x64, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, + 0x0e, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, + 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, + 0x53, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x5f, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x52, 0x4f, 0x50, 0x5f, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x52, 0x45, 0x41, 0x54, + 0x45, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x4c, 0x54, + 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x52, + 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x52, + 0x55, 0x4e, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x09, 0x12, 0x17, + 0x0a, 0x13, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x41, 0x54, + 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x0a, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x48, 0x4f, 0x57, 0x5f, + 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0b, 0x12, 0x12, 0x0a, + 0x0e, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x53, 0x10, + 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x53, + 0x10, 0x0d, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, + 0x4e, 0x53, 0x10, 0x0e, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x49, 0x4e, 0x44, + 0x45, 0x58, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x56, 0x41, 0x52, + 0x49, 0x41, 0x42, 0x4c, 0x45, 0x53, 0x10, 0x10, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x48, 0x4f, 0x57, + 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x53, 0x10, 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x53, + 0x48, 0x4f, 0x57, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x12, 0x12, 0x0f, 0x0a, 0x0b, + 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x13, 0x12, 0x14, 0x0a, + 0x10, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0x14, 0x42, 0x0c, 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x50, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, + 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x66, 0x4e, 0x6f, + 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x22, 0x48, 0x0a, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x66, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, 0x47, 0x0a, + 0x0c, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x66, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, 0x47, 0x0a, 0x0c, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x66, 0x5f, 0x65, 0x78, 0x69, - 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x66, 0x45, 0x78, 0x69, - 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, - 0x93, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, - 0x22, 0x0a, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, - 0x73, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, - 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x26, 0x0a, - 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x09, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x52, 0x08, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x44, 0x65, 0x66, 0x22, 0x4a, 0x0a, 0x0a, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x09, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, - 0x66, 0x22, 0x5a, 0x0a, 0x09, 0x44, 0x72, 0x6f, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, + 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, + 0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65, + 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x74, + 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, + 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x44, + 0x65, 0x66, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x22, 0x4a, 0x0a, 0x0a, + 0x41, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x26, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x52, 0x08, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x22, 0x5a, 0x0a, 0x09, 0x44, 0x72, 0x6f, 0x70, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x66, 0x5f, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x66, 0x45, 0x78, 0x69, 0x73, + 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x22, 0x47, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, + 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x66, 0x4e, 0x6f, + 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x22, 0x0a, + 0x0a, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x22, 0x3e, 0x0a, 0x09, 0x44, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x66, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x69, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x47, 0x0a, - 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0d, - 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x22, 0x0a, 0x0a, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x3e, 0x0a, 0x09, 0x44, 0x72, - 0x6f, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x66, 0x5f, 0x65, 0x78, - 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x66, 0x45, 0x78, - 0x69, 0x73, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x25, 0x0a, 0x0d, 0x54, 0x72, - 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x22, 0x44, 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x06, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x12, 0x1b, 0x0a, 0x05, 0x77, 0x68, - 0x65, 0x72, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x45, 0x78, 0x70, 0x72, - 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x2a, 0x21, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, - 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x7a, 0x34, 0x10, 0x01, 0x2a, 0x40, 0x0a, 0x18, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x10, - 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x10, 0x01, 0x12, - 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x10, 0x02, 0x42, 0x07, 0x5a, 0x05, - 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x08, 0x52, 0x08, 0x69, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x22, 0x25, 0x0a, 0x0d, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x44, 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x77, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x12, 0x1b, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x05, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x2a, 0x21, + 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, + 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x7a, 0x34, 0x10, + 0x01, 0x2a, 0x40, 0x0a, 0x18, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, + 0x05, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, 0x5f, 0x43, + 0x48, 0x41, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, + 0x45, 0x10, 0x02, 0x42, 0x07, 0x5a, 0x05, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5249,8 +5138,8 @@ func file_plan_proto_rawDescGZIP() []byte { return file_plan_proto_rawDescData } -var file_plan_proto_enumTypes = make([]protoimpl.EnumInfo, 14) -var file_plan_proto_msgTypes = make([]protoimpl.MessageInfo, 48) +var file_plan_proto_enumTypes = make([]protoimpl.EnumInfo, 13) +var file_plan_proto_msgTypes = make([]protoimpl.MessageInfo, 47) var file_plan_proto_goTypes = []interface{}{ (CompressType)(0), // 0: CompressType (TransationCompletionType)(0), // 1: TransationCompletionType @@ -5261,149 +5150,145 @@ var file_plan_proto_goTypes = []interface{}{ (Node_NodeType)(0), // 6: Node.NodeType (Node_JoinFlag)(0), // 7: Node.JoinFlag (Node_AggMode)(0), // 8: Node.AggMode - (DeleteInfo_DeleteType)(0), // 9: DeleteInfo.DeleteType - (Query_StatementType)(0), // 10: Query.StatementType - (TransationControl_TclType)(0), // 11: TransationControl.TclType - (TransationBegin_TransationMode)(0), // 12: TransationBegin.TransationMode - (DataDefinition_DdlType)(0), // 13: DataDefinition.DdlType - (*Type)(nil), // 14: Type - (*Const)(nil), // 15: Const - (*ParamRef)(nil), // 16: ParamRef - (*VarRef)(nil), // 17: VarRef - (*ColRef)(nil), // 18: ColRef - (*CorrColRef)(nil), // 19: CorrColRef - (*ExprList)(nil), // 20: ExprList - (*TargetType)(nil), // 21: TargetType - (*SubQuery)(nil), // 22: SubQuery - (*ObjectRef)(nil), // 23: ObjectRef - (*Function)(nil), // 24: Function - (*Expr)(nil), // 25: Expr - (*DefaultExpr)(nil), // 26: DefaultExpr - (*ConstantValue)(nil), // 27: ConstantValue - (*Decimal128)(nil), // 28: decimal128 - (*ColDef)(nil), // 29: ColDef - (*IndexDef)(nil), // 30: IndexDef - (*PrimaryKeyDef)(nil), // 31: PrimaryKeyDef - (*Property)(nil), // 32: Property - (*PropertiesDef)(nil), // 33: PropertiesDef - (*TableDef)(nil), // 34: TableDef - (*Cost)(nil), // 35: Cost - (*ColData)(nil), // 36: ColData - (*RowsetData)(nil), // 37: RowsetData - (*OrderBySpec)(nil), // 38: OrderBySpec - (*WindowSpec)(nil), // 39: WindowSpec - (*UpdateList)(nil), // 40: UpdateList - (*Node)(nil), // 41: Node - (*DeleteInfo)(nil), // 42: DeleteInfo - (*Query)(nil), // 43: Query - (*TransationControl)(nil), // 44: TransationControl - (*TransationBegin)(nil), // 45: TransationBegin - (*TransationCommit)(nil), // 46: TransationCommit - (*TransationRollback)(nil), // 47: TransationRollback - (*Plan)(nil), // 48: Plan - (*DataDefinition)(nil), // 49: DataDefinition - (*CreateDatabase)(nil), // 50: CreateDatabase - (*AlterDatabase)(nil), // 51: AlterDatabase - (*DropDatabase)(nil), // 52: DropDatabase - (*CreateTable)(nil), // 53: CreateTable - (*AlterTable)(nil), // 54: AlterTable - (*DropTable)(nil), // 55: DropTable - (*CreateIndex)(nil), // 56: CreateIndex - (*AlterIndex)(nil), // 57: AlterIndex - (*DropIndex)(nil), // 58: DropIndex - (*TruncateTable)(nil), // 59: TruncateTable - (*ShowVariables)(nil), // 60: ShowVariables - (*TableDef_DefType)(nil), // 61: TableDef.DefType + (Query_StatementType)(0), // 9: Query.StatementType + (TransationControl_TclType)(0), // 10: TransationControl.TclType + (TransationBegin_TransationMode)(0), // 11: TransationBegin.TransationMode + (DataDefinition_DdlType)(0), // 12: DataDefinition.DdlType + (*Type)(nil), // 13: Type + (*Const)(nil), // 14: Const + (*ParamRef)(nil), // 15: ParamRef + (*VarRef)(nil), // 16: VarRef + (*ColRef)(nil), // 17: ColRef + (*CorrColRef)(nil), // 18: CorrColRef + (*ExprList)(nil), // 19: ExprList + (*TargetType)(nil), // 20: TargetType + (*SubQuery)(nil), // 21: SubQuery + (*ObjectRef)(nil), // 22: ObjectRef + (*Function)(nil), // 23: Function + (*Expr)(nil), // 24: Expr + (*DefaultExpr)(nil), // 25: DefaultExpr + (*ConstantValue)(nil), // 26: ConstantValue + (*Decimal128)(nil), // 27: decimal128 + (*ColDef)(nil), // 28: ColDef + (*IndexDef)(nil), // 29: IndexDef + (*PrimaryKeyDef)(nil), // 30: PrimaryKeyDef + (*Property)(nil), // 31: Property + (*PropertiesDef)(nil), // 32: PropertiesDef + (*TableDef)(nil), // 33: TableDef + (*Cost)(nil), // 34: Cost + (*ColData)(nil), // 35: ColData + (*RowsetData)(nil), // 36: RowsetData + (*OrderBySpec)(nil), // 37: OrderBySpec + (*WindowSpec)(nil), // 38: WindowSpec + (*UpdateList)(nil), // 39: UpdateList + (*Node)(nil), // 40: Node + (*Query)(nil), // 41: Query + (*TransationControl)(nil), // 42: TransationControl + (*TransationBegin)(nil), // 43: TransationBegin + (*TransationCommit)(nil), // 44: TransationCommit + (*TransationRollback)(nil), // 45: TransationRollback + (*Plan)(nil), // 46: Plan + (*DataDefinition)(nil), // 47: DataDefinition + (*CreateDatabase)(nil), // 48: CreateDatabase + (*AlterDatabase)(nil), // 49: AlterDatabase + (*DropDatabase)(nil), // 50: DropDatabase + (*CreateTable)(nil), // 51: CreateTable + (*AlterTable)(nil), // 52: AlterTable + (*DropTable)(nil), // 53: DropTable + (*CreateIndex)(nil), // 54: CreateIndex + (*AlterIndex)(nil), // 55: AlterIndex + (*DropIndex)(nil), // 56: DropIndex + (*TruncateTable)(nil), // 57: TruncateTable + (*ShowVariables)(nil), // 58: ShowVariables + (*TableDef_DefType)(nil), // 59: TableDef.DefType } var file_plan_proto_depIdxs = []int32{ 2, // 0: Type.id:type_name -> Type.TypeId - 25, // 1: ExprList.list:type_name -> Expr - 14, // 2: TargetType.typ:type_name -> Type - 23, // 3: Function.func:type_name -> ObjectRef - 25, // 4: Function.args:type_name -> Expr - 14, // 5: Expr.typ:type_name -> Type - 15, // 6: Expr.c:type_name -> Const - 16, // 7: Expr.p:type_name -> ParamRef - 17, // 8: Expr.v:type_name -> VarRef - 18, // 9: Expr.col:type_name -> ColRef - 24, // 10: Expr.f:type_name -> Function - 20, // 11: Expr.list:type_name -> ExprList - 22, // 12: Expr.sub:type_name -> SubQuery - 19, // 13: Expr.corr:type_name -> CorrColRef - 21, // 14: Expr.t:type_name -> TargetType - 27, // 15: DefaultExpr.value:type_name -> ConstantValue - 28, // 16: ConstantValue.decimal128_v:type_name -> decimal128 + 24, // 1: ExprList.list:type_name -> Expr + 13, // 2: TargetType.typ:type_name -> Type + 22, // 3: Function.func:type_name -> ObjectRef + 24, // 4: Function.args:type_name -> Expr + 13, // 5: Expr.typ:type_name -> Type + 14, // 6: Expr.c:type_name -> Const + 15, // 7: Expr.p:type_name -> ParamRef + 16, // 8: Expr.v:type_name -> VarRef + 17, // 9: Expr.col:type_name -> ColRef + 23, // 10: Expr.f:type_name -> Function + 19, // 11: Expr.list:type_name -> ExprList + 21, // 12: Expr.sub:type_name -> SubQuery + 18, // 13: Expr.corr:type_name -> CorrColRef + 20, // 14: Expr.t:type_name -> TargetType + 26, // 15: DefaultExpr.value:type_name -> ConstantValue + 27, // 16: ConstantValue.decimal128_v:type_name -> decimal128 0, // 17: ColDef.alg:type_name -> CompressType - 14, // 18: ColDef.typ:type_name -> Type - 26, // 19: ColDef.default:type_name -> DefaultExpr + 13, // 18: ColDef.typ:type_name -> Type + 25, // 19: ColDef.default:type_name -> DefaultExpr 4, // 20: IndexDef.typ:type_name -> IndexDef.IndexType - 32, // 21: PropertiesDef.properties:type_name -> Property - 29, // 22: TableDef.cols:type_name -> ColDef - 61, // 23: TableDef.defs:type_name -> TableDef.DefType - 34, // 24: RowsetData.schema:type_name -> TableDef - 36, // 25: RowsetData.cols:type_name -> ColData - 25, // 26: OrderBySpec.expr:type_name -> Expr + 31, // 21: PropertiesDef.properties:type_name -> Property + 28, // 22: TableDef.cols:type_name -> ColDef + 59, // 23: TableDef.defs:type_name -> TableDef.DefType + 33, // 24: RowsetData.schema:type_name -> TableDef + 35, // 25: RowsetData.cols:type_name -> ColData + 24, // 26: OrderBySpec.expr:type_name -> Expr 5, // 27: OrderBySpec.flag:type_name -> OrderBySpec.OrderByFlag - 25, // 28: WindowSpec.partition_by:type_name -> Expr - 38, // 29: WindowSpec.order_by:type_name -> OrderBySpec - 25, // 30: UpdateList.columns:type_name -> Expr - 25, // 31: UpdateList.values:type_name -> Expr + 24, // 28: WindowSpec.partition_by:type_name -> Expr + 37, // 29: WindowSpec.order_by:type_name -> OrderBySpec + 24, // 30: UpdateList.columns:type_name -> Expr + 24, // 31: UpdateList.values:type_name -> Expr 6, // 32: Node.node_type:type_name -> Node.NodeType - 35, // 33: Node.cost:type_name -> Cost - 25, // 34: Node.project_list:type_name -> Expr + 34, // 33: Node.cost:type_name -> Cost + 24, // 34: Node.project_list:type_name -> Expr 7, // 35: Node.join_type:type_name -> Node.JoinFlag - 25, // 36: Node.on_list:type_name -> Expr - 25, // 37: Node.where_list:type_name -> Expr - 25, // 38: Node.group_by:type_name -> Expr - 25, // 39: Node.grouping_set:type_name -> Expr - 25, // 40: Node.agg_list:type_name -> Expr - 38, // 41: Node.order_by:type_name -> OrderBySpec - 40, // 42: Node.update_list:type_name -> UpdateList - 39, // 43: Node.win_spec:type_name -> WindowSpec - 25, // 44: Node.limit:type_name -> Expr - 25, // 45: Node.offset:type_name -> Expr - 34, // 46: Node.table_def:type_name -> TableDef - 23, // 47: Node.obj_ref:type_name -> ObjectRef - 37, // 48: Node.rowset_data:type_name -> RowsetData - 42, // 49: Node.delete_info:type_name -> DeleteInfo - 9, // 50: DeleteInfo.delete_type:type_name -> DeleteInfo.DeleteType - 10, // 51: Query.stmt_type:type_name -> Query.StatementType - 41, // 52: Query.nodes:type_name -> Node - 25, // 53: Query.params:type_name -> Expr - 11, // 54: TransationControl.tcl_type:type_name -> TransationControl.TclType - 45, // 55: TransationControl.begin:type_name -> TransationBegin - 46, // 56: TransationControl.commit:type_name -> TransationCommit - 47, // 57: TransationControl.rollback:type_name -> TransationRollback - 12, // 58: TransationBegin.mode:type_name -> TransationBegin.TransationMode - 1, // 59: TransationCommit.completion_type:type_name -> TransationCompletionType - 1, // 60: TransationRollback.completion_type:type_name -> TransationCompletionType - 43, // 61: Plan.query:type_name -> Query - 44, // 62: Plan.tcl:type_name -> TransationControl - 49, // 63: Plan.ddl:type_name -> DataDefinition - 13, // 64: DataDefinition.ddl_type:type_name -> DataDefinition.DdlType - 43, // 65: DataDefinition.query:type_name -> Query - 50, // 66: DataDefinition.create_database:type_name -> CreateDatabase - 51, // 67: DataDefinition.alter_database:type_name -> AlterDatabase - 52, // 68: DataDefinition.drop_database:type_name -> DropDatabase - 53, // 69: DataDefinition.create_table:type_name -> CreateTable - 54, // 70: DataDefinition.alter_table:type_name -> AlterTable - 55, // 71: DataDefinition.drop_table:type_name -> DropTable - 56, // 72: DataDefinition.create_index:type_name -> CreateIndex - 57, // 73: DataDefinition.alter_index:type_name -> AlterIndex - 58, // 74: DataDefinition.drop_index:type_name -> DropIndex - 59, // 75: DataDefinition.truncate_table:type_name -> TruncateTable - 60, // 76: DataDefinition.show_variables:type_name -> ShowVariables - 34, // 77: CreateTable.table_def:type_name -> TableDef - 34, // 78: AlterTable.table_def:type_name -> TableDef - 25, // 79: ShowVariables.where:type_name -> Expr - 31, // 80: TableDef.DefType.pk:type_name -> PrimaryKeyDef - 30, // 81: TableDef.DefType.idx:type_name -> IndexDef - 33, // 82: TableDef.DefType.properties:type_name -> PropertiesDef - 83, // [83:83] is the sub-list for method output_type - 83, // [83:83] is the sub-list for method input_type - 83, // [83:83] is the sub-list for extension type_name - 83, // [83:83] is the sub-list for extension extendee - 0, // [0:83] is the sub-list for field type_name + 24, // 36: Node.on_list:type_name -> Expr + 24, // 37: Node.where_list:type_name -> Expr + 24, // 38: Node.group_by:type_name -> Expr + 24, // 39: Node.grouping_set:type_name -> Expr + 24, // 40: Node.agg_list:type_name -> Expr + 37, // 41: Node.order_by:type_name -> OrderBySpec + 39, // 42: Node.update_list:type_name -> UpdateList + 38, // 43: Node.win_spec:type_name -> WindowSpec + 24, // 44: Node.limit:type_name -> Expr + 24, // 45: Node.offset:type_name -> Expr + 33, // 46: Node.table_def:type_name -> TableDef + 22, // 47: Node.obj_ref:type_name -> ObjectRef + 36, // 48: Node.rowset_data:type_name -> RowsetData + 9, // 49: Query.stmt_type:type_name -> Query.StatementType + 40, // 50: Query.nodes:type_name -> Node + 24, // 51: Query.params:type_name -> Expr + 10, // 52: TransationControl.tcl_type:type_name -> TransationControl.TclType + 43, // 53: TransationControl.begin:type_name -> TransationBegin + 44, // 54: TransationControl.commit:type_name -> TransationCommit + 45, // 55: TransationControl.rollback:type_name -> TransationRollback + 11, // 56: TransationBegin.mode:type_name -> TransationBegin.TransationMode + 1, // 57: TransationCommit.completion_type:type_name -> TransationCompletionType + 1, // 58: TransationRollback.completion_type:type_name -> TransationCompletionType + 41, // 59: Plan.query:type_name -> Query + 42, // 60: Plan.tcl:type_name -> TransationControl + 47, // 61: Plan.ddl:type_name -> DataDefinition + 12, // 62: DataDefinition.ddl_type:type_name -> DataDefinition.DdlType + 41, // 63: DataDefinition.query:type_name -> Query + 48, // 64: DataDefinition.create_database:type_name -> CreateDatabase + 49, // 65: DataDefinition.alter_database:type_name -> AlterDatabase + 50, // 66: DataDefinition.drop_database:type_name -> DropDatabase + 51, // 67: DataDefinition.create_table:type_name -> CreateTable + 52, // 68: DataDefinition.alter_table:type_name -> AlterTable + 53, // 69: DataDefinition.drop_table:type_name -> DropTable + 54, // 70: DataDefinition.create_index:type_name -> CreateIndex + 55, // 71: DataDefinition.alter_index:type_name -> AlterIndex + 56, // 72: DataDefinition.drop_index:type_name -> DropIndex + 57, // 73: DataDefinition.truncate_table:type_name -> TruncateTable + 58, // 74: DataDefinition.show_variables:type_name -> ShowVariables + 33, // 75: CreateTable.table_def:type_name -> TableDef + 33, // 76: AlterTable.table_def:type_name -> TableDef + 24, // 77: ShowVariables.where:type_name -> Expr + 30, // 78: TableDef.DefType.pk:type_name -> PrimaryKeyDef + 29, // 79: TableDef.DefType.idx:type_name -> IndexDef + 32, // 80: TableDef.DefType.properties:type_name -> PropertiesDef + 81, // [81:81] is the sub-list for method output_type + 81, // [81:81] is the sub-list for method input_type + 81, // [81:81] is the sub-list for extension type_name + 81, // [81:81] is the sub-list for extension extendee + 0, // [0:81] is the sub-list for field type_name } func init() { file_plan_proto_init() } @@ -5749,18 +5634,6 @@ func file_plan_proto_init() { } } file_plan_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plan_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Query); i { case 0: return &v.state @@ -5772,7 +5645,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransationControl); i { case 0: return &v.state @@ -5784,7 +5657,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransationBegin); i { case 0: return &v.state @@ -5796,7 +5669,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransationCommit); i { case 0: return &v.state @@ -5808,7 +5681,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransationRollback); i { case 0: return &v.state @@ -5820,7 +5693,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Plan); i { case 0: return &v.state @@ -5832,7 +5705,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DataDefinition); i { case 0: return &v.state @@ -5844,7 +5717,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateDatabase); i { case 0: return &v.state @@ -5856,7 +5729,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AlterDatabase); i { case 0: return &v.state @@ -5868,7 +5741,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DropDatabase); i { case 0: return &v.state @@ -5880,7 +5753,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateTable); i { case 0: return &v.state @@ -5892,7 +5765,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AlterTable); i { case 0: return &v.state @@ -5904,7 +5777,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DropTable); i { case 0: return &v.state @@ -5916,7 +5789,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateIndex); i { case 0: return &v.state @@ -5928,7 +5801,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AlterIndex); i { case 0: return &v.state @@ -5940,7 +5813,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DropIndex); i { case 0: return &v.state @@ -5952,7 +5825,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TruncateTable); i { case 0: return &v.state @@ -5964,7 +5837,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShowVariables); i { case 0: return &v.state @@ -5976,7 +5849,7 @@ func file_plan_proto_init() { return nil } } - file_plan_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_plan_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TableDef_DefType); i { case 0: return &v.state @@ -6019,17 +5892,17 @@ func file_plan_proto_init() { (*ConstantValue_TimeStampV)(nil), (*ConstantValue_StringV)(nil), } - file_plan_proto_msgTypes[30].OneofWrappers = []interface{}{ + file_plan_proto_msgTypes[29].OneofWrappers = []interface{}{ (*TransationControl_Begin)(nil), (*TransationControl_Commit)(nil), (*TransationControl_Rollback)(nil), } - file_plan_proto_msgTypes[34].OneofWrappers = []interface{}{ + file_plan_proto_msgTypes[33].OneofWrappers = []interface{}{ (*Plan_Query)(nil), (*Plan_Tcl)(nil), (*Plan_Ddl)(nil), } - file_plan_proto_msgTypes[35].OneofWrappers = []interface{}{ + file_plan_proto_msgTypes[34].OneofWrappers = []interface{}{ (*DataDefinition_CreateDatabase)(nil), (*DataDefinition_AlterDatabase)(nil), (*DataDefinition_DropDatabase)(nil), @@ -6042,7 +5915,7 @@ func file_plan_proto_init() { (*DataDefinition_TruncateTable)(nil), (*DataDefinition_ShowVariables)(nil), } - file_plan_proto_msgTypes[47].OneofWrappers = []interface{}{ + file_plan_proto_msgTypes[46].OneofWrappers = []interface{}{ (*TableDef_DefType_Pk)(nil), (*TableDef_DefType_Idx)(nil), (*TableDef_DefType_Properties)(nil), @@ -6052,8 +5925,8 @@ func file_plan_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_plan_proto_rawDesc, - NumEnums: 14, - NumMessages: 48, + NumEnums: 13, + NumMessages: 47, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/sql/colexec2/deletion/deletion.go b/pkg/sql/colexec2/deletion/deletion.go index cc2307932c3b2f0911b916066102092c6984a417..6e921aabffb1bd8c6378bec2bdc6d2d652246a45 100644 --- a/pkg/sql/colexec2/deletion/deletion.go +++ b/pkg/sql/colexec2/deletion/deletion.go @@ -36,7 +36,8 @@ func Call(proc *process.Process, arg interface{}) (bool, error) { return false, nil } - if err := p.TableSource.Delete(p.Ts, batch.GetVector(bat, p.Keys[0]), p.Keys[0], proc.Snapshot); err != nil { + err := p.TableSource.Delete(p.Ts, bat.GetVector(0), p.UseDeleteKey, proc.Snapshot) + if err != nil { return false, err } diff --git a/pkg/sql/colexec2/deletion/types.go b/pkg/sql/colexec2/deletion/types.go index d4fa6ab463548a940f9bd71685d1706e287654df..d0dd47d0d8bc9428906d8be7fbce259d2be5a47f 100644 --- a/pkg/sql/colexec2/deletion/types.go +++ b/pkg/sql/colexec2/deletion/types.go @@ -23,6 +23,6 @@ type Argument struct { Ts uint64 TableSource engine.Relation M sync.Mutex - Keys []string + UseDeleteKey string AffectedRows uint64 } diff --git a/pkg/sql/compile2/compile.go b/pkg/sql/compile2/compile.go index 6f6cf1584cee398db74b1df634a267728fd01058..599c6f53555ea14290f08adcc919062170d91d6e 100644 --- a/pkg/sql/compile2/compile.go +++ b/pkg/sql/compile2/compile.go @@ -42,8 +42,8 @@ func InitAddress(addr string) { // New is used to new an object of compile func New(db string, sql string, uid string, - e engine.Engine, proc *process.Process) *compile { - return &compile{ + e engine.Engine, proc *process.Process) *Compile { + return &Compile{ e: e, db: db, uid: uid, @@ -54,7 +54,7 @@ func New(db string, sql string, uid string, // Compile is the entrance of the compute-layer, it compiles AST tree to scope list. // A scope is an execution unit. -func (c *compile) Compile(pn *plan.Plan, u interface{}, fill func(interface{}, *batch.Batch) error) (err error) { +func (c *Compile) Compile(pn *plan.Plan, u interface{}, fill func(interface{}, *batch.Batch) error) (err error) { defer func() { if e := recover(); e != nil { err = moerr.NewPanicError(e) @@ -72,16 +72,16 @@ func (c *compile) Compile(pn *plan.Plan, u interface{}, fill func(interface{}, * return nil } -func (c *compile) setAffectedRows(n uint64) { +func (c *Compile) setAffectedRows(n uint64) { c.affectRows = n } -func (c *compile) GetAffectedRows() uint64 { +func (c *Compile) GetAffectedRows() uint64 { return c.affectRows } // Run is an important function of the compute-layer, it executes a single sql according to its scope -func (c *compile) Run(ts uint64) (err error) { +func (c *Compile) Run(ts uint64) (err error) { defer func() { if e := recover(); e != nil { err = moerr.NewPanicError(e) @@ -124,7 +124,7 @@ func (c *compile) Run(ts uint64) (err error) { return nil } -func (c *compile) compileScope(pn *plan.Plan) (*Scope, error) { +func (c *Compile) compileScope(pn *plan.Plan) (*Scope, error) { switch qry := pn.Plan.(type) { case *plan.Plan_Query: return c.compileQuery(qry.Query) @@ -165,7 +165,7 @@ func (c *compile) compileScope(pn *plan.Plan) (*Scope, error) { return nil, errors.New(errno.SyntaxErrororAccessRuleViolation, fmt.Sprintf("query '%s' not support now", pn)) } -func (c *compile) compileQuery(qry *plan.Query) (*Scope, error) { +func (c *Compile) compileQuery(qry *plan.Query) (*Scope, error) { if len(qry.Steps) != 1 { return nil, errors.New(errno.SyntaxErrororAccessRuleViolation, fmt.Sprintf("query '%s' not support now", qry)) } @@ -224,7 +224,7 @@ func (c *compile) compileQuery(qry *plan.Query) (*Scope, error) { return rs, nil } -func (c *compile) compilePlanScope(n *plan.Node, ns []*plan.Node) ([]*Scope, error) { +func (c *Compile) compilePlanScope(n *plan.Node, ns []*plan.Node) ([]*Scope, error) { switch n.NodeType { case plan.Node_VALUE_SCAN: ds := &Scope{Magic: Normal} @@ -331,7 +331,7 @@ func (c *compile) compilePlanScope(n *plan.Node, ns []*plan.Node) ([]*Scope, err } } -func (c *compile) compileRestrict(n *plan.Node, ss []*Scope) []*Scope { +func (c *Compile) compileRestrict(n *plan.Node, ss []*Scope) []*Scope { if len(n.WhereList) == 0 { return ss } @@ -344,7 +344,7 @@ func (c *compile) compileRestrict(n *plan.Node, ss []*Scope) []*Scope { return ss } -func (c *compile) compileProjection(n *plan.Node, ss []*Scope) []*Scope { +func (c *Compile) compileProjection(n *plan.Node, ss []*Scope) []*Scope { for i := range ss { ss[i].Instructions = append(ss[i].Instructions, vm.Instruction{ Op: overload.Projection, @@ -354,7 +354,7 @@ func (c *compile) compileProjection(n *plan.Node, ss []*Scope) []*Scope { return ss } -func (c *compile) compileJoin(n *plan.Node, ss []*Scope, children []*Scope, joinTyp plan.Node_JoinFlag) []*Scope { +func (c *Compile) compileJoin(n *plan.Node, ss []*Scope, children []*Scope, joinTyp plan.Node_JoinFlag) []*Scope { rs := make([]*Scope, len(ss)) for i := range ss { chp := &Scope{ @@ -442,7 +442,7 @@ func (c *compile) compileJoin(n *plan.Node, ss []*Scope, children []*Scope, join return rs } -func (c *compile) compileSort(n *plan.Node, ss []*Scope) []*Scope { +func (c *Compile) compileSort(n *plan.Node, ss []*Scope) []*Scope { switch { case n.Limit != nil && n.Offset == nil && len(n.OrderBy) > 0: // top return c.compileTop(n, ss) @@ -463,7 +463,7 @@ func (c *compile) compileSort(n *plan.Node, ss []*Scope) []*Scope { } } -func (c *compile) compileTop(n *plan.Node, ss []*Scope) []*Scope { +func (c *Compile) compileTop(n *plan.Node, ss []*Scope) []*Scope { for i := range ss { ss[i].Instructions = append(ss[i].Instructions, vm.Instruction{ Op: overload.Top, @@ -492,7 +492,7 @@ func (c *compile) compileTop(n *plan.Node, ss []*Scope) []*Scope { return []*Scope{rs} } -func (c *compile) compileOrder(n *plan.Node, ss []*Scope) []*Scope { +func (c *Compile) compileOrder(n *plan.Node, ss []*Scope) []*Scope { for i := range ss { ss[i].Instructions = append(ss[i].Instructions, vm.Instruction{ Op: overload.Order, @@ -521,7 +521,7 @@ func (c *compile) compileOrder(n *plan.Node, ss []*Scope) []*Scope { return []*Scope{rs} } -func (c *compile) compileOffset(n *plan.Node, ss []*Scope) []*Scope { +func (c *Compile) compileOffset(n *plan.Node, ss []*Scope) []*Scope { for i := range ss { ss[i].Instructions = append(ss[i].Instructions, vm.Instruction{ Op: overload.Offset, @@ -550,7 +550,7 @@ func (c *compile) compileOffset(n *plan.Node, ss []*Scope) []*Scope { return []*Scope{rs} } -func (c *compile) compileLimit(n *plan.Node, ss []*Scope) []*Scope { +func (c *Compile) compileLimit(n *plan.Node, ss []*Scope) []*Scope { for i := range ss { ss[i].Instructions = append(ss[i].Instructions, vm.Instruction{ Op: overload.Limit, @@ -579,7 +579,7 @@ func (c *compile) compileLimit(n *plan.Node, ss []*Scope) []*Scope { return []*Scope{rs} } -func (c *compile) compileGroup(n *plan.Node, ss []*Scope) []*Scope { +func (c *Compile) compileGroup(n *plan.Node, ss []*Scope) []*Scope { for i := range ss { ss[i].Instructions = append(ss[i].Instructions, vm.Instruction{ Op: overload.Group, diff --git a/pkg/sql/compile2/operator.go b/pkg/sql/compile2/operator.go index a845d2028441add2bcad3bcdb8befd9ec4598c8c..1c3ee85617d84532f738e4106698c6e75c6fafad 100644 --- a/pkg/sql/compile2/operator.go +++ b/pkg/sql/compile2/operator.go @@ -129,7 +129,7 @@ func constructRestrict(n *plan.Node) *restrict.Argument { } func constructDeletion(n *plan.Node, eg engine.Engine, snapshot engine.Snapshot) (*deletion.Argument, error) { - dbSource, err := eg.Database(n.ObjRef.DbName, snapshot) + dbSource, err := eg.Database(n.ObjRef.SchemaName, snapshot) if err != nil { return nil, err } @@ -138,8 +138,8 @@ func constructDeletion(n *plan.Node, eg engine.Engine, snapshot engine.Snapshot) return nil, err } return &deletion.Argument{ - TableSource: relation, - Keys: n.DeleteInfo.DeleteKeys, + TableSource: relation, + UseDeleteKey: n.UseDeleteKey, }, nil } diff --git a/pkg/sql/compile2/types.go b/pkg/sql/compile2/types.go index d799ac423c7cb565ebda634a44f33bb58b7ee920..3397f87a5e49da852c1d253333612c6d7ba0b73c 100644 --- a/pkg/sql/compile2/types.go +++ b/pkg/sql/compile2/types.go @@ -83,8 +83,8 @@ type Scope struct { Reg *process.WaitRegister } -// compile contains all the information needed for compilation. -type compile struct { +// Compile contains all the information needed for compilation. +type Compile struct { scope *Scope u interface{} //fill is a result writer runs a callback function. diff --git a/pkg/sql/plan2/build_delete.go b/pkg/sql/plan2/build_delete.go index 3cad583822453929ed68977b65bb1c2a85728c53..cbf5980a427e51796fbe88cb799b0fcd2479f76b 100644 --- a/pkg/sql/plan2/build_delete.go +++ b/pkg/sql/plan2/build_delete.go @@ -38,7 +38,7 @@ func buildDelete(stmt *tree.Delete, ctx CompilerContext) (*Plan, error) { return nil, errors.New(errno.SyntaxErrororAccessRuleViolation, "cannot find delete table") } - // build the stmt of select + // build the projection of select var projectExprs tree.SelectExprs if stmt.Where != nil { if err := buildProjectionFromExpr(stmt.Where.Expr, &projectExprs); err != nil { @@ -55,43 +55,48 @@ func buildDelete(stmt *tree.Delete, ctx CompilerContext) (*Plan, error) { // check col's def if exists in table's def. // this check can remove if buildSelect has checked. - cols, err := checkColumns(projectExprs, tableDef) - if err != nil { - return nil, err - } + // cols, err := checkColumns(projectExprs, tableDef) + // if err != nil { + // return nil, err + // } - // find out deletion's type - var deleteInfo *plan.DeleteInfo + // find out use key to delete + var useKey *ColDef = nil + var useProjectExprs tree.SelectExprs = nil priKeys := ctx.GetPrimaryKeyDef(objRef.SchemaName, tableDef.Name) if priKeys != nil { for _, key := range priKeys { - deleteInfo.DeleteKeys = append(deleteInfo.DeleteKeys, key.Name) - for _, col := range cols { - if key.Name == col { - deleteInfo.DeleteType = plan.DeleteInfo_FILTER_PRIMARY - } + e, _ := tree.NewUnresolvedName(key.Name) + if isDuplicated(e, &projectExprs) { + useProjectExprs = append(useProjectExprs, tree.SelectExpr{Expr: e}) + useKey = key + break } } - } else { + } + if useKey == nil { hideKey := ctx.GetHideKeyDef(objRef.SchemaName, tableDef.Name) if hideKey == nil { return nil, errors.New(errno.SyntaxErrororAccessRuleViolation, "cannot find hide key now") } + useKey = hideKey e, _ := tree.NewUnresolvedName(hideKey.Name) - projectExprs = append(projectExprs, tree.SelectExpr{Expr: e}) + useProjectExprs = append(useProjectExprs, tree.SelectExpr{Expr: e}) } // build the stmt of select and append select node + if len(stmt.OrderBy) > 0 && (stmt.Where == nil && stmt.Limit == nil) { + stmt.OrderBy = nil + } selectStmt := &tree.Select{ Select: &tree.SelectClause{ - Exprs: projectExprs, + Exprs: useProjectExprs, From: &tree.From{Tables: tree.TableExprs{stmt.Table}}, Where: stmt.Where, }, OrderBy: stmt.OrderBy, Limit: stmt.Limit, } - query, binderCtx := newQueryAndSelectCtx(plan.Query_DELETE) nodeId, err := buildSelect(selectStmt, ctx, query, binderCtx) if err != nil { @@ -99,12 +104,13 @@ func buildDelete(stmt *tree.Delete, ctx CompilerContext) (*Plan, error) { } query.Steps = append(query.Steps, nodeId) - // append delete node + // build delete node node := &Node{ - NodeType: plan.Node_DELETE, - ObjRef: objRef, - TableDef: tableDef, - DeleteInfo: deleteInfo, + NodeType: plan.Node_DELETE, + ObjRef: objRef, + TableDef: tableDef, + UseDeleteKey: useKey.Name, + Children: []int32{nodeId}, } appendQueryNode(query, node) @@ -141,6 +147,13 @@ func inTableDef(colName string, tableDef *TableDef) bool { return false } +func buildStarProjection() tree.SelectExprs { + expr := tree.SelectExpr{ + Expr: tree.UnqualifiedStar{}, + } + return tree.SelectExprs{expr} +} + func buildProjectionFromExpr(expr tree.Expr, selectExprs *tree.SelectExprs) error { switch e := expr.(type) { case *tree.NumVal: diff --git a/proto/plan.proto b/proto/plan.proto index d25e6e5bc76b1947aedba7dcf599148e33ee3aec..185189c06b5144d6e8266ad9b57068333f37fc39 100644 --- a/proto/plan.proto +++ b/proto/plan.proto @@ -316,98 +316,89 @@ message UpdateList { message Node { enum NodeType { - UNKNOWN = 0; + UNKNOWN = 0; // Node Types // Scans - VALUE_SCAN = 1; - TABLE_SCAN = 2; - FUNCTION_SCAN = 3; - EXTERNAL_SCAN = 4; - MATERIAL_SCAN = 5; + VALUE_SCAN = 1; + TABLE_SCAN = 2; + FUNCTION_SCAN = 3; + EXTERNAL_SCAN = 4; + MATERIAL_SCAN = 5; // Proj, for convenience - PROJECT = 10; + PROJECT = 10; // External function call (UDF) - EXTERNAL_FUNCTION = 11; + EXTERNAL_FUNCTION = 11; // Material, CTE, etc. - MATERIAL = 20; - RECURSIVE_CTE = 21; - SINK = 22; - SINK_SCAN = 23; + MATERIAL = 20; + RECURSIVE_CTE = 21; + SINK = 22; + SINK_SCAN = 23; // Proper Relational Operators - AGG = 30; - JOIN = 31; - SAMPLE = 32; - SORT = 33; - UNION = 34; - UNION_ALL = 35; - UNIQUE = 36; - WINDOW = 37; + AGG = 30; + JOIN = 31; + SAMPLE = 32; + SORT = 33; + UNION = 34; + UNION_ALL = 35; + UNIQUE = 36; + WINDOW = 37; // Physical tuple mover - BROADCAST = 40; - SPLIT = 41; - GATHER = 42; + BROADCAST = 40; + SPLIT = 41; + GATHER = 42; // Misc - ASSERT = 50; + ASSERT = 50; // - INSERT = 51; - UPDATE = 52; - DELETE = 53; + INSERT = 51; + UPDATE = 52; + DELETE = 53; } enum JoinFlag { - INNER = 0; - OUTER = 1; - SEMI = 2; - ANTI = 4; - SINGLE = 8; - MARK = 16; - APPLY = 32; + INNER = 0; + OUTER = 1; + SEMI = 2; + ANTI = 4; + SINGLE = 8; + MARK = 16; + APPLY = 32; } enum AggMode { - FULL = 0; - BOTTOM = 1; - TOP = 2; + FULL = 0; + BOTTOM = 1; + TOP = 2; } - NodeType node_type = 1; - int32 node_id = 2; - Cost cost = 3; - - repeated Expr project_list = 4; - repeated int32 children = 5; - JoinFlag join_type = 6; - repeated Expr on_list = 7; - repeated Expr where_list = 8; - repeated Expr group_by = 9; - repeated Expr grouping_set = 10; - repeated Expr agg_list = 11; - repeated OrderBySpec order_by = 12; + NodeType node_type = 1; + int32 node_id = 2; + Cost cost = 3; + + repeated Expr project_list = 4; + repeated int32 children = 5; + JoinFlag join_type = 6; + repeated Expr on_list = 7; + repeated Expr where_list = 8; + repeated Expr group_by = 9; + repeated Expr grouping_set = 10; + repeated Expr agg_list = 11; + repeated OrderBySpec order_by = 12; UpdateList update_list = 13; WindowSpec win_spec = 14; - Expr limit = 15; - Expr offset = 16; - TableDef table_def = 17; - ObjectRef obj_ref = 18; + Expr limit = 15; + Expr offset = 16; + TableDef table_def = 17; + ObjectRef obj_ref = 18; RowsetData rowset_data = 19; - string extra_options = 20; - DeleteInfo delete_info = 21; -} - -message DeleteInfo { - enum DeleteType { - FILTER_DEFAULT = 0; - FILTER_PRIMARY = 1; - } - DeleteType delete_type = 1; - repeated string delete_keys = 2; + string extra_options = 20; + string useDeleteKey = 21; } message Query {