mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Add 0x before pointers (to help with debugging)
Add support for VARCHAR with 1 or 2 length bytes Enable VARCHAR packing in MyISAM files (previous patch didn't pack data properly) Give error if we got problems in temporary tables during a SELECT Don't use new table generated by ALTER TABLE if index generation fails Fixed wrong call by range_end() (Could cause an ASSERT in debug mode)
This commit is contained in:
@ -58,29 +58,27 @@ uint _mi_ft_segiterator(register FT_SEG_ITERATOR *ftsi)
|
||||
DBUG_ENTER("_mi_ft_segiterator");
|
||||
|
||||
if (!ftsi->num)
|
||||
{
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
else
|
||||
ftsi->num--;
|
||||
|
||||
ftsi->num--;
|
||||
if (!ftsi->seg)
|
||||
{
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
else
|
||||
ftsi->seg--;
|
||||
|
||||
ftsi->seg--;
|
||||
|
||||
if (ftsi->seg->null_bit &&
|
||||
(ftsi->rec[ftsi->seg->null_pos] & ftsi->seg->null_bit))
|
||||
{
|
||||
ftsi->pos=0;
|
||||
DBUG_RETURN(1);
|
||||
ftsi->pos=0;
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
ftsi->pos= ftsi->rec+ftsi->seg->start;
|
||||
if (ftsi->seg->flag & HA_VAR_LENGTH_PART)
|
||||
{
|
||||
ftsi->len=uint2korr(ftsi->pos);
|
||||
ftsi->pos+=2; /* Skip VARCHAR length */
|
||||
uint pack_length= (ftsi->seg->bit_start);
|
||||
ftsi->len= (pack_length == 1 ? (uint) *(uchar*) ftsi->pos :
|
||||
uint2korr(ftsi->pos));
|
||||
ftsi->pos+= pack_length; /* Skip VARCHAR length */
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
if (ftsi->seg->flag & HA_BLOB_PART)
|
||||
@ -296,9 +294,11 @@ uint _ft_make_key(MI_INFO *info, uint keynr, byte *keybuf, FT_WORD *wptr,
|
||||
DBUG_RETURN(_mi_make_key(info,keynr,(uchar*) keybuf,buf,filepos));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
convert key value to ft2
|
||||
*/
|
||||
|
||||
uint _mi_ft_convert_to_ft2(MI_INFO *info, uint keynr, uchar *key)
|
||||
{
|
||||
my_off_t root;
|
||||
@ -316,9 +316,12 @@ uint _mi_ft_convert_to_ft2(MI_INFO *info, uint keynr, uchar *key)
|
||||
|
||||
get_key_full_length_rdonly(key_length, key);
|
||||
while (_mi_ck_delete(info, keynr, key, key_length) == 0)
|
||||
/* nothing to do here.
|
||||
_mi_ck_delete() will populate info->ft1_to_ft2 with deleted keys
|
||||
*/;
|
||||
{
|
||||
/*
|
||||
nothing to do here.
|
||||
_mi_ck_delete() will populate info->ft1_to_ft2 with deleted keys
|
||||
*/
|
||||
}
|
||||
|
||||
/* creating pageful of keys */
|
||||
mi_putint(info->buff,length+2,0);
|
||||
|
Reference in New Issue
Block a user