Commit graph

62909 commits

Author SHA1 Message Date
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
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
Sunny Bains
296834410d Set the slot to NULL when creating a query thread. 2010-05-04 10:07:51 +10:00
Inaam Rana
22b4c120d3 pull changes from parent 2010-05-03 12:21:10 -04:00
Sunny Bains
f232dfbf82 Fix failing tests. 2010-05-01 07:54:14 +10:00
Sunny Bains
63d9bde50f Add missing semi-colon. 2010-04-30 21:38:12 +10: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
Inaam Rana
cfbce98a00 Add basic tests for new innodb features 2010-04-29 13:43:10 -04:00
Sunny Bains
248dd65fe7 Fix bug introduced by r3038. When a transaction is rolled back by the
lock monitor thread, it may have locks that are granted to waited to
waiting transactions. These waiting transactions will need to be woken
up but their trx->lock_wait_timeout flag will be FALSE causing the old
code to break. What we need is a flag that covers the entire lock
release process not individual transactions. The fix is to move the
flag out of trx_t and into srv_sys_t.
2010-04-28 06:47:47 +10:00
Inaam Rana
e2a3bb5acc buf_flush_list() should return failure if one of the buffer pool
was skipped because another flush batch was active. This is to
ensure that the when we return success then it is guaranteed that
all pages up to the lsn_limit have been flushed to the disk.
2010-04-26 23:24:45 -04:00
Vasil Dimov
75d28784f8 Fix typo in comment in innodb_bug38231.test 2010-04-23 17:12:56 +03:00
Sunny Bains
de31f61f2f Add a debug assertion for the case where the waiting thread is being woken
up because of a lock wait timeout.
2010-04-23 17:52:09 +10:00
Sunny Bains
7b26e1871a Fix a race condition introduced by r7004. We need to acquire the srv_sys->mutex
for all other cases where we release a suspended thread waiting on a lock other
than those released by the lock wait timer thread.
2010-04-23 15:19:17 +10:00
jyang
83f422fe0c Merge from mysql-trunk-innodb to local repository 2010-04-22 15:15:56 -07:00
jyang
477b7115d4 Register newly added purge thread to performance schema tracking.
rb://289, approved by Marko
2010-04-22 14:51:43 -07:00
Vasil Dimov
66b4a1e614 Merge r3403..3414 from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3414
  revision-id: marko.makela@oracle.com-20100422093342-jf9ojlzdqsdebohn
  parent: marko.makela@oracle.com-20100421185359-8qaxoa2yyrpzwdd7
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Thu 2010-04-22 12:33:42 +0300
  message:
    Correct the definition of DICT_SYS_INDEXES_NAME_FIELD.
    When row_merge_drop_temp_indexes() was reworked to drop the indexes
    via the data dictionary cache, the code was broken because it would
    read the index name from the wrong field.
  modified:
    storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
    storage/innodb_plugin/dict/dict0boot.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fdict%2Fdict0boot.c
    storage/innodb_plugin/include/dict0boot.h 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Finclude%2Fdict0boot.h
  ------------------------------------------------------------
  revno: 3413
  revision-id: marko.makela@oracle.com-20100421185359-8qaxoa2yyrpzwdd7
  parent: marko.makela@oracle.com-20100421102723-0i80uezbyu0ekj5d
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Wed 2010-04-21 21:53:59 +0300
  message:
    btr_page_split_and_insert(): Avoid an infinite loop. (Bug #52964)
    
    btr_page_tuple_smaller(): New function, refactored from
    btr_page_split_and_insert().
    
    btr_page_get_split_rec(): Renamed from btr_page_get_sure_split_rec().
    Note that a NULL return may mean that the tuple is to be inserted into
    either the lower or upper page, to be determined by btr_page_tuple_smaller().
    
    btr_page_split_and_insert(): When btr_page_get_split_rec() returns NULL,
    invoke btr_page_tuple_smaller() to determine which half-page the tuple
    belongs to.
    
    Reviewed by Sunny Bains
  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
  ------------------------------------------------------------
  revno: 3412
  revision-id: marko.makela@oracle.com-20100421102723-0i80uezbyu0ekj5d
  parent: marko.makela@oracle.com-20100421100029-mji6lmdgvuqh96qq
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Wed 2010-04-21 13:27:23 +0300
  message:
    dict_create_index_step(): Be strict about DYNAMIC and COMPRESSED tables.
    Bug #50495 is about REDUNDANT and COMPACT tables, after all.
  modified:
    mysql-test/suite/innodb_plugin/r/innodb-zip.result 2252@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2Fmysql-test%2Finnodb-zip.result
    mysql-test/suite/innodb_plugin/t/innodb-zip.test 2252@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2Fmysql-test%2Finnodb-zip.test
    storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
    storage/innodb_plugin/dict/dict0crea.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fdict%2Fdict0crea.c
  ------------------------------------------------------------
  revno: 3411
  revision-id: marko.makela@oracle.com-20100421100029-mji6lmdgvuqh96qq
  parent: marko.makela@oracle.com-20100421095033-0acvzxb8um8cms0a
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Wed 2010-04-21 13:00:29 +0300
  message:
    ha_innobase::add_index(): Only check for duplicate indexes
    when the data dictionary is locked.
    This fixes a UNIV_DEBUG assertion failure in innodb-index.test.
  modified:
    storage/innodb_plugin/handler/handler0alter.cc 1845@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2Fhandler%2Fhandler0alter.cc
  ------------------------------------------------------------
  revno: 3410
  revision-id: marko.makela@oracle.com-20100421095033-0acvzxb8um8cms0a
  parent: marko.makela@oracle.com-20100421094032-ir4glqk46qvg2ywn
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Wed 2010-04-21 12:50:33 +0300
  message:
    dtuple_convert_big_rec(): Store locally any fields whose maximum length
    is less than 256 bytes. (Bug #52745)
    Add related comments and debug assertions to the "offsets"
    functions in rem0rec.c.
    Approved by Sunny Bains
  modified:
    storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
    storage/innodb_plugin/data/data0data.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fdata%2Fdata0data.c
    storage/innodb_plugin/rem/rem0rec.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Frem%2Frem0rec.c
  ------------------------------------------------------------
  revno: 3409
  revision-id: marko.makela@oracle.com-20100421094032-ir4glqk46qvg2ywn
  parent: marko.makela@oracle.com-20100421091611-uu46iygmv5sizjru
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Wed 2010-04-21 12:40:32 +0300
  message:
    Adjust tests for the Bug #50495 fix.
  modified:
    mysql-test/suite/innodb_plugin/r/innodb-zip.result 2252@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2Fmysql-test%2Finnodb-zip.result
    mysql-test/suite/innodb_plugin/t/innodb-zip.test 2252@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2Fmysql-test%2Finnodb-zip.test
    mysql-test/suite/innodb_plugin/t/innodb_bug36169.test 2418@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2Fmysql-test%2Finnodb_bug36169.test
  ------------------------------------------------------------
  revno: 3408
  revision-id: marko.makela@oracle.com-20100421091611-uu46iygmv5sizjru
  parent: marko.makela@oracle.com-20100421063916-h3gwjea7jzjilyww
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Wed 2010-04-21 12:16:11 +0300
  message:
    rec_convert_dtuple_to_rec(): Correct the debug check.
    The "extern" accessor functions return zero or nonzero, not 0 or 1.
  modified:
    storage/innodb_plugin/rem/rem0rec.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Frem%2Frem0rec.c
  ------------------------------------------------------------
  revno: 3407
  revision-id: marko.makela@oracle.com-20100421063916-h3gwjea7jzjilyww
  parent: marko.makela@oracle.com-20100420201550-cax1xywvlcdshgfg
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Wed 2010-04-21 09:39:16 +0300
  message:
    rec_convert_dtuple_to_rec(): Add a debug check.
  modified:
    storage/innodb_plugin/rem/rem0rec.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Frem%2Frem0rec.c
  ------------------------------------------------------------
  revno: 3406
  revision-id: marko.makela@oracle.com-20100420201550-cax1xywvlcdshgfg
  parent: marko.makela@oracle.com-20100420114222-diq7h2hiom9ww6me
  committer: Marko Makela <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Tue 2010-04-20 23:15:50 +0300
  message:
    btr_cur_optimistic_insert(): Remove unused variable "heap".
  modified:
    storage/innodb_plugin/btr/btr0cur.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fbtr%2Fbtr0cur.c
  ------------------------------------------------------------
  revno: 3405
  revision-id: marko.makela@oracle.com-20100420114222-diq7h2hiom9ww6me
  parent: marko.makela@oracle.com-20100420082908-tpako8jd4imkh1xb
  committer: Marko Makela <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Tue 2010-04-20 14:42:22 +0300
  message:
    dict_create_index_step(): Invoke dict_index_add_to_cache()
    in strict mode only if innodb_strict_mode is set. (Bug #50495)
    
    trx_is_strict(): New function, for checking innodb_strict_mode.
  modified:
    storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
    storage/innodb_plugin/dict/dict0crea.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fdict%2Fdict0crea.c
    storage/innodb_plugin/handler/ha_innodb.cc 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fhandler%2Fha_innodb.cc
    storage/innodb_plugin/include/trx0trx.h 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Finclude%2Ftrx0trx.h
  ------------------------------------------------------------
  revno: 3404
  revision-id: marko.makela@oracle.com-20100420082908-tpako8jd4imkh1xb
  parent: marko.makela@oracle.com-20100419103603-u5pz4qc6hfhx4nua
  committer: Marko M?kel? <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Tue 2010-04-20 11:29:08 +0300
  message:
    Implement UNIV_BTR_AVOID_COPY, an optimization of page splits.
  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
  ------------------------------------------------------------
  revno: 3403
  revision-id: marko.makela@oracle.com-20100419103603-u5pz4qc6hfhx4nua
  parent: marko.makela@oracle.com-20100419094405-fd3xwadullishv07
  committer: Marko =?ISO-8859-1?Q?M=E4kel=E4?= <marko.makela@oracle.com>
  branch nick: 5.1-innodb
  timestamp: Mon 2010-04-19 13:36:03 +0300
  message:
    Enable UNIV_DEBUG_VALGRIND when HAVE_purify is set.
  modified:
    storage/innobase/include/univ.i 2@cee13dc7-1704-0410-992b-c9b4543f1246:trunk%2Finclude%2Funiv.i
    storage/innodb_plugin/include/univ.i 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Finclude%2Funiv.i
2010-04-22 14:24:42 +03:00
Vasil Dimov
d7ffd1a088 Merge c3400 from mysql-5.1-innodb:
------------------------------------------------------------
  revno: 3400
  revision-id: mmakela@bk-internal.mysql.com-20100415070122-1nxji8ym4mao13ao
  parent: vasil.dimov@oracle.com-20100414200413-ktulgshvdp0smxk0
  committer: Marko Makela <mmakela@bk-internal.mysql.com>
  branch nick: mysql-5.1-innodb
  timestamp: Thu 2010-04-15 09:01:22 +0200
  message:
    storage/innodb_plugin: Relax too strict assertions about prefix
    indexed BLOBs for ROW_FORMAT=DYNAMIC and ROW_FORMAT_COMPRESSED tables
    (Bug #52746). In these tables, the locally stored prefix of a BLOB can
    be as small as 20 bytes (BTR_EXTERN_FIELD_REF_SIZE). ROW_FORMAT=REDUNDANT
    and ROW_FORMAT=COMPACT store a prefix of 768 bytes (REC_MAX_INDEX_COL_LEN).
    
    trx_undo_rec_get_col_val(): Relax the ut_ad() assertion and add a
    reference to dtuple_convert_big_rec().
    
    trx_undo_rec_get_partial_row(): Relax the ut_a() assertion that
    prompted Bug #52746.
  modified:
    storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
    storage/innodb_plugin/trx/trx0rec.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Ftrx%2Ftrx0rec.c
2010-04-22 14:07:52 +03:00
Vasil Dimov
a8afa78349 Merge from innodb-branches-innodb+ 2010-04-22 13:51:12 +03:00
Vasil Dimov
d655e2aee1 Merge branches/innodb+ from SVN 2010-04-22 13:50:29 +03:00
mmakela
80f27ff3a3 branches/innodb+: Merge revisions 6949:6970 from branches/zip,
skipping the revisions that do not make sense in branches/innodb+:
  ------------------------------------------------------------------------
  r6957 | vdimov | 2010-04-06 22:05:54 +0300 (Tue, 06 Apr 2010) | 2 lines
  Changed paths:
     M /branches/zip/trx/trx0trx.c

  branches/zip: Whitespace fixup
  ------------------------------------------------------------------------
  r6962 | mmakela | 2010-04-07 15:03:54 +0300 (Wed, 07 Apr 2010) | 2 lines
  Changed paths:
     M /branches/zip/handler/ha_innodb.cc

  branches/zip: innobase_init(): Correct the error message
  about wrong innodb_change_buffering value.  Reported by Ranger.
  ------------------------------------------------------------------------
  r6967 | vdimov | 2010-04-07 22:40:38 +0300 (Wed, 07 Apr 2010) | 2 lines
  Changed paths:
     M /branches/zip/include/univ.i

  branches/zip: Whitespace fixup in univ.i
  ------------------------------------------------------------------------
2010-04-22 09:48:57 +00:00
Vasil Dimov
f875041fad Merge from innodb-branches-innodb+ 2010-04-22 12:00:59 +03:00
Vasil Dimov
4b0bd332ec Merge branches/innodb+ from SVN. 2010-04-22 11:59:35 +03:00
sbains
bd77a36e68 branches/innodb+: Add a check for thread suspended time to the list of checks
for slot recycle. Udpate the comments.
2010-04-22 01:09:15 +00:00
Vasil Dimov
7b653d649a Bump InnoDB version after 1.1.0 has been released in MySQL 5.5.4-m3. 2010-04-21 12:53:37 +03:00
sbains
af1478e044 branches/innodb+: Factor out srv_threads_mutex from the kernel mutex.
Splitting the kernel mutex at once is a complex task, several mutexes will
be factored out of it. This is one of the easier ones. This mutex sits below
the kernel mutex and is used by the threads infra-structure. It is important
for the multi-threaded purge because for multi-threaded purge we will need
to activate and use InnoDB task queue and query thread scheduling code.
rb://285
2010-04-21 09:29:02 +00:00
Vasil Dimov
30a1cedb07 Adjust the result for the mysql-test sys_vars.all_vars after the
addition of a new config variable.
2010-04-20 15:29:06 +03:00
Vasil Dimov
c7525a0130 Merge from innodb-branches-innodb+ (2) 2010-04-19 20:53:16 +03:00
Vasil Dimov
ed30b504d2 Merge from SVN 2010-04-19 20:31:23 +03:00
Vasil Dimov
49dc3a7b32 Refactor the innodb_bug38231 mysql-test to conform with the
newly introduced metadata locks.

Previously the behavior was deterministic and if several LOCKs were
waiting the first one of them was released by UNLOCK (in chronological
order).

Now (with MDLs) the behavior is undefined and since we do not know in
what order to --reap the connections we simply disconnect them without
reaping.
2010-04-19 19:58:12 +03:00
irana
7f74120473 branches/innodb+
Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes
made since it's creation)

This also reverts r6930 to branches/innodb+ because a different
solution for that issue is already present in innodb+multibp which
is being merged.

After this commit branches/innodb+multibp should be discarded
and this branch should become our main development tree.

  ------------------------------------------------------------------------
  r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line
  Changed paths:
     A /branches/innodb+multibp (from /branches/innodb+:6914)
  
  Creating a branch for the multiple buffer pool
  ------------------------------------------------------------------------
  r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines
  Changed paths:
     M /branches/innodb+multibp/CMakeLists.txt
     M /branches/innodb+multibp/btr/btr0btr.c
     M /branches/innodb+multibp/btr/btr0cur.c
     M /branches/innodb+multibp/btr/btr0sea.c
     M /branches/innodb+multibp/buf/buf0buddy.c
     M /branches/innodb+multibp/buf/buf0buf.c
     M /branches/innodb+multibp/buf/buf0flu.c
     M /branches/innodb+multibp/buf/buf0lru.c
     M /branches/innodb+multibp/buf/buf0rea.c
     M /branches/innodb+multibp/handler/ha_innodb.cc
     M /branches/innodb+multibp/handler/i_s.cc
     M /branches/innodb+multibp/ibuf/ibuf0ibuf.c
     M /branches/innodb+multibp/include/buf0buddy.h
     M /branches/innodb+multibp/include/buf0buddy.ic
     M /branches/innodb+multibp/include/buf0buf.h
     M /branches/innodb+multibp/include/buf0buf.ic
     M /branches/innodb+multibp/include/buf0flu.h
     M /branches/innodb+multibp/include/buf0flu.ic
     M /branches/innodb+multibp/include/buf0lru.h
     M /branches/innodb+multibp/include/buf0rea.h
     M /branches/innodb+multibp/include/buf0types.h
     M /branches/innodb+multibp/include/ibuf0ibuf.ic
     M /branches/innodb+multibp/include/srv0srv.h
     M /branches/innodb+multibp/include/univ.i
     M /branches/innodb+multibp/log/log0log.c
     M /branches/innodb+multibp/log/log0recv.c
     M /branches/innodb+multibp/mem/mem0mem.c
     M /branches/innodb+multibp/page/page0zip.c
     M /branches/innodb+multibp/srv/srv0srv.c
     M /branches/innodb+multibp/srv/srv0start.c
     M /branches/innodb+multibp/trx/trx0trx.c
     M /branches/innodb+multibp/trx/trx0undo.c
  
  branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG
  with both ibtests and Sysbench. The patch now needs a workout from Michael.
  
  ------------------------------------------------------------------------
  r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines
  Changed paths:
     M /branches/innodb+multibp/handler/ha_innodb.cc
  
  branches/innodb+multibp: Fix error introduced in r6916.
  
  ------------------------------------------------------------------------
  r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines
  Changed paths:
     M /branches/innodb+multibp/btr/btr0cur.c
     M /branches/innodb+multibp/buf/buf0buddy.c
     M /branches/innodb+multibp/buf/buf0buf.c
     M /branches/innodb+multibp/buf/buf0flu.c
     M /branches/innodb+multibp/buf/buf0lru.c
     M /branches/innodb+multibp/include/buf0buddy.ic
     M /branches/innodb+multibp/include/buf0buf.h
     M /branches/innodb+multibp/include/buf0buf.ic
     M /branches/innodb+multibp/include/buf0flu.ic
     M /branches/innodb+multibp/page/page0zip.c
  
  branches/innodb+multibp: Fix whitespace issues. Add function
  buf_pool_from_block(). Add some comments to parameters.
  
  ------------------------------------------------------------------------
  r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines
  Changed paths:
     M /branches/innodb+multibp/include/buf0buf.ic
     M /branches/innodb+multibp/include/univ.i
  
  branches/innodb+multibp: Remove bogus assertion. It's possible for the space
  and offset of a page to be undefined during the lifecycle of a page. Remove
  the debug #defines from univ.i.
  
  ------------------------------------------------------------------------
  r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines
  Changed paths:
     M /branches/innodb+multibp/srv/srv0start.c
  
  branches/innodb+multibp: Fix whitespace issues.
  
  ------------------------------------------------------------------------
  r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines
  Changed paths:
     M /branches/innodb+multibp/CMakeLists.txt
     M /branches/innodb+multibp/ChangeLog
     M /branches/innodb+multibp/buf/buf0buf.c
     M /branches/innodb+multibp/buf/buf0flu.c
     M /branches/innodb+multibp/handler/ha_innodb.cc
     M /branches/innodb+multibp/include/buf0buf.h
     M /branches/innodb+multibp/include/buf0buf.ic
     M /branches/innodb+multibp/include/buf0flu.ic
     M /branches/innodb+multibp/include/srv0srv.h
     M /branches/innodb+multibp/include/sync0sync.h
     M /branches/innodb+multibp/include/trx0purge.h
     M /branches/innodb+multibp/include/ut0ut.h
     M /branches/innodb+multibp/include/ut0ut.ic
     M /branches/innodb+multibp/lock/lock0lock.c
     M /branches/innodb+multibp/log/log0recv.c
     M /branches/innodb+multibp/mtr/mtr0mtr.c
     M /branches/innodb+multibp/mysql-test/innodb_bug38231.test
     A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931)
     A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931)
     M /branches/innodb+multibp/row/row0sel.c
     M /branches/innodb+multibp/srv/srv0srv.c
     M /branches/innodb+multibp/srv/srv0start.c
     M /branches/innodb+multibp/sync/sync0sync.c
     M /branches/innodb+multibp/trx/trx0purge.c
  
  branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+
  
  ------------------------------------------------------------------------
  r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines
  Changed paths:
     M /branches/innodb+multibp/buf/buf0flu.c
     M /branches/innodb+multibp/include/buf0flu.ic
     M /branches/innodb+multibp/mtr/mtr0mtr.c
  
  branches/innodb+multibp: Fix the debug assertions for flush order mutex. These
  were missed in r6934.
  
  ------------------------------------------------------------------------
  r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines
  Changed paths:
     M /branches/innodb+multibp/sync/sync0sync.c
  
  branches/innodb+multibp: Because now we have multiple instances of a mutex at
  the same level and these mutexes can be acquired simultaneously we can't
  simply check for <= level. We need to check for <= level - 1.
  
  ------------------------------------------------------------------------
  r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines
  Changed paths:
     M /branches/innodb+multibp/trx/trx0purge.c
  
  branches/innodb+multibp: We need to check if the history list len is > than
  some threshold not that it is evenly divisible by the some batch size. While
  running tests on dscczz01 I've observed that the purge thread can't keep up
  with the generation of the UNDO log records because of the faster code.
  
  ------------------------------------------------------------------------
  r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines
  Changed paths:
     M /branches/innodb+multibp/buf/buf0buf.c
     M /branches/innodb+multibp/buf/buf0flu.c
     M /branches/innodb+multibp/include/buf0buf.h
     M /branches/innodb+multibp/include/buf0buf.ic
     M /branches/innodb+multibp/include/buf0flu.h
     M /branches/innodb+multibp/include/buf0flu.ic
     M /branches/innodb+multibp/include/log0log.h
     M /branches/innodb+multibp/include/sync0sync.h
     M /branches/innodb+multibp/log/log0log.c
     M /branches/innodb+multibp/log/log0recv.c
     M /branches/innodb+multibp/mtr/mtr0mtr.c
     M /branches/innodb+multibp/sync/sync0sync.c
  
  branches/innodb+multibp
  
  The buf_flush_order patch that was ported in from 1.1 won't work with
  multiple buffer pools. This patch moves the mutex protecting order of
  insertion in the flush list(s) to log_sys struct so that we can have
  one global mutex protecting insertions into all flush list(s)
  
  ------------------------------------------------------------------------
  r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines
  Changed paths:
     M /branches/innodb+multibp/lock/lock0lock.c
  
  branches/innodb+multibp: We should get the record heap no to check recursively
  only if we are checking a record lock. Prior to this fix we were doing it for
  table locks as well, this is a bug.
  
  ------------------------------------------------------------------------
  r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines
  Changed paths:
     M /branches/innodb+multibp/ha/ha0ha.c
  
  branches/innodb+multibp: fix compiler errors on Windows.
  Move ut_ad() to after declarations for C file.
  
  
  ------------------------------------------------------------------------
  r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines
  Changed paths:
     M /branches/innodb+multibp/buf/buf0buf.c
  
  branches/innodb+multibp: Remove the code that created the fake buffer pool.
  
  ------------------------------------------------------------------------
  r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines
  Changed paths:
     M /branches/innodb+multibp/lock/lock0lock.c
  
  branches/innodb+multibp
  
  Revert r6941 as it does not resolve the issue and we have to take
  back the whole fix for bug#49047
  
  ------------------------------------------------------------------------
  r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines
  Changed paths:
     M /branches/innodb+multibp/include/ut0ut.h
     M /branches/innodb+multibp/include/ut0ut.ic
     M /branches/innodb+multibp/lock/lock0lock.c
  
  branches/innodb+multibp
  
  Merged revisions 6932:6944 from branches/innodb+
  
  This solely includes the reversal of fix for bug#49047
  
  ------------------------------------------------------------------------
  r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines
  Changed paths:
     M /branches/innodb+multibp/buf/buf0lru.c
  
  branches/innodb+multibp: Remove the log sys mutex acquisition when doing
  buffer pool stat aggregation. A dirty read here should suffice.
  
  ------------------------------------------------------------------------
  r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines
  Changed paths:
     M /branches/innodb+multibp/buf/buf0buf.c
  
  branches/innodb+mbp
  
  Initialize the buf_page_t::buf_pool pointer when the descriptor is
  allocated using buf_buddy_alloc().
  
  ------------------------------------------------------------------------
  r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines
  Changed paths:
     M /branches/innodb+multibp/handler/ha_innodb.cc
  
  branches/innodb+multibp: Fix a possible null pointer of index_mapping
  in a race condition.
  
  
  ------------------------------------------------------------------------
  r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines
  Changed paths:
     M /branches/innodb+multibp/include/ut0mem.h
     M /branches/innodb+multibp/ut/ut0mem.c
  
  branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept
  a NULL pointer and treat it as a nop.
  
  ------------------------------------------------------------------------
  r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines
  Changed paths:
     M /branches/innodb+multibp/handler/ha_innodb.cc
  
  branches/innodb+multibp: Fix for bug #52580: Crash in
  ha_innobase::open on executing INSERT with concurrent ALTER TABLE.
  Change in MySQL bug #51557 releases the mutex LOCK_open before
  ha_innobase::open(), causing racing condition for index translation
  table creation. Fix it by adding dict_sys mutex for the operation.
  
  rb://283, approved by Marko.
  
  
  ------------------------------------------------------------------------
  r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines
  Changed paths:
     M /branches/innodb+multibp/handler/ha_innodb.cc
  
  branches/innodb+multibp
  
  Force setting of buf_pool->LRU_old_ratio by calling
  buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure
  that we grab the buf_pool mutex and actually adjust the
  buf_pool->LRU_old pointer instead of just updating the
  buf_pool->LRU_old_ratio.
  
  Note that after this change there is no call to
  buf_LRU_old_ratio_update() with adjust set to FALSE and therefore
  this parameter should be removed. I am keeping it for now to first
  make sure that the fix does work.
  
  Approved by: No one. Sunny agreed with my hypothesis of the problem.
  
  ------------------------------------------------------------------------
  r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines
  Changed paths:
     M /branches/innodb+multibp/handler/ha_innodb.cc
  
  branches/innodb+multibp
  
  Remove a too strong assertion on behalf of Jimmy.
  
  
  ------------------------------------------------------------------------
  r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines
  Changed paths:
     M /branches/innodb+multibp/buf/buf0buf.c
  
  branches/innodb+multibp: When getting the oldest (minimum) LSN value from all
  the flush lists we need to acquire the flush list mutex. We were incorrectly
  acquiring the buffer pool mutex.
  
  This patch should fix a slew of bugs reported by Michael.
  
  ------------------------------------------------------------------------
  r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines
  Changed paths:
     M /branches/innodb+multibp/buf/buf0buf.c
  
  branches/innodb+multibp: We should not reset the lsn to 0 when we encounter
  an empty flush list. Oldest LSN should be 0 only when all flush lists are empty.
  e.g., without this fix if even one flush list was empty we would end up
  breaking WAL.
  
  ------------------------------------------------------------------------
  r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines
  Changed paths:
     M /branches/innodb+multibp/buf/buf0buf.c
  
  branches/innodb+multibp: When calculating the oldest_lsn we can have a
  situation where we've iterated to say buffer pool 3 and another thread
  adds two new dirty pages, the first to buffer pool 1 and the second to
  buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will
  end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this
  by acquiring the flush order mutex.
  
  One other future option is to calculate the min_lsn when flushing pages
  from the list and maintaining a running total using atomics. That way
  we can get rid of this function altogether. The atomics will only really
  be required when we do parallel flushing.
  
  ------------------------------------------------------------------------
  r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines
  Changed paths:
     M /branches/innodb+multibp/include/ut0rbt.h
     M /branches/innodb+multibp/ut/ut0rbt.c
  
  branches/innodb+multibp: Fix copyright of the rbt code.
  
  ------------------------------------------------------------------------
2010-04-19 15:44:15 +00:00
Vasil Dimov
c3c58082a8 Fix typo in comment. 2010-04-19 14:27:41 +03:00
Vasil Dimov
3e46089bda Update innodb.result which I forgot to do in the previous revision. 2010-04-19 14:10:43 +03:00
Vasil Dimov
d27387d3f1 Re-enable tests that have been fixed and update the innodb test to the
latest behavior after it has been disabled for a long time.
2010-04-19 14:07:35 +03:00
Vasil Dimov
eaadb377af Move InnoDB mysql-tests to the innodb suite. 2010-04-16 19:19:07 +03:00
Vasil Dimov
23dd437b80 Remove outdated (and now useful anymore) scripts 2010-04-15 12:36:59 +03:00
Vasil Dimov
87254df945 Update compile-innodb to use cmake and remove the debug version. 2010-04-15 12:33:07 +03:00
Vasil Dimov
be8b4ab3c3 Remove SVN-specific file. 2010-04-15 12:16:40 +03:00
Vasil Dimov
5834566ce5 Remove setup.sh which was used when InnoDB was distributed separately. 2010-04-15 12:15:35 +03:00
Vasil Dimov
fec3c263cd Remove the InnoDB ChangeLog. It does not make sense anymore, now that
InnoDB is not distributed separately. And it causes an extra maintenance
load.
2010-04-15 12:13:36 +03:00
Vasil Dimov
f3a33c601c Also send emails to innodb_dev_ww@ and fix the tree name 2010-04-14 23:05:38 +03:00
Vasil Dimov
6502888854 Replay r2875.107.114 on top of the innodb-lock mysql test
------------------------------------------------------------
  revno: 2875.107.114
  revision-id: dlenev@mysql.com-20100201114306-cve0yq5akrxjoei0
  parent: dlenev@mysql.com-20100121204303-sr6d1436mac7x6vz
  committer: Dmitry Lenev <dlenev@mysql.com>
  branch nick: mysql-next-4284-nl-push
  timestamp: Mon 2010-02-01 14:43:06 +0300
  message:
    Implement new type-of-operation-aware metadata locks.
    Add a wait-for graph based deadlock detector to the
    MDL subsystem.
    
    Fixes bug #46272 "MySQL 5.4.4, new MDL: unnecessary deadlock" and
    bug #37346 "innodb does not detect deadlock between update and
    alter table".
    
    The first bug manifested itself as an unwarranted abort of a
    transaction with ER_LOCK_DEADLOCK error by a concurrent ALTER
    statement, when this transaction tried to repeat use of a
    table, which it has already used in a similar fashion before
    ALTER started.
    
    The second bug showed up as a deadlock between table-level
    locks and InnoDB row locks, which was "detected" only after
    innodb_lock_wait_timeout timeout.
    
    A transaction would start using the table and modify a few
    rows.
    Then ALTER TABLE would come in, and start copying rows
    into a temporary table. Eventually it would stumble on
    the modified records and get blocked on a row lock.
    The first transaction would try to do more updates, and get
    blocked on thr_lock.c lock.
    This situation of circular wait would only get resolved
    by a timeout.
    
    Both these bugs stemmed from inadequate solutions to the
    problem of deadlocks occurring between different
    locking subsystems.
    
    In the first case we tried to avoid deadlocks between metadata
    locking and table-level locking subsystems, when upgrading shared
    metadata lock to exclusive one.
    Transactions holding the shared lock on the table and waiting for
    some table-level lock used to be aborted too aggressively.
    
    We also allowed ALTER TABLE to start in presence of transactions
    that modify the subject table. ALTER TABLE acquires
    TL_WRITE_ALLOW_READ lock at start, and that block all writes
    against the table (naturally, we don't want any writes to be lost
    when switching the old and the new table). TL_WRITE_ALLOW_READ
    lock, in turn, would block the started transaction on thr_lock.c
    lock, should they do more updates. This, again, lead to the need
    to abort such transactions.
    
    The second bug occurred simply because we didn't have any
    mechanism to detect deadlocks between the table-level locks
    in thr_lock.c and row-level locks in InnoDB, other than
    innodb_lock_wait_timeout.
    
    This patch solves both these problems by moving lock conflicts
    which are causing these deadlocks into the metadata locking
    subsystem, thus making it possible to avoid or detect such
    deadlocks inside MDL.
    
    To do this we introduce new type-of-operation-aware metadata
    locks, which allow MDL subsystem to know not only the fact that
    transaction has used or is going to use some object but also what
    kind of operation it has carried out or going to carry out on the
    object.
    
    This, along with the addition of a special kind of upgradable
    metadata lock, allows ALTER TABLE to wait until all
    transactions which has updated the table to go away.
    This solves the second issue.
    Another special type of upgradable metadata lock is acquired
    by LOCK TABLE WRITE. This second lock type allows to solve the
    first issue, since abortion of table-level locks in event of
    DDL under LOCK TABLES becomes also unnecessary.
    
    Below follows the list of incompatible changes introduced by
    this patch:
    
    - From now on, ALTER TABLE and CREATE/DROP TRIGGER SQL (i.e. those
      statements that acquire TL_WRITE_ALLOW_READ lock)
      wait for all transactions which has *updated* the table to
      complete.
    
    - From now on, LOCK TABLES ... WRITE, REPAIR/OPTIMIZE TABLE
      (i.e. all statements which acquire TL_WRITE table-level lock) wait
      for all transaction which *updated or read* from the table
      to complete.
      As a consequence, innodb_table_locks=0 option no longer applies
      to LOCK TABLES ... WRITE.
    
    - DROP DATABASE, DROP TABLE, RENAME TABLE no longer abort
      statements or transactions which use tables being dropped or
      renamed, and instead wait for these transactions to complete.
    
    - Since LOCK TABLES WRITE now takes a special metadata lock,
      not compatible with with reads or writes against the subject table
      and transaction-wide, thr_lock.c deadlock avoidance algorithm
      that used to ensure absence of deadlocks between LOCK TABLES
      WRITE and other statements is no longer sufficient, even for
      MyISAM. The wait-for graph based deadlock detector of MDL
      subsystem may sometimes be necessary and is involved. This may
      lead to ER_LOCK_DEADLOCK error produced for multi-statement
      transactions even if these only use MyISAM:
    
      session 1:         session 2:
      begin;
    
      update t1 ...      lock table t2 write, t1 write;
                         -- gets a lock on t2, blocks on t1
    
      update t2 ...
      (ER_LOCK_DEADLOCK)
    
    - Finally,  support of LOW_PRIORITY option for LOCK TABLES ... WRITE
      was abandoned.
      LOCK TABLE ... LOW_PRIORITY WRITE from now on has the same
      priority as the usual LOCK TABLE ... WRITE.
      SELECT HIGH PRIORITY no longer trumps LOCK TABLE ... WRITE  in
      the wait queue.
    
    - We do not take upgradable metadata locks on implicitly
      locked tables. So if one has, say, a view v1 that uses
      table t1, and issues:
      LOCK TABLE v1 WRITE;
      FLUSH TABLE t1; -- (or just 'FLUSH TABLES'),
      an error is produced.
      In order to be able to perform DDL on a table under LOCK TABLES,
      the table must be locked explicitly in the LOCK TABLES list.
  
   @ mysql-test/include/handler.inc
      Adjusted test case to trigger an execution path on which bug 41110
      "crash with handler command when used concurrently with alter
      table" and bug 41112 "crash in mysql_ha_close_table/get_lock_data
      with alter table" were originally discovered. Left old test case
      which no longer triggers this execution path for the sake of
      coverage.
      Added test coverage for HANDLER SQL statements and type-aware
      metadata locks.
      Added a test for the global shared lock and HANDLER SQL.
      Updated tests to take into account that the old simple deadlock
      detection heuristics was replaced with a graph-based deadlock
      detector.
  
   @ mysql-test/r/debug_sync.result
      Updated results (see debug_sync.test).
  
   @ mysql-test/r/handler_innodb.result
      Updated results (see handler.inc test).
  
   @ mysql-test/r/handler_myisam.result
      Updated results (see handler.inc test).
  
   @ mysql-test/r/innodb-lock.result
      Updated results (see innodb-lock.test).
  
   @ mysql-test/r/innodb_mysql_lock.result
      Updated results (see innodb_mysql_lock.test).
  
   @ mysql-test/r/lock.result
      Updated results (see lock.test).
  
   @ mysql-test/r/lock_multi.result
      Updated results (see lock_multi.test).
  
   @ mysql-test/r/lock_sync.result
      Updated results (see lock_sync.test).
  
   @ mysql-test/r/mdl_sync.result
      Updated results (see mdl_sync.test).
  
   @ mysql-test/r/sp-threads.result
      SHOW PROCESSLIST output has changed due to the fact that waiting
      for LOCK TABLES WRITE now happens within metadata locking
      subsystem.
  
   @ mysql-test/r/truncate_coverage.result
      Updated results (see truncate_coverage.test).
  
   @ mysql-test/suite/funcs_1/datadict/processlist_val.inc
      SELECT FROM I_S.PROCESSLIST output has changed due to fact that
      waiting for LOCK TABLES WRITE now happens within metadata locking
      subsystem.
  
   @ mysql-test/suite/funcs_1/r/processlist_val_no_prot.result
      SELECT FROM I_S.PROCESSLIST output has changed due to fact that
      waiting for LOCK TABLES WRITE now happens within metadata locking
      subsystem.
  
   @ mysql-test/suite/rpl/t/rpl_sp.test
      Updated to a new SHOW PROCESSLIST state name.
  
   @ mysql-test/t/debug_sync.test
      Use LOCK TABLES READ instead of LOCK TABLES WRITE as the latter
      no longer allows to trigger execution path involving waiting on
      thr_lock.c lock and therefore reaching debug sync-point covered
      by this test.
  
   @ mysql-test/t/innodb-lock.test
      Adjusted test case to the fact that innodb_table_locks=0 option is
      no longer supported, since LOCK TABLES WRITE handles all its
      conflicts within MDL subsystem.
  
   @ mysql-test/t/innodb_mysql_lock.test
      Added test for bug #37346 "innodb does not detect deadlock between
      update and alter table".
  
   @ mysql-test/t/lock.test
      Added test coverage which checks the fact that we no longer support
      DDL under LOCK TABLES on tables which were locked implicitly.
      Adjusted existing test cases accordingly.
  
   @ mysql-test/t/lock_multi.test
      Added test for bug #46272 "MySQL 5.4.4, new MDL: unnecessary
      deadlock".  Adjusted other test cases to take into account the
      fact that waiting for LOCK TABLES ... WRITE now happens within MDL
      subsystem.
  
   @ mysql-test/t/lock_sync.test
      Since LOCK TABLES ... WRITE now takes SNRW metadata lock for
      tables locked explicitly we have to implicitly lock InnoDB tables
      (through view) to trigger the table-level lock conflict between
      TL_WRITE and TL_WRITE_ALLOW_WRITE.
  
   @ mysql-test/t/mdl_sync.test
      Added basic test coverage for type-of-operation-aware metadata
      locks. Also covered with tests some use cases involving HANDLER
      statements in which a deadlock could arise.
      Adjusted existing tests to take type-of-operation-aware MDL into
      account.
  
   @ mysql-test/t/multi_update.test
      Update to a new SHOW PROCESSLIST state name.
  
   @ mysql-test/t/truncate_coverage.test
      Adjusted test case after making LOCK TABLES WRITE to wait until
      transactions that use the table to be locked are completed.
      Updated to the changed name of DEBUG_SYNC point.
  
   @ sql/handler.cc
      Global read lock functionality has been
      moved into a class.
  
   @ sql/lock.cc
      Global read lock functionality has been
      moved into a class.
      Updated code to use the new MDL API.
  
   @ sql/mdl.cc
      Introduced new type-of-operation aware metadata locks.
      To do this:
      - Changed MDL_lock to use one list for waiting requests and one
        list for granted requests. For each list, added a bitmap
        that holds information what lock types a list contains.
        Added a helper class MDL_lock::List to manipulate with granted
        and waited lists while keeping the bitmaps in sync
        with list contents.
      - Changed lock-compatibility functions to use bitmaps that
        define compatibility.
      - Introduced a graph based deadlock detector inspired by
        waiting_threads.c from Maria implementation.
      - Now that we have a deadlock detector, and no longer have
        a global lock to protect individual lock objects, but rather
        use an rw lock per object, removed redundant code for upgrade,
        and the global read lock. Changed the MDL API to
        no longer require the caller to acquire the global
        intention exclusive lock by means of a separate method.
        Removed a few more methods that became redundant.
      - Removed deadlock detection heuristic, it has been made
        obsolete by the deadlock detector.
      - With operation-type-aware metadata locks, MDL subsystem has
        become aware of potential conflicts between DDL and open
        transactions. This made it possible to remove calls to
        mysql_abort_transactions_with_shared_lock() from acquisition
        paths for exclusive lock and lock upgrade. Now we can simply
        wait for these transactions to complete without fear of
        deadlock. Function mysql_lock_abort() has also become
        unnecessary for all conflicting cases except when a DDL
        conflicts with a connection that has an open HANDLER.
  
   @ sql/mdl.h
      Introduced new type-of-operation aware metadata locks.
      Introduced a graph based deadlock detector and supporting
      methods.
      Added comments.
      God rid of redundant API calls.
      Renamed m_lt_or_ha_sentinel to m_trans_sentinel,
      since now it guards the global read lock as well as
      LOCK TABLES and HANDLER locks.
  
   @ sql/mysql_priv.h
      Moved the global read lock functionality into a
      class.
      Added MYSQL_OPEN_FORCE_SHARED_MDL flag which forces
      open_tables() to take MDL_SHARED on tables instead of
      metadata locks specified in the parser. We use this to
      allow PREPARE run concurrently in presence of
      LOCK TABLES ... WRITE.
      Added signature for find_table_for_mdl_ugprade().
  
   @ sql/set_var.cc
      Global read lock functionality has been
      moved into a class.
  
   @ sql/sp_head.cc
      When creating TABLE_LIST elements for prelocking or
      system tables set the type of request for metadata
      lock according to the operation that will be performed
      on the table.
  
   @ sql/sql_base.cc
      - Updated code to use the new MDL API.
      - In order to avoid locks starvation we take upgradable
        locks all at once. As result implicitly locked tables no
        longer get an upgradable lock. Consequently DDL and FLUSH
        TABLES for such tables is prohibited.
        find_write_locked_table() was replaced by
        find_table_for_mdl_upgrade() function.
        open_table() was adjusted to return TABLE instance with
        upgradable ticket when necessary.
      - We no longer wait for all locks on OT_WAIT back off
        action -- only on the lock that caused the wait
        conflict. Moreover, now we distinguish cases when we
        have to wait due to conflict in MDL and old version
        of table in TDC.
      - Upate mysql_notify_threads_having_share_locks()
        to only abort thr_lock.c waits of threads that
        have open HANDLERs, since lock conflicts with only
        these threads now can lead to deadlocks not detectable
        by the MDL deadlock detector.
      - Remove mysql_abort_transactions_with_shared_locks()
        which is no longer needed.
  
   @ sql/sql_class.cc
      Global read lock functionality has been moved into a class.
      Re-arranged code in THD::cleanup() to simplify assert.
  
   @ sql/sql_class.h
      Introduced class to incapsulate global read lock
      functionality.
      Now sentinel in MDL subsystem guards the global read lock
      as well as LOCK TABLES and HANDLER locks. Adjusted code
      accordingly.
  
   @ sql/sql_db.cc
      Global read lock functionality has been moved into a class.
  
   @ sql/sql_delete.cc
      We no longer acquire upgradable metadata locks on tables
      which are locked by LOCK TABLES implicitly. As result
      TRUNCATE TABLE is no longer allowed for such tables.
      Updated code to use the new MDL API.
  
   @ sql/sql_handler.cc
      Inform MDL_context about presence of open HANDLERs.
      Since HANLDERs break MDL protocol by acquiring table-level
      lock while holding only S metadata lock on a table MDL
      subsystem should take special care about such contexts (Now
      this is the only case when mysql_lock_abort() is used).
  
   @ sql/sql_parse.cc
      Global read lock functionality has been moved into a class.
      Do not take upgradable metadata locks when opening tables
      for CREATE TABLE SELECT as it is not necessary and limits
      concurrency.
      When initializing TABLE_LIST objects before adding them
      to the table list set the type of request for metadata lock
      according to the operation that will be performed on the
      table.
      We no longer acquire upgradable metadata locks on tables
      which are locked by LOCK TABLES implicitly. As result FLUSH
      TABLES is no longer allowed for such tables.
  
   @ sql/sql_prepare.cc
      Use MYSQL_OPEN_FORCE_SHARED_MDL flag when opening
      tables during PREPARE. This allows PREPARE to run
      concurrently in presence of LOCK TABLES ... WRITE.
  
   @ sql/sql_rename.cc
      Global read lock functionality has been moved into a class.
  
   @ sql/sql_show.cc
      Updated code to use the new MDL API.
  
   @ sql/sql_table.cc
      Global read lock functionality has been moved into a class.
      We no longer acquire upgradable metadata locks on tables
      which are locked by LOCK TABLES implicitly. As result DROP
      TABLE is no longer allowed for such tables.
      Updated code to use the new MDL API.
  
   @ sql/sql_trigger.cc
      Global read lock functionality has been moved into a class.
      We no longer acquire upgradable metadata locks on tables
      which are locked by LOCK TABLES implicitly. As result
      CREATE/DROP TRIGGER is no longer allowed for such tables.
      Updated code to use the new MDL API.
  
   @ sql/sql_view.cc
      Global read lock functionality has been moved into a class.
      Fixed results of wrong merge that led to misuse of GLR API.
      CREATE VIEW statement is not a commit statement.
  
   @ sql/table.cc
      When resetting TABLE_LIST objects for PS or SP re-execution
      set the type of request for metadata lock according to the
      operation that will be performed on the table. Do the same
      in auxiliary function initializing metadata lock requests
      in a table list.
  
   @ sql/table.h
      When initializing TABLE_LIST objects set the type of request
      for metadata lock according to the operation that will be
      performed on the table.
  
   @ sql/transaction.cc
      Global read lock functionality has been moved into a class.
2010-04-14 22:20:46 +03:00
Vasil Dimov
4a583ca95c Disable parts of the innodb-index test that are not prepared for the
metadata locks that were added at the MySQL level as part of the fix for
Bug#45225 Locking: hang if drop table with no timeout
2010-04-14 21:17:50 +03:00
Vasil Dimov
b2576b9e73 Remove "loose" prefix from options from InnoDB mysql-tests. It was
inherited from the InnoDB Plugin and is not required anymore.
2010-04-14 18:59:34 +03:00
Vasil Dimov
d72f449abd Update mysql-test innodb_file_format to match the latest behavior
(different error number).
2010-04-14 18:42:17 +03:00