#----------------------------------------------------------------------- # Basic syntax checks #----------------------------------------------------------------------- # Check existing BACKUP STAGE statements in the sequence to be used. BACKUP STAGE START; BACKUP STAGE FLUSH; BACKUP STAGE BLOCK_DDL; BACKUP STAGE BLOCK_COMMIT; BACKUP STAGE END; # Check invalid variants of BACKUP .... syntax. BACKUP LOG; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LOG' at line 1 BACKUP LOCK; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 BACKUP STAGE; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 BACKUP STAGE LOCK; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LOCK' at line 1 BACKUP STAGE not_existing; ERROR HY000: Unknown backup stage: 'not_existing'. Stage should be one of START, FLUSH, BLOCK_DDL, BLOCK_COMMIT or END #----------------------------------------------------------------------- # BACKUP STAGE statements in various orders. #----------------------------------------------------------------------- # All BACKUP STAGE statements != 'BACKUP STAGE START' expect that a # backup lock (generated by BACKUP STAGE START) already exists. # backup stage start; backup stage flush; backup stage start; ERROR HY000: Backup stage 'START' is same or before current backup stage 'FLUSH' backup stage start; ERROR HY000: Backup stage 'START' is same or before current backup stage 'FLUSH' backup stage block_commit; backup stage flush; ERROR HY000: Backup stage 'FLUSH' is same or before current backup stage 'BLOCK_COMMIT' backup stage flush; ERROR HY000: Backup stage 'FLUSH' is same or before current backup stage 'BLOCK_COMMIT' backup stage end; backup stage flush; ERROR HY000: You must start backup with "BACKUP STAGE START" BACKUP STAGE END; ERROR HY000: You must start backup with "BACKUP STAGE START" BACKUP STAGE BLOCK_COMMIT; ERROR HY000: You must start backup with "BACKUP STAGE START" BACKUP STAGE BLOCK_DDL; ERROR HY000: You must start backup with "BACKUP STAGE START" BACKUP STAGE FLUSH; ERROR HY000: You must start backup with "BACKUP STAGE START" # Ordered "give up" with 'BACKUP STAGE END' because of whatever reason. # Some existing backup lock assumed a 'BACKUP STAGE END' is allowed in # every situation. BACKUP STAGE START; BACKUP STAGE END; #---- BACKUP STAGE START; BACKUP STAGE FLUSH; BACKUP STAGE END; #---- BACKUP STAGE START; BACKUP STAGE FLUSH; BACKUP STAGE BLOCK_DDL; BACKUP STAGE END; # Orders with BACKUP STAGE FLUSH omitted. BACKUP STAGE START; BACKUP STAGE BLOCK_DDL; BACKUP STAGE END; #---- BACKUP STAGE START; BACKUP STAGE BLOCK_DDL; BACKUP STAGE BLOCK_COMMIT; BACKUP STAGE END; # Orders with BACKUP STAGE BLOCK_DDL omitted. BACKUP STAGE START; BACKUP STAGE FLUSH; BACKUP STAGE BLOCK_COMMIT; BACKUP STAGE END; # Orders with BACKUP STAGE BLOCK_COMMIT omitted. BACKUP STAGE START; BACKUP STAGE FLUSH; BACKUP STAGE BLOCK_DDL; BACKUP STAGE END; # Orders with doubled BACKUP STAGE statements. # We get an error but that seems to have no bad impact on the state. # And so we are allowed to go on with BACKUP STAGE statements. BACKUP STAGE START; BACKUP STAGE START; ERROR HY000: Backup stage 'START' is same or before current backup stage 'START' BACKUP STAGE FLUSH; BACKUP STAGE BLOCK_DDL; BACKUP STAGE BLOCK_COMMIT; BACKUP STAGE END; #---- BACKUP STAGE START; BACKUP STAGE FLUSH; BACKUP STAGE FLUSH; ERROR HY000: Backup stage 'FLUSH' is same or before current backup stage 'FLUSH' BACKUP STAGE END; #---- BACKUP STAGE START; BACKUP STAGE FLUSH; BACKUP STAGE BLOCK_DDL; BACKUP STAGE BLOCK_DDL; ERROR HY000: Backup stage 'BLOCK_DDL' is same or before current backup stage 'BLOCK_DDL' BACKUP STAGE END; #---- BACKUP STAGE START; BACKUP STAGE FLUSH; BACKUP STAGE BLOCK_DDL; BACKUP STAGE BLOCK_COMMIT; BACKUP STAGE BLOCK_COMMIT; ERROR HY000: Backup stage 'BLOCK_COMMIT' is same or before current backup stage 'BLOCK_COMMIT' BACKUP STAGE END; # Scrambled orders. BACKUP STAGE START; BACKUP STAGE FLUSH; BACKUP STAGE START; ERROR HY000: Backup stage 'START' is same or before current backup stage 'FLUSH' BACKUP STAGE BLOCK_DDL; BACKUP STAGE START; ERROR HY000: Backup stage 'START' is same or before current backup stage 'BLOCK_DDL' BACKUP STAGE BLOCK_COMMIT; BACKUP STAGE START; ERROR HY000: Backup stage 'START' is same or before current backup stage 'BLOCK_COMMIT' BACKUP STAGE END; #---- BACKUP STAGE START; BACKUP STAGE FLUSH; BACKUP STAGE BLOCK_DDL; BACKUP STAGE FLUSH; ERROR HY000: Backup stage 'FLUSH' is same or before current backup stage 'BLOCK_DDL' BACKUP STAGE BLOCK_COMMIT; BACKUP STAGE FLUSH; ERROR HY000: Backup stage 'FLUSH' is same or before current backup stage 'BLOCK_COMMIT' BACKUP STAGE END; #---- BACKUP STAGE START; BACKUP STAGE FLUSH; BACKUP STAGE BLOCK_DDL; BACKUP STAGE BLOCK_COMMIT; BACKUP STAGE BLOCK_DDL; ERROR HY000: Backup stage 'BLOCK_DDL' is same or before current backup stage 'BLOCK_COMMIT' BACKUP STAGE END; #---- BACKUP STAGE START; BACKUP STAGE BLOCK_DDL; BACKUP STAGE FLUSH; ERROR HY000: Backup stage 'FLUSH' is same or before current backup stage 'BLOCK_DDL' BACKUP STAGE BLOCK_COMMIT; BACKUP STAGE END; #---- BACKUP STAGE START; BACKUP STAGE FLUSH; BACKUP STAGE BLOCK_COMMIT; BACKUP STAGE BLOCK_DDL; ERROR HY000: Backup stage 'BLOCK_DDL' is same or before current backup stage 'BLOCK_COMMIT' BACKUP STAGE END; # # Check Oracle syntax # set SQL_MODE=Oracle; backup stage start; backup stage end; set SQL_MODE=default;