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

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.056 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.