diff --git a/include/mysql.h b/include/mysql.h index 3f59fa3edd2..c54dc7e5f5f 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -143,6 +143,7 @@ typedef unsigned long long my_ulonglong; #define ER_UNSUPPORTED_ENGINE_FOR_VIRTUAL_COLUMNS ER_UNSUPPORTED_ENGINE_FOR_GENERATED_COLUMNS #define ER_KEY_COLUMN_DOES_NOT_EXITS ER_KEY_COLUMN_DOES_NOT_EXIST #define ER_DROP_PARTITION_NON_EXISTENT ER_PARTITION_DOES_NOT_EXIST +#define ER_SPATIAL_CANT_HAVE_NULL ER_INDEX_CANNOT_HAVE_NULL typedef struct st_mysql_rows { struct st_mysql_rows *next; /* list of rows */ diff --git a/mysql-test/suite/gcol/t/innodb_virtual_basic.test b/mysql-test/suite/gcol/t/innodb_virtual_basic.test index 1ebf962f5a2..527e22ff6d0 100644 --- a/mysql-test/suite/gcol/t/innodb_virtual_basic.test +++ b/mysql-test/suite/gcol/t/innodb_virtual_basic.test @@ -235,10 +235,10 @@ CREATE TABLE t (a TEXT, b TEXT GENERATED ALWAYS AS (a)); ALTER TABLE t ADD FULLTEXT INDEX (b); DROP TABLE t; ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL CREATE TABLE t (a geometry not null, b geometry GENERATED ALWAYS AS (a), spatial INDEX idx (b)); CREATE TABLE t (a geometry not null, b geometry GENERATED ALWAYS AS (a)); ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL ALTER TABLE t ADD SPATIAL INDEX (b); DROP TABLE t; @@ -527,7 +527,7 @@ SHOW CREATE TABLE t1; DROP TABLE t1; # No spatial and FTS index on virtual columns ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL CREATE TABLE t (a INT, b INT GENERATED ALWAYS AS (a), c point, d point GENERATED ALWAYS AS (c), spatial index idx (d)); --error ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN diff --git a/mysql-test/suite/innodb_gis/t/alter_spatial_index.test b/mysql-test/suite/innodb_gis/t/alter_spatial_index.test index de76e5ead04..f7e22d96ba2 100644 --- a/mysql-test/suite/innodb_gis/t/alter_spatial_index.test +++ b/mysql-test/suite/innodb_gis/t/alter_spatial_index.test @@ -134,31 +134,31 @@ SELECT c1,ST_AsText(c2),ST_AsText(c4) FROM tab WHERE MBRWithin(tab.c4, @g1); DELETE FROM tab WHERE MBRWithin(tab.c4, @g1); ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL ALTER TABLE tab MODIFY COLUMN c2 MULTIPOINT; ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL ALTER TABLE tab MODIFY COLUMN c3 MULTILINESTRING; ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL ALTER TABLE tab MODIFY COLUMN c4 MULTIPOLYGON; ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL ALTER TABLE tab MODIFY COLUMN c3 MULTILINESTRING NULL; ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL ALTER TABLE tab MODIFY COLUMN c4 MULTIPOLYGON NULL; ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL ALTER TABLE tab MODIFY COLUMN c4 Geometry NULL; ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL ALTER TABLE tab CHANGE COLUMN c2 c22 POINT; ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL ALTER TABLE tab CHANGE COLUMN c3 c33 LINESTRING; ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL ALTER TABLE tab CHANGE COLUMN c4 c44 POLYGON; # --error ER_SPATIAL_MUST_HAVE_GEOM_COL @@ -716,7 +716,7 @@ create table t1 (c1 int) engine=innodb; insert into t1 values(NULL); # Add spatial index fail, since geometry column can't be null. ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL alter table t1 add b geometry, add spatial index(b), algorithm=inplace; # Add spatial index fail, since there's invalid geo data. @@ -736,7 +736,7 @@ create table t1 (c1 int) engine=innodb; insert into t1 values(NULL); # Add spatial index fail, since geometry column can't be null. ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL alter table t1 add b geometry, add spatial index(b), algorithm=copy; # Add spatial index fail, since there's a NULL or invalid geo data. diff --git a/mysql-test/suite/innodb_gis/t/point_basic.test b/mysql-test/suite/innodb_gis/t/point_basic.test index 55a341742ef..b335617cbba 100644 --- a/mysql-test/suite/innodb_gis/t/point_basic.test +++ b/mysql-test/suite/innodb_gis/t/point_basic.test @@ -107,7 +107,7 @@ DELETE FROM t1 WHERE p1 = ST_PointFromText('POINT(10 19)'); SELECT ST_AsText(p1) FROM t1; --echo # Add spatial keys on the table ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL ALTER TABLE t1 ADD SPATIAL(p), ADD SPATIAL(p1); SELECT c.name, c.mtype, c.prtype, c.len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS c @@ -176,7 +176,7 @@ UPDATE t1 SET p1 = ST_PointFromText('POINT(5 5)'); SELECT ST_AsText(pp), ST_AsText(p1) FROM t1; ---error ER_SPATIAL_CANT_HAVE_NULL +--error ER_INDEX_CANNOT_HAVE_NULL ALTER TABLE t1 ADD SPATIAL(p1), ADD SPATIAL(pp), ALGORITHM = COPY; SELECT c.name, c.mtype, c.prtype, c.len FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS c diff --git a/mysql-test/suite/vcol/inc/vcol_keys.inc b/mysql-test/suite/vcol/inc/vcol_keys.inc index d209e24811b..1002e1bb4f4 100644 --- a/mysql-test/suite/vcol/inc/vcol_keys.inc +++ b/mysql-test/suite/vcol/inc/vcol_keys.inc @@ -94,7 +94,7 @@ drop table t1; if (!$skip_spatial_index_check) { --echo # Error "All parts of a SPATIAL index must be NOT NULL" - --error ER_SPATIAL_CANT_HAVE_NULL + --error ER_INDEX_CANNOT_HAVE_NULL create table t1 (a int, b geometry as (a+1) persistent, spatial index (b)); create table t1 (a int, b int as (a+1) persistent); --error ER_WRONG_ARGUMENTS diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt index 69969e9f554..5820e011e1f 100644 --- a/sql/share/errmsg-utf8.txt +++ b/sql/share/errmsg-utf8.txt @@ -5642,17 +5642,16 @@ ER_NOT_SUPPORTED_AUTH_MODE 08004 spa "El cliente no soporta protocolo de autenticación requerido por el servidor; considere mejorar el cliente MariaDB" sw "Mteja haungi mkono itifaki ya uthibitishaji iliyoombwa na seva; fikiria kuboresha mteja wa MariaDB" swe "Klienten stöder inte autentiseringsprotokollet som begärts av servern; överväg uppgradering av klientprogrammet" -ER_SPATIAL_CANT_HAVE_NULL 42000 - chi "SPATIAL索引的所有部分必须不为null" - eng "All parts of a SPATIAL index must be NOT NULL" - ger "Alle Teile eines SPATIAL-Index müssen als NOT NULL deklariert sein" - geo "SPATIAL ინდექსის ყველა ნაწილი NOT NULL უნდა იყოს" - jpn "空間索引のキー列は NOT NULL でなければいけません。" - nla "Alle delete van een SPATIAL index dienen als NOT NULL gedeclareerd te worden" - por "Todas as partes de uma SPATIAL index devem ser NOT NULL" - spa "Todas las partes de un índice SPATIAL deben de ser NOT NULL" - sw "Sehemu zote za faharisi ya SPATIAL lazima ziwe NOT NULL" - swe "Alla delar av en SPATIAL index måste vara NOT NULL" +ER_INDEX_CANNOT_HAVE_NULL 42000 + chi "%s索引的所有部分必须不为null" + eng "All parts of a %s index must be NOT NULL" + ger "Alle Teile eines %s-Index müssen als NOT NULL deklariert sein" + geo "%s ინდექსის ყველა ნაწილი NOT NULL უნდა იყოს" + nla "Alle delete van een %s index dienen als NOT NULL gedeclareerd te worden" + por "Todas as partes de uma %s index devem ser NOT NULL" + spa "Todas las partes de un índice %s deben de ser NOT NULL" + sw "Sehemu zote za faharisi ya %s lazima ziwe NOT NULL" + swe "Alla delar av en %s index måste vara NOT NULL" ER_COLLATION_CHARSET_MISMATCH 42000 chi "COLLATION'%s'无效地用于字符集'%s'" eng "COLLATION '%s' is not valid for CHARACTER SET '%s'" diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 5c869d5e6f2..3b9ec489faa 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -3302,8 +3302,7 @@ mysql_prepare_create_table_finalize(THD *thd, HA_CREATE_INFO *create_info, DBUG_RETURN(TRUE); if (!(sql_field->flags & NOT_NULL_FLAG)) { - my_message(ER_SPATIAL_CANT_HAVE_NULL, - ER_THD(thd, ER_SPATIAL_CANT_HAVE_NULL), MYF(0)); + my_error(ER_INDEX_CANNOT_HAVE_NULL, MYF(0), "SPATIAL"); DBUG_RETURN(TRUE); } break;