Fixed that myisamchk -R works on text columns
Fixed typo when removing space from argument to -O
This commit is contained in:
parent
abc5ef2b3e
commit
0ccc30f40c
@ -22806,8 +22806,8 @@ The disadvantages with @code{MERGE} tables are:
|
|||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
You can't use @code{INSERT} on @code{MERGE} tables, as @strong{MySQL} can't know
|
You can't use @code{INSERT} on @code{MERGE} tables, as @strong{MySQL}
|
||||||
in which of the tables we should insert the row.
|
can't know in which of the tables we should insert the row.
|
||||||
@item
|
@item
|
||||||
You can only use identical @code{MyISAM} tables for a @code{MERGE} table.
|
You can only use identical @code{MyISAM} tables for a @code{MERGE} table.
|
||||||
@item
|
@item
|
||||||
@ -22825,7 +22825,11 @@ will need to read the next key block. This makes @code{MERGE} keys much slower
|
|||||||
on @code{eq_ref} searches, but not much slower on @code{ref} searches.
|
on @code{eq_ref} searches, but not much slower on @code{ref} searches.
|
||||||
@xref{EXPLAIN}.
|
@xref{EXPLAIN}.
|
||||||
@item
|
@item
|
||||||
You can't yet easily map the @code{MERGE} table from within @strong{MySQL}.
|
You can't do @code{DROP TABLE}, @code{ALTER TABLE} or @code{DELETE FROM
|
||||||
|
table_name} without a @code{WHERE} clause on any of the table that is
|
||||||
|
mapped by a @code{MERGE} table that is 'open'. If you do this, the
|
||||||
|
@code{MERGE} table may still refer to the original table and you will
|
||||||
|
get unexpected results.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
The following example shows you how to use @code{MERGE} tables:
|
The following example shows you how to use @code{MERGE} tables:
|
||||||
@ -41442,6 +41446,8 @@ not yet 100 % confident in this code.
|
|||||||
@appendixsubsec Changes in release 3.23.34
|
@appendixsubsec Changes in release 3.23.34
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
|
Allow space around @code{=} in argument to @code{--set-variable}.
|
||||||
|
@item
|
||||||
Fixed problem in automatic repair that could let some threads in state
|
Fixed problem in automatic repair that could let some threads in state
|
||||||
@code{Waiting for table}.
|
@code{Waiting for table}.
|
||||||
@item
|
@item
|
||||||
|
@ -1723,6 +1723,23 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
|
|||||||
printf("- recovering (with sort) MyISAM-table '%s'\n",name);
|
printf("- recovering (with sort) MyISAM-table '%s'\n",name);
|
||||||
printf("Data records: %s\n", llstr(start_records,llbuff));
|
printf("Data records: %s\n", llstr(start_records,llbuff));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Hmm, repair_by_sort uses find_all_keys, and find_all_keys strictly
|
||||||
|
implies "one row - one key per keynr", while for ft_key one row/keynr
|
||||||
|
can produce as many keys as the number of unique words in the text
|
||||||
|
that's why I disabled repair_by_sort for ft-keys. (serg)
|
||||||
|
*/
|
||||||
|
for (i=0 ; i < share->base.keys ; i++)
|
||||||
|
{
|
||||||
|
if ((((ulonglong) 1 << i) & key_map) &&
|
||||||
|
(share->keyinfo[i].flag & HA_FULLTEXT))
|
||||||
|
{
|
||||||
|
mi_check_print_error(param,
|
||||||
|
"Can`t use repair_by_sort with FULLTEXT key");
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bzero((char*) sort_info,sizeof(*sort_info));
|
bzero((char*) sort_info,sizeof(*sort_info));
|
||||||
if (!(sort_info->key_block=
|
if (!(sort_info->key_block=
|
||||||
alloc_key_blocks(param,
|
alloc_key_blocks(param,
|
||||||
@ -2040,22 +2057,8 @@ static int sort_key_read(SORT_INFO *sort_info, void *key)
|
|||||||
"Found too many records; Can`t continue");
|
"Found too many records; Can`t continue");
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
/* Hmm, repair_by_sort uses find_all_keys, and find_all_keys strictly
|
(void) _mi_make_key(info,sort_info->key,key,sort_info->record,
|
||||||
implies "one row - one key per keynr", while for ft_key one row/keynr
|
sort_info->filepos);
|
||||||
can produce as many keys as the number of unique words in the text
|
|
||||||
that's why I disabled repair_by_sort for ft-keys. (serg)
|
|
||||||
*/
|
|
||||||
if (sort_info->keyinfo->flag & HA_FULLTEXT )
|
|
||||||
{
|
|
||||||
mi_check_print_error(sort_info->param,
|
|
||||||
"Can`t use repair_by_sort with FULLTEXT key");
|
|
||||||
DBUG_RETURN(1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
VOID(_mi_make_key(info,sort_info->key,key,sort_info->record,
|
|
||||||
sort_info->filepos));
|
|
||||||
}
|
|
||||||
DBUG_RETURN(sort_write_record(sort_info));
|
DBUG_RETURN(sort_write_record(sort_info));
|
||||||
} /* sort_key_read */
|
} /* sort_key_read */
|
||||||
|
|
||||||
|
@ -201,7 +201,7 @@ static struct option long_options[] =
|
|||||||
|
|
||||||
static void print_version(void)
|
static void print_version(void)
|
||||||
{
|
{
|
||||||
printf("%s Ver 1.44 for %s at %s\n",my_progname,SYSTEM_TYPE,
|
printf("%s Ver 1.45 for %s at %s\n",my_progname,SYSTEM_TYPE,
|
||||||
MACHINE_TYPE);
|
MACHINE_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
/* This file is included by all internal myisam files */
|
/* This file is included by all internal myisam files */
|
||||||
|
|
||||||
#define ISAM_LIBRARY
|
|
||||||
#include "myisam.h" /* Structs & some defines */
|
#include "myisam.h" /* Structs & some defines */
|
||||||
#include "myisampack.h" /* packing of keys */
|
#include "myisampack.h" /* packing of keys */
|
||||||
#ifdef THREAD
|
#ifdef THREAD
|
||||||
|
@ -53,15 +53,16 @@ my_bool set_changeable_var(my_string str,CHANGEABLE_VAR *vars)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
uint length,found_count=0;
|
uint length,found_count=0;
|
||||||
CHANGEABLE_VAR *var,*found, *var_end;
|
CHANGEABLE_VAR *var,*found;
|
||||||
|
my_string var_end;
|
||||||
const char *name;
|
const char *name;
|
||||||
long num;
|
long num;
|
||||||
|
|
||||||
/* Skip end space from variable */
|
/* Skip end space from variable */
|
||||||
for (var_end=end ; end > str && is_space(end[-1]) ; end--) ;
|
for (var_end=end ; end > str && isspace(var_end[-1]) ; var_end--) ;
|
||||||
length=(uint) (var_end-str);
|
length=(uint) (var_end-str);
|
||||||
/* Skip start space from argument */
|
/* Skip start space from argument */
|
||||||
for (end++ ; is_space(*end) ; end++) ;
|
for (end++ ; isspace(*end) ; end++) ;
|
||||||
|
|
||||||
for (var=vars,found=0 ; (name=var->name) ; var++)
|
for (var=vars,found=0 ; (name=var->name) ; var++)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user