Commit graph

65437 commits

Author SHA1 Message Date
Georgi Kodinov
71b453fa06 Bug #53371: COM_FIELD_LIST can be abused to bypass table level grants.
This is the 5.1 merge and extension of the fix.
The server was happily accepting paths in table name in all places a table
name is accepted (e.g. a SELECT). This allowed all users that have some 
privilege over some database to read all tables in all databases in all
mysql server instances that the server file system has access to.
Fixed by :
1. making sure no path elements are allowed in quoted table name when
constructing the path (note that the path symbols are still valid in table names
when they're properly escaped by the server).
2. checking the #mysql50# prefixed names the same way they're checked for
path elements in mysql-5.0.
2010-05-04 17:03:28 +03:00
Vasil Dimov
6327a4f0af Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3441
  revision-id: marko.makela@oracle.com-20100504130917-qmvzbj3pgil2nuat
  parent: marko.makela@oracle.com-20100504125510-gemcfhj7mefrhalo
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Tue 2010-05-04 16:09:17 +0300
  message:
    fsp_init_file_page_low(): Zero out the page. (Bug #53306)
  modified:
    storage/innodb_plugin/fsp/fsp0fsp.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Ffsp%2Ffsp0fsp.c
  ------------------------------------------------------------
2010-05-04 16:57:09 +03:00
Vasil Dimov
77817e64bb Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3439
  revision-id: marko.makela@oracle.com-20100504124744-c1ivf5tm90nv7lc1
  parent: marko.makela@oracle.com-20100504105546-4ew7a77e9uhxmhho
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Tue 2010-05-04 15:47:44 +0300
  message:
    Add Valgrind checks to catch uninitialized writes to data files.
    buf_flush_insert_into_flush_list(),
    buf_flush_insert_sorted_into_flush_list(),
    buf_flush_post_to_doublewrite_buf(): Check that the page is initialized.
  modified:
    storage/innodb_plugin/buf/buf0flu.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fbuf%2Fbuf0flu.c
  ------------------------------------------------------------
2010-05-04 16:50:08 +03:00
Vasil Dimov
3ba71f73be Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3438
  revision-id: marko.makela@oracle.com-20100504105546-4ew7a77e9uhxmhho
  parent: marko.makela@oracle.com-20100504093128-44v6glupe1dsh0ug
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Tue 2010-05-04 13:55:46 +0300
  message:
    Remove UNIV_BTR_AVOID_COPY. It was broken because btr_attach_half_pages()
    would get the block, new_block in the wrong order.
    Fixing that would have complicated the function even further
    for this marginal case.
  modified:
    storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
    storage/innodb_plugin/btr/btr0btr.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fbtr%2Fbtr0btr.c
    storage/innodb_plugin/include/univ.i 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Finclude%2Funiv.i
  ------------------------------------------------------------
2010-05-04 16:47:47 +03:00
Vasil Dimov
8e27737f17 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3437
  revision-id: marko.makela@oracle.com-20100504093128-44v6glupe1dsh0ug
  parent: marko.makela@oracle.com-20100503122859-k73bl51re93o0mt4
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Tue 2010-05-04 12:31:28 +0300
  message:
    btr_page_split_and_insert(): Correct the fix of Bug #52964.
    When split_rec==NULL, choose the correct node pointer key (first_rec).
  modified:
    storage/innodb_plugin/btr/btr0btr.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fbtr%2Fbtr0btr.c
  ------------------------------------------------------------
2010-05-04 16:45:44 +03:00
Mattias Jonsson
f33075fd16 merge 2010-05-04 14:26:44 +02:00
Alexander Nozdrin
2cfa972dfb Mark 3 test cases experimental on FreeBSD due to Bug 43020, Bug 38965. 2010-05-04 16:17:46 +04:00
Vasil Dimov
0f5326b417 Followup to vasil.dimov@oracle.com-20100504104629-0ovtc5lae2ghn7he :
Add the missing parameter to mutex_create().
2010-05-04 14:47:35 +03:00
Vasil Dimov
8d07cec06c Followup to vasil.dimov@oracle.com-20100504104629-0ovtc5lae2ghn7he :
Remove analyze_mutex_key now that this mutex does not exist.
2010-05-04 14:45:34 +03:00
Vasil Dimov
b0d1eaab03 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3436
  revision-id: marko.makela@oracle.com-20100503122859-k73bl51re93o0mt4
  parent: vasil.dimov@oracle.com-20100430100236-9ncldjxpi14ec7el
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Mon 2010-05-03 15:28:59 +0300
  message:
    buf_zip_decompress(): Allow BUF_NO_CHECKSUM_MAGIC as the stamped checksum.
    buf_page_get_gen(): Assert that buf_zip_decompress() succeeds.
    Callers are not prepared for a NULL return value. (Bug #53248)
  modified:
    storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
    storage/innodb_plugin/buf/buf0buf.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fbuf%2Fbuf0buf.c
  ------------------------------------------------------------
2010-05-04 13:58:43 +03:00
Vasil Dimov
bc3dc7df3f Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3433
  revision-id: mmakela@bk-internal.mysql.com-20100429133750-7ggyepb4erfg8eqe
  parent: mmakela@bk-internal.mysql.com-20100429132945-l4gm15tsmkjm24kv
  committer: Marko Makela <mmakela@bk-internal.mysql.com>
  branch nick: mysql-5.1-innodb
  timestamp: Thu 2010-04-29 15:37:50 +0200
  message:
    recv_sys_init(), recv_sys_empty_hash(): Shrink recv_sys->addr_hash.
    recv_addr_t: Turn space,page_no into bitfields to save space on 64-bit.
    This addresses Bug #53122 in the InnoDB Plugin.
  modified:
    storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
    storage/innodb_plugin/include/log0recv.h 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Finclude%2Flog0recv.h
    storage/innodb_plugin/log/log0recv.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Flog%2Flog0recv.c
  ------------------------------------------------------------
2010-05-04 13:54:13 +03:00
Vasil Dimov
4b2c8e2651 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3431
  revision-id: mmakela@bk-internal.mysql.com-20100429132743-8rjjgoqbvddr2i5x
  parent: vasil.dimov@oracle.com-20100428103452-6btsq4xv6v1etb5b
  committer: Marko Makela <mmakela@bk-internal.mysql.com>
  branch nick: mysql-5.1-innodb
  timestamp: Thu 2010-04-29 15:27:43 +0200
  message:
    Reduce the next-key locking of READ UNCOMMITTED to match that of
    READ COMMITTED in the InnoDB Plugin. (Bug #48607)
  modified:
    storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
    storage/innodb_plugin/handler/ha_innodb.cc 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fhandler%2Fha_innodb.cc
    storage/innodb_plugin/lock/lock0lock.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Flock%2Flock0lock.c
    storage/innodb_plugin/row/row0mysql.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Frow%2Frow0mysql.c
    storage/innodb_plugin/row/row0sel.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Frow%2Frow0sel.c
  ------------------------------------------------------------
2010-05-04 13:52:14 +03:00
Vasil Dimov
32aef81ec4 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3430
  revision-id: vasil.dimov@oracle.com-20100428103452-6btsq4xv6v1etb5b
  parent: vasil.dimov@oracle.com-20100428103200-vs5nzx245sv2qy7n
  committer: Vasil Dimov <vasil.dimov@oracle.com>
  branch nick: mysql-5.1-innodb
  timestamp: Wed 2010-04-28 13:34:52 +0300
  message:
    Bug#53046 dict_update_statistics_low can still be run concurrently
    on same table
    
    Followup to vasil.dimov@oracle.com-20100428102033-dt3caf531rs3lidr :
    
    Add more asserions, which I forgot.
  modified:
    storage/innodb_plugin/dict/dict0dict.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fdict%2Fdict0dict.c
  ------------------------------------------------------------
  revno: 3429
  revision-id: vasil.dimov@oracle.com-20100428103200-vs5nzx245sv2qy7n
  parent: vasil.dimov@oracle.com-20100428102033-dt3caf531rs3lidr
  committer: Vasil Dimov <vasil.dimov@oracle.com>
  branch nick: mysql-5.1-innodb
  timestamp: Wed 2010-04-28 13:32:00 +0300
  message:
    Revert the fix of Bug#38996 Race condition in ANALYZE TABLE
    
    This is branches/zip@r6032 in SVN and _is part_ of
    revid:svn-v4:16c675df-0fcb-4bc9-8058-dcc011a37293:branches/zip:6113
    in BZR.
    
    This is being reverted because now the code is serialized directly on
    index->stat_n_diff_key_vals[] as the fix for
    Bug#53046 dict_update_statistics_low can still be run concurrently on same table
    goes.
  modified:
    storage/innodb_plugin/handler/ha_innodb.cc 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fhandler%2Fha_innodb.cc
  ------------------------------------------------------------
  revno: 3428
  revision-id: vasil.dimov@oracle.com-20100428102033-dt3caf531rs3lidr
  parent: vasil.dimov@oracle.com-20100428084627-wtrmc66wqvjsdgj7
  committer: Vasil Dimov <vasil.dimov@oracle.com>
  branch nick: mysql-5.1-innodb
  timestamp: Wed 2010-04-28 13:20:33 +0300
  message:
    Followup to vasil.dimov@oracle.com-20100428084627-wtrmc66wqvjsdgj7:
    
    Address Marko's suggestions wrt the fix of
    Bug#53046 dict_update_statistics_low can still be run concurrently
    on same table
  modified:
    storage/innodb_plugin/dict/dict0dict.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fdict%2Fdict0dict.c
  ------------------------------------------------------------
  revno: 3427
  revision-id: vasil.dimov@oracle.com-20100428084627-wtrmc66wqvjsdgj7
  parent: mmakela@bk-internal.mysql.com-20100428063325-irts4ze9et5bsqdq
  committer: Vasil Dimov <vasil.dimov@oracle.com>
  branch nick: mysql-5.1-innodb
  timestamp: Wed 2010-04-28 11:46:27 +0300
  message:
    Fix Bug#53046 dict_update_statistics_low can still be run concurrently
    on same table
    
    Protect dict_index_t::stat_n_diff_key_vals[] with an array of
    mutexes.
    
    Testing: tested all code paths under UNIV_SYNC_DEBUG
    for the one in dict_print() one has to enable the InnoDB table monitor:
    CREATE TABLE innodb_table_monitor (a int) ENGINE=INNODB;
  modified:
    storage/innodb_plugin/btr/btr0cur.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fbtr%2Fbtr0cur.c
    storage/innodb_plugin/dict/dict0dict.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fdict%2Fdict0dict.c
    storage/innodb_plugin/handler/ha_innodb.cc 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fhandler%2Fha_innodb.cc
    storage/innodb_plugin/include/dict0dict.h 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Finclude%2Fdict0dict.h
  ------------------------------------------------------------
2010-05-04 13:46:29 +03:00
Vasil Dimov
c3ea5056e4 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3422
  revision-id: marko.makela@oracle.com-20100427134738-1poi5n4hn29ndne5
  parent: marko.makela@oracle.com-20100426131029-1ffja69h6n88q6bo
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Tue 2010-04-27 16:47:38 +0300
  message:
    row_merge_drop_temp_indexes(): Remove a bogus char-to-ulint cast.
  modified:
    storage/innodb_plugin/row/row0merge.c 1414@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2Frow%2Frow0merge.c
  ------------------------------------------------------------
2010-05-04 13:21:33 +03:00
Vasil Dimov
6cd860afa6 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3421
  revision-id: marko.makela@oracle.com-20100426131029-1ffja69h6n88q6bo
  parent: marko.makela@oracle.com-20100426112609-f7lgl8crw4x4sfkk
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Mon 2010-04-26 16:10:29 +0300
  message:
    lock_rec_queue_validate(): Disable a bogus check that
    a transaction that holds a lock on a clustered index record
    also holds a lock on the secondary index record.
  modified:
    storage/innobase/lock/lock0lock.c 2@cee13dc7-1704-0410-992b-c9b4543f1246:trunk%2Flock%2Flock0lock.c
    storage/innodb_plugin/lock/lock0lock.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Flock%2Flock0lock.c
  ------------------------------------------------------------
2010-05-04 13:19:37 +03:00
Vasil Dimov
126f35308e Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3420
  revision-id: marko.makela@oracle.com-20100426112609-f7lgl8crw4x4sfkk
  parent: marko.makela@oracle.com-20100426110856-14tc8re1f5kp5j3g
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Mon 2010-04-26 14:26:09 +0300
  message:
    recv_sys_init(): Skip the red-black tree in Hot Backup.
  modified:
    storage/innodb_plugin/log/log0recv.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Flog%2Flog0recv.c
  ------------------------------------------------------------
2010-05-04 13:17:26 +03:00
Vasil Dimov
a5db3eff62 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3419
  revision-id: marko.makela@oracle.com-20100426110856-14tc8re1f5kp5j3g
  parent: marko.makela@oracle.com-20100426105215-2e9nzq8z0nfwxjky
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Mon 2010-04-26 14:08:56 +0300
  message:
    Add a test case for Bug #52745.
  added:
    mysql-test/suite/innodb_plugin/r/innodb_bug52745.result innodb_bug52745.resu-20100426110444-2211220xcgz0el4v-1
    mysql-test/suite/innodb_plugin/t/innodb_bug52745.test innodb_bug52745.test-20100426110444-2211220xcgz0el4v-2
  ------------------------------------------------------------
2010-05-04 13:15:46 +03:00
Vasil Dimov
f18d97ace8 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3417
  revision-id: marko.makela@oracle.com-20100426102725-as2vc44ddykg1786
  parent: marko.makela@oracle.com-20100426073949-txnbqldrl9fdlapx
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Mon 2010-04-26 13:27:25 +0300
  message:
    row_search_for_mysql(): Never try semi-consistent read in unique searches.
    They are only useful in table scans. (Bug #52663)
  added:
    mysql-test/suite/innodb/r/innodb_bug52663.result innodb_bug52663.resu-20100426102328-fymyevkummgyc3gm-1
    mysql-test/suite/innodb/t/innodb_bug52663-master.opt innodb_bug52663maste-20100426102328-fymyevkummgyc3gm-2
    mysql-test/suite/innodb/t/innodb_bug52663.test innodb_bug52663.test-20100426102328-fymyevkummgyc3gm-3
    mysql-test/suite/innodb_plugin/r/innodb_bug52663.result innodb_bug52663.resu-20100426102328-fymyevkummgyc3gm-4
    mysql-test/suite/innodb_plugin/t/innodb_bug52663.test innodb_bug52663.test-20100426102328-fymyevkummgyc3gm-5
  modified:
    storage/innobase/row/row0sel.c 2@cee13dc7-1704-0410-992b-c9b4543f1246:trunk%2Frow%2Frow0sel.c
    storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
    storage/innodb_plugin/row/row0sel.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Frow%2Frow0sel.c
  ------------------------------------------------------------
2010-05-04 12:51:25 +03:00
Vasil Dimov
edb67bf47a Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3416
  revision-id: marko.makela@oracle.com-20100426073949-txnbqldrl9fdlapx
  parent: calvin.sun@oracle.com-20100422191614-2atswbilyyxep6rm
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Mon 2010-04-26 10:39:49 +0300
  message:
    btr_page_split_and_insert(): Silence a compiler warning
    about possibly uninitialized variable insert_left.
  modified:
    storage/innodb_plugin/btr/btr0btr.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fbtr%2Fbtr0btr.c
  ------------------------------------------------------------
2010-05-04 12:46:25 +03:00
Alfranio Correia
3c30921662 BUG#43407 SET GLOBAL SQL_SLAVE_SKIP_COUNTER should log previous state in error log
When issuing a 'SET GLOBAL SQL_SLAVE_SKIP_COUNTER' statement, the previous
position along with the new position is dumped into the error log. Namely,
the following information is printed out: skip_counter, group_relay_log_name
and group_relay_log_pos.
2010-05-04 10:41:28 +01:00
Vasil Dimov
08c8407439 Merge from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3415
  revision-id: calvin.sun@oracle.com-20100422191614-2atswbilyyxep6rm
  parent: marko.makela@oracle.com-20100422093342-jf9ojlzdqsdebohn
  committer: Calvin Sun <calvin.sun@oracle.com>
  branch nick: mysql-5.1-innodb
  timestamp: Thu 2010-04-22 14:16:14 -0500
  message:
    mysql-5.1-innodb: add error codes to innodb_bug51920.test
    kill of active connection yields different error code
    depending on platform.
  modified:
    mysql-test/suite/innodb/r/innodb_bug51920.result 6918@cee13dc7-1704-0410-992b-c9b4543f1246:branches%2F5.1%2Fmysql-test%2Finnodb_bug51920.result
    mysql-test/suite/innodb/t/innodb_bug51920.test 6918@cee13dc7-1704-0410-992b-c9b4543f1246:branches%2F5.1%2Fmysql-test%2Finnodb_bug51920.test
    mysql-test/suite/innodb_plugin/r/innodb_bug51920.result 6919@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2Fmysql-test%2Finnodb_bug51920.result
    mysql-test/suite/innodb_plugin/t/innodb_bug51920.test 6919@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2Fmysql-test%2Finnodb_bug51920.test
  ------------------------------------------------------------
2010-05-04 12:40:41 +03:00
Alfranio Correia
819caf8eb8 BUG#43406 CHANGE MASTER TO should log previous state in error log
When issuing a 'CHANGE MASTER TO' statement, key elements of the previous
state, namely the host, port, the master_log_file and the master_log_pos
are dumped into the error log.
2010-05-04 10:17:20 +01:00
Sunny Bains
296834410d Set the slot to NULL when creating a query thread. 2010-05-04 10:07:51 +10:00
Kristofer Pettersson
95e712b0b7 Automerge 2010-05-03 19:21:09 +02:00
Inaam Rana
22b4c120d3 pull changes from parent 2010-05-03 12:21:10 -04:00
Kristofer Pettersson
5dd5d70506 Bug#50373 --secure-file-priv=""
Iterative patch improvement. Previously committed patch
caused wrong result on Windows. The previous patch also
broke secure_file_priv for symlinks since not all file
paths which must be compared against this variable are
normalized using the same norm.

The server variable opt_secure_file_priv wasn't
normalized properly and caused the operations
LOAD DATA INFILE .. INTO TABLE ..
and
SELECT load_file(..)
to do different interpretations of the 
--secure-file-priv option.
     
The patch moves code to the server initialization
routines so that the path always is normalized
once and only once.
      
It was also intended that setting the option
to an empty string should be equal to 
lifting all previously set restrictions. This
is also fixed by this patch.


mysql-test/r/loaddata.result:
  * Removed test code which will currently break the much used --mem feature of mtr.
mysql-test/t/loaddata.test:
  * Removed test code which will currently break the much used --mem feature of mtr.
sql/item_strfunc.cc:
  * Replaced string comparing code on opt_secure_file_priv with an interface which guarantees that both file paths are normalized using the same norm on all platforms.
sql/mysql_priv.h:
  * Added signature for is_secure_file_path()
sql/mysqld.cc:
  * New function for checking if a path compatible with the secure path restriction.
  * Added initialization of the opt_secure_file_priv variable.
sql/sql_class.cc:
  * Replaced string comparing code on opt_secure_file_priv with an interface which guarantees that both file paths are normalized using the same norm on all platforms.
sql/sql_load.cc:
  * Replaced string comparing code on opt_secure_file_priv with an interface which guarantees that both file paths are normalized using the same norm on all platforms.
2010-05-03 18:14:39 +02:00
Georgi Kodinov
f63608ea97 Bug #53371: COM_FIELD_LIST can be abused to bypass table level grants.
The server was not checking the supplied to COM_FIELD_LIST table name
for validity and compliance to acceptable table names standards.
Fixed by checking the table name for compliance similar to how it's 
normally checked by the parser and returning an error message if 
it's not compliant.
2010-05-03 18:16:51 +03:00
Georgi Kodinov
e038b56dab merged 5.1-innodb 2010-05-01 19:12:12 +03:00
Sunny Bains
f232dfbf82 Fix failing tests. 2010-05-01 07:54:14 +10:00
Alexander Nozdrin
63e6005ac4 Patch for Bug#52356: query_cache_debug fails on Linux.
There were two problems here:
  1. misleading error message
  2. abusing KILL QUERY in the test case

1. The server reported "'DELETE FROM t1' failed: 1689: Wait on a lock was
aborted due to a pending exclusive lock", while the proper error message
should be "'DELETE FROM t1' failed: 1317: Query execution was interrupted".

The problem is that the server has two different flags for
signalling that a query is being killed: THD::killed and
mysys_var::abort. The test case triggers a race: sometimes
mysys_var::abort is set earlier than THD::killed. That leads
to the following situation:

  - thr_lock() checks mysys_var::abort and returns error status,
    since mysys_var::abort is set;

  - the caller (mysql_lock_tables()) gets an error from thr_lock(),
    but THD::killed is not set, so it decides that thr_lock() couldn't
    get a lock due to a pending exclusive lock.

This is a known issue with the server and it's not going to be fixed soon.

5.5 differs from 5.1 here as follows: when thr_lock() returns an error:
  - 5.1 continues trying thr_lock() until success;
  - 5.5 propagates the error

2. The test case uses KILL QUERY is a highly concurent environment.

The fix is to wait for the dying statement to rest in peace before
executing another DELETE FROM t1.
2010-04-30 16:12:41 +04:00
Sunny Bains
63d9bde50f Add missing semi-colon. 2010-04-30 21:38:12 +10:00
Alexey Kopytov
26570994b2 Automerge. 2010-04-30 15:27:17 +04:00
Alexey Kopytov
97374a1184 Bug #48419: another explain crash..
WHERE predicates containing references to empty tables in a
subquery were handled incorrectly by the optimizer when
executing EXPLAIN. As a result, the optimizer could try to
evaluate such predicates rather than just stop with
"Impossible WHERE noticed after reading const tables" as 
it would do in a non-subquery case. This led to valgrind 
errors and crashes.

Fixed the code checking the above condition so that subqueries
are not excluded and hence are handled in the same way as top
level SELECTs.

mysql-test/r/explain.result:
  Added a test case for bug #48419.
mysql-test/r/ps.result:
  Updated test results to take the new (and more correct)
  "Extra" comments in execution plans.
mysql-test/t/explain.test:
  Added a test case for bug #48419.
sql/sql_select.cc:
  There is no point in excluding subqueries from checking
  for identically false WHERE conditions.
2010-04-30 15:10:48 +04:00
Sunny Bains
8d4c0dbc94 Fix Bug#52983. 2010-04-30 21:00:21 +10:00
Sunny Bains
e579d2ece2 Fix Bug#52983. 2010-04-30 20:54:56 +10:00
Sunny Bains
22665be77a Fix whitespace. 2010-04-30 20:47:57 +10:00
Vasil Dimov
3bffc40a24 Disable innodb.innodb, main.ps_3innodb and main.partition_innodb_plugin
mysql-tests because those emit (spurious?) valgrind warnings.
2010-04-30 13:02:36 +03:00
Davi Arnaut
4e378bc55b Manual merge. 2010-04-29 20:18:19 -03:00
Alexey Kopytov
85ed11c60d Manual merge of mysql-5.1-bugteam to mysql-trunk-merge.
Conflicts:

Text conflict in configure.in
Text conflict in dbug/dbug.c
Text conflict in mysql-test/r/ps.result
Text conflict in mysql-test/t/ps.test
Text conflict in sql/CMakeLists.txt
Text conflict in sql/ha_ndbcluster.cc
Text conflict in sql/mysqld.cc
Text conflict in sql/sql_plugin.cc
Text conflict in sql/sql_table.cc
2010-04-30 00:33:06 +04:00
Inaam Rana
cfbce98a00 Add basic tests for new innodb features 2010-04-29 13:43:10 -04:00
Marko Makela
c144a091db recv_sys_init(), recv_sys_empty_hash(): Shrink recv_sys->addr_hash.
This addresses Bug #53122 in the built-in InnoDB.
2010-04-29 15:41:47 +02:00
Marko Makela
f10cf42068 recv_sys_init(), recv_sys_empty_hash(): Shrink recv_sys->addr_hash.
recv_addr_t: Turn space,page_no into bitfields to save space on 64-bit.
This addresses Bug #53122 in the InnoDB Plugin.
2010-04-29 15:37:50 +02:00
Marko Makela
0ca989eaaf Reduce the next-key locking of READ UNCOMMITTED to match that of
READ COMMITTED in the built-in InnoDB. (Bug #48607)
2010-04-29 15:29:45 +02:00
Davi Arnaut
54705ab176 Bug#50974: Server keeps receiving big (> max_allowed_packet) packets indefinitely.
The server could be tricked to read packets indefinitely if it
received a packet larger than the maximum size of one packet.
This problem is aggravated by the fact that it can be triggered
before authentication.

The solution is to no skip big packets for non-authenticated
sessions. If a big packet is sent before a session is authen-
ticated, a error is returned and the connection is closed.

include/mysql_com.h:
  Add skip flag. Only used in server builds.
sql/net_serv.cc:
  Control whether big packets can be skipped.
2010-04-29 10:28:16 -03:00
Marko Makela
74ae1326c9 Reduce the next-key locking of READ UNCOMMITTED to match that of
READ COMMITTED in the InnoDB Plugin. (Bug #48607)
2010-04-29 15:27:43 +02:00
Alfranio Correia
37074b6108 Post-merge fix for BUG#51894, BUG#53075
thread_temporary_used is not initialized causing
valgrind's warnings.
2010-04-29 11:43:54 +01:00
Ramil Kalimullin
2303a8c6e4 Manual merge. 2010-04-29 08:54:09 +04:00
Ramil Kalimullin
0d5dbb166b Fix for bug #53237: mysql_list_fields/COM_FIELD_LIST stack smashing
Problem: "COM_FIELD_LIST is an old command of the MySQL server, before there was real move to only
SQL. Seems that the data sent to COM_FIELD_LIST( mysql_list_fields() function) is not
checked for sanity. By sending long data for the table a buffer is overflown, which can
be used deliberately to include code that harms".

Fix: check incoming data length.


sql/sql_parse.cc:
  Fix for bug #53237: mysql_list_fields/COM_FIELD_LIST stack smashing
    - check incoming mysql_list_fields() table name arg length.
2010-04-29 08:42:32 +04:00
Konstantin Osipov
3789b2af0a Bug#46947 "Embedded SELECT without FOR UPDATE is causing a lock"
Update the result file to minor tweaks of the comments in the
test case.
2010-04-28 17:43:25 +04:00
Georgi Kodinov
4d0e9957ac Bug #47453: InnoDB incorrectly changes TIMESTAMP columns when JOINed
during an UPDATE

Extended the fix for bug 29310 to multi-table update:

When a table is being updated it has two set of fields - fields required for
checks of conditions and fields to be updated. A storage engine is allowed
not to retrieve columns marked for update. Due to this fact records can't
be compared to see whether the data has been changed or not. This makes the
server always update records independently of data change.
  
Now when an auto-updatable timestamp field is present and server sees that
a table handle isn't going to retrieve write-only fields then all of such
fields are marked as to be read to force the handler to retrieve them.
2010-04-28 15:55:54 +03:00