diff --git a/cmd/pluginpkg/pluginpkg b/cmd/pluginpkg/pluginpkg new file mode 100755 index 0000000000000..9da90a4758831 Binary files /dev/null and b/cmd/pluginpkg/pluginpkg differ diff --git a/kv/option.go b/kv/option.go index 2bf0248d67373..80d0f7792f172 100644 --- a/kv/option.go +++ b/kv/option.go @@ -113,6 +113,8 @@ const ( ReplicaReadClosest // ReplicaReadClosestAdaptive stands for 'read from follower which locates in the same zone if the response size exceeds certain threshold' ReplicaReadClosestAdaptive + // ReplicaReadLearner stands for 'read from learner'. + ReplicaReadLearner ) // IsFollowerRead checks if follower is going to be used to read data. diff --git a/sessionctx/variable/sysvar.go b/sessionctx/variable/sysvar.go index 376b6d6d9f4fd..fd278d5ff8c0e 100644 --- a/sessionctx/variable/sysvar.go +++ b/sessionctx/variable/sysvar.go @@ -1783,7 +1783,7 @@ var defaultSysVars = []*SysVar{ s.NoopFuncsMode = TiDBOptOnOffWarn(val) return nil }}, - {Scope: ScopeGlobal | ScopeSession, Name: TiDBReplicaRead, Value: "leader", Type: TypeEnum, PossibleValues: []string{"leader", "follower", "leader-and-follower", "closest-replicas", "closest-adaptive"}, SetSession: func(s *SessionVars, val string) error { + {Scope: ScopeGlobal | ScopeSession, Name: TiDBReplicaRead, Value: "leader", Type: TypeEnum, PossibleValues: []string{"leader", "follower", "leader-and-follower", "closest-replicas", "closest-adaptive", "learner"}, SetSession: func(s *SessionVars, val string) error { if strings.EqualFold(val, "follower") { s.SetReplicaRead(kv.ReplicaReadFollower) } else if strings.EqualFold(val, "leader-and-follower") { @@ -1794,6 +1794,8 @@ var defaultSysVars = []*SysVar{ s.SetReplicaRead(kv.ReplicaReadClosest) } else if strings.EqualFold(val, "closest-adaptive") { s.SetReplicaRead(kv.ReplicaReadClosestAdaptive) + } else if strings.EqualFold(val, "learner") { + s.SetReplicaRead(kv.ReplicaReadLearner) } return nil }}, diff --git a/store/driver/options/options.go b/store/driver/options/options.go index 1b677ffc348d0..f3d5471aa440f 100644 --- a/store/driver/options/options.go +++ b/store/driver/options/options.go @@ -32,6 +32,8 @@ func GetTiKVReplicaReadType(t kv.ReplicaReadType) storekv.ReplicaReadType { return storekv.ReplicaReadMixed case kv.ReplicaReadClosestAdaptive: return storekv.ReplicaReadMixed + case kv.ReplicaReadLearner: + return storekv.ReplicaReadLearner } return 0 }