~stewart/haildb/historical

« back to all changes in this revision

Viewing changes to page/page0page.c

  • Committer: Stewart Smith
  • Date: 2010-04-14 16:56:25 UTC
  • Revision ID: stewart@flamingspork.com-20100414165625-r2vj10c0er8ogtsn
innodb plugin 1.0.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
593
593
                page_get_infimum_rec(new_page));
594
594
        ulint           log_mode        = 0; /* remove warning */
595
595
 
596
 
        /* page_zip_validate() will fail here if btr_compress()
597
 
        sets FIL_PAGE_PREV to FIL_NULL */
 
596
#ifdef UNIV_ZIP_DEBUG
 
597
        if (new_page_zip) {
 
598
                page_zip_des_t* page_zip = buf_block_get_page_zip(block);
 
599
                ut_a(page_zip);
 
600
 
 
601
                /* Strict page_zip_validate() may fail here.
 
602
                Furthermore, btr_compress() may set FIL_PAGE_PREV to
 
603
                FIL_NULL on new_page while leaving it intact on
 
604
                new_page_zip.  So, we cannot validate new_page_zip. */
 
605
                ut_a(page_zip_validate_low(page_zip, page, TRUE));
 
606
        }
 
607
#endif /* UNIV_ZIP_DEBUG */
598
608
        ut_ad(buf_block_get_frame(block) == page);
599
609
        ut_ad(page_is_leaf(page) == page_is_leaf(new_page));
600
610
        ut_ad(page_is_comp(page) == page_is_comp(new_page));
 
611
        /* Here, "ret" may be pointing to a user record or the
 
612
        predefined supremum record. */
601
613
 
602
614
        if (UNIV_LIKELY_NULL(new_page_zip)) {
603
615
                log_mode = mtr_set_log_mode(mtr, MTR_LOG_NONE);
620
632
                        store the number of preceding records on the page. */
621
633
                        ulint   ret_pos
622
634
                                = page_rec_get_n_recs_before(ret);
 
635
                        /* Before copying, "ret" was the successor of
 
636
                        the predefined infimum record.  It must still
 
637
                        have at least one predecessor (the predefined
 
638
                        infimum record, or a freshly copied record
 
639
                        that is smaller than "ret"). */
 
640
                        ut_a(ret_pos > 0);
623
641
 
624
642
                        if (UNIV_UNLIKELY
625
643
                            (!page_zip_reorganize(new_block, index, mtr))) {
685
703
        ulint*          offsets         = offsets_;
686
704
        rec_offs_init(offsets_);
687
705
 
 
706
        /* Here, "ret" may be pointing to a user record or the
 
707
        predefined infimum record. */
 
708
 
688
709
        if (page_rec_is_infimum(rec)) {
689
710
 
690
711
                return(ret);
725
746
                        store the number of preceding records on the page. */
726
747
                        ulint   ret_pos
727
748
                                = page_rec_get_n_recs_before(ret);
 
749
                        /* Before copying, "ret" was the predecessor
 
750
                        of the predefined supremum record.  If it was
 
751
                        the predefined infimum record, then it would
 
752
                        still be the infimum.  Thus, the assertion
 
753
                        ut_a(ret_pos > 0) would fail here. */
728
754
 
729
755
                        if (UNIV_UNLIKELY
730
756
                            (!page_zip_reorganize(new_block, index, mtr))) {
1041
1067
 
1042
1068
        ut_ad((ibool) !!page_rec_is_comp(rec)
1043
1069
              == dict_table_is_comp(index->table));
1044
 
        /* page_zip_validate() would detect a min_rec_mark mismatch
1045
 
        in btr_page_split_and_insert()
1046
 
        between btr_attach_half_pages() and insert_page = ...
1047
 
        when btr_page_get_split_rec_to_left() holds (direction == FSP_DOWN). */
 
1070
#ifdef UNIV_ZIP_DEBUG
 
1071
        {
 
1072
                page_zip_des_t* page_zip= buf_block_get_page_zip(block);
 
1073
                page_t*         page    = buf_block_get_frame(block);
 
1074
 
 
1075
                /* page_zip_validate() would detect a min_rec_mark mismatch
 
1076
                in btr_page_split_and_insert()
 
1077
                between btr_attach_half_pages() and insert_page = ...
 
1078
                when btr_page_get_split_rec_to_left() holds
 
1079
                (direction == FSP_DOWN). */
 
1080
                ut_a(!page_zip || page_zip_validate_low(page_zip, page, TRUE));
 
1081
        }
 
1082
#endif /* UNIV_ZIP_DEBUG */
1048
1083
 
1049
1084
        if (page_rec_is_infimum(rec)) {
1050
1085