1
0
mirror of https://github.com/MariaDB/server.git synced 2026-10-23 18:49:29 +03:00
Files
mariadb/sql
Jorgen Loland 44b41979bd BUG#11762751: UPDATE STATEMENT THROWS AN ERROR, BUT STILL
UPDATES THE TABLE ENTRIES (formerly 55385)
BUG#11764529: MULTI UPDATE+INNODB REPORTS ER_KEY_NOT_FOUND 
              IF A TABLE IS UPDATED TWICE (formerly 57373)
            
If multiple-table update updates a row through two aliases and
the first update physically moves the row, the second update will
fail to locate the row. This results in different errors
depending on storage engine:
  * MyISAM: Got error 134 from storage engine
  * InnoDB: Can't find record in 'tbl'
None of these errors accurately describe the problem. 
      
Furthermore, since MyISAM is non-transactional, the update
executed first will be performed while the second will not.
In addition, for two equal multiple-table update statements,
one could succeed and the other fail based on whether or not
the record actually moved or not. This was inconsistent.
      
Two update operations may physically move a row:
  1) Update of a column in a clustered primary key
  2) Update of a column used to calculate which partition the 
     row belongs to
           
BUG#11764529 is about case 1) above, BUG#11762751 was about case 2).
      
The fix for these bugs is to return with an error if multiple-table 
update is about to:
  a) Update a table through multiple aliases, and
  b) Perform an update that may physically more the row 
     in at least one of these aliases
    
This avoids 
  * partial updates as described for MyISAM above,
  * provides the same error message that describes the actual problem
    for all SEs
  * inconsistent behavior where a statement fails or succeeds based on
    e.g. the partitioning algorithm of the table.
2011-02-21 16:49:03 +01:00
..
2010-08-16 14:50:27 +02:00
2010-11-22 10:13:46 +01:00
2010-12-29 01:26:31 +01:00
2010-05-24 14:51:59 +02:00
2010-05-28 19:53:26 -03:00
2010-03-31 16:05:33 +02:00
2010-07-30 16:56:57 +03:00
2010-12-29 01:26:31 +01:00
2011-02-08 14:59:03 +01:00
2011-01-28 13:28:15 +01:00
2010-12-14 13:46:00 +03:00
2011-02-02 10:18:44 +01:00
2011-02-02 10:18:44 +01:00
2011-02-08 14:59:03 +01:00
2010-03-31 16:05:33 +02:00
2011-02-08 17:47:33 +02:00
2010-12-07 16:11:13 +00:00
2010-12-29 01:26:31 +01:00
2010-12-29 01:26:31 +01:00
2010-11-23 13:47:35 +03:00
2010-12-07 16:11:13 +00:00
2010-12-29 01:26:31 +01:00
2010-04-13 19:04:45 +04:00
2011-01-24 11:48:54 +08:00
2010-12-07 16:11:13 +00:00
2010-09-06 17:04:32 +02:00
2010-11-28 18:06:02 +08:00
2010-10-12 14:07:13 +04:00
2011-02-02 20:13:28 +02:00
2011-01-31 13:11:05 +00:00
2011-01-26 15:30:06 +08:00
2011-02-10 11:50:53 +01:00
2011-01-28 13:28:15 +01:00
2010-12-02 08:16:26 +01:00
2010-12-29 01:26:31 +01:00
2010-12-14 13:46:00 +03:00
2010-12-07 16:11:13 +00:00
2010-12-07 16:11:13 +00:00
2011-02-18 11:55:24 +01:00
2010-12-29 01:26:31 +01:00
2010-08-12 20:44:41 +04:00
2011-01-13 09:07:21 +01:00
2011-02-17 12:53:09 +01:00
…
2011-02-17 12:53:09 +01:00
2011-01-28 13:28:15 +01:00
2010-12-29 01:26:31 +01:00
2009-12-03 21:37:38 +03:00
…