| Bug #12382 | View: Temporary wrong results | ||
|---|---|---|---|
| Submitted: | 4 Aug 2005 13:42 | Modified: | 17 Aug 2005 18:09 |
| Reporter: | Kai Voigt | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Optimizer | Severity: | S2 (Serious) |
| Version: | 5.0.10-beta-max/BK source | OS: | MacOS (MacOSX, Linux) |
| Assigned to: | Igor Babaev | CPU Architecture: | Any |
[4 Aug 2005 13:42]
Kai Voigt
[4 Aug 2005 13:42]
Kai Voigt
The results of the two queries: +----+------+ | id | f1 | +----+------+ | 1 | foo2 | | 2 | foo2 | +----+------+ 2 rows in set (0.00 sec) +----+------+ | id | f1 | +----+------+ | 1 | foo1 | | 2 | foo2 | +----+------+ 2 rows in set (0.01 sec)
[4 Aug 2005 13:53]
MySQL Verification Team
Thank you for the bug report.
[11 Aug 2005 23:10]
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/28198
[14 Aug 2005 14:55]
Igor Babaev
ChangeSet
1.1982 05/08/11 16:10:34 igor@rurik.mysql.com +3 -0
sql_base.cc:
Fixed bug #12382.
INSERT statement effectively changed thd->set_query_id to 0,
while SELECT statement changed it to 0. As a result
the insert_fields function that expanded '*' was called
with different values of thd->set_query_id for the query
SELECT * FROM view depending on whether it was run after
an INSERT or after a SELECT statement. This was corrected
by restoring the old value of thd->set_query_id when
returning from the function setup_fields where possible
reset could occur.
If the value of thd->set_query_id == 0 then the fields
substituted instead of '*' were not registered as used
for bitmaps used_keys. This caused selection of an invalid
execution plan for the query SELECT * from <view>.
view.result, view.test:
Added a test case for bug #12382.
Fix will appear in 5.0.12.
[17 Aug 2005 18:09]
Paul DuBois
Noted in 5.0.12 changelog.
