Commit 9e6f6198 authored by unknown's avatar unknown
Browse files

btr0cur.c:

  Do not add + 1 to the InnoDB index cardinality estimate if the B-tree just contains one page; the fix made in March 2004 caused InnoDB systematically to overestimate the cardinality of empty or small tables by 1


innobase/btr/btr0cur.c:
  Do not add + 1 to the InnoDB index cardinality estimate if the B-tree just contains one page; the fix made in March 2004 caused InnoDB systematically to overestimate the cardinality of empty or small tables by 1
parent 5eb3dc32
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -2707,8 +2707,11 @@ btr_estimate_number_of_different_key_vals(
			rec = page_rec_get_next(rec);
		}
		

		if (n_cols == dict_index_get_n_unique_in_tree(index)) {
			/* We add one because we know that the first record

			/* If there is more than one leaf page in the tree,
			we add one because we know that the first record
			on the page certainly had a different prefix than the
			last record on the previous index page in the
			alphabetical order. Before this fix, if there was
@@ -2716,8 +2719,12 @@ btr_estimate_number_of_different_key_vals(
			algorithm grossly underestimated the number of rows
			in the table. */

			if (btr_page_get_prev(page, &mtr) != FIL_NULL
			    || btr_page_get_next(page, &mtr) != FIL_NULL) {

				n_diff[n_cols]++;
			}
		}

		total_external_size +=
				btr_rec_get_externally_stored_len(rec);