Revert "MDEV-32235: mysql_json cannot be used on newly created table"

This reverts commit 22f3ebe4bf11acb7b5e854bc4e6b3439af6982f1.
This commit is contained in:
Anel Husakovic 2024-01-12 15:20:25 +01:00 committed by Alexander Barkov
parent 22f3ebe4bf
commit 8b5c1d5afa
3 changed files with 8 additions and 40 deletions

View File

@ -181,7 +181,12 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
drop table t1; drop table t1;
create table t1(j mysql_json); create table t1(j mysql_json);
ERROR HY000: Cannot create table `test`.`t1`: Run mariadb-upgrade, to upgrade table with mysql_json type. show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`j` mysql_json /* JSON from MySQL 5.7 */ CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
drop table t1;
create table `testjson` ( create table `testjson` (
`t` json /* JSON from MySQL 5.7*/ CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL `t` json /* JSON from MySQL 5.7*/ CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci; ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
@ -206,16 +211,5 @@ testjson CREATE TABLE `testjson` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
drop table testjson; drop table testjson;
# #
# MDEV-32235: mysql_json cannot be used on newly created table
#
CREATE TABLE t(j mysql_json);
ERROR HY000: Cannot create table `test`.`t`: Run mariadb-upgrade, to upgrade table with mysql_json type.
CREATE TABLE IF NOT EXISTS t(j mysql_json);
ERROR HY000: Cannot create table `test`.`t`: Run mariadb-upgrade, to upgrade table with mysql_json type.
CREATE OR REPLACE TABLE t(j mysql_json);
ERROR HY000: Cannot create table `test`.`t`: Run mariadb-upgrade, to upgrade table with mysql_json type.
CREATE TEMPORARY TABLE t(j mysql_json);
ERROR HY000: Cannot create table `test`.`t`: Run mariadb-upgrade, to upgrade table with mysql_json type.
#
# End of 10.5 tests # End of 10.5 tests
# #

View File

@ -97,8 +97,9 @@ drop table mysql_json_test_big;
create table t1(j json); create table t1(j json);
show create table t1; show create table t1;
drop table t1; drop table t1;
--error ER_CANT_CREATE_TABLE
create table t1(j mysql_json); create table t1(j mysql_json);
show create table t1;
drop table t1;
# `json` type should not have character set and collation other than utf8mb4_bin # `json` type should not have character set and collation other than utf8mb4_bin
--error ER_PARSE_ERROR --error ER_PARSE_ERROR
create table `testjson` ( create table `testjson` (
@ -120,20 +121,6 @@ create table `testjson` (
show create table testjson; show create table testjson;
drop table testjson; drop table testjson;
--echo #
--echo # MDEV-32235: mysql_json cannot be used on newly created table
--echo #
--error ER_CANT_CREATE_TABLE
CREATE TABLE t(j mysql_json);
--error ER_CANT_CREATE_TABLE
CREATE TABLE IF NOT EXISTS t(j mysql_json);
--error ER_CANT_CREATE_TABLE
CREATE OR REPLACE TABLE t(j mysql_json);
--error ER_CANT_CREATE_TABLE
CREATE TEMPORARY TABLE t(j mysql_json);
--echo # --echo #
--echo # End of 10.5 tests --echo # End of 10.5 tests
--echo # --echo #

View File

@ -3657,19 +3657,6 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info,
if (sql_field->vcol_info) if (sql_field->vcol_info)
sql_field->flags&= ~NOT_NULL_FLAG; sql_field->flags&= ~NOT_NULL_FLAG;
if (sql_field->real_field_type() == MYSQL_TYPE_BLOB &&
thd->lex->sql_command == SQLCOM_CREATE_TABLE)
{
if (!strcmp(sql_field->type_handler()->name().ptr(), "MYSQL_JSON"))
{
my_printf_error(ER_CANT_CREATE_TABLE,
"Cannot create table %`s.%`s: "
"Run mariadb-upgrade, "
"to upgrade table with mysql_json type.", MYF(0),
alter_info->db.str, alter_info->table_name.str);
DBUG_RETURN(TRUE);
}
}
/* /*
Initialize length from its original value (number of characters), Initialize length from its original value (number of characters),
which was set in the parser. This is necessary if we're which was set in the parser. This is necessary if we're