mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Merged fix for bug #59888 "debug assertion when attempt to
create spatial index on char > 31 bytes". Did after-merge fixes.
This commit is contained in:
@@ -1034,6 +1034,14 @@ p
|
|||||||
NULL
|
NULL
|
||||||
NULL
|
NULL
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Test for bug #59888 "debug assertion when attempt to create spatial index
|
||||||
|
# on char > 31 bytes".
|
||||||
|
#
|
||||||
|
create table t1(a char(32) not null) engine=myisam;
|
||||||
|
create spatial index i on t1 (a);
|
||||||
|
ERROR 42000: A SPATIAL index may only contain a geometrical type column
|
||||||
|
drop table t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
CREATE TABLE t1(
|
CREATE TABLE t1(
|
||||||
col0 BINARY NOT NULL,
|
col0 BINARY NOT NULL,
|
||||||
|
@@ -757,6 +757,17 @@ insert into t1 values (geomfromtext("point(1 0)"));
|
|||||||
select * from (select polygon(t1.a) as p from t1 order by t1.a) d;
|
select * from (select polygon(t1.a) as p from t1 order by t1.a) d;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Test for bug #59888 "debug assertion when attempt to create spatial index
|
||||||
|
--echo # on char > 31 bytes".
|
||||||
|
--echo #
|
||||||
|
create table t1(a char(32) not null) engine=myisam;
|
||||||
|
--error ER_SPATIAL_MUST_HAVE_GEOM_COL
|
||||||
|
create spatial index i on t1 (a);
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -269,7 +269,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
keyseg->type != HA_KEYTYPE_VARBINARY2)
|
keyseg->type != HA_KEYTYPE_VARBINARY2)
|
||||||
{
|
{
|
||||||
my_errno=HA_WRONG_CREATE_OPTION;
|
my_errno=HA_WRONG_CREATE_OPTION;
|
||||||
goto err;
|
goto err_no_lock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
keydef->keysegs+=sp_segs;
|
keydef->keysegs+=sp_segs;
|
||||||
@@ -278,7 +278,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
min_key_length_skip+=SPLEN*2*SPDIMS;
|
min_key_length_skip+=SPLEN*2*SPDIMS;
|
||||||
#else
|
#else
|
||||||
my_errno= HA_ERR_UNSUPPORTED;
|
my_errno= HA_ERR_UNSUPPORTED;
|
||||||
goto err;
|
goto err_no_lock;
|
||||||
#endif /*HAVE_SPATIAL*/
|
#endif /*HAVE_SPATIAL*/
|
||||||
}
|
}
|
||||||
else if (keydef->flag & HA_FULLTEXT)
|
else if (keydef->flag & HA_FULLTEXT)
|
||||||
@@ -294,7 +294,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
keyseg->type != HA_KEYTYPE_VARTEXT2)
|
keyseg->type != HA_KEYTYPE_VARTEXT2)
|
||||||
{
|
{
|
||||||
my_errno=HA_WRONG_CREATE_OPTION;
|
my_errno=HA_WRONG_CREATE_OPTION;
|
||||||
goto err;
|
goto err_no_lock;
|
||||||
}
|
}
|
||||||
if (!(keyseg->flag & HA_BLOB_PART) &&
|
if (!(keyseg->flag & HA_BLOB_PART) &&
|
||||||
(keyseg->type == HA_KEYTYPE_VARTEXT1 ||
|
(keyseg->type == HA_KEYTYPE_VARTEXT1 ||
|
||||||
@@ -419,7 +419,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
if (keydef->keysegs > MI_MAX_KEY_SEG)
|
if (keydef->keysegs > MI_MAX_KEY_SEG)
|
||||||
{
|
{
|
||||||
my_errno=HA_WRONG_CREATE_OPTION;
|
my_errno=HA_WRONG_CREATE_OPTION;
|
||||||
goto err;
|
goto err_no_lock;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
key_segs may be 0 in the case when we only want to be able to
|
key_segs may be 0 in the case when we only want to be able to
|
||||||
@@ -444,7 +444,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
length >= MI_MAX_KEY_BUFF)
|
length >= MI_MAX_KEY_BUFF)
|
||||||
{
|
{
|
||||||
my_errno=HA_WRONG_CREATE_OPTION;
|
my_errno=HA_WRONG_CREATE_OPTION;
|
||||||
goto err;
|
goto err_no_lock;
|
||||||
}
|
}
|
||||||
set_if_bigger(max_key_block_length,keydef->block_length);
|
set_if_bigger(max_key_block_length,keydef->block_length);
|
||||||
keydef->keylength= (uint16) key_length;
|
keydef->keylength= (uint16) key_length;
|
||||||
@@ -491,7 +491,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
"indexes and/or unique constraints.",
|
"indexes and/or unique constraints.",
|
||||||
MYF(0), name + dirname_length(name));
|
MYF(0), name + dirname_length(name));
|
||||||
my_errno= HA_WRONG_CREATE_OPTION;
|
my_errno= HA_WRONG_CREATE_OPTION;
|
||||||
goto err;
|
goto err_no_lock;
|
||||||
}
|
}
|
||||||
|
|
||||||
bmove(share.state.header.file_version,(uchar*) myisam_file_magic,4);
|
bmove(share.state.header.file_version,(uchar*) myisam_file_magic,4);
|
||||||
@@ -810,12 +810,14 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
|
|||||||
errpos=0;
|
errpos=0;
|
||||||
mysql_mutex_unlock(&THR_LOCK_myisam);
|
mysql_mutex_unlock(&THR_LOCK_myisam);
|
||||||
if (mysql_file_close(file, MYF(0)))
|
if (mysql_file_close(file, MYF(0)))
|
||||||
goto err;
|
goto err_no_lock;
|
||||||
my_free(rec_per_key_part);
|
my_free(rec_per_key_part);
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
|
||||||
err:
|
err:
|
||||||
mysql_mutex_unlock(&THR_LOCK_myisam);
|
mysql_mutex_unlock(&THR_LOCK_myisam);
|
||||||
|
|
||||||
|
err_no_lock:
|
||||||
save_errno=my_errno;
|
save_errno=my_errno;
|
||||||
switch (errpos) {
|
switch (errpos) {
|
||||||
case 3:
|
case 3:
|
||||||
|
Reference in New Issue
Block a user