mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
5352e9687a
In collaboration with Sergey Vojtovich <svoj@mariadb.org> The COMPRESSED clause is now a part of the data type and goes immediately after the data type and length, but before the CHARACTER SET clause, and before column attributes such as DEFAULT, COLLATE, ON UPDATE, SYSTEM VERSIONING, engine specific column attributes. In the old reduction, the COMPRESSED clause was a column attribute. New syntax: <varchar or text data type> <length> <compression> <character set> <column attributes> <varbinary or blob data type> <length> <compression> <column attributes> New syntax examples: VARCHAR(1000) COMPRESSED CHARACTER SET latin1 DEFAULT '' BLOB COMPRESSED DEFAULT '' Deprecate syntax examples: VARCHAR(1000) CHARACTER SET latin1 COMPRESSED DEFAULT '' TEXT CHARACTER SET latin1 DEFAULT '' COMPRESSED VARBINARY(1000) DEFAULT '' COMPRESSED As a side effect: - COMPRESSED is not valid as an SP label name in SQL/PSM routines any more (but it's still valid as an SP label name in sql_mode=ORACLE) - COMPRESSED is now allowed in combination with GENERATED ALWAYS AS: TEXT COMPRESSED GENERATED ALWAYS AS REPEAT('a',1000)
133 lines
4.6 KiB
Text
133 lines
4.6 KiB
Text
###############################################################################
|
|
# mysqldump_restore.test
|
|
#
|
|
# Purpose: Tests if mysqldump output can be used to successfully restore
|
|
# tables and data.
|
|
# We CREATE a table, mysqldump it to a file, ALTER the original
|
|
# table's name, recreate the table from the mysqldump file, then
|
|
# utilize include/diff_tables to compare the original and recreated
|
|
# tables.
|
|
#
|
|
# We use several examples from mysqldump.test here and include
|
|
# the relevant bug numbers and headers from that test.
|
|
#
|
|
# NOTE: This test is not currently complete and offers only basic
|
|
# cases of mysqldump output being restored.
|
|
# Also, does NOT work with -X (xml) output!
|
|
#
|
|
# Author: pcrews
|
|
# Created: 2009-05-21
|
|
# Last Change:
|
|
# Change date:
|
|
###############################################################################
|
|
|
|
# Embedded server doesn't support external clients
|
|
--source include/not_embedded.inc
|
|
--source include/have_log_bin.inc
|
|
|
|
--echo # Set concurrent_insert = 0 to prevent random errors
|
|
--echo # will reset to original value at the end of the test
|
|
SET @old_concurrent_insert = @@global.concurrent_insert;
|
|
SET @@global.concurrent_insert = 0;
|
|
|
|
# Define mysqldumpfile here. It is used to capture mysqldump output
|
|
# in order to test the output's ability to restore an exact copy of the table
|
|
let $mysqldumpfile = $MYSQLTEST_VARDIR/tmp/mysqldumpfile.sql;
|
|
|
|
--echo # Pre-test cleanup
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
--enable_warnings
|
|
|
|
--echo # Begin tests
|
|
--echo #
|
|
--echo # Bug#2005 Long decimal comparison bug.
|
|
--echo #
|
|
CREATE TABLE t1 (a DECIMAL(64, 20));
|
|
INSERT INTO t1 VALUES ("1234567890123456789012345678901234567890"),
|
|
("0987654321098765432109876543210987654321");
|
|
--exec $MYSQL_DUMP --compact test t1 > $mysqldumpfile
|
|
let $table_name = test.t1;
|
|
--source include/mysqldump.inc
|
|
|
|
--echo #
|
|
--echo # Bug#3361 mysqldump quotes DECIMAL values inconsistently
|
|
--echo #
|
|
CREATE TABLE t1 (a DECIMAL(10,5), b FLOAT);
|
|
# Check at first how mysql work with quoted decimal
|
|
INSERT INTO t1 VALUES (1.2345, 2.3456);
|
|
INSERT INTO t1 VALUES ('1.2345', 2.3456);
|
|
INSERT INTO t1 VALUES ("1.2345", 2.3456);
|
|
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ANSI_QUOTES';
|
|
INSERT INTO t1 VALUES (1.2345, 2.3456);
|
|
INSERT INTO t1 VALUES ('1.2345', 2.3456);
|
|
--error ER_BAD_FIELD_ERROR
|
|
INSERT INTO t1 VALUES ("1.2345", 2.3456);
|
|
SET SQL_MODE=@OLD_SQL_MODE;
|
|
|
|
# check how mysqldump make quoting
|
|
--exec $MYSQL_DUMP --compact test t1 > $mysqldumpfile
|
|
let $table_name = test.t1;
|
|
--source include/mysqldump.inc
|
|
|
|
--echo #
|
|
--echo # Bug#1994 mysqldump does not correctly dump UCS2 data
|
|
--echo # Bug#4261 mysqldump 10.7 (mysql 4.1.2) --skip-extended-insert drops NULL from inserts
|
|
--echo #
|
|
CREATE TABLE t1 (a VARCHAR(255)) DEFAULT CHARSET koi8r;
|
|
INSERT INTO t1 VALUES (_koi8r x'C1C2C3C4C5'), (NULL);
|
|
--exec $MYSQL_DUMP --skip-comments --skip-extended-insert test t1 > $mysqldumpfile
|
|
let $table_name = test.t1;
|
|
--source include/mysqldump.inc
|
|
|
|
--echo #
|
|
--echo # WL#2319 Exclude Tables from dump
|
|
--echo #
|
|
CREATE TABLE t1 (a INT);
|
|
CREATE TABLE t2 (a INT);
|
|
INSERT INTO t1 VALUES (1),(2),(3);
|
|
INSERT INTO t2 VALUES (4),(5),(6);
|
|
--exec $MYSQL_DUMP --skip-comments --ignore-table=test.t1 test > $mysqldumpfile
|
|
let $table_name = test.t2;
|
|
--source include/mysqldump.inc
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Bug#8830 mysqldump --skip-extended-insert causes --hex-blob to dump wrong values
|
|
--echo #
|
|
CREATE TABLE t1 (`b` blob);
|
|
INSERT INTO `t1` VALUES (0x602010000280100005E71A);
|
|
--exec $MYSQL_DUMP --skip-extended-insert --hex-blob test --skip-comments t1 > $mysqldumpfile
|
|
let $table_name = test.t1;
|
|
--source include/mysqldump.inc
|
|
|
|
--echo #
|
|
--echo # Start of 10.3 tests
|
|
--echo #
|
|
|
|
--echo #
|
|
--echo # MDEV-17363 Compressed columns cannot be restored from dump
|
|
--echo #
|
|
|
|
CREATE TABLE t1 (a VARCHAR(1000) COMPRESSED CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL);
|
|
INSERT INTO `t1` VALUES (REPEAT('a', 256));
|
|
--exec $MYSQL_DUMP --skip-extended-insert test --skip-comments t1 > $mysqldumpfile
|
|
let $table_name = test.t1;
|
|
--source include/mysqldump.inc
|
|
|
|
CREATE TABLE t1 (a LONGTEXT COMPRESSED CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL);
|
|
INSERT INTO `t1` VALUES (REPEAT('a', 256));
|
|
--exec $MYSQL_DUMP --skip-extended-insert test --skip-comments t1 > $mysqldumpfile
|
|
let $table_name = test.t1;
|
|
--source include/mysqldump.inc
|
|
|
|
--echo #
|
|
--echo # End of 10.3 tests
|
|
--echo #
|
|
|
|
--echo # Cleanup
|
|
--echo # Reset concurrent_insert to its original value
|
|
SET @@global.concurrent_insert = @old_concurrent_insert;
|
|
--echo # remove mysqldumpfile
|
|
--error 0,1
|
|
--remove_file $mysqldumpfile
|