Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-24746

Atomic CREATE TRIGGER

    XMLWordPrintable

Details

    Description

      The purpose of this task is to ensure that CREATE TRIGGER is atomic

      When a trigger is created, we first create a trigger_name.TRN file and then
      create or update the table_name.TRG files.
      This is done by creating .TRN~ and .TRG~ files and replacing (or creating)
      the result files.

      The new logic is

      • Log CREATE TRIGGER to DDL log, with a marker if old trigger existsted
      • If old .TRN or .TRG files exists, make backup copies of these
      • Create the new .TRN and .TRG files as before
      • Remove the backups

      Crash recovery

      • If query has been logged to binary log:
      • delete any left over backup files
      • else
      • Delete any old .TRN~ or .TRG~ files
      • If there was orignally some triggers (old .TRG file existed)
      • If we crashed before creating all backup files
      • Delete existing backup files
      • else
      • Restore backup files
      • end
      • Delete .TRN and .TRG file (as there was no triggers before

      One benefit of the new code is that CREATE OR REPLACE TRIGGER is now
      totally atomic even if there existed an old trigger: Either the old
      trigger will be replaced or the old one will be left untouched.

      Attachments

        Issue Links

          Activity

            People

              monty Michael Widenius
              monty Michael Widenius
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.