• anozdrin/alik@station.'s avatar
    Patch for BUG#31111: --read-only crashes MySQL (events fail to load). · c60397ef
    anozdrin/alik@station. authored
    There actually were several problems here:
      - WRITE-lock is required to load events from the mysql.event table,
        but in the read-only mode an ordinary user can not acquire it;
      - Security_context::master_access attribute was not properly
        initialized in Security_context::init(), which led to differences
        in behavior with and without debug configure options.
      - if the server failed to load events from mysql.event, it forgot to
        close the mysql.event table, that led to the coredump, described
        in the bug report.
    
    The patch is to fix all these problems:
      - Use the super-user to acquire WRITE-lock on the mysql.even table;
      - The WRITE-lock is acquired by the event scheduler in two cases:
        - on initial loading of events from the database;
        - when an event has been executed, so its attributes should
          be updated.
        Other cases when WRITE-lock is needed for the mysql.event table
        happen under the user account. So, nothing should be changed there
        for the read-only mode. The user is able to create/update/drop
        an event only if he is a super-user.
      - Initialize Security_context::master_access;
      - Close the mysql.event table in case something went wrong.
    c60397ef
sql_class.cc 93.5 KB