Bug #8168 HELP commands processing different from regular with --ps-protocol
Submitted: 27 Jan 2005 18:09 Modified: 5 Feb 2020 15:35
Reporter: Sergey Petrunya Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: Optimizer Severity:S3 (Non-critical)
Version:5.0-bk OS:Any
Assigned to: CPU Architecture:Any

[27 Jan 2005 18:09] Sergey Petrunya
Description:
5.0 tree, at ChangeSet@1.1820, 2005-01-25 20:08:16+02:00, jani@ua141d10.elisa.omakaista.fi.
The commands in help.test are processed differently, depending on whether --ps-protocol is used or not. 
This was the cause for BUG#8129. The fix "bk commit - 5.0 tree (ram:1.1825)" eliminates the crash but still the difference between command execution with and without --ps-protocol should be figured out and eliminated. 

How to repeat:
Apply the printouts.patch (I'll attach the tarball)
Do this: 
./mysql-test --debug t/help.test 
cp var/log/master.trace t1 
./mysql-test --debug --ps-protocol t/help.test 
cp var/log/master.trace t2
awk '/dream/{s=1;} /<mysql_parse/{if (s==1) {exit(0);}} //{ if (s==1) print $0} ' t1> x1
awk '/dream/{s=1;} /<mysql_parse/{if (s==1) {exit(0);}} //{ if (s==1) print $0} ' t2> x2
# my x1 and x2 files are provided  tarball.
diff -c t1 t2 

And among normal differences see:
  T@147466: | | | | | >find_field_in_table
  T@147466: | | | | | | enter: table: 'help_topic'  name: 'help_topic_id'  item name: 'help_topic_id'  ref 0x0
+ T@147466: | | | | | | info: used_keys.intersect(1)
  T@147466: | | | | | <find_field_in_table
  T@147466: | | | | | >find_field_in_table
  T@147466: | | | | | | enter: table: 'help_topic'  name: 'name'  item name: 'name'  ref 0x0
+ T@147466: | | | | | | info: used_keys.intersect(2)
  T@147466: | | | | | <find_field_in_table
  T@147466: | | | | | >find_field_in_table
SergeyP: ^^ so we have table->used_keys.intersect called in one case and not called in the other. There is no reason for using PS protocol to cause this difference ? (1)
...
  T@147466: | | | | >SQL_SELECT::test_quick_select
...
! T@147466: | | | | | info: head->used_keys= 3
...
--- 198,208 ----
...
! T@147466: | | | | | info: head->used_keys= 0
...
SergeyP: even if (1) had some explanation, we get different head->used_keys in test_quick_select(). One of the values is definitely wrong.

Suggested fix:
The fix for BUG#8129 does table->used_keys.clear_all() to make the test deterministic. Figure out why this is necessary, check if there are other dangerous differences.
[27 Jan 2005 18:15] Sergey Petrunya
Printouts patch and exceprts from .trace files I was looking at

Attachment: help_test_differences.tgz (application/octet-stream, text), 5.68 KiB.