@@ -4193,15 +4193,15 @@ func (cmd *GeoPosCmd) Clone() Cmder {
41934193//------------------------------------------------------------------------------
41944194
41954195type CommandInfo struct {
4196- Name string
4197- Arity int8
4198- Flags []string
4199- ACLFlags []string
4200- FirstKeyPos int8
4201- LastKeyPos int8
4202- StepCount int8
4203- ReadOnly bool
4204- Tips * routing.CommandPolicy
4196+ Name string
4197+ Arity int8
4198+ Flags []string
4199+ ACLFlags []string
4200+ FirstKeyPos int8
4201+ LastKeyPos int8
4202+ StepCount int8
4203+ ReadOnly bool
4204+ CommandPolicy * routing.CommandPolicy
42054205}
42064206
42074207type CommandsInfoCmd struct {
@@ -4355,7 +4355,7 @@ func (cmd *CommandsInfoCmd) readReply(rd *proto.Reader) error {
43554355 }
43564356 rawTips [k ] = v
43574357 }
4358- cmdInfo .Tips = parseCommandPolicies (rawTips )
4358+ cmdInfo .CommandPolicy = parseCommandPolicies (rawTips )
43594359
43604360 if err := rd .DiscardNext (); err != nil {
43614361 return err
@@ -4378,13 +4378,13 @@ func (cmd *CommandsInfoCmd) Clone() Cmder {
43784378 for k , v := range cmd .val {
43794379 if v != nil {
43804380 newInfo := & CommandInfo {
4381- Name : v .Name ,
4382- Arity : v .Arity ,
4383- FirstKeyPos : v .FirstKeyPos ,
4384- LastKeyPos : v .LastKeyPos ,
4385- StepCount : v .StepCount ,
4386- ReadOnly : v .ReadOnly ,
4387- Tips : v . Tips , // CommandPolicy can be shared as it's immutable
4381+ Name : v .Name ,
4382+ Arity : v .Arity ,
4383+ FirstKeyPos : v .FirstKeyPos ,
4384+ LastKeyPos : v .LastKeyPos ,
4385+ StepCount : v .StepCount ,
4386+ ReadOnly : v .ReadOnly ,
4387+ CommandPolicy : v . CommandPolicy , // CommandPolicy can be shared as it's immutable
43884388 }
43894389 if v .Flags != nil {
43904390 newInfo .Flags = make ([]string , len (v .Flags ))
@@ -6995,14 +6995,21 @@ func ExtractCommandValue(cmd interface{}) interface{} {
69956995 if statusCmd , ok := cmd .(interface { Val () string }); ok {
69966996 return statusCmd .Val ()
69976997 }
6998- case CmdTypeDuration :
6998+ case CmdTypeDuration , CmdTypeTime , CmdTypeStringStructMap , CmdTypeXMessageSlice ,
6999+ CmdTypeXStreamSlice , CmdTypeXPending , CmdTypeXPendingExt , CmdTypeXAutoClaim ,
7000+ CmdTypeXAutoClaimJustID , CmdTypeXInfoConsumers , CmdTypeXInfoGroups , CmdTypeXInfoStream ,
7001+ CmdTypeXInfoStreamFull , CmdTypeZSlice , CmdTypeZWithKey , CmdTypeScan , CmdTypeClusterSlots ,
7002+ CmdTypeGeoSearchLocation , CmdTypeGeoPos , CmdTypeCommandsInfo , CmdTypeSlowLog ,
7003+ CmdTypeKeyValues , CmdTypeZSliceWithKey , CmdTypeFunctionList , CmdTypeFunctionStats ,
7004+ CmdTypeLCS , CmdTypeKeyFlags , CmdTypeClusterLinks , CmdTypeClusterShards ,
7005+ CmdTypeRankWithScore , CmdTypeClientInfo , CmdTypeACLLog , CmdTypeInfo , CmdTypeMonitor ,
7006+ CmdTypeJSON , CmdTypeJSONSlice , CmdTypeIntPointerSlice , CmdTypeScanDump , CmdTypeBFInfo ,
7007+ CmdTypeCFInfo , CmdTypeCMSInfo , CmdTypeTopKInfo , CmdTypeTDigestInfo , CmdTypeFTSearch ,
7008+ CmdTypeFTInfo , CmdTypeFTSpellCheck , CmdTypeFTSynDump , CmdTypeAggregate ,
7009+ CmdTypeTSTimestampValue , CmdTypeTSTimestampValueSlice :
69997010 if durationCmd , ok := cmd .(interface { Val () interface {} }); ok {
70007011 return durationCmd .Val ()
70017012 }
7002- case CmdTypeTime :
7003- if timeCmd , ok := cmd .(interface { Val () interface {} }); ok {
7004- return timeCmd .Val ()
7005- }
70067013 case CmdTypeStringSlice :
70077014 if stringSliceCmd , ok := cmd .(interface { Val () []string }); ok {
70087015 return stringSliceCmd .Val ()
@@ -7047,199 +7054,6 @@ func ExtractCommandValue(cmd interface{}) interface{} {
70477054 }); ok {
70487055 return mapCmd .Val ()
70497056 }
7050- case CmdTypeStringStructMap :
7051- if mapCmd , ok := cmd .(interface { Val () interface {} }); ok {
7052- return mapCmd .Val ()
7053- }
7054- case CmdTypeXMessageSlice :
7055- if xMsgCmd , ok := cmd .(interface { Val () interface {} }); ok {
7056- return xMsgCmd .Val ()
7057- }
7058- case CmdTypeXStreamSlice :
7059- if xStreamCmd , ok := cmd .(interface { Val () interface {} }); ok {
7060- return xStreamCmd .Val ()
7061- }
7062- case CmdTypeXPending :
7063- if xPendingCmd , ok := cmd .(interface { Val () interface {} }); ok {
7064- return xPendingCmd .Val ()
7065- }
7066- case CmdTypeXPendingExt :
7067- if xPendingExtCmd , ok := cmd .(interface { Val () interface {} }); ok {
7068- return xPendingExtCmd .Val ()
7069- }
7070- case CmdTypeXAutoClaim :
7071- if xAutoClaimCmd , ok := cmd .(interface { Val () interface {} }); ok {
7072- return xAutoClaimCmd .Val ()
7073- }
7074- case CmdTypeXAutoClaimJustID :
7075- if xAutoClaimJustIDCmd , ok := cmd .(interface { Val () interface {} }); ok {
7076- return xAutoClaimJustIDCmd .Val ()
7077- }
7078- case CmdTypeXInfoConsumers :
7079- if xInfoConsumersCmd , ok := cmd .(interface { Val () interface {} }); ok {
7080- return xInfoConsumersCmd .Val ()
7081- }
7082- case CmdTypeXInfoGroups :
7083- if xInfoGroupsCmd , ok := cmd .(interface { Val () interface {} }); ok {
7084- return xInfoGroupsCmd .Val ()
7085- }
7086- case CmdTypeXInfoStream :
7087- if xInfoStreamCmd , ok := cmd .(interface { Val () interface {} }); ok {
7088- return xInfoStreamCmd .Val ()
7089- }
7090- case CmdTypeXInfoStreamFull :
7091- if xInfoStreamFullCmd , ok := cmd .(interface { Val () interface {} }); ok {
7092- return xInfoStreamFullCmd .Val ()
7093- }
7094- case CmdTypeZSlice :
7095- if zSliceCmd , ok := cmd .(interface { Val () interface {} }); ok {
7096- return zSliceCmd .Val ()
7097- }
7098- case CmdTypeZWithKey :
7099- if zWithKeyCmd , ok := cmd .(interface { Val () interface {} }); ok {
7100- return zWithKeyCmd .Val ()
7101- }
7102- case CmdTypeScan :
7103- if scanCmd , ok := cmd .(interface { Val () interface {} }); ok {
7104- return scanCmd .Val ()
7105- }
7106- case CmdTypeClusterSlots :
7107- if clusterSlotsCmd , ok := cmd .(interface { Val () interface {} }); ok {
7108- return clusterSlotsCmd .Val ()
7109- }
7110- case CmdTypeGeoSearchLocation :
7111- if geoSearchLocationCmd , ok := cmd .(interface { Val () interface {} }); ok {
7112- return geoSearchLocationCmd .Val ()
7113- }
7114- case CmdTypeGeoPos :
7115- if geoPosCmd , ok := cmd .(interface { Val () interface {} }); ok {
7116- return geoPosCmd .Val ()
7117- }
7118- case CmdTypeCommandsInfo :
7119- if commandsInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7120- return commandsInfoCmd .Val ()
7121- }
7122- case CmdTypeSlowLog :
7123- if slowLogCmd , ok := cmd .(interface { Val () interface {} }); ok {
7124- return slowLogCmd .Val ()
7125- }
7126-
7127- case CmdTypeKeyValues :
7128- if keyValuesCmd , ok := cmd .(interface { Val () interface {} }); ok {
7129- return keyValuesCmd .Val ()
7130- }
7131- case CmdTypeZSliceWithKey :
7132- if zSliceWithKeyCmd , ok := cmd .(interface { Val () interface {} }); ok {
7133- return zSliceWithKeyCmd .Val ()
7134- }
7135- case CmdTypeFunctionList :
7136- if functionListCmd , ok := cmd .(interface { Val () interface {} }); ok {
7137- return functionListCmd .Val ()
7138- }
7139- case CmdTypeFunctionStats :
7140- if functionStatsCmd , ok := cmd .(interface { Val () interface {} }); ok {
7141- return functionStatsCmd .Val ()
7142- }
7143- case CmdTypeLCS :
7144- if lcsCmd , ok := cmd .(interface { Val () interface {} }); ok {
7145- return lcsCmd .Val ()
7146- }
7147- case CmdTypeKeyFlags :
7148- if keyFlagsCmd , ok := cmd .(interface { Val () interface {} }); ok {
7149- return keyFlagsCmd .Val ()
7150- }
7151- case CmdTypeClusterLinks :
7152- if clusterLinksCmd , ok := cmd .(interface { Val () interface {} }); ok {
7153- return clusterLinksCmd .Val ()
7154- }
7155- case CmdTypeClusterShards :
7156- if clusterShardsCmd , ok := cmd .(interface { Val () interface {} }); ok {
7157- return clusterShardsCmd .Val ()
7158- }
7159- case CmdTypeRankWithScore :
7160- if rankWithScoreCmd , ok := cmd .(interface { Val () interface {} }); ok {
7161- return rankWithScoreCmd .Val ()
7162- }
7163- case CmdTypeClientInfo :
7164- if clientInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7165- return clientInfoCmd .Val ()
7166- }
7167- case CmdTypeACLLog :
7168- if aclLogCmd , ok := cmd .(interface { Val () interface {} }); ok {
7169- return aclLogCmd .Val ()
7170- }
7171- case CmdTypeInfo :
7172- if infoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7173- return infoCmd .Val ()
7174- }
7175- case CmdTypeMonitor :
7176- if monitorCmd , ok := cmd .(interface { Val () interface {} }); ok {
7177- return monitorCmd .Val ()
7178- }
7179- case CmdTypeJSON :
7180- if jsonCmd , ok := cmd .(interface { Val () interface {} }); ok {
7181- return jsonCmd .Val ()
7182- }
7183- case CmdTypeJSONSlice :
7184- if jsonSliceCmd , ok := cmd .(interface { Val () interface {} }); ok {
7185- return jsonSliceCmd .Val ()
7186- }
7187- case CmdTypeIntPointerSlice :
7188- if intPointerSliceCmd , ok := cmd .(interface { Val () interface {} }); ok {
7189- return intPointerSliceCmd .Val ()
7190- }
7191- case CmdTypeScanDump :
7192- if scanDumpCmd , ok := cmd .(interface { Val () interface {} }); ok {
7193- return scanDumpCmd .Val ()
7194- }
7195- case CmdTypeBFInfo :
7196- if bfInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7197- return bfInfoCmd .Val ()
7198- }
7199- case CmdTypeCFInfo :
7200- if cfInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7201- return cfInfoCmd .Val ()
7202- }
7203- case CmdTypeCMSInfo :
7204- if cmsInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7205- return cmsInfoCmd .Val ()
7206- }
7207- case CmdTypeTopKInfo :
7208- if topKInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7209- return topKInfoCmd .Val ()
7210- }
7211- case CmdTypeTDigestInfo :
7212- if tDigestInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7213- return tDigestInfoCmd .Val ()
7214- }
7215- case CmdTypeFTSearch :
7216- if ftSearchCmd , ok := cmd .(interface { Val () interface {} }); ok {
7217- return ftSearchCmd .Val ()
7218- }
7219- case CmdTypeFTInfo :
7220- if ftInfoCmd , ok := cmd .(interface { Val () interface {} }); ok {
7221- return ftInfoCmd .Val ()
7222- }
7223- case CmdTypeFTSpellCheck :
7224- if ftSpellCheckCmd , ok := cmd .(interface { Val () interface {} }); ok {
7225- return ftSpellCheckCmd .Val ()
7226- }
7227- case CmdTypeFTSynDump :
7228- if ftSynDumpCmd , ok := cmd .(interface { Val () interface {} }); ok {
7229- return ftSynDumpCmd .Val ()
7230- }
7231- case CmdTypeAggregate :
7232- if aggregateCmd , ok := cmd .(interface { Val () interface {} }); ok {
7233- return aggregateCmd .Val ()
7234- }
7235- case CmdTypeTSTimestampValue :
7236- if tsTimestampValueCmd , ok := cmd .(interface { Val () interface {} }); ok {
7237- return tsTimestampValueCmd .Val ()
7238- }
7239- case CmdTypeTSTimestampValueSlice :
7240- if tsTimestampValueSliceCmd , ok := cmd .(interface { Val () interface {} }); ok {
7241- return tsTimestampValueSliceCmd .Val ()
7242- }
72437057 default :
72447058 // For unknown command types, return nil
72457059 return nil
0 commit comments