• unknown's avatar
    Fix for bug #35732: read-only blocks SELECT statements in InnoDB · 41e97eb3
    unknown authored
    Problem: SELECTs prohibited for a transactional SE in autocommit mode
    if read_only is set.
    
    Fix: allow them.
    
    
    mysql-test/r/read_only_innodb.result:
      Fix for bug #35732: read-only blocks SELECT statements in InnoDB
        - test result.
    mysql-test/t/read_only_innodb.test:
      Fix for bug #35732: read-only blocks SELECT statements in InnoDB
        - test case.
    sql/handler.cc:
      Fix for bug #35732: read-only blocks SELECT statements in InnoDB
        - in autocommit mode thd->transaction.all list is empty thus 
          is_real_trans set to TRUE for any SELECTs, so using it in the
          "read_only" check is insufficient.
          ha_check_and_coalesce_trx_read_only() changed to return number
          of engines with read-write changes. This value is used in the
          "read-only" check and checks for GLOBAL READ LOCK.
    sql/lock.cc:
      Fix for bug #35732: read-only blocks SELECT statements in InnoDB
        - added assert(protect_against_global_read_lock) before decreasing,
          in order to catch (uint) 0 - 1 situation due to wrong 
          wait_if_global_read_lock()/start_waiting_global_read_lock() call
          sequence.
    41e97eb3
lock.cc 48.2 KB