I modified the above test scenario to make it simpler and modified the
DDL, procedure, and pt-online-schema-change script to specifically check
whether the trigger really working during the pt-osc process operates.

1-1. Table DDL Script
CREATE TABLE `test1` (
  `seq` bigint unsigned not null AUTO_INCREMENT,
  `MSHP_ID` varchar(16) NOT NULL ,
  `STR_CD` varchar(7) NOT NULL ,
  `REST_PNT` decimal(15,3) DEFAULT NULL,
  `REG_DTM` varchar(25) DEFAULT NULL ,
  `source` varchar(30) DEFAULT NULL ,
  PRIMARY KEY (`seq`,`MSHP_ID`,`STR_CD`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;


By adding the 'source' column to the table,
'PROCEDURE' is inserted when a procedure is introduced,
and 'TRIGGER' is inserted when the trigger of pt-osc is activated.


1-2. Procedure DDL Script
DELIMITER $$
CREATE or replace DEFINER=`admin`@`%` PROCEDURE `bjh`.`ptosctest`(IN num INT)
BEGIN
        DECLARE i INT DEFAULT 0;
        DECLARE LAST_MSHP_ID INT DEFAULT 0;
        
        SELECT
  count(1)
        INTO LAST_MSHP_ID
  FROM bjh.test1 mmm 
        WHERE mmm.STR_CD = '012002'
    AND mshp_id LIKE '%test84';
        
        WHILE i < num 
        DO
        INSERT INTO bjh.test1 
        (
        MSHP_ID,
        STR_CD,
        reg_dtm,
        source
        )
        values(
        CONCAT(LAST_MSHP_ID, 'test84')
        ,'012002'
        ,now()
        ,'PROCEDURE'
        );
        SET i = i+1;
        SET LAST_MSHP_ID = LAST_MSHP_ID + 1;
END WHILE;


2. Modifying pt-osc script
I modified pt-online-schema-change's script at line number 11860
(as-is)
    my $insert_trigger
       = "CREATE TRIGGER `${prefix}_ins` AFTER INSERT ON $orig_tbl->{name} "
       . "FOR EACH ROW "
       . "BEGIN "
       . "DECLARE CONTINUE HANDLER FOR 1146 begin end; "
       . "REPLACE INTO $new_tbl->{name} ($qcols) VALUES ($new_vals);"
       . "END ";
(modified script)
my $insert_trigger = "CREATE TRIGGER `${prefix}_ins` BEFORE INSERT ON 
$orig_tbl->{name} "
                   . "FOR EACH ROW "
                   . "BEGIN "
                   . "DECLARE CONTINUE HANDLER FOR 1146 begin end; "
                   . "REPLACE INTO $new_tbl->{name} "
                   . "(`seq`, `mshp_id`, `str_cd`, `rest_pnt`, `reg_dtm`, 
`source`) "
                   . "VALUES (NEW.`seq`, NEW.`mshp_id`, NEW.`str_cd`, 
NEW.`rest_pnt`, NEW.`reg_dtm`, 'TRIGGER');"
                   . "END ";


3. Operate Procedure & pt-osc

In Session A :
call bjh. ptosctest(500000);


(5~10 Seconds later ) In Session B :

pt-online-schema-change --alter "ADD CONSTRAINT CHK_RESTPNT_RANGE CHECK 
(ABS(REST_PNT) < 1000000000)" D=bjh,t=test1,P=3306 \
--no-drop-old-table \
--host=bjh-test-ptosc.czeeuhi5hmdb.us-east-1.rds.amazonaws.com \
--user=admin \
--password='qkswlgus' \
--progress=time,30 \
--max-load="Threads_running=200" \
--critical-load="Threads_running=1000" \
--recursion-method=none \
--chunk-index=PRIMARY \
--preserve-triggers \
--execute


4. Select Result
In mariadb

mysql> select @@version;
+---------------------+
| @@version           |
+---------------------+
| 10.11.7-MariaDB-log |
+---------------------+
1 row in set (0.00 sec)
 
mysql> select count(*) from bjh.test1 where source='TRIGGER';
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (3.28 sec)


In mysql

mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 8.0.35    |
+-----------+
1 row in set (0.00 sec)
 
mysql> select count(*) from bjh.test1 where source='TRIGGER';
+----------+
| count(*) |
+----------+
|      457 |
+----------+
1 row in set (0.04 sec)


As a result, clear is that the pt-osc trigger operates normally in
mysql, but the table reflection by the trigger is not properly performed
in mariadb. I need to check if this is an internal logic problem in
mariadb.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2069980

Title:
  The insert trigger does not work while performing pt-osc.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/percona-toolkit/+bug/2069980/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to