mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
85130c5a4f
a. The change makes `mariadb-upgrade` detect if `MYSQL_JSON` data type is needed. b. Install the data type if it's not installed. c. Uninstalls the data type once finished. d. Create `.opt` and `.inc` files `have_type_mysql_json` and adapt the tests Reviewed by: vicentiu@mariadb.org
90 lines
3 KiB
Text
90 lines
3 KiB
Text
--source include/have_utf8.inc
|
|
--source include/have_type_mysql_json.inc
|
|
|
|
--echo #
|
|
--echo # The following test takes 2 tables containing a JSON column and attempts
|
|
--echo # to repair them.
|
|
--echo #
|
|
--echo # The tables header is (Description, Expected, Actual), where description
|
|
--echo # shows a brief description what the JSON value is testing in the MariaDB
|
|
--echo # implementation. Expected is the longtext string and actual is the JSON
|
|
--echo # column that needs to be converted to MariaDB's representation of
|
|
--echo # LONGTEXT.
|
|
--echo #
|
|
|
|
|
|
call mtr.add_suppression("Table rebuild required");
|
|
call mtr.add_suppression("is marked as crashed");
|
|
call mtr.add_suppression("Checking");
|
|
|
|
let $MYSQLD_DATADIR= `select @@datadir`;
|
|
|
|
SET NAMES utf8;
|
|
|
|
--copy_file std_data/mysql_json/tempty.frm $MYSQLD_DATADIR/test/tempty.frm
|
|
--copy_file std_data/mysql_json/tempty.MYI $MYSQLD_DATADIR/test/tempty.MYI
|
|
--copy_file std_data/mysql_json/tempty.MYD $MYSQLD_DATADIR/test/tempty.MYD
|
|
|
|
--copy_file std_data/mysql_json/mysql_json_test.frm $MYSQLD_DATADIR/test/mysql_json_test.frm
|
|
--copy_file std_data/mysql_json/mysql_json_test.MYI $MYSQLD_DATADIR/test/mysql_json_test.MYI
|
|
--copy_file std_data/mysql_json/mysql_json_test.MYD $MYSQLD_DATADIR/test/mysql_json_test.MYD
|
|
|
|
--copy_file std_data/mysql_json/mysql_json_test_big.frm $MYSQLD_DATADIR/test/mysql_json_test_big.frm
|
|
--copy_file std_data/mysql_json/mysql_json_test_big.MYI $MYSQLD_DATADIR/test/mysql_json_test_big.MYI
|
|
--copy_file std_data/mysql_json/mysql_json_test_big.MYD $MYSQLD_DATADIR/test/mysql_json_test_big.MYD
|
|
|
|
--echo #
|
|
--echo # Check that only ALTER TABLE ... FORCE is allowed on a MySQL 5.7 table
|
|
--echo # with a JSON column.
|
|
--echo #
|
|
|
|
--error ER_TABLE_NEEDS_REBUILD
|
|
show create table tempty;
|
|
--error ER_TABLE_NEEDS_REBUILD
|
|
select * from tempty;
|
|
|
|
alter table tempty force;
|
|
show create table tempty;
|
|
|
|
--error ER_TABLE_NEEDS_REBUILD
|
|
show create table mysql_json_test;
|
|
--error ER_TABLE_NEEDS_REBUILD
|
|
select * from mysql_json_test;
|
|
|
|
--error ER_TABLE_NEEDS_REBUILD
|
|
LOCK TABLES mysql_json_test WRITE;
|
|
|
|
alter table mysql_json_test force;
|
|
|
|
--sorted_result
|
|
select description, expected, actual, expected = actual from mysql_json_test;
|
|
|
|
--echo #
|
|
--echo # A quick check that all rows match from the original MySQL Table.
|
|
--echo #
|
|
select count(*) as 'Total_Number_of_Tests',
|
|
sum(expected = actual) as 'Succesful_Tests'
|
|
from mysql_json_test;
|
|
|
|
show create table mysql_json_test;
|
|
|
|
--error ER_TABLE_NEEDS_REBUILD
|
|
show create table mysql_json_test_big;
|
|
--error ER_TABLE_NEEDS_REBUILD
|
|
select * from mysql_json_test_big;
|
|
|
|
--echo #
|
|
--echo # This test checks the long format implementation of MySQL's JSON
|
|
--echo # Not printing the actual contents as they are not readable by a human,
|
|
--echo # just compare the strings, make sure they match.
|
|
--echo #
|
|
alter table mysql_json_test_big force;
|
|
|
|
select count(*) as 'Total_Number_of_Tests',
|
|
sum(expected = actual) as 'Succesful_Tests',
|
|
sum(JSON_VALID(actual)) as 'String_is_valid_JSON'
|
|
from mysql_json_test_big;
|
|
|
|
drop table tempty;
|
|
drop table mysql_json_test;
|
|
drop table mysql_json_test_big;
|