145
133
// test case where we apply a message and the innermost child_id
146
134
// is the same as the innermost committed TXNID
147
XIDS root_xids = xids_get_root_xids();
135
XIDS root_xids = toku_xids_get_root_xids();
148
136
TXNID root_txnid = 1000;
149
137
TXNID child_id = 10;
152
r = xids_create_child(root_xids, &msg_xids_1, root_txnid);
140
r = toku_xids_create_child(root_xids, &msg_xids_1, root_txnid);
154
r = xids_create_child(msg_xids_1, &msg_xids_2, child_id);
142
r = toku_xids_create_child(msg_xids_1, &msg_xids_2, child_id);
157
145
init_empty_ule(&ule_initial);
161
149
add_committed_entry(&ule_initial, &val, 10);
163
151
// now do the application of xids to the ule
166
msg = msg_init(FT_COMMIT_ANY, msg_xids_2, &key, &val);
167
test_msg_modify_ule(&ule_initial, &msg);
168
assert(ule->num_cuxrs == 2);
169
assert(ule->uxrs[0].xid == TXNID_NONE);
170
assert(ule->uxrs[1].xid == 10);
171
assert(ule->uxrs[0].valp == &val_data_one);
172
assert(ule->uxrs[1].valp == &val_data_two);
154
ft_msg msg(&key, &val, FT_COMMIT_ANY, ZERO_MSN, msg_xids_2);
155
test_msg_modify_ule(&ule_initial, msg);
156
assert(ule->num_cuxrs == 2);
157
assert(ule->uxrs[0].xid == TXNID_NONE);
158
assert(ule->uxrs[1].xid == 10);
159
assert(ule->uxrs[0].valp == &val_data_one);
160
assert(ule->uxrs[1].valp == &val_data_two);
175
msg = msg_init(FT_ABORT_ANY, msg_xids_2, &key, &val);
176
test_msg_modify_ule(&ule_initial, &msg);
177
assert(ule->num_cuxrs == 2);
178
assert(ule->uxrs[0].xid == TXNID_NONE);
179
assert(ule->uxrs[1].xid == 10);
180
assert(ule->uxrs[0].valp == &val_data_one);
181
assert(ule->uxrs[1].valp == &val_data_two);
165
ft_msg msg(&key, &val, FT_ABORT_ANY, ZERO_MSN, msg_xids_2);
166
test_msg_modify_ule(&ule_initial, msg);
167
assert(ule->num_cuxrs == 2);
168
assert(ule->uxrs[0].xid == TXNID_NONE);
169
assert(ule->uxrs[1].xid == 10);
170
assert(ule->uxrs[0].valp == &val_data_one);
171
assert(ule->uxrs[1].valp == &val_data_two);
184
175
val.data = &val_data_three;
185
msg = msg_init(FT_INSERT, msg_xids_2, &key, &val);
186
test_msg_modify_ule(&ule_initial, &msg);
187
// now that message applied, verify that things are good
188
assert(ule->num_cuxrs == 2);
189
assert(ule->num_puxrs == 2);
190
assert(ule->uxrs[0].xid == TXNID_NONE);
191
assert(ule->uxrs[1].xid == 10);
192
assert(ule->uxrs[2].xid == 1000);
193
assert(ule->uxrs[3].xid == 10);
194
assert(ule->uxrs[0].valp == &val_data_one);
195
assert(ule->uxrs[1].valp == &val_data_two);
196
assert(ule->uxrs[2].type == XR_PLACEHOLDER);
197
assert(ule->uxrs[3].valp == &val_data_three);
177
ft_msg msg(&key, &val, FT_INSERT, ZERO_MSN, msg_xids_2);
178
test_msg_modify_ule(&ule_initial, msg);
179
// now that message applied, verify that things are good
180
assert(ule->num_cuxrs == 2);
181
assert(ule->num_puxrs == 2);
182
assert(ule->uxrs[0].xid == TXNID_NONE);
183
assert(ule->uxrs[1].xid == 10);
184
assert(ule->uxrs[2].xid == 1000);
185
assert(ule->uxrs[3].xid == 10);
186
assert(ule->uxrs[0].valp == &val_data_one);
187
assert(ule->uxrs[1].valp == &val_data_two);
188
assert(ule->uxrs[2].type == XR_PLACEHOLDER);
189
assert(ule->uxrs[3].valp == &val_data_three);
200
xids_destroy(&msg_xids_2);
201
xids_destroy(&msg_xids_1);
202
xids_destroy(&root_xids);
192
toku_xids_destroy(&msg_xids_2);
193
toku_xids_destroy(&msg_xids_1);
194
toku_xids_destroy(&root_xids);