Bug #13384 mysqltest, no protocol when script contains only lines with eval
Submitted: 21 Sep 2005 17:00 Modified: 22 Sep 2005 19:53
Reporter: Matthias Leich Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Command-line Clients Severity:S1 (Critical)
Version:4.1 OS:
Assigned to: Magnus Blåudd CPU Architecture:Any

[21 Sep 2005 17:00] Matthias Leich
Description:
When contains only statements with an leading eval
Example:
    eval SELECT 'ABC';
    eval SELECT 'DEF';
    eval ....
I never get a protocol. Unfortunately this harms the
Upgrade/Downgrade testsuite.

I am nearly 100 % sure, that this bug was
introduced by a push within the last 2-5 days.
MySQL 5.0.13-rc does not show this bug.
I guess the current MySQL 4.0 contains the same bug, 
but I could not check it.

Workaround:
    Write a SQL statement without eval into the script.

My environment:
   - Intel PC with Linux(SuSE 9.3)
   - MySQL compiled from source
        Version 4.1 ChangeSet@1.2452, 2005-09-21
        Version 5.0 ChangeSet@1.1980.1.2, 2005-09-21

How to repeat:
echo "Dummy" > r/my.result  # produce a fake result file

echo "eval SELECT 'ABC';" > t/my.test
./mysql-test-run --skip-ndb my
ls -l r/my.reject
      <--- There will be no reject file
echo "SELECT 1;" >> t/my.test
./mysql-test-run --skip-ndb my
ls -l r/my.reject
       <--- There will be a reject file because of the workaround.
[22 Sep 2005 15:08] Matthias Leich
The impact of this bug is bigger.
Top level script with    SELECT 1;
                                 --source sublevel.inc
sublevel.inc contains many statements, but all with eval
I get a protocol file with     SELECT 1 and his result. NOTHING more.

So I cannot trust any protocols and any [passed|failed] messages.
[22 Sep 2005 15:27] Carsten Segieth
The bug also breaks the funcs_1 suite!

Here the 2 tests 'memory__load' and 'myisam__load' now fails (but 'innodb__load' passes). The only difference between them is that the first 'non comment' statement in the successful 'innodb__load' is '--source include/have_innodb.inc'. 
In the 2 other tests (memory + myisam) the first statement is 'let $engine= ...'.

To reproduce and / or test this use 

get a clone of mysql-test-extra-5.0
cd .../mysql-test
mkdir suite
ln -s .../mysql-test-extra-5.0/mysql-test/suite suite
./mysql-test-run.pl --suite=funcs_1
[22 Sep 2005 15:53] Matthias Leich
Please ignore the bug description within my comment
   [22 Sep 17:08] Matthias Leich      .
The problem was caused by a scripting bug (open of one, but close
of two while loops) within my script sublevel.inc. 
I do not know why I didn't got an error message by mysqltest, but
I am no more able to reproduce this situation.

But the first bug description of the report remains valid.
[22 Sep 2005 19:25] 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/internals/30234
[22 Sep 2005 19:52] 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/internals/30236
[22 Sep 2005 19:53] Magnus Blåudd
Pushed to 4.1 and 5.0
[22 Sep 2005 20:00] Magnus Blåudd
Run the funcs_1 test suite successfully