Created by Sergei Glushchenko and last modified
Get this branch:
bzr branch lp:~sergei.glushchenko/percona-server/ps51-128-max-index
Only Sergei Glushchenko can upload to this branch. If you are Sergei Glushchenko please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Recent revisions

477. By Sergei Glushchenko

This is a merge of fix for --with-max-indexes=128 by Alexey Kopytov.
This fix originally was committed to lp:percona-server/rnt-5.1.
Original commit message is:
Fix for MySQL bug #54127: mysqld segfaults when built using

When using a non-default MAX_KEY value, a different code path is used
when processing index bitmaps. With the default value of 64, the
optimized "template <> class Bitmap<64>" is used which represents and
processes bitmaps as 64-bit integeres. Otherwise, "template <uint
default_width> class Bitmap" is used in which case bitmaps are
represented as arrays.

Multiple problems with the "non-optimized" Bitmap class were discovered
when testing a server binary built with --with-max-indexes=128:

1. bitmap_set_prefix() could overrun the internal buffer when resetting
the remainder of the buffer after setting the prefix due to an
incorrectly calculated remainder's length. This was the reason for the
crash on startup in MySQL bug #54127.

2. Bitmap::intersect() did not take into account that bitmap_init()
resets the supplied buffer, so an intersection with a zero bitmap was
always calculated (reported as MySQL #61178). This led to numerous test
failures due to different execution plans produced by the optimizer.

3. Bitmap::to_ulonglong() incorrectly calculated the result value due to
serious bugs in [u]int*korr/[u]int*store set of macros in
my_global.h (reported as MySQL bugs #61179 and #61180). This led to test
failures in distinct.test and group_min_max.test.

There are still a number of failing tests when running the test suite
with --with-max-indexes=128:

- create.test contains a test case explicitly testing the 64-bit index

- the ps_N* series of tests verifies the metadata sent by EXPLAIN, where
the field length of "possible_keys" and "key_len" columns depends on
the MAX_KEY value and hence, is different for a binary built with a
non-default value of --with-max-indexes.

The workaround was implemented for failing tests.
include/have_64_keys.inc verify MAX_INDEXES by requesting EXPLAIN
metadata and if MAX_INDEXES is different from default value the
test is skipped.

476. By Stewart Smith

merge fix for Bug #902472: main.subselect_notembedded fails on Ubuntu Oneiric in Jenkins

475. By Stewart Smith

merge fix for Bug #1023883: libmysqlclient16-dev 'Replaces' libmysqlclient16-dev but doesn't 'Provides' it

474. By Stewart Smith

merge 5.1.63-13.4 release branch

473. By Stewart Smith

merge fix for Bug #1039384: innodb_adaptive_flushing_method and innodb_flush_neighbor_pages partially broken

472. By Stewart Smith

merge fix for Bug #1036530: Sporadic innodb_plugin.percona_changed_page_bmp failures in Jenkins

471. By Stewart Smith

merge fix for Bug lp:1040483 UNIV_NONINL build broken

470. By Stewart Smith

merge HandlerSocket fix (fix is due to BZR having an odd bug checking out the repository)

469. By Stewart Smith

post merge fix: new DBUG_ASSERT() assertions in ha_innodb::clone() are incorrect. Confirmed by laurynas, pointing to revid:<email address hidden>

468. By Stewart Smith

fix debug assert in kill_idle_trx. After revid:<email address hidden> we need to use LOCK_thd_kill rather than LOCK_THD_data for kill idle trx. This revid fixed a deadlock bug by introducing a new mutex.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
This branch contains Public information 
Everyone can see this information.