#-----------------------------------------------------------------------
# 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;
