mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
bug 283: FULLTEXT index on a TEXT filed converted to a CHAR field doesn't work anymore
This commit is contained in:
@ -215,3 +215,14 @@ test.t1 repair status OK
|
|||||||
select * from t1 where match (a) against ('aaaa');
|
select * from t1 where match (a) against ('aaaa');
|
||||||
a
|
a
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
drop table if exists t1;
|
||||||
|
create table t1 ( ref_mag text not null, fulltext (ref_mag));
|
||||||
|
insert into t1 values ('test');
|
||||||
|
select ref_mag from t1 where match ref_mag against ('+test' in boolean mode);
|
||||||
|
ref_mag
|
||||||
|
test
|
||||||
|
alter table t1 change ref_mag ref_mag char (255) not null;
|
||||||
|
select ref_mag from t1 where match ref_mag against ('+test' in boolean mode);
|
||||||
|
ref_mag
|
||||||
|
test
|
||||||
|
drop table t1;
|
||||||
|
@ -173,3 +173,16 @@ repair table t1;
|
|||||||
select * from t1 where match (a) against ('aaaa');
|
select * from t1 where match (a) against ('aaaa');
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# bug 283 by jocelyn fournier <joc@presence-pc.com>
|
||||||
|
# FULLTEXT index on a TEXT filed converted to a CHAR field doesn't work anymore
|
||||||
|
#
|
||||||
|
|
||||||
|
drop table if exists t1;
|
||||||
|
create table t1 ( ref_mag text not null, fulltext (ref_mag));
|
||||||
|
insert into t1 values ('test');
|
||||||
|
select ref_mag from t1 where match ref_mag against ('+test' in boolean mode);
|
||||||
|
alter table t1 change ref_mag ref_mag char (255) not null;
|
||||||
|
select ref_mag from t1 where match ref_mag against ('+test' in boolean mode);
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
@ -569,6 +569,14 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
|
|||||||
column->field_name);
|
column->field_name);
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
}
|
}
|
||||||
|
/* for fulltext keys keyseg length is 1 for blobs (it's ignored in
|
||||||
|
ft code anyway, and 0 (set to column width later) for char's.
|
||||||
|
it has to be correct col width for char's, as char data are not
|
||||||
|
prefixed with length (unlike blobs, where ft code takes data length
|
||||||
|
from a data prefix, ignoring column->length).
|
||||||
|
*/
|
||||||
|
if (key->type == Key::FULLTEXT)
|
||||||
|
column->length=test(f_is_blob(sql_field->pack_flag));
|
||||||
if (f_is_blob(sql_field->pack_flag))
|
if (f_is_blob(sql_field->pack_flag))
|
||||||
{
|
{
|
||||||
if (!(file->table_flags() & HA_BLOB_KEY))
|
if (!(file->table_flags() & HA_BLOB_KEY))
|
||||||
@ -578,10 +586,6 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
|
|||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
}
|
}
|
||||||
if (!column->length)
|
if (!column->length)
|
||||||
{
|
|
||||||
if (key->type == Key::FULLTEXT)
|
|
||||||
column->length=1; /* ft-code ignores it anyway :-) */
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
my_printf_error(ER_BLOB_KEY_WITHOUT_LENGTH,
|
my_printf_error(ER_BLOB_KEY_WITHOUT_LENGTH,
|
||||||
ER(ER_BLOB_KEY_WITHOUT_LENGTH),MYF(0),
|
ER(ER_BLOB_KEY_WITHOUT_LENGTH),MYF(0),
|
||||||
@ -589,7 +593,6 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
|
|||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!(sql_field->flags & NOT_NULL_FLAG))
|
if (!(sql_field->flags & NOT_NULL_FLAG))
|
||||||
{
|
{
|
||||||
if (key->type == Key::PRIMARY)
|
if (key->type == Key::PRIMARY)
|
||||||
|
Reference in New Issue
Block a user