Delayed keys + portability fixes
This commit is contained in:
parent
1777d4dbbe
commit
2f450e4fc7
@ -41,3 +41,6 @@ DEFS = -DUNDEF_THREADS_HACK
|
|||||||
|
|
||||||
thread_test.o: thread_test.c
|
thread_test.o: thread_test.c
|
||||||
$(COMPILE) -c @MT_INCLUDES@ $(INCLUDES) $<
|
$(COMPILE) -c @MT_INCLUDES@ $(INCLUDES) $<
|
||||||
|
|
||||||
|
# Don't update the files from bitkeeper
|
||||||
|
%::SCCS/s.%
|
||||||
|
@ -211,6 +211,7 @@ AC_MSG_RESULT($mysql_cv_sys_os)
|
|||||||
case "$target_os" in
|
case "$target_os" in
|
||||||
sco3.2v5*)
|
sco3.2v5*)
|
||||||
CFLAGS="$CFLAGS -DSCO"
|
CFLAGS="$CFLAGS -DSCO"
|
||||||
|
CXXFLAGS="$CXXFLAGS -DSCO"
|
||||||
LD='$(CC) $(CFLAGS)'
|
LD='$(CC) $(CFLAGS)'
|
||||||
case "$CFLAGS" in
|
case "$CFLAGS" in
|
||||||
*-belf*)
|
*-belf*)
|
||||||
|
@ -51,3 +51,6 @@ my_global.h: global.h
|
|||||||
# generated by configure from the .h.in files
|
# generated by configure from the .h.in files
|
||||||
dist-hook:
|
dist-hook:
|
||||||
rm -f $(distdir)/mysql_version.h $(distdir)/my_config.h
|
rm -f $(distdir)/mysql_version.h $(distdir)/my_config.h
|
||||||
|
|
||||||
|
# Don't update the files from bitkeeper
|
||||||
|
%::SCCS/s.%
|
||||||
|
@ -147,3 +147,6 @@ do-lib-dist:
|
|||||||
echo ' $$(AR) r $$@ $$?' >>$$dir/Makefile; \
|
echo ' $$(AR) r $$@ $$?' >>$$dir/Makefile; \
|
||||||
gtar cvzf $$dir.tar.gz $$dir; \
|
gtar cvzf $$dir.tar.gz $$dir; \
|
||||||
cd $$dir; gmake
|
cd $$dir; gmake
|
||||||
|
|
||||||
|
# Don't update the files from bitkeeper
|
||||||
|
%::SCCS/s.%
|
||||||
|
@ -1600,7 +1600,7 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
|
|||||||
char llbuff[22];
|
char llbuff[22];
|
||||||
SORT_INFO *sort_info= ¶m->sort_info;
|
SORT_INFO *sort_info= ¶m->sort_info;
|
||||||
ulonglong key_map=share->state.key_map;
|
ulonglong key_map=share->state.key_map;
|
||||||
DBUG_ENTER("rep_by_sort");
|
DBUG_ENTER("mi_repair_by_sort");
|
||||||
|
|
||||||
start_records=info->state->records;
|
start_records=info->state->records;
|
||||||
got_error=1;
|
got_error=1;
|
||||||
@ -1630,9 +1630,6 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
|
|||||||
info->opt_flag|=WRITE_CACHE_USED;
|
info->opt_flag|=WRITE_CACHE_USED;
|
||||||
info->rec_cache.file=info->dfile; /* for sort_delete_record */
|
info->rec_cache.file=info->dfile; /* for sort_delete_record */
|
||||||
|
|
||||||
/* Flush key cache for this file if we are calling this outside myisamchk */
|
|
||||||
flush_key_blocks(share->kfile, FLUSH_IGNORE_CHANGED);
|
|
||||||
|
|
||||||
if (!(sort_info->record=(byte*) my_malloc((uint) share->base.pack_reclength,
|
if (!(sort_info->record=(byte*) my_malloc((uint) share->base.pack_reclength,
|
||||||
MYF(0))))
|
MYF(0))))
|
||||||
{
|
{
|
||||||
@ -1669,15 +1666,24 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
|
|||||||
info->update= (short) (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED);
|
info->update= (short) (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED);
|
||||||
if (!(param->testflag & T_CREATE_MISSING_KEYS))
|
if (!(param->testflag & T_CREATE_MISSING_KEYS))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
Flush key cache for this file if we are calling this outside
|
||||||
|
myisamchk
|
||||||
|
*/
|
||||||
|
flush_key_blocks(share->kfile, FLUSH_IGNORE_CHANGED);
|
||||||
|
/* Clear the pointers to the given rows */
|
||||||
for (i=0 ; i < share->base.keys ; i++)
|
for (i=0 ; i < share->base.keys ; i++)
|
||||||
share->state.key_root[i]= HA_OFFSET_ERROR;
|
share->state.key_root[i]= HA_OFFSET_ERROR;
|
||||||
for (i=0 ; i < share->state.header.max_block_size ; i++)
|
for (i=0 ; i < share->state.header.max_block_size ; i++)
|
||||||
share->state.key_del[i]= HA_OFFSET_ERROR;
|
share->state.key_del[i]= HA_OFFSET_ERROR;
|
||||||
|
info->state->key_file_length=share->base.keystart;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (flush_key_blocks(share->kfile, FLUSH_FORCE_WRITE))
|
||||||
|
goto err;
|
||||||
key_map= ~key_map; /* Create the missing keys */
|
key_map= ~key_map; /* Create the missing keys */
|
||||||
|
}
|
||||||
info->state->key_file_length=share->base.keystart;
|
|
||||||
|
|
||||||
sort_info->info=info;
|
sort_info->info=info;
|
||||||
sort_info->param = param;
|
sort_info->param = param;
|
||||||
@ -1758,6 +1764,7 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
|
|||||||
if (param->testflag & T_STATISTICS)
|
if (param->testflag & T_STATISTICS)
|
||||||
update_key_parts(sort_info->keyinfo, rec_per_key_part, sort_info->unique,
|
update_key_parts(sort_info->keyinfo, rec_per_key_part, sort_info->unique,
|
||||||
(ulonglong) info->state->records);
|
(ulonglong) info->state->records);
|
||||||
|
share->state.key_map|=(ulonglong) 1 << sort_info->key;
|
||||||
|
|
||||||
if (sort_info->fix_datafile)
|
if (sort_info->fix_datafile)
|
||||||
{
|
{
|
||||||
@ -2933,7 +2940,8 @@ void mi_dectivate_non_unique_index(MI_INFO *info, ha_rows rows)
|
|||||||
MI_KEYDEF *key=share->keyinfo;
|
MI_KEYDEF *key=share->keyinfo;
|
||||||
for (i=0 ; i < share->base.keys ; i++,key++)
|
for (i=0 ; i < share->base.keys ; i++,key++)
|
||||||
{
|
{
|
||||||
if (!(key->flag & HA_NOSAME) && ! mi_too_big_key_for_sort(key,rows))
|
if (!(key->flag & HA_NOSAME) && ! mi_too_big_key_for_sort(key,rows) &&
|
||||||
|
info->s->base.auto_key != i+1)
|
||||||
{
|
{
|
||||||
share->state.key_map&= ~ ((ulonglong) 1 << i);
|
share->state.key_map&= ~ ((ulonglong) 1 << i);
|
||||||
info->update|= HA_STATE_CHANGED;
|
info->update|= HA_STATE_CHANGED;
|
||||||
|
@ -77,3 +77,6 @@ SUFFIXES = .sh
|
|||||||
$< > $@-t
|
$< > $@-t
|
||||||
@CHMOD@ +x $@-t
|
@CHMOD@ +x $@-t
|
||||||
@MV@ $@-t $@
|
@MV@ $@-t $@
|
||||||
|
|
||||||
|
# Don't update the files from bitkeeper
|
||||||
|
%::SCCS/s.%
|
||||||
|
@ -124,3 +124,6 @@ sql_lex.o: lex_hash.h
|
|||||||
|
|
||||||
#distclean:
|
#distclean:
|
||||||
# rm -f lex_hash.h
|
# rm -f lex_hash.h
|
||||||
|
|
||||||
|
# Don't update the files from bitkeeper
|
||||||
|
%::SCCS/s.%
|
||||||
|
@ -1154,7 +1154,6 @@ bool delayed_insert::handle_inserts(void)
|
|||||||
int
|
int
|
||||||
select_insert::prepare(List<Item> &values)
|
select_insert::prepare(List<Item> &values)
|
||||||
{
|
{
|
||||||
TABLE *form=table;
|
|
||||||
DBUG_ENTER("select_insert::prepare");
|
DBUG_ENTER("select_insert::prepare");
|
||||||
|
|
||||||
save_time_stamp=table->time_stamp;
|
save_time_stamp=table->time_stamp;
|
||||||
@ -1163,15 +1162,16 @@ select_insert::prepare(List<Item> &values)
|
|||||||
|
|
||||||
if (fields->elements)
|
if (fields->elements)
|
||||||
{
|
{
|
||||||
restore_record(form,2); // Get empty record
|
restore_record(table,2); // Get empty record
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
form->record[0][0]=form->record[2][0]; // Fix delete marker
|
table->record[0][0]=table->record[2][0]; // Fix delete marker
|
||||||
form->next_number_field=form->found_next_number_field;
|
table->next_number_field=table->found_next_number_field;
|
||||||
thd->count_cuted_fields=1; /* calc cuted fields */
|
thd->count_cuted_fields=1; /* calc cuted fields */
|
||||||
thd->cuted_fields=0;
|
thd->cuted_fields=0;
|
||||||
if (info.handle_duplicates != DUP_REPLACE)
|
if (info.handle_duplicates != DUP_REPLACE)
|
||||||
form->file->extra(HA_EXTRA_WRITE_CACHE);
|
table->file->extra(HA_EXTRA_WRITE_CACHE);
|
||||||
|
table->file->deactivate_non_unique_index((ha_rows) 0);
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1213,14 +1213,16 @@ bool select_insert::send_data(List<Item> &values)
|
|||||||
void select_insert::send_error(uint errcode,const char *err)
|
void select_insert::send_error(uint errcode,const char *err)
|
||||||
{
|
{
|
||||||
::send_error(&thd->net,errcode,err);
|
::send_error(&thd->net,errcode,err);
|
||||||
VOID(table->file->extra(HA_EXTRA_NO_CACHE));
|
table->file->extra(HA_EXTRA_NO_CACHE);
|
||||||
|
table->file->activate_all_index(thd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool select_insert::send_eof()
|
bool select_insert::send_eof()
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
if ((error=table->file->extra(HA_EXTRA_NO_CACHE)))
|
if ((error=table->file->extra(HA_EXTRA_NO_CACHE)) ||
|
||||||
|
(error=table->file->activate_all_index(thd)))
|
||||||
{
|
{
|
||||||
table->file->print_error(error,MYF(0));
|
table->file->print_error(error,MYF(0));
|
||||||
::send_error(&thd->net);
|
::send_error(&thd->net);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user