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

Secondary node executes duplicate transactions when an event is triggered on a MyISAM or ARIA table with multiple triggers on primary node

    XMLWordPrintable

Details

    Description

      Secondary node executes duplicate transactions when an event is triggered on a MyISAM or ARIA table with multiple triggers on primary node
      Following test case inserts 3 records instead of 2 records in the secondary node
      Test case

      --source include/galera_cluster.inc
      --source include/have_aria.inc
       
      --connection node_1
       
      SET GLOBAL wsrep_mode=REPLICATE_ARIA;
       
      CREATE TABLE t1 (a INT) ENGINE=ARIA ;
      CREATE TABLE t2 (a INT) ENGINE=ARIA ;
       
      CREATE TRIGGER t1_insert1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (100);
      CREATE TRIGGER t1_insert2 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (100);
       
      INSERT INTO t1 VALUES (1);
      SELECT * FROM t2;
       
      --connection node_2
       
      SELECT * FROM t2;
      

      Result log

      SELECT * FROM t2;
      a
      100
      100
      connection node_2;
      SELECT * FROM t2;
      a
      100
      100
      100
      

      Expected log

      SELECT * FROM t2;
      a
      100
      100
      connection node_2;
      SELECT * FROM t2;
      a
      100
      100
      

      Error log from node2

      2025-04-16 13:33:53 6 [Note] WSREP: Wsrep_high_priority_service::apply_toi: 4
      2025-04-16 13:33:53 6 [Note] WSREP: assigned new next query and  trx id: 11
      2025-04-16 13:33:53 6 [Note] WSREP: Query_log_event thread=6 for query=CREATE TABLE t1 (a INT) ENGINE=ARIA
      2025-04-16 13:33:53 6 [Note] WSREP: Apply TO END: 4: CREATE TABLE t1 (a INT) ENGINE=ARIA
      2025-04-16 13:33:53 6 [Note] WSREP: Set WSREPXid for InnoDB:  40e5979c-1aae-11f0-9f8a-77ed6624b2b2:4 0-101-2
      2025-04-16 13:33:53 2 [Note] WSREP: Wsrep_high_priority_service::apply_toi: 5
      2025-04-16 13:33:53 2 [Note] WSREP: assigned new next query and  trx id: 12
      2025-04-16 13:33:53 2 [Note] WSREP: Query_log_event thread=2 for query=CREATE TABLE t2 (a INT) ENGINE=ARIA
      2025-04-16 13:33:53 2 [Note] WSREP: Apply TO END: 5: CREATE TABLE t2 (a INT) ENGINE=ARIA
      2025-04-16 13:33:53 2 [Note] WSREP: Set WSREPXid for InnoDB:  40e5979c-1aae-11f0-9f8a-77ed6624b2b2:5 0-101-3
      2025-04-16 13:33:53 6 [Note] WSREP: Wsrep_high_priority_service::apply_toi: 6
      2025-04-16 13:33:53 6 [Note] WSREP: assigned new next query and  trx id: 13
      2025-04-16 13:33:53 6 [Note] WSREP: Query_log_event thread=6 for query=CREATE DEFINER=`root`@`localhost` TRIGGER t1_insert1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (100)
      2025-04-16 13:33:53 6 [Note] WSREP: Apply TOI Begin: CREATE DEFINER=`root`@`localhost` TRIGGER t1_insert1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (100)
      2025-04-16 13:33:53 6 [Note] WSREP: Apply TO END: 6: CREATE DEFINER=`root`@`localhost` TRIGGER t1_insert1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (100)
      2025-04-16 13:33:53 6 [Note] WSREP: Set WSREPXid for InnoDB:  40e5979c-1aae-11f0-9f8a-77ed6624b2b2:6 0-101-4
      2025-04-16 13:33:53 2 [Note] WSREP: Wsrep_high_priority_service::apply_toi: 7
      2025-04-16 13:33:53 2 [Note] WSREP: assigned new next query and  trx id: 14
      2025-04-16 13:33:53 2 [Note] WSREP: Query_log_event thread=2 for query=CREATE DEFINER=`root`@`localhost` TRIGGER t1_insert2 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (100)
      2025-04-16 13:33:53 2 [Note] WSREP: Apply TOI Begin: CREATE DEFINER=`root`@`localhost` TRIGGER t1_insert2 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (100)
      2025-04-16 13:33:53 2 [Note] WSREP: Apply TO END: 7: CREATE DEFINER=`root`@`localhost` TRIGGER t1_insert2 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (100)
      2025-04-16 13:33:53 2 [Note] WSREP: Set WSREPXid for InnoDB:  40e5979c-1aae-11f0-9f8a-77ed6624b2b2:7 0-101-5
      2025-04-16 13:33:53 6 [Note] WSREP: Wsrep_high_priority_service::apply_toi: 8
      2025-04-16 13:33:53 6 [Note] WSREP: assigned new next query and  trx id: 15
      2025-04-16 13:33:53 6 [Note] WSREP: Query_log_event thread=6 for query=INSERT INTO t1 VALUES (1)
      2025-04-16 13:33:53 6 [Note] WSREP: assigned new next trx id: 16
      2025-04-16 13:33:53 6 [Note] WSREP: Apply TO END: 8: INSERT INTO t2 VALUES (100)
      2025-04-16 13:33:53 6 [Note] WSREP: assigned new next trx id: 15
      2025-04-16 13:33:53 6 [Note] WSREP: assigned new next trx id: 17
      2025-04-16 13:33:53 6 [Note] WSREP: Apply TO END: 8: INSERT INTO t2 VALUES (100)
      2025-04-16 13:33:53 6 [Note] WSREP: assigned new next trx id: 15
      2025-04-16 13:33:53 6 [Note] WSREP: Apply TO END: 8: INSERT INTO t1 VALUES (1)
      2025-04-16 13:33:53 6 [Note] WSREP: Set WSREPXid for InnoDB:  40e5979c-1aae-11f0-9f8a-77ed6624b2b2:8 0-101-6
      2025-04-16 13:33:53 2 [Note] WSREP: Wsrep_high_priority_service::apply_toi: 9
      2025-04-16 13:33:53 2 [Note] WSREP: assigned new next query and  trx id: 18
      2025-04-16 13:33:53 2 [Note] WSREP: Query_log_event thread=2 for query=INSERT INTO t2 VALUES (100)
      2025-04-16 13:33:53 2 [Note] WSREP: Apply TO END: 9: INSERT INTO t2 VALUES (100)
      2025-04-16 13:33:53 2 [Note] WSREP: Set WSREPXid for InnoDB:  40e5979c-1aae-11f0-9f8a-77ed6624b2b2:9 0-101-7
      

      Also when using the NEW clause in a trigger, the second trigger execution prints an unknown column error Slave SQL: Error 'Unknown column 'NEW.a' in 'VALUES'' on query in the secondary node error log.
      Test case

      --source include/galera_cluster.inc
      --source include/have_aria.inc
       
      --connection node_1
       
      SET GLOBAL wsrep_mode=REPLICATE_ARIA;
       
      CREATE TABLE t1 (a INT) ENGINE=ARIA ;
      CREATE TABLE t2 (a INT) ENGINE=ARIA ;
       
      CREATE TRIGGER t1_insert1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NEW.a);
      CREATE TRIGGER t1_insert2 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NEW.a);
       
      INSERT INTO t1 VALUES (1);
      SELECT * FROM t2;
       
      Result set from node1
      ---------------------
      node1:root@localhost> SELECT * FROM t2;
      +------+
      | a    |
      +------+
      |    1 |
      |    1 |
      +------+
      2 rows in set (0.001 sec)
       
      node1:root@localhost> 
       
      Result set from node2
      ----------------------
      node2:root@localhost> SELECT * FROM t2;
      +------+
      | a    |
      +------+
      |    1 |
      |    1 |
      +------+
      2 rows in set (0.001 sec)
       
      node2:root@localhost> 
      

      Error info

      Error log info
      2025-04-16 12:41:23 2 [Note] WSREP: Wsrep_high_priority_service::apply_toi: 11
      2025-04-16 12:41:23 2 [Note] WSREP: assigned new next query and  trx id: 20
      2025-04-16 12:41:23 2 [Note] WSREP: Query_log_event thread=2 for query=CREATE TABLE t1 (a INT) ENGINE=ARIA
      2025-04-16 12:41:23 2 [Note] WSREP: Apply TO END: 11: CREATE TABLE t1 (a INT) ENGINE=ARIA
      2025-04-16 12:41:23 2 [Note] WSREP: Set WSREPXid for InnoDB:  c9c4c94e-1aa6-11f0-8f00-2e468a8d478f:11 0-101-9
      2025-04-16 12:41:23 6 [Note] WSREP: Wsrep_high_priority_service::apply_toi: 12
      2025-04-16 12:41:23 6 [Note] WSREP: assigned new next query and  trx id: 21
      2025-04-16 12:41:23 6 [Note] WSREP: Query_log_event thread=6 for query=CREATE TABLE t2 (a INT) ENGINE=ARIA
      2025-04-16 12:41:23 6 [Note] WSREP: Apply TO END: 12: CREATE TABLE t2 (a INT) ENGINE=ARIA
      2025-04-16 12:41:23 6 [Note] WSREP: Set WSREPXid for InnoDB:  c9c4c94e-1aa6-11f0-8f00-2e468a8d478f:12 0-101-10
      2025-04-16 12:41:23 2 [Note] WSREP: Wsrep_high_priority_service::apply_toi: 13
      2025-04-16 12:41:23 2 [Note] WSREP: assigned new next query and  trx id: 22
      2025-04-16 12:41:23 2 [Note] WSREP: Query_log_event thread=2 for query=CREATE DEFINER=`root`@`localhost` TRIGGER t1_insert1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NEW.a)
      2025-04-16 12:41:23 2 [Note] WSREP: Apply TOI Begin: CREATE DEFINER=`root`@`localhost` TRIGGER t1_insert1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NEW.a)
      2025-04-16 12:41:23 2 [Note] WSREP: Apply TO END: 13: CREATE DEFINER=`root`@`localhost` TRIGGER t1_insert1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NEW.a)
      2025-04-16 12:41:23 2 [Note] WSREP: Set WSREPXid for InnoDB:  c9c4c94e-1aa6-11f0-8f00-2e468a8d478f:13 0-101-11
      2025-04-16 12:41:23 6 [Note] WSREP: Wsrep_high_priority_service::apply_toi: 14
      2025-04-16 12:41:23 6 [Note] WSREP: assigned new next query and  trx id: 23
      2025-04-16 12:41:23 6 [Note] WSREP: Query_log_event thread=6 for query=CREATE DEFINER=`root`@`localhost` TRIGGER t1_insert2 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NEW.a)
      2025-04-16 12:41:23 6 [Note] WSREP: Apply TOI Begin: CREATE DEFINER=`root`@`localhost` TRIGGER t1_insert2 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NEW.a)
      2025-04-16 12:41:23 6 [Note] WSREP: Apply TO END: 14: CREATE DEFINER=`root`@`localhost` TRIGGER t1_insert2 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NEW.a)
      2025-04-16 12:41:23 6 [Note] WSREP: Set WSREPXid for InnoDB:  c9c4c94e-1aa6-11f0-8f00-2e468a8d478f:14 0-101-12
      2025-04-16 12:41:23 2 [Note] WSREP: Wsrep_high_priority_service::apply_toi: 15
      2025-04-16 12:41:23 2 [Note] WSREP: assigned new next query and  trx id: 24
      2025-04-16 12:41:23 2 [Note] WSREP: Query_log_event thread=2 for query=INSERT INTO t1 VALUES (1)
      2025-04-16 12:41:23 2 [Note] WSREP: assigned new next trx id: 25
      2025-04-16 12:41:23 2 [Note] WSREP: Apply TO END: 15: INSERT INTO t2 VALUES (NEW.a)
      2025-04-16 12:41:23 2 [Note] WSREP: assigned new next trx id: 24
      2025-04-16 12:41:23 2 [Note] WSREP: assigned new next trx id: 26
      2025-04-16 12:41:23 2 [Note] WSREP: Apply TO END: 15: INSERT INTO t2 VALUES (NEW.a)
      2025-04-16 12:41:23 2 [Note] WSREP: assigned new next trx id: 24
      2025-04-16 12:41:23 2 [Note] WSREP: Apply TO END: 15: INSERT INTO t1 VALUES (1)
      2025-04-16 12:41:23 2 [Note] WSREP: Set WSREPXid for InnoDB:  c9c4c94e-1aa6-11f0-8f00-2e468a8d478f:15 0-101-13
      2025-04-16 12:41:23 6 [Note] WSREP: Wsrep_high_priority_service::apply_toi: 16
      2025-04-16 12:41:23 6 [Note] WSREP: assigned new next query and  trx id: 27
      2025-04-16 12:41:23 6 [Note] WSREP: Query_log_event thread=6 for query=INSERT INTO t2 VALUES (NEW.a)
      2025-04-16 12:41:23 6 [Note] WSREP: ha_rollback_trans(6, FALSE) rolled back: msg Unknown column 'NEW.a' in 'VALUES' is_real 1 wsrep_err success
      2025-04-16 12:41:23 6 [Note] WSREP: Apply TO END: 16: INSERT INTO t2 VALUES (NEW.a)
      2025-04-16 12:41:23 6 [ERROR] Slave SQL: Error 'Unknown column 'NEW.a' in 'VALUES'' on query. Default database: 'test'. Query: 'INSERT INTO t2 VALUES (NEW.a)', Internal MariaDB error code: 1054
      2025-04-16 12:41:23 6 [Warning] WSREP: Ignoring error 'Unknown column 'NEW.a' in 'VALUES'' on query. Default database: 'test'. Query: 'INSERT INTO t2 VALUES (NEW.a)', Error_code: 1054
      2025-04-16 12:41:23 6 [Note] WSREP: Set WSREPXid for InnoDB:  c9c4c94e-1aa6-11f0-8f00-2e468a8d478f:16 0-101-14
      

      Attachments

        Activity

          People

            janlindstrom Jan Lindström
            ramesh Ramesh Sivaraman
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Git Integration

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