Bug #27430 | Crash in subquery code when in PS and table DDL changed after PREPARE | ||
---|---|---|---|
Submitted: | 26 Mar 2007 0:45 | Modified: | 12 Nov 2009 20:36 |
Reporter: | Sergey Petrunya | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Prepared statements | Severity: | S3 (Non-critical) |
Version: | 5.1.18-debug, 5.0.42 | OS: | Any |
Assigned to: | Konstantin Osipov | CPU Architecture: | Any |
Tags: | bfsm_2007_05_31, bfsm_2007_07_19, bfsm_2007_10_18, crash, DoS, prepared statements, PS, subqueries, subquery |
[26 Mar 2007 0:45]
Sergey Petrunya
[4 Jun 2007 15:40]
Konstantin Osipov
Another manifestation of 27690. Needs metadata versioning. Taking over.
[8 Apr 2008 16:01]
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/45076 ChangeSet@1.2588, 2008-04-08 20:01:20+04:00, kostja@dipika.(none) +21 -0 Tentative implementation of WL#4165 Prepared statements: validation WL#4166 Prepared statements: automatic re-prepare Fixes Bug#27430 Crash in subquery code when in PS and table DDL changed after PREPARE Bug#27690 Re-execution of prepared statement after table was replaced with a view crashes Bug#27420 A combination of PS and view operations cause error + assertion on shutdown The basic idea of the patch is to keep track of table metadata between prepared statement prepare and execute. If some table used in the statement has changed, the prepared statement is re-prepared before execution. See WL#4165 and WL#4166 contents and comments in the code for details of the implementation.
[17 May 2008 21:53]
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/46807 ChangeSet@1.2569, 2008-05-18 01:51:18+04:00, kostja@bodhi.(none) +8 -0 Implement some code review fixes for the fix for Bug#27430 "Crash in subquery code when in PS and table DDL changed after PREPARE"
[18 May 2008 6:28]
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/46810 ChangeSet@1.2570, 2008-05-18 10:28:36+04:00, kostja@bodhi.(none) +1 -0 Fix mysql_client_test failure in pushbuild 5.1-27430 (Bug#27430)
[19 May 2008 16:39]
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/46822 ChangeSet@1.2571, 2008-05-19 13:39:31-03:00, davi@skynet.(none) +2 -0 Bug#27430 Crash in subquery code when in PS and table DDL changed after PREPARE Add test target to the makefile that will cause all statements to be re-prepared before execution.
[20 May 2008 7:29]
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/46852 ChangeSet@1.2571, 2008-05-20 11:29:16+04:00, kostja@bodhi.(none) +7 -0 Bug#27430 "Crash in subquery code when in PS and table DDL changed after PREPARE": rename members, methods, classes to follow the spec (a code review request)
[20 May 2008 16:36]
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/46873 ChangeSet@1.2648, 2008-05-20 20:36:26+04:00, kostja@bodhi.(none) +8 -0 Bug#27430 "Crash in subquery code when in PS and table DDL changed after PREPARE", review fixes: - make the patch follow the specification of WL#4166 and remove the new error that was originally introduced. Now the client never gets an error from reprepare, unless it failed. I.e. even if the statement at hand returns a completely different result set, this is not considered a server error. The C API library, that can not handle this situation, was modified to return a client error. Added additional test coverage.
[20 May 2008 17:06]
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/46879 ChangeSet@1.2649, 2008-05-20 21:07:11+04:00, kostja@bodhi.(none) +1 -0 Bug#27430 "Crash in subquery code when in PS and table DDL changed after PREPARE" Update test results after a merge with the main tree: the new minimum for the table definition cache is 256.
[20 May 2008 18:42]
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/46890 ChangeSet@1.2651, 2008-05-20 22:43:26+04:00, kostja@bodhi.(none) +4 -0 Update test coverage for Bug#27430 "Crash in subquery code when in PS and table DDL changed after PREPARE" to pass in embedded mode.
[20 May 2008 21:22]
Bugs System
Pushed into 5.1.25-rc
[20 May 2008 21:26]
Konstantin Osipov
Queued in 5.1-27430
[20 May 2008 21:26]
Konstantin Osipov
Pushed into 5.1.25
[22 May 2008 9:49]
Bugs System
Pushed into 6.0.6-alpha
[22 May 2008 22:34]
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/46976
[22 May 2008 22:41]
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/46978
[24 May 2008 18:08]
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/47029
[26 May 2008 12:07]
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/47051
[26 May 2008 12:12]
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/47052
[30 May 2008 23:33]
Paul DuBois
Noted in 5.1.25, 6.0.6 changelogs. Changelog comment for Bugs #27420, #27430, #27690: Incompatible change. A change has been made to the way that the server handles prepared statements. This affects prepared statements processed at the SQL level (using the PREPARE statement) and those processed using the binary client-server protocol (using the mysql_stmt_prepare() C API function). Previously, changes to metadata of tables or views referred to in a prepared statement could cause a server crash when the statement was next executed, or perhaps an error at execute time with a crash occurring later. For example, this could happen after dropping a table and recreating it with a different definition. Now metadata changes to tables or views referred to by prepared statements are detected and cause automatic repreparation of the statement when it is next executed. Metadata changes occur for DDL statements such as those that create, drop, alter, rename, or truncate tables, or that analyze, optimize, or repair tables. Repreparation also occurs after referenced tables or views are flushed from the table definition cache, either implicitly to make room for new entries in the cache, or explicitly due to FLUSH TABLES. Repreparation is automatic, but to the extent that it occurs, performance of prepared statements is diminished. Table content changes (for example, with INSERT or UPDATE) do not cause repreparation, nor do SELECT statements. An incompatibility with previous versions of MySQL is that a prepared statement may now return a different set of columns or different column types from one execution to the next. For example, if the prepared statement is "SELECT * FROM t1", altering t1 to contain a different number of columns causes the next execution to return a number of columns different from the previous execution. Older versions of the client library cannot handle this change in behavior. For applications that use prepared statements with the new server, an upgrade to the new client library is strongly recommended. Along with this change to statement repreparation, the default value of the table_definition_cache system variable has been increased from 128 to 256. The purpose of this increase is to lessen the chance that prepared statements will need repreparation due to referred-to tables/views having been flushed from the cache to make room for new entries. A new status variable, Com_stmt_reprepare, has been introduced to track the number of repreparations.
[28 Jul 2008 16:52]
Bugs System
Pushed into 5.1.25-rc (revid:sp1r-kostja@bodhi.(none)-20080520184326-10676) (version source revid:sp1r-kostja@bodhi.(none)-20080520184326-10676) (pib:3)
[13 Oct 2009 19:05]
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/86732 2914 Konstantin Osipov 2009-10-13 Backport of: ----------------------------------------------------------- revno: 2630.2.4 committer: Konstantin Osipov <konstantin@mysql.com> branch nick: mysql-6.0-runtime timestamp: Fri 2008-05-23 02:42:32 +0400 message: Bug#27430 "Crash in subquery code when in PS and table DDL changed after PREPARE" Add a test case for the situation with small TDC and many merge children. from 6.0-codebase. @ mysql-test/r/merge.result Update results (Bug#27430) @ mysql-test/t/merge.test Add test case (Bug#27430)
[3 Nov 2009 7:16]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20091102151658-j9o4wgro47m5v84d) (version source revid:alik@sun.com-20091023064702-2f8jdmny61bdl94u) (merge vers: 6.0.14-alpha) (pib:13)
[3 Nov 2009 15:33]
Paul DuBois
Already fixed in earlier 6.0.x release.
[12 Nov 2009 8:17]
Bugs System
Pushed into 5.5.0-beta (revid:alik@sun.com-20091110093229-0bh5hix780cyeicl) (version source revid:mikael@mysql.com-20091103113702-p61dlwc6ml6fxg18) (merge vers: 5.5.0-beta) (pib:13)
[12 Nov 2009 20:36]
Paul DuBois
Noted in 5.5.0 changelog.