~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/innobase/row/row0undo.c

  • Committer: Lee Bieber
  • Date: 2010-12-03 01:16:19 UTC
  • mfrom: (1819.9.81 update-innobase)
  • Revision ID: kalebral@gmail.com-20101203011619-n6v584rijwdet05b
Merge Stewart - update Innobase plugin based on InnoDB 1.1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
185
185
        offsets = rec_get_offsets(rec, clust_index, offsets,
186
186
                                  ULINT_UNDEFINED, &heap);
187
187
 
188
 
        if (!found || 0 != ut_dulint_cmp(node->roll_ptr,
189
 
                                         row_get_rec_roll_ptr(rec, clust_index,
190
 
                                                              offsets))) {
 
188
        if (!found || node->roll_ptr
 
189
            != row_get_rec_roll_ptr(rec, clust_index, offsets)) {
191
190
 
192
191
                /* We must remove the reservation on the undo log record
193
192
                BEFORE releasing the latch on the clustered index page: this
199
198
 
200
199
                ret = FALSE;
201
200
        } else {
 
201
                row_ext_t**     ext;
 
202
 
 
203
                if (dict_table_get_format(node->table) >= DICT_TF_FORMAT_ZIP) {
 
204
                        /* In DYNAMIC or COMPRESSED format, there is
 
205
                        no prefix of externally stored columns in the
 
206
                        clustered index record. Build a cache of
 
207
                        column prefixes. */
 
208
                        ext = &node->ext;
 
209
                } else {
 
210
                        /* REDUNDANT and COMPACT formats store a local
 
211
                        768-byte prefix of each externally stored
 
212
                        column. No cache is needed. */
 
213
                        ext = NULL;
 
214
                        node->ext = NULL;
 
215
                }
 
216
 
202
217
                node->row = row_build(ROW_COPY_DATA, clust_index, rec,
203
 
                                      offsets, NULL, &node->ext, node->heap);
 
218
                                      offsets, NULL, ext, node->heap);
204
219
                if (node->update) {
205
220
                        node->undo_row = dtuple_copy(node->row, node->heap);
206
221
                        row_upd_replace(node->undo_row, &node->undo_ext,
297
312
 
298
313
        if (locked_data_dict) {
299
314
 
300
 
                row_mysql_lock_data_dictionary(trx);
 
315
                row_mysql_freeze_data_dictionary(trx);
301
316
        }
302
317
 
303
318
        if (node->state == UNDO_NODE_INSERT) {
312
327
 
313
328
        if (locked_data_dict) {
314
329
 
315
 
                row_mysql_unlock_data_dictionary(trx);
 
330
                row_mysql_unfreeze_data_dictionary(trx);
316
331
        }
317
332
 
318
333
        /* Do some cleanup */