@@ -3,6 +3,7 @@ package main
3
3
import (
4
4
"../src/pyraconv"
5
5
"strings"
6
+ "../src/orderedmap"
6
7
)
7
8
8
9
var Data map [string ]interface {}
@@ -38,16 +39,22 @@ func compareHostsData(data map[string]interface{}) {
38
39
hosts := pyraconv .ToInterfaceMap (data ["hosts" ])
39
40
master := pyraconv .ToString (hosts ["master" ])
40
41
replicas := pyraconv .ToStringArray (hosts ["replicas" ])
41
- resultData := make (map [string ]interface {})
42
+ resultData := orderedmap . New () // make(map[string]interface{})
42
43
43
44
results := pyraconv .ToInterfaceMap (data ["results" ])
44
45
masterData := pyraconv .ToInterfaceMap (results [master ])
45
46
masterData = pyraconv .ToInterfaceMap (masterData ["data" ])
46
47
47
48
allUnusedIndexes := make (map [string ]bool )
48
49
uIndexesData := pyraconv .ToInterfaceMap (masterData ["unused_indexes" ])
49
- uIndexes := make (map [string ]interface {})
50
- for indexName , value := range uIndexesData {
50
+ uIndexes := orderedmap .New ()
51
+ uKeys := pyraconv .ToStringArray (uIndexesData ["_keys" ])
52
+ for i := 0 ; i < len (uKeys ); i ++ {
53
+ indexName := uKeys [i ]
54
+ value := uIndexesData [indexName ]
55
+ if (indexName == "_keys" ) {
56
+ continue
57
+ }
51
58
valueData := pyraconv .ToInterfaceMap (value );
52
59
idxScanValue := pyraconv .ToInt64 (valueData ["idx_scan" ])
53
60
idxScanSum := idxScanValue
@@ -64,13 +71,19 @@ func compareHostsData(data map[string]interface{}) {
64
71
if idxScanSum == 0 {
65
72
allUnusedIndexes [indexName ] = true
66
73
}
67
- uIndexes [ indexName ] = indexData
74
+ uIndexes . Set ( indexName , indexData )
68
75
}
69
- resultData [ "unused_indexes" ] = uIndexes
76
+ resultData . Set ( "unused_indexes" , * uIndexes )
70
77
71
78
rIndexesData := pyraconv .ToInterfaceMap (masterData ["redundant_indexes" ])
72
- rIndexes := make (map [string ]interface {})
73
- for indexName , value := range rIndexesData {
79
+ rIndexes := orderedmap .New ()
80
+ rKeys := pyraconv .ToStringArray (rIndexesData ["_keys" ])
81
+ for i := 0 ; i < len (rKeys ); i ++ {
82
+ indexName := rKeys [i ]
83
+ value := uIndexesData [indexName ]
84
+ if (indexName == "_keys" ) {
85
+ continue
86
+ }
74
87
valueData := pyraconv .ToInterfaceMap (value );
75
88
idxScanValue := pyraconv .ToInt64 (valueData ["index_usage" ])
76
89
idxScanSum := idxScanValue
@@ -87,9 +100,9 @@ func compareHostsData(data map[string]interface{}) {
87
100
if idxScanSum == 0 {
88
101
allUnusedIndexes [indexName ] = true
89
102
}
90
- rIndexes [ indexName ] = indexData
103
+ rIndexes . Set ( indexName , indexData )
91
104
}
92
- resultData [ "redundant_indexes" ] = rIndexes
105
+ resultData . Set ( "redundant_indexes" , * rIndexes )
93
106
94
107
dropCode := make (map [string ]interface {})
95
108
revertCode := make (map [string ]interface {})
@@ -105,10 +118,11 @@ func compareHostsData(data map[string]interface{}) {
105
118
}
106
119
}
107
120
108
- resultData [ "drop_code" ] = dropCode
109
- resultData [ "revert_code" ] = revertCode
121
+ resultData . Set ( "drop_code" , dropCode )
122
+ resultData . Set ( "revert_code" , revertCode )
110
123
111
- data ["resultData" ] = resultData
124
+ rd := resultData .ToInterfaceArray ()
125
+ data ["resultData" ] = rd
112
126
}
113
127
114
128
func getReplicaIndexUsage (data map [string ]interface {}, replica string , indexName string ) (int64 ) {
0 commit comments