Bug #42585 main.join_cache fails on powermacg5
Submitted: 4 Feb 2009 8:37 Modified: 13 Nov 2010 16:42
Reporter: Georgi Kodinov Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Tests Severity:S3 (Non-critical)
Version:6.0-bk OS:MacOS (PPC)
Assigned to: Sergey Petrunya CPU Architecture:Any
Tags: pushbuild, test failure

[4 Feb 2009 8:37] Georgi Kodinov
Description:
join_cache fails on poerwmacg5 with the following error:
main.join_cache                          [ fail ]
        Test ended at 2009-02-03 22:04:03

CURRENT_TEST: main.join_cache
--- /Users/henry/pb/bzr_mysql-6.0-bugteam/479/mysql-6.0.10-alpha-pb479/mysql-test/r/join_cache.result	Tue Feb  3 20:19:47 2009
+++ /Users/henry/pb/bzr_mysql-6.0-bugteam/479/mysql-6.0.10-alpha-pb479/mysql-test/r/join_cache.reject	Wed Feb  4 00:04:03 2009
@@ -3679,12 +3679,12 @@
 FROM (t1,t2) LEFT JOIN t3 ON (t1.a=t3.a AND t2.b=t3.b) 
 WHERE t1.a=t2.a;
 a	a	a	b	b	val
-2	2	2	30	30	0
 1	1	NULL	10	NULL	NULL
 1	1	NULL	20	NULL	NULL
 1	1	NULL	30	NULL	NULL
 1	1	NULL	40	NULL	NULL
 1	1	NULL	50	NULL	NULL
+2	2	2	30	30	0
 2	2	2	40	40	0
 2	2	2	50	50	0
 2	2	2	60	60	0
@@ -3707,12 +3707,12 @@
 2	2	2	30	30	0
 2	2	2	40	40	0
 2	2	2	50	50	0
-2	2	2	60	60	0
 1	1	NULL	10	NULL	NULL
 1	1	NULL	20	NULL	NULL
 1	1	NULL	30	NULL	NULL
 1	1	NULL	40	NULL	NULL
 1	1	NULL	50	NULL	NULL
+2	2	2	60	60	0
 2	2	2	70	70	0
 2	2	2	80	80	0
 set join_buffer_size=default;

mysqltest: Result content mismatch

 - saving '/Users/henry/pb/bzr_mysql-6.0-bugteam/479/mysql-6.0.10-alpha-pb479/mysql-test/var-n_mix-5/log/main.join_cache/' to '/Users/henry/pb/bzr_mysql-6.0-bugteam/479/mysql-6.0.10-alpha-pb479/mysql-test/var-n_mix-5/log/main.join_cache/'

Retrying test, attempt(2/3)...

main.join_cache                          [ fail ]
        Test ended at 2009-02-03 22:04:11

CURRENT_TEST: main.join_cache
--- /Users/henry/pb/bzr_mysql-6.0-bugteam/479/mysql-6.0.10-alpha-pb479/mysql-test/r/join_cache.result	Tue Feb  3 20:19:47 2009
+++ /Users/henry/pb/bzr_mysql-6.0-bugteam/479/mysql-6.0.10-alpha-pb479/mysql-test/r/join_cache.reject	Wed Feb  4 00:04:10 2009
@@ -3679,12 +3679,12 @@
 FROM (t1,t2) LEFT JOIN t3 ON (t1.a=t3.a AND t2.b=t3.b) 
 WHERE t1.a=t2.a;
 a	a	a	b	b	val
-2	2	2	30	30	0
 1	1	NULL	10	NULL	NULL
 1	1	NULL	20	NULL	NULL
 1	1	NULL	30	NULL	NULL
 1	1	NULL	40	NULL	NULL
 1	1	NULL	50	NULL	NULL
+2	2	2	30	30	0
 2	2	2	40	40	0
 2	2	2	50	50	0
 2	2	2	60	60	0
@@ -3707,12 +3707,12 @@
 2	2	2	30	30	0
 2	2	2	40	40	0
 2	2	2	50	50	0
-2	2	2	60	60	0
 1	1	NULL	10	NULL	NULL
 1	1	NULL	20	NULL	NULL
 1	1	NULL	30	NULL	NULL
 1	1	NULL	40	NULL	NULL
 1	1	NULL	50	NULL	NULL
+2	2	2	60	60	0
 2	2	2	70	70	0
 2	2	2	80	80	0
 set join_buffer_size=default;

mysqltest: Result content mismatch

 - saving '/Users/henry/pb/bzr_mysql-6.0-bugteam/479/mysql-6.0.10-alpha-pb479/mysql-test/var-n_mix-5/log/main.join_cache/' to '/Users/henry/pb/bzr_mysql-6.0-bugteam/479/mysql-6.0.10-alpha-pb479/mysql-test/var-n_mix-5/log/main.join_cache/'

Test has failed 2 times, no more retries!

How to repeat:
Check the pb1 results
[4 Feb 2009 8:43] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/65098

3011 Georgi Kodinov	2009-02-04 [merge]
      - disabled the failing test as per bug #42585
      - updated the tree name in .bzr-mysql/default.conf
      modified:
        .bzr-mysql/default.conf
        mysql-test/t/disabled.def

=== modified file '.bzr-mysql/default.conf'
--- a/.bzr-mysql/default.conf	2009-02-03 09:16:53 +0000
+++ b/.bzr-mysql/default.conf	2009-02-04 08:41:07 +0000
@@ -1,5 +1,5 @@
 [MYSQL]
-tree_location = bzr+ssh://bk-internal.mysql.com/bzrroot/server/mysql-6.0-bugteam
+tree_location = bzr+ssh://bk-internal.mysql.com/bzrroot/server/mysql-6.0
 post_commit_to = "commits@lists.mysql.com"
 post_push_to = "commits@lists.mysql.com"
-tree_name = "mysql-6.0-bugteam"
+tree_name = "mysql-6.0"

=== modified file 'mysql-test/t/disabled.def'
--- a/mysql-test/t/disabled.def	2009-02-03 09:16:53 +0000
+++ b/mysql-test/t/disabled.def	2009-02-04 08:41:07 +0000
@@ -40,3 +40,4 @@ user_limits                       : Bug#
 query_cache_28249                 : Bug#41098 Query Cache returns wrong result with concurrent insert
 innodb_bug39438          : BUG#42383 2009-01-28 lsoares "This fails in embedded and on windows.  Note that this test is not run on windows and on embedded in PB for main trees currently"
 subselect3_jcl6          : BUG#42534 subselect3_jcl6 produces valgrind warnings with MTR2 (2008-02-02 spetrunia)
+join_cache               : Bug#42585 joro main.join_cache fails on powermacg5  

-- 
MySQL Code Commits Mailing List
For list archives: http://lists.mysql.com/commits
To unsubscribe:    http://lists.mysql.com/commits?unsub=commits@bugs.mysql.com
[4 Feb 2009 10:44] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/65114

3011 Konstantin Osipov	2009-02-04
       - disabled the failing test as per bug #42585
       - updated the tree name in .bzr-mysql/default.conf
[4 Feb 2009 11:16] Bugs System
Pushed into 6.0.10-alpha (revid:kostja@sun.com-20090204104420-mw1i2u9lum4bxjo6) (version source revid:kostja@sun.com-20090204104420-mw1i2u9lum4bxjo6) (merge vers: 6.0.10-alpha) (pib:6)
[9 Feb 2009 14:51] Matthias Leich
The expected/current result sets of the SELECT's
differ only within the row order. And the SELECT's
do not contain an ORDER BY or similar which would
ensure a deterministic result set row order.
I propose to add a
--sorted_result
just before the corresponding SELECT's
and to generate new files with expected results.
[9 Feb 2009 15:08] Sergey Petrunya
Matthias,

the problem is that 
1. the query plans are the same 
2. join_cache doesn't contain any pointers or other data whose size depends on the platform.

which means that the result should have the same order. I suspect that this difference, albeit innocent by itself, may be a manifestation of some real problem, and hence want to investigate this case (as it is convenient - small as easily repeatable)
[11 Feb 2009 23:55] Sergey Petrunya
Ok the cause of the difference is because of this code:

void JOIN_CACHE::create_flag_fields()
{
  CACHE_FIELD *copy;
  JOIN_TAB *tab;

  copy= field_descr;

  length=0;

  /* If there is a match flag the first field is always used for this flag */ 
  if (with_match_flag)
    length+= add_flag_field_to_join_cache((uchar*) &join_tab->found,
                                          sizeof(join_tab->found),
	                                  &copy);

join_tab->found is defined as bool, on Linux/gcc-4.1.2 I get:
(gdb) p sizeof(join_tab->found)
  $30 = 1

While on powermacg5 Darwin/gcc-3.3 one gets:

(gdb) p sizeof(join_tab->found)
$23 = 4

Hence join cache record can have different sizes on different platforms,  therefore max. number of records in the buffer also varies, and BKA + FirstMatch/Outer join queries can produce results in different order.
[12 Feb 2009 0:02] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/65974

2693 Sergey Petrunia	2009-02-12
      BUG#42585: main.join_cache fails on powermacg5
      - Make testcase stable
[16 Feb 2009 18:08] Bugs System
Pushed into 6.0.10-alpha (revid:alik@sun.com-20090216180446-dl1xovi02kbd2fgn) (version source revid:sergefp@mysql.com-20090212000209-lcqf38f0ppnzsycm) (merge vers: 6.0.10-alpha) (pib:6)
[17 Feb 2009 18:17] Paul DuBois
Test case changes. No changelog entry needed.
[19 Feb 2009 10:51] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/66879

2719 Sergey Petrunia	2009-02-19
      BUG#42585: main.join_cache fails on powermacg5
      - Make testcase stable
[24 Feb 2009 9:50] Bugs System
Pushed into 6.0.11-alpha (revid:alik@sun.com-20090224094729-h91safzz8jy66c22) (version source revid:sergefp@mysql.com-20090219105048-1psm2u2t0v7zmgcs) (merge vers: 6.0.10-alpha) (pib:6)
[16 Aug 2010 6:35] Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100816062819-bluwgdq8q4xysmlg) (version source revid:alik@sun.com-20100816062612-enatdwnv809iw3s9) (pib:20)
[13 Nov 2010 16:06] Bugs System
Pushed into mysql-trunk 5.6.99-m5 (revid:alexander.nozdrin@oracle.com-20101113155825-czmva9kg4n31anmu) (version source revid:vasil.dimov@oracle.com-20100629074804-359l9m9gniauxr94) (merge vers: 5.6.99-m4) (pib:21)