An error occurred fetching the project authors.
  1. 30 Apr, 2010 5 commits
  2. 27 Apr, 2010 2 commits
    • Sunny Bains's avatar
      Fix bug introduced by r3038. When a transaction is rolled back by the · 248dd65f
      Sunny Bains authored
      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.
      248dd65f
    • Inaam Rana's avatar
      buf_flush_list() should return failure if one of the buffer pool · e2a3bb5a
      Inaam Rana authored
      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.
      e2a3bb5a
  3. 23 Apr, 2010 3 commits
  4. 22 Apr, 2010 10 commits
    • jyang's avatar
      Merge from mysql-trunk-innodb to local repository · 83f422fe
      jyang authored
      83f422fe
    • jyang's avatar
      Register newly added purge thread to performance schema tracking. · 477b7115
      jyang authored
      rb://289, approved by Marko
      477b7115
    • Vasil Dimov's avatar
      Merge r3403..3414 from mysql-5.1-innodb: · 66b4a1e6
      Vasil Dimov authored
        ------------------------------------------------------------
        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
      66b4a1e6
    • Vasil Dimov's avatar
      Merge c3400 from mysql-5.1-innodb: · d7ffd1a0
      Vasil Dimov authored
        ------------------------------------------------------------
        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
      d7ffd1a0
    • Vasil Dimov's avatar
      Merge from innodb-branches-innodb+ · a8afa783
      Vasil Dimov authored
      a8afa783
    • Vasil Dimov's avatar
      Merge branches/innodb+ from SVN · d655e2ae
      Vasil Dimov authored
      d655e2ae
    • mmakela's avatar
      branches/innodb+: Merge revisions 6949:6970 from branches/zip, · 80f27ff3
      mmakela authored
      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
        ------------------------------------------------------------------------
      80f27ff3
    • Vasil Dimov's avatar
      Merge from innodb-branches-innodb+ · f875041f
      Vasil Dimov authored
      f875041f
    • Vasil Dimov's avatar
      Merge branches/innodb+ from SVN. · 4b0bd332
      Vasil Dimov authored
      4b0bd332
    • sbains's avatar
      branches/innodb+: Add a check for thread suspended time to the list of checks · bd77a36e
      sbains authored
      for slot recycle. Udpate the comments.
      bd77a36e
  5. 21 Apr, 2010 2 commits
  6. 20 Apr, 2010 1 commit
  7. 19 Apr, 2010 7 commits
    • Vasil Dimov's avatar
      Merge from innodb-branches-innodb+ (2) · c7525a01
      Vasil Dimov authored
      c7525a01
    • Vasil Dimov's avatar
      Merge from SVN · ed30b504
      Vasil Dimov authored
      ed30b504
    • Vasil Dimov's avatar
      Refactor the innodb_bug38231 mysql-test to conform with the · 49dc3a7b
      Vasil Dimov authored
      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.
      49dc3a7b
    • irana's avatar
      branches/innodb+ · 7f741204
      irana authored
      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.
        
        ------------------------------------------------------------------------
      7f741204
    • Vasil Dimov's avatar
      Fix typo in comment. · c3c58082
      Vasil Dimov authored
      c3c58082
    • Vasil Dimov's avatar
    • Vasil Dimov's avatar
      Re-enable tests that have been fixed and update the innodb test to the · d27387d3
      Vasil Dimov authored
      latest behavior after it has been disabled for a long time.
      d27387d3
  8. 16 Apr, 2010 1 commit
  9. 15 Apr, 2010 5 commits
  10. 14 Apr, 2010 4 commits
    • Vasil Dimov's avatar
      f3a33c60
    • Vasil Dimov's avatar
      Replay r2875.107.114 on top of the innodb-lock mysql test · 65028888
      Vasil Dimov authored
        ------------------------------------------------------------
        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.
      65028888
    • Vasil Dimov's avatar
      Disable parts of the innodb-index test that are not prepared for the · 4a583ca9
      Vasil Dimov authored
      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
      4a583ca9
    • Vasil Dimov's avatar
      Remove "loose" prefix from options from InnoDB mysql-tests. It was · b2576b9e
      Vasil Dimov authored
      inherited from the InnoDB Plugin and is not required anymore.
      b2576b9e