132
}
133
134
>
func (s *historyNodeSuite) TestInsertSelect_Multiple() {
history_node.go
135
>
numNodeIDs := 100
136
>
nodePerNodeID := 2 + rand.Intn(8)
137
>
pageSize := 10 + rand.Intn(10)
138
>
139
>
shardID := rand.Int31()
140
>
treeID := primitives.NewUUID()
141
>
branchID := primitives.NewUUID()
142
>
143
>
nodeID := int64(1)
144
>
minNodeID := nodeID
145
>
maxNodeID := minNodeID + int64(numNodeIDs)
146
>
147
>
var nodes []sqlplugin.HistoryNodeRow
148
>
for range numNodeIDs {
149
>
for range nodePerNodeID {
150
>
node := s.newRandomNodeRow(shardID, treeID, branchID, nodeID, rand.Int63(), rand.Int63())
151
>
result, err := s.store.InsertIntoHistoryNode(newExecutionContext(), &node)
152
>
s.NoError(err)
153
>
rowsAffected, err := result.RowsAffected()
154
>
s.NoError(err)
155
>
s.Equal(1, int(rowsAffected))
156
>
nodes = append(nodes, node)
157
>
}
158
>
nodeID++
159
}
160
162
>
ShardID: shardID,
163
>
TreeID: treeID,
164
>
BranchID: branchID,
165
>
MinNodeID: minNodeID,
166
>
MinTxnID: sql.MinTxnID,
167
>
MaxNodeID: maxNodeID,
168
>
PageSize: pageSize,
169
>
}
170
>
var rows []sqlplugin.HistoryNodeRow
171
>
for {
172
>
rowsPerPage, err := s.store.RangeSelectFromHistoryNode(newExecutionContext(), selectFilter)
173
>
s.NoError(err)
174
>
rows = append(rows, rowsPerPage...)
175
>
176
>
if len(rowsPerPage) > 0 {
177
>
lastNode := rowsPerPage[len(rowsPerPage)-1]
178
>
selectFilter.MinNodeID = lastNode.NodeID
179
>
selectFilter.MinTxnID = lastNode.TxnID
180
>
} else {
181
>
break
182
}
183
}
184
185
// NOTE: TxnID is *= -1 within InsertIntoHistoryNode
187
>
nodes[index].TxnID = -nodes[index].TxnID
188
>
}
189
>
sort.Slice(nodes, func(i, j int) bool {
190
>
this := nodes[i]
191
>
that := nodes[j]
192
>
193
>
if this.NodeID < that.NodeID {
194
>
return true
195
>
} else if this.NodeID > that.NodeID {
196
>
return false
197
>
}
198
199
// larger transaction ID means newer
201
>
return false
202
>
} else if this.TxnID > that.TxnID {
203
>
return true
204
>
}
205
206
// same
207
return true
208
})
210
>
rows[index].ShardID = shardID
211
>
rows[index].TreeID = treeID
212
>
rows[index].BranchID = branchID
213
>
}
214
>
s.Equal(nodes, rows)
215
}
216