Commit ad0a8695 authored by marko's avatar marko

branches/zip: Correct the terminology: s/cluster index/clustered index/.

row_merge_read_clustered_index(): Simplify the loop that scans the
clustered index.
parent c320de06
...@@ -495,13 +495,13 @@ row_check_table_for_mysql( ...@@ -495,13 +495,13 @@ row_check_table_for_mysql(
handle */ handle */
#endif /* !UNIV_HOTBACKUP */ #endif /* !UNIV_HOTBACKUP */
/************************************************************************* /*************************************************************************
Build new indexes to a table by reading a cluster index, Build new indexes to a table by reading a clustered index,
creating a temporary file containing index entries, merge sorting creating a temporary file containing index entries, merge sorting
these index entries and inserting sorted index entries to indexes. */ these index entries and inserting sorted index entries to indexes. */
ulint ulint
row_build_index_for_mysql( row_build_index_for_mysql(
/*=====================*/ /*======================*/
/* out: 0 or error code */ /* out: 0 or error code */
trx_t* trx, /* in: transaction */ trx_t* trx, /* in: transaction */
dict_table_t* old_table, /* in: Table where rows are dict_table_t* old_table, /* in: Table where rows are
......
...@@ -1416,7 +1416,7 @@ row_merge_read_clustered_index( ...@@ -1416,7 +1416,7 @@ row_merge_read_clustered_index(
ulint num_of_idx) /* in: number of indexes to be ulint num_of_idx) /* in: number of indexes to be
created */ created */
{ {
dict_index_t* clust_index; /* Cluster index */ dict_index_t* clust_index; /* Clustered index */
merge_rec_t* new_mrec; /* New merge record */ merge_rec_t* new_mrec; /* New merge record */
mem_heap_t* row_heap; /* Heap memory to create mem_heap_t* row_heap; /* Heap memory to create
clustered index records */ clustered index records */
...@@ -1426,13 +1426,9 @@ row_merge_read_clustered_index( ...@@ -1426,13 +1426,9 @@ row_merge_read_clustered_index(
are stored for memory sort and are stored for memory sort and
then written to the disk */ then written to the disk */
merge_rec_list_t** merge_list; /* Temporary list for records*/ merge_rec_list_t** merge_list; /* Temporary list for records*/
rec_t* rec; /* Record in the persistent
cursor*/
btr_pcur_t pcur; /* Persistent cursor on the btr_pcur_t pcur; /* Persistent cursor on the
cluster index */ clustered index */
mtr_t mtr; /* Mini transaction */ mtr_t mtr; /* Mini transaction */
ibool more_records_exists; /* TRUE if we reached end of
the cluster index */
ulint err = DB_SUCCESS; /* Return code */ ulint err = DB_SUCCESS; /* Return code */
ulint idx_num = 0; /* Index number */ ulint idx_num = 0; /* Index number */
ulint n_blocks = 0; /* Number of blocks written ulint n_blocks = 0; /* Number of blocks written
...@@ -1442,9 +1438,12 @@ row_merge_read_clustered_index( ...@@ -1442,9 +1438,12 @@ row_merge_read_clustered_index(
*sec_offsets_ = (sizeof sec_offsets_) / sizeof *sec_offsets_; *sec_offsets_ = (sizeof sec_offsets_) / sizeof *sec_offsets_;
trx->op_info="reading cluster index"; trx->op_info="reading clustered index";
ut_a(trx && table && index && files); ut_ad(trx);
ut_ad(table);
ut_ad(index);
ut_ad(files);
/* Create block where index entries are stored */ /* Create block where index entries are stored */
block = row_merge_block_create(); block = row_merge_block_create();
...@@ -1470,22 +1469,31 @@ row_merge_read_clustered_index( ...@@ -1470,22 +1469,31 @@ row_merge_read_clustered_index(
row_heap = mem_heap_create(512); row_heap = mem_heap_create(512);
/* Get first record from the clustered index */
rec = btr_pcur_get_rec(&pcur);
/* Iterate all records in the clustered index */ /* Iterate all records in the clustered index */
while (rec) { for (;;) {
const rec_t* rec;
dtuple_t* row; dtuple_t* row;
row_ext_t* ext; row_ext_t* ext;
/* Infimum and supremum records are skipped */ /* When switching pages, commit the mini-transaction
in order to release the latch on the old page. */
if (btr_pcur_is_after_last_on_page(&pcur, &mtr)) {
btr_pcur_store_position(&pcur, &mtr);
mtr_commit(&mtr);
mtr_start(&mtr);
btr_pcur_restore_position(BTR_SEARCH_LEAF,
&pcur, &mtr);
}
if (!page_rec_is_user_rec(rec)) { if (!btr_pcur_move_to_next(&pcur, &mtr)) {
break;
}
goto next_record; rec = btr_pcur_get_rec(&pcur);
/* We don't count the delete marked records as "Inserted" */ /* We don't count the delete marked records as "Inserted" */
} else if (!rec_get_deleted_flag(rec, page_rec_is_comp(rec))) { if (!rec_get_deleted_flag(rec, dict_table_is_comp(table))) {
srv_n_rows_inserted++; srv_n_rows_inserted++;
} }
...@@ -1498,7 +1506,7 @@ row_merge_read_clustered_index( ...@@ -1498,7 +1506,7 @@ row_merge_read_clustered_index(
/* If the user has requested the creation of several indexes /* If the user has requested the creation of several indexes
for the same table. We build all index entries in a single for the same table. We build all index entries in a single
pass over the cluster index. */ pass over the clustered index. */
for (idx_num = 0; idx_num < num_of_idx; idx_num++) { for (idx_num = 0; idx_num < num_of_idx; idx_num++) {
...@@ -1550,29 +1558,6 @@ row_merge_read_clustered_index( ...@@ -1550,29 +1558,6 @@ row_merge_read_clustered_index(
files[idx_num].num_of_blocks++; files[idx_num].num_of_blocks++;
} }
} }
next_record:
/* Persistent cursor has to be stored and mtr committed
if we move to a new page in cluster index. */
if (btr_pcur_is_after_last_on_page(&pcur, &mtr)) {
btr_pcur_store_position(&pcur, &mtr);
mtr_commit(&mtr);
mtr_start(&mtr);
btr_pcur_restore_position(BTR_SEARCH_LEAF, &pcur, &mtr);
}
more_records_exists = btr_pcur_move_to_next(&pcur, &mtr);
/* If no records are left we have created file for merge
sort */
if (more_records_exists == TRUE) {
rec = btr_pcur_get_rec(&pcur);
} else {
rec = NULL;
}
} }
/* Now we have to write all remaining items in the list to /* Now we have to write all remaining items in the list to
......
...@@ -4464,7 +4464,7 @@ row_create_index_graph_for_mysql( ...@@ -4464,7 +4464,7 @@ row_create_index_graph_for_mysql(
} }
/************************************************************************* /*************************************************************************
Build new indexes to a table by reading a cluster index, Build new indexes to a table by reading a clustered index,
creating a temporary file containing index entries, merge sorting creating a temporary file containing index entries, merge sorting
these index entries and inserting sorted index entries to indexes. */ these index entries and inserting sorted index entries to indexes. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment