@@ -1403,27 +1403,63 @@ func (cmd *MapStringSliceInterfaceCmd) Val() map[string][]interface{} {
14031403}
14041404
14051405func (cmd * MapStringSliceInterfaceCmd ) readReply (rd * proto.Reader ) (err error ) {
1406- n , err := rd .ReadMapLen ()
1406+ readType , err := rd .PeekReplyType ()
14071407if err != nil {
14081408return err
14091409}
1410- cmd .val = make (map [string ][]interface {}, n )
1411- for i := 0 ; i < n ; i ++ {
1412- k , err := rd .ReadString ()
1410+
1411+ cmd .val = make (map [string ][]interface {})
1412+
1413+ if readType == proto .RespMap {
1414+ n , err := rd .ReadMapLen ()
14131415if err != nil {
14141416return err
14151417}
1416- nn , err := rd .ReadArrayLen ()
1418+ for i := 0 ; i < n ; i ++ {
1419+ k , err := rd .ReadString ()
1420+ if err != nil {
1421+ return err
1422+ }
1423+ nn , err := rd .ReadArrayLen ()
1424+ if err != nil {
1425+ return err
1426+ }
1427+ cmd .val [k ] = make ([]interface {}, nn )
1428+ for j := 0 ; j < nn ; j ++ {
1429+ value , err := rd .ReadReply ()
1430+ if err != nil {
1431+ return err
1432+ }
1433+ cmd.val [k ][j ] = value
1434+ }
1435+ }
1436+ } else if readType == proto .RespArray {
1437+ // RESP2 response
1438+ n , err := rd .ReadArrayLen ()
14171439if err != nil {
14181440return err
14191441}
1420- cmd .val [k ] = make ([]interface {}, nn )
1421- for j := 0 ; j < nn ; j ++ {
1422- value , err := rd .ReadReply ()
1442+
1443+ for i := 0 ; i < n ; i ++ {
1444+ // Each entry in this array is itself an array with key details
1445+ itemLen , err := rd .ReadArrayLen ()
14231446if err != nil {
14241447return err
14251448}
1426- cmd.val [k ][j ] = value
1449+
1450+ key , err := rd .ReadString ()
1451+ if err != nil {
1452+ return err
1453+ }
1454+ cmd .val [key ] = make ([]interface {}, 0 , itemLen - 1 )
1455+ for j := 1 ; j < itemLen ; j ++ {
1456+ // Read the inner array for timestamp-value pairs
1457+ data , err := rd .ReadReply ()
1458+ if err != nil {
1459+ return err
1460+ }
1461+ cmd .val [key ] = append (cmd .val [key ], data )
1462+ }
14271463}
14281464}
14291465
0 commit comments