#At file:///home/malff/BZR_TREE/mysql-next-mr-bugfixing-51741/ based on revid:alik@stripped
3122 Marc Alff 2010-03-04
Bug#51741 Unit test pfs-t failing in mysql-next-mr-bugfixing
The root cause of the failure is that when
Bug#51447 performance schema evil twin files
was fixed, instrumented file names got normalized.
The pfs-t unit test depends on this file normalization,
but it was not updated.
This fix aligns pfs-t.cc lookup_file_by_name()
with the logic in pfs_instr.cc find_or_create_file().
modified:
storage/perfschema/unittest/pfs-t.cc
=== modified file 'storage/perfschema/unittest/pfs-t.cc'
--- a/storage/perfschema/unittest/pfs-t.cc 2010-01-12 01:47:27 +0000
+++ b/storage/perfschema/unittest/pfs-t.cc 2010-03-05 01:10:27 +0000
@@ -37,14 +37,25 @@ PFS_file* lookup_file_by_name(const char
uint i;
PFS_file *pfs;
uint len= strlen(name);
+ size_t dirlen;
+ const char *filename;
+ uint filename_length;;
for (i= 0; i < file_max; i++)
{
pfs= & file_array[i];
if (pfs->m_lock.is_populated())
{
- if ((len == pfs->m_filename_length) &&
- (strncmp(name, pfs->m_filename, pfs->m_filename_length) == 0))
+ /*
+ When a file "foo" is instrumented, the name is normalized
+ to "/path/to/current/directory/foo", so we remove the
+ directory name here to find it back.
+ */
+ dirlen= dirname_length(pfs->m_filename);
+ filename= pfs->m_filename + dirlen;
+ filename_length= pfs->m_filename_length - dirlen;
+ if ((len == filename_length) &&
+ (strncmp(name, filename, filename_length) == 0))
return pfs;
}
}
Attachment: [text/bzr-bundle] bzr/marc.alff@oracle.com-20100305011027-rw70696h27e1okdp.bundle