diff options
author | unknown <monty@work.mysql.com> | 2001-09-02 18:38:33 +0200 |
---|---|---|
committer | unknown <monty@work.mysql.com> | 2001-09-02 18:38:33 +0200 |
commit | ddee00a6edc735b3bbef42b7d0d662091debd560 (patch) | |
tree | 4689ffbe50e97ce9a47deb58fa2b9e7decdfc6a8 /myisam | |
parent | 3c951b6d99dd2753522501adce2d28f40d54a5e3 (diff) | |
parent | 1e97b27ee2b908a17c12962778b82237934a6b73 (diff) | |
download | mariadb-git-ddee00a6edc735b3bbef42b7d0d662091debd560.tar.gz |
merge with 3.23.42
config.guess:
Auto merged
config.sub:
Auto merged
ltconfig:
Auto merged
BitKeeper/deleted/.del-violite.c~d7b85be615595ace:
Auto merged
BitKeeper/deleted/.del-violite.c~984c09cffe14a11b:
Auto merged
client/Makefile.am:
Auto merged
include/errmsg.h:
Auto merged
include/global.h:
Auto merged
include/heap.h:
Auto merged
include/my_sys.h:
Auto merged
include/mysql_com.h:
Auto merged
isam/isamlog.c:
Auto merged
libmysql/libmysql.c:
Auto merged
merge/open.c:
Auto merged
myisam/ft_search.c:
Auto merged
myisam/ftdefs.h:
Auto merged
myisam/mi_test_all.sh:
Auto merged
myisam/myisamchk.c:
Auto merged
myisam/myisamlog.c:
Auto merged
myisam/myisampack.c:
Auto merged
myisam/sort.c:
Auto merged
myisammrg/myrg_open.c:
Auto merged
mysys/hash.c:
Auto merged
mysys/mf_casecnv.c:
Auto merged
mysys/mf_format.c:
Auto merged
mysys/my_lib.c:
Auto merged
mysys/tree.c:
Auto merged
sql-bench/bench-init.pl.sh:
Auto merged
sql/filesort.cc:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/ha_myisammrg.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/lex.h:
Auto merged
sql/log.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/net_serv.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
mysql-test/r/func_time.result:
Auto merged
mysql-test/r/innodb.result:
Auto merged
mysql-test/t/bdb.test:
Auto merged
mysql-test/t/err000001.test:
Auto merged
mysql-test/t/func_time.test:
Auto merged
mysql-test/t/innodb.test:
Auto merged
mysql-test/t/overflow.test:
Auto merged
mysql-test/t/show_check.test:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_test.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
strings/ctype.c:
Auto merged
Docs/manual.texi:
Change to 3.23 manual.
(I will later add the changes for 4.0 to this copy)
client/mysql.cc:
merge
client/mysqlbinlog.cc:
merge
client/mysqldump.c:
merge
client/mysqltest.c:
merge
client/thread_test.c:
merge
configure.in:
merge
include/my_pthread.h:
merge
include/mysqld_error.h:
merge
libmysql/net.c:
merge
myisam/mi_cache.c:
merge
myisam/mi_check.c:
merge
mysql-test/t/fulltext.test:
merge
mysys/mf_qsort.c:
merge
sql/lock.cc:
merge
sql/md5.c:
merge
sql/mini_client.cc:
merge
sql/share/czech/errmsg.txt:
merge
sql/share/danish/errmsg.txt:
merge
sql/share/dutch/errmsg.txt:
merge
sql/share/english/errmsg.txt:
merge
sql/share/estonian/errmsg.txt:
merge
sql/share/french/errmsg.txt:
merge
sql/share/german/errmsg.txt:
merge
sql/share/greek/errmsg.txt:
merge
sql/share/hungarian/errmsg.txt:
merge
sql/share/italian/errmsg.txt:
merge
sql/share/japanese/errmsg.txt:
merge
sql/share/korean/errmsg.txt:
merge
sql/share/norwegian-ny/errmsg.txt:
merge
sql/share/norwegian/errmsg.txt:
merge
sql/share/polish/errmsg.txt:
merge
sql/share/portuguese/errmsg.txt:
merge
sql/share/romanian/errmsg.txt:
merge
sql/share/russian/errmsg.txt:
merge
sql/share/slovak/errmsg.txt:
merge
sql/share/spanish/errmsg.txt:
merge
sql/share/swedish/errmsg.txt:
merge
sql/sql_load.cc:
merge
sql/sql_repl.cc:
merge
Diffstat (limited to 'myisam')
-rw-r--r-- | myisam/ft_eval.c | 8 | ||||
-rw-r--r-- | myisam/ft_eval.h | 5 | ||||
-rw-r--r-- | myisam/ft_search.c | 2 | ||||
-rw-r--r-- | myisam/ft_test1.c | 7 | ||||
-rw-r--r-- | myisam/ftdefs.h | 2 | ||||
-rw-r--r-- | myisam/mi_cache.c | 4 | ||||
-rw-r--r-- | myisam/mi_check.c | 37 | ||||
-rw-r--r-- | myisam/mi_packrec.c | 2 | ||||
-rw-r--r-- | myisam/mi_test1.c | 3 | ||||
-rw-r--r-- | myisam/mi_test2.c | 46 | ||||
-rw-r--r-- | myisam/myisamchk.c | 10 | ||||
-rw-r--r-- | myisam/myisamlog.c | 13 | ||||
-rw-r--r-- | myisam/myisampack.c | 72 | ||||
-rw-r--r-- | myisam/sort.c | 13 |
14 files changed, 113 insertions, 111 deletions
diff --git a/myisam/ft_eval.c b/myisam/ft_eval.c index a8e4d8e8881..9466104100a 100644 --- a/myisam/ft_eval.c +++ b/myisam/ft_eval.c @@ -19,6 +19,8 @@ #include <getopt.h> static void print_error(int exit_code, const char *fmt,...); +static void get_options(int argc, char *argv[]); +static int create_record(char *pos, FILE *file); int main(int argc,char *argv[]) { @@ -110,7 +112,7 @@ err: } -void get_options(int argc,char *argv[]) +static void get_options(int argc,char *argv[]) { int c; char *options=(char*) "Vh#:qSs:"; @@ -123,7 +125,7 @@ void get_options(int argc,char *argv[]) { FILE *f; char s[HA_FT_MAXLEN]; int i=0,n=SWL_INIT; - if(!(stopwordlist=malloc(n*sizeof(char *)))) + if(!(stopwordlist=(const char**) malloc(n*sizeof(char *)))) print_error(1,"malloc(%d)",n*sizeof(char *)); if(!(f=fopen(optarg,"r"))) print_error(1,"fopen(%s)",optarg); @@ -165,7 +167,7 @@ void get_options(int argc,char *argv[]) return; } /* get options */ -int create_record(char *pos, FILE *file) +static int create_record(char *pos, FILE *file) { uint tmp; char *ptr; bzero((char *)pos,MAX_REC_LENGTH); diff --git a/myisam/ft_eval.h b/myisam/ft_eval.h index 5d7f41ab04d..d87b6be9c7c 100644 --- a/myisam/ft_eval.h +++ b/myisam/ft_eval.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB +/* Copyright (C) 2000 MySQL AB & Sergei A. Golubchik This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,9 +35,6 @@ MI_COLUMNDEF recinfo[3]; MI_KEYDEF keyinfo[2]; MI_KEYSEG keyseg[10]; -void get_options(int argc,char *argv[]); -int create_record(char *, FILE *); - #define SWL_INIT 500 #define SWL_PLUS 50 diff --git a/myisam/ft_search.c b/myisam/ft_search.c index 711c03722a5..c5a43734d9a 100644 --- a/myisam/ft_search.c +++ b/myisam/ft_search.c @@ -54,7 +54,7 @@ FT_DOCLIST *ft_init_search(void *info, uint keynr, byte *query, int ft_read_next(FT_DOCLIST *handler, char *record) { - MI_INFO *info=handler->info; + MI_INFO *info= (MI_INFO *) handler->info; if (++handler->curdoc >= handler->ndocs) { diff --git a/myisam/ft_test1.c b/myisam/ft_test1.c index dfe8e30383b..5093b591fb2 100644 --- a/myisam/ft_test1.c +++ b/myisam/ft_test1.c @@ -30,8 +30,9 @@ static int create_flag=0,error=0; #define MAX_REC_LENGTH 300 static char record[MAX_REC_LENGTH],read_record[MAX_REC_LENGTH]; -void get_options(int argc,char *argv[]); static int run_test(const char *filename); +static void get_options(int argc, char *argv[]); +static void create_record(char *, int); int main(int argc,char *argv[]) { @@ -46,8 +47,6 @@ static MI_COLUMNDEF recinfo[3]; static MI_KEYDEF keyinfo[2]; static MI_KEYSEG keyseg[10]; -void create_record(char *, int); - static int run_test(const char *filename) { MI_INFO *file; @@ -235,7 +234,7 @@ void create_record(char *pos, int n) /* Read options */ -void get_options(int argc,char *argv[]) +static void get_options(int argc,char *argv[]) { int c; const char *options="hVvsNSKFU#:"; diff --git a/myisam/ftdefs.h b/myisam/ftdefs.h index 6721d136678..1a017d3c73a 100644 --- a/myisam/ftdefs.h +++ b/myisam/ftdefs.h @@ -48,7 +48,7 @@ #define LWS_TF (count) #define LWS_BINARY (count>0) #define LWS_SQUARE (count*count) -#define LWS_LOG (count?(log(count)+1):0) +#define LWS_LOG (count?(log( (double) count)+1):0) /*--------------------------------------------------------------*/ #define PRENORM_NONE (p->weight) #define PRENORM_MAX (p->weight/docstat.max) diff --git a/myisam/mi_cache.c b/myisam/mi_cache.c index 0aae316f23d..6c23916c645 100644 --- a/myisam/mi_cache.c +++ b/myisam/mi_cache.c @@ -76,7 +76,7 @@ int _mi_read_cache(IO_CACHE *info, byte *buff, my_off_t pos, uint length, DBUG_PRINT("error", ("Error %d reading next-multi-part block (Got %d bytes)", my_errno, info->error)); - if (!my_errno) + if (!my_errno || my_errno == -1) my_errno=HA_ERR_WRONG_IN_RECORD; DBUG_RETURN(1); } @@ -93,7 +93,7 @@ int _mi_read_cache(IO_CACHE *info, byte *buff, my_off_t pos, uint length, DBUG_PRINT("error", ("Error %d reading new block (Got %d bytes)", my_errno, (int) read_length)); - if (!my_errno) + if (!my_errno || my_errno == -1) my_errno=HA_ERR_WRONG_IN_RECORD; DBUG_RETURN(1); } diff --git a/myisam/mi_check.c b/myisam/mi_check.c index e5557e5f842..09f5dcc1ec9 100644 --- a/myisam/mi_check.c +++ b/myisam/mi_check.c @@ -460,7 +460,7 @@ int chk_key(MI_CHECK *param, register MI_INFO *info) /* Check that there isn't a row with auto_increment = 0 in the table */ mi_extra(info,HA_EXTRA_KEYREAD); bzero(info->lastkey,keyinfo->seg->length); - if (!mi_rkey(info, info->rec_buff, key, info->lastkey, + if (!mi_rkey(info, info->rec_buff, key, (const byte*) info->lastkey, keyinfo->seg->length, HA_READ_KEY_EXACT)) { /* Don't count this as a real warning, as myisamchk can't correct it */ @@ -710,7 +710,7 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) puts("- check record links"); } - if (!(record= (byte*) my_alloca(info->s->base.pack_reclength))) + if (!(record= (byte*) my_malloc(info->s->base.pack_reclength,MYF(0)))) { mi_check_print_error(param,"Not Enough memory"); DBUG_RETURN(-1); @@ -926,8 +926,9 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) if (block_info.rec_len < (uint) info->s->min_pack_length || block_info.rec_len > (uint) info->s->max_pack_length) { - mi_check_print_error(param,"Found block with wrong recordlength: %d at %s", - block_info.rec_len, llstr(start_recpos,llbuff)); + mi_check_print_error(param, + "Found block with wrong recordlength: %d at %s", + block_info.rec_len, llstr(start_recpos,llbuff)); got_error=1; break; } @@ -936,7 +937,8 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) goto err; if (_mi_pack_rec_unpack(info,record,info->rec_buff,block_info.rec_len)) { - mi_check_print_error(param,"Found wrong record at %s", llstr(start_recpos,llbuff)); + mi_check_print_error(param,"Found wrong record at %s", + llstr(start_recpos,llbuff)); got_error=1; } if (static_row_size) @@ -1084,12 +1086,12 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) printf("Lost space: %12s Linkdata: %10s\n", llstr(empty,llbuff),llstr(link_used,llbuff2)); } - my_afree((gptr) record); + my_free((gptr) record,MYF(0)); DBUG_RETURN (error); err: - mi_check_print_error(param,"got error: %d when reading datafile",my_errno); + mi_check_print_error(param,"got error: %d when reading datafile at record: %s",my_errno, llstr(records,llbuff)); err2: - my_afree((gptr) record); + my_free((gptr) record,MYF(0)); param->retry_without_quick=1; DBUG_RETURN(1); } /* chk_data_link */ @@ -1111,6 +1113,7 @@ int mi_repair(MI_CHECK *param, register MI_INFO *info, SORT_INFO *sort_info= ¶m->sort_info; DBUG_ENTER("mi_repair"); + sort_info->buff=sort_info->record=0; start_records=info->state->records; new_header_length=(param->testflag & T_UNPACK) ? 0L : share->pack.header_length; @@ -1199,7 +1202,7 @@ int mi_repair(MI_CHECK *param, register MI_INFO *info, del=info->state->del; info->state->records=info->state->del=share->state.split=0; info->state->empty=0; - if (sort_info->new_data_file_type != COMPRESSED_RECORD && !rep_quick) + if (!rep_quick) share->state.checksum=0; info->update= (short) (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED); for (i=0 ; i < info->s->base.keys ; i++) @@ -1338,9 +1341,7 @@ err: } mi_mark_crashed_on_repair(info); } - if (sort_info->record) - my_free(sort_info->record,MYF(0)); - + my_free(sort_info->record,MYF(MY_ALLOW_ZERO_PTR)); my_free(sort_info->buff,MYF(MY_ALLOW_ZERO_PTR)); VOID(end_io_cache(¶m->read_cache)); info->opt_flag&= ~(READ_CACHE_USED | WRITE_CACHE_USED); @@ -1874,8 +1875,7 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info, sort_param.sort_info=sort_info; del=info->state->del; - if (sort_info->new_data_file_type != COMPRESSED_RECORD && - ! rep_quick) + if (! rep_quick) share->state.checksum=0; rec_per_key_part= param->rec_per_key_part; @@ -2093,8 +2093,10 @@ static int sort_key_read(SORT_INFO *sort_info, void *key) "Found too many records; Can`t continue"); DBUG_RETURN(1); } - sort_info->real_key_length=info->s->rec_reflength+_mi_make_key(info, - sort_info->key,key,sort_info->record,sort_info->filepos); + sort_info->real_key_length=(info->s->rec_reflength+ + _mi_make_key(info, sort_info->key, + (uchar*) key, sort_info->record, + sort_info->filepos)); DBUG_RETURN(sort_write_record(sort_info)); } /* sort_key_read */ @@ -2474,6 +2476,7 @@ static int sort_get_next_record(SORT_INFO *sort_info) llstr(sort_info->pos,llbuff)); continue; } + info->checksum=mi_checksum(info,sort_info->record); if (!sort_info->fix_datafile) sort_info->filepos=sort_info->pos; sort_info->max_pos=(sort_info->pos=block_info.filepos+ @@ -2552,6 +2555,7 @@ int sort_write_record(SORT_INFO *sort_info) DBUG_RETURN(1); } sort_info->filepos+=block_length; + info->s->state.checksum+=info->checksum; break; case COMPRESSED_RECORD: reclength=info->packed_length; @@ -2564,6 +2568,7 @@ int sort_write_record(SORT_INFO *sort_info) mi_check_print_error(param,"%d when writing to datafile",my_errno); DBUG_RETURN(1); } + info->s->state.checksum+=info->checksum; sort_info->filepos+=reclength+length; break; } diff --git a/myisam/mi_packrec.c b/myisam/mi_packrec.c index be7f9dcae0a..68d546b2010 100644 --- a/myisam/mi_packrec.c +++ b/myisam/mi_packrec.c @@ -962,7 +962,7 @@ int _mi_read_rnd_pack_record(MI_INFO *info, byte *buf, b_type=_mi_pack_get_block_info(info,&block_info,info->dfile,filepos, info->rec_buff); if (b_type) - goto err; + goto err; /* Error code is already set */ #ifndef DBUG_OFF if (block_info.rec_len > share->max_pack_length) { diff --git a/myisam/mi_test1.c b/myisam/mi_test1.c index 59b9ceb266e..ae09bd4142e 100644 --- a/myisam/mi_test1.c +++ b/myisam/mi_test1.c @@ -18,8 +18,7 @@ #include "myisam.h" #include <getopt.h> -#include <m_ctype.h> - +#include <m_string.h> #define MAX_REC_LENGTH 1024 diff --git a/myisam/mi_test2.c b/myisam/mi_test2.c index 746042554c8..b66b02afdf9 100644 --- a/myisam/mi_test2.c +++ b/myisam/mi_test2.c @@ -59,11 +59,11 @@ static MI_KEYSEG glob_keyseg[MYISAM_KEYS][MAX_PARTS]; /* Test program */ -int main(int argc, char **argv) +int main(int argc, char *argv[]) { uint i; int j,n1,n2,n3,error,k; - uint write_count,update,dupp_keys,delete,start,length,blob_pos, + uint write_count,update,dupp_keys,opt_delete,start,length,blob_pos, reclength,ant,found_parts; my_off_t lastpos; ha_rows range_records,records; @@ -180,7 +180,7 @@ int main(int argc, char **argv) recinfo[6].null_pos=0; } - write_count=update=dupp_keys=delete=0; + write_count=update=dupp_keys=opt_delete=0; blob_buffer=0; for (i=1000 ; i>0 ; i--) key1[i]=0; @@ -280,14 +280,14 @@ int main(int argc, char **argv) printf("can't find key1: \"%s\"\n",key); goto err; } - if (delete == (uint) remove_count) /* While testing */ + if (opt_delete == (uint) remove_count) /* While testing */ goto end; if (mi_delete(file,read_record)) { printf("error: %d; can't delete record: \"%s\"\n", my_errno,read_record); goto err; } - delete++; + opt_delete++; key1[atoi(read_record+keyinfo[0].seg[0].start)]--; key3[atoi(read_record+keyinfo[2].seg[0].start)]=0; } @@ -418,10 +418,10 @@ int main(int argc, char **argv) } while ((error=mi_rnext(file,read_record3,0)) == 0 && ant < write_count+10) ant++; - if (ant != write_count - delete || error != HA_ERR_END_OF_FILE) + if (ant != write_count - opt_delete || error != HA_ERR_END_OF_FILE) { printf("next: I found: %d records of %d (error: %d)\n", - ant, write_count - delete, error); + ant, write_count - opt_delete, error); goto end; } if (mi_rlast(file,read_record2,0) || @@ -435,7 +435,7 @@ int main(int argc, char **argv) ant=1; while (mi_rprev(file,read_record3,0) == 0 && ant < write_count+10) ant++; - if (ant != write_count - delete) + if (ant != write_count - opt_delete) { printf("prev: I found: %d records of %d\n",ant,write_count); goto end; @@ -495,7 +495,7 @@ int main(int argc, char **argv) if (mi_rkey(file,read_record,0,key,0,HA_READ_KEY_EXACT)) goto err; if (mi_rnext(file,read_record3,0)) goto err; if (mi_delete(file,read_record3)) goto err; - delete++; + opt_delete++; ant=1; while (mi_rnext(file,read_record3,0) == 0 && bcmp(read_record3+start,key,length) == 0) ant++; @@ -513,7 +513,7 @@ int main(int argc, char **argv) if (mi_rprev(file,read_record3,0)) goto err; if (mi_rprev(file,read_record3,0)) goto err; if (mi_delete(file,read_record3)) goto err; - delete++; + opt_delete++; ant=1; while (mi_rprev(file,read_record3,0) == 0 && bcmp(read_record3+start,key,length) == 0) ant++; @@ -530,7 +530,7 @@ int main(int argc, char **argv) DBUG_PRINT("progpos",("first - delete - next -> last")); if (mi_rkey(file,read_record3,0,key,0,HA_READ_KEY_EXACT)) goto err; if (mi_delete(file,read_record3)) goto err; - delete++; + opt_delete++; ant=1; if (mi_rnext(file,read_record,0)) goto err; /* Skall finnas poster */ @@ -547,7 +547,7 @@ int main(int argc, char **argv) DBUG_PRINT("progpos",("last - delete - prev -> first")); if (mi_rprev(file,read_record3,0)) goto err; if (mi_delete(file,read_record3)) goto err; - delete++; + opt_delete++; ant=0; while (mi_rprev(file,read_record3,0) == 0 && bcmp(read_record3+start,key,length) == 0) ant++; @@ -641,7 +641,7 @@ int main(int argc, char **argv) if (!silent) printf("- mi_info\n"); mi_status(file,&info,HA_STATUS_VARIABLE | HA_STATUS_CONST); - if (info.records != write_count-delete || info.deleted > delete + update + if (info.records != write_count-opt_delete || info.deleted > opt_delete + update || info.keys != keys) { puts("Wrong info from mi_info"); @@ -678,10 +678,10 @@ int main(int argc, char **argv) while ((error=mi_rrnd(file,record,HA_OFFSET_ERROR)) != HA_ERR_END_OF_FILE && ant < write_count + 10) ant+= error ? 0 : 1; - if (ant != write_count-delete) + if (ant != write_count-opt_delete) { printf("rrnd with cache: I can only find: %d records of %d\n", - ant,write_count-delete); + ant,write_count-opt_delete); goto end; } if (mi_extra(file,HA_EXTRA_NO_CACHE)) @@ -695,10 +695,10 @@ int main(int argc, char **argv) while ((error=mi_scan(file,record)) != HA_ERR_END_OF_FILE && ant < write_count + 10) ant+= error ? 0 : 1; - if (ant != write_count-delete) + if (ant != write_count-opt_delete) { printf("scan with cache: I can only find: %d records of %d\n", - ant,write_count-delete); + ant,write_count-opt_delete); goto end; } @@ -724,7 +724,7 @@ int main(int argc, char **argv) lastpos=info.recpos; if (error == 0) { - if (delete == (uint) remove_count) /* While testing */ + if (opt_delete == (uint) remove_count) /* While testing */ goto end; if (mi_rsame(file,read_record,-1)) { @@ -751,19 +751,19 @@ int main(int argc, char **argv) if (mi_delete(file,read_record)) { printf("can't delete record: %6.6s, delete_count: %d\n", - read_record, delete); + read_record, opt_delete); goto err; } - delete++; + opt_delete++; } else found_parts++; } if (my_errno != HA_ERR_END_OF_FILE && my_errno != HA_ERR_RECORD_DELETED) printf("error: %d from mi_rrnd\n",my_errno); - if (write_count != delete) + if (write_count != opt_delete) { - printf("Deleted only %d of %d records (%d parts)\n",delete,write_count, + printf("Deleted only %d of %d records (%d parts)\n",opt_delete,write_count, found_parts); goto err; } @@ -774,7 +774,7 @@ end: if (!silent) { printf("\nFollowing test have been made:\n"); - printf("Write records: %d\nUpdate records: %d\nSame-key-read: %d\nDelete records: %d\n", write_count,update,dupp_keys,delete); + printf("Write records: %d\nUpdate records: %d\nSame-key-read: %d\nDelete records: %d\n", write_count,update,dupp_keys,opt_delete); if (rec_pointer_size) printf("Record pointer size: %d\n",rec_pointer_size); if (key_cacheing) diff --git a/myisam/myisamchk.c b/myisam/myisamchk.c index fa07d19ddbd..6f782b2f80f 100644 --- a/myisam/myisamchk.c +++ b/myisam/myisamchk.c @@ -39,7 +39,6 @@ static uint decode_bits; static char **default_argv; static const char *load_default_groups[]= { "myisamchk", 0 }; static const char *set_charset_name; -static uint8 set_charset_number; static CHARSET_INFO *set_charset; static const char *type_names[]= @@ -206,7 +205,7 @@ static struct option long_options[] = static void print_version(void) { - printf("%s Ver 1.49 for %s at %s\n",my_progname,SYSTEM_TYPE, + printf("%s Ver 1.51 for %s at %s\n",my_progname,SYSTEM_TYPE, MACHINE_TYPE); } @@ -606,9 +605,10 @@ static int myisamchk(MI_CHECK *param, my_string filename) (((ulonglong) 1L << share->base.keys)-1)) || test_if_almost_full(info) || info->s->state.header.file_version[3] != myisam_file_magic[3] || - (set_charset && set_charset_number != share->state.header.language))) + (set_charset && set_charset->number != share->state.header.language))) { - check_param.language=set_charset_number; + if (set_charset) + check_param.language=set_charset->number; if (recreate_table(&check_param, &info,filename)) { VOID(fprintf(stderr, @@ -949,7 +949,7 @@ static void descript(MI_CHECK *param, register MI_INFO *info, my_string name) share->base.raid_chunks, share->base.raid_chunksize); } - if (share->options & HA_OPTION_CHECKSUM) + if (share->options & (HA_OPTION_CHECKSUM | HA_OPTION_COMPRESS_RECORD)) printf("Checksum: %23s\n",llstr(info->s->state.checksum,llbuff)); ; if (share->options & HA_OPTION_DELAY_KEY_WRITE) diff --git a/myisam/myisamlog.c b/myisam/myisamlog.c index 78c3faa72ed..fb199c22765 100644 --- a/myisam/myisamlog.c +++ b/myisam/myisamlog.c @@ -21,7 +21,7 @@ #endif #include "myisamdef.h" -#include "my_tree.h" +#include <my_tree.h> #include <stdarg.h> #ifdef HAVE_GETRUSAGE #include <sys/resource.h> @@ -251,12 +251,12 @@ static void get_options(register int *argc, register char ***argv) /* Fall through */ case 'I': case '?': - printf("%s Ver 1.3 for %s at %s\n",my_progname,SYSTEM_TYPE, + printf("%s Ver 1.4 for %s at %s\n",my_progname,SYSTEM_TYPE, MACHINE_TYPE); puts("By Monty, for your professional use\n"); if (version) break; - puts("Write info about whats in a myisam log file."); + puts("Write info about whats in a MyISAM log file."); printf("If no file name is given %s is used\n",log_filename); puts(""); printf(usage,my_progname); @@ -266,7 +266,7 @@ static void get_options(register int *argc, register char ***argv) puts(" -o \"offset\" -p # \"remove # components from path\""); puts(" -r \"recover\" -R \"file recordposition\""); puts(" -u \"update\" -v \"verbose\" -w \"write file\""); - puts(" -D \"myisam compileled with DBUG\" -P \"processes\""); + puts(" -D \"myisam compiled with DBUG\" -P \"processes\""); puts("\nOne can give a second and a third '-v' for more verbose."); puts("Normaly one does a update (-u)."); puts("If a recover is done all writes and all possibly updates and deletes is done\nand errors are only counted."); @@ -376,10 +376,8 @@ static int examine_log(my_string file_name, char **table_names) } if (curr_file_info) - { printf("\nWarning: %s is opened with same process and filenumber\nMaybe you should use the -P option ?\n", curr_file_info->show_name); - } if (my_b_read(&cache,(byte*) head,2)) goto err; file_info.name=0; @@ -490,8 +488,7 @@ static int examine_log(my_string file_name, char **table_names) command_name[command], (int) extra_command,result); if (update && curr_file_info && !curr_file_info->closed) { - if (mi_extra(curr_file_info->isam, - (int) extra_command) != (int) result) + if (mi_extra(curr_file_info->isam, extra_command) != (int) result) { fflush(stdout); VOID(fprintf(stderr, diff --git a/myisam/myisampack.c b/myisam/myisampack.c index ee8ef0bb360..62d9b8e886d 100644 --- a/myisam/myisampack.c +++ b/myisam/myisampack.c @@ -230,12 +230,12 @@ int main(int argc, char **argv) #endif } -enum options {OPT_CHARSETS_DIR=256}; +enum options {OPT_CHARSETS_DIR_MP=256}; static struct option long_options[] = { {"backup", no_argument, 0, 'b'}, - {"character-sets-dir",required_argument,0, OPT_CHARSETS_DIR}, + {"character-sets-dir",required_argument,0, OPT_CHARSETS_DIR_MP}, {"debug", optional_argument, 0, '#'}, {"force", no_argument, 0, 'f'}, {"join", required_argument, 0, 'j'}, @@ -252,7 +252,7 @@ static struct option long_options[] = static void print_version(void) { - printf("%s Ver 1.9 for %s on %s\n",my_progname,SYSTEM_TYPE,MACHINE_TYPE); + printf("%s Ver 1.10 for %s on %s\n",my_progname,SYSTEM_TYPE,MACHINE_TYPE); } static void usage(void) @@ -335,7 +335,7 @@ static void get_options(int *argc,char ***argv) case '#': DBUG_PUSH(optarg ? optarg : "d:t:o"); break; - case OPT_CHARSETS_DIR: + case OPT_CHARSETS_DIR_MP: charsets_dir = optarg; break; case 'V': print_version(); exit(0); @@ -1169,7 +1169,7 @@ static int make_huff_tree(HUFF_TREE *huff_tree, HUFF_COUNTS *huff_counts) { uint i,found,bits_packed,first,last; my_off_t bytes_packed; - HUFF_ELEMENT *a,*b,*new; + HUFF_ELEMENT *a,*b,*new_huff_el; first=last=0; if (huff_counts->tree_buff) @@ -1249,23 +1249,23 @@ static int make_huff_tree(HUFF_TREE *huff_tree, HUFF_COUNTS *huff_counts) { if (huff_counts->counts[i]) { - new=huff_tree->element_buffer+(found++); - new->count=huff_counts->counts[i]; - new->a.leaf.null=0; - new->a.leaf.element_nr=i; - queue.root[found]=(byte*) new; + new_huff_el=huff_tree->element_buffer+(found++); + new_huff_el->count=huff_counts->counts[i]; + new_huff_el->a.leaf.null=0; + new_huff_el->a.leaf.element_nr=i; + queue.root[found]=(byte*) new_huff_el; } } while (found < 2) { /* Our huff_trees request at least 2 elements */ - new=huff_tree->element_buffer+(found++); - new->count=0; - new->a.leaf.null=0; + new_huff_el=huff_tree->element_buffer+(found++); + new_huff_el->count=0; + new_huff_el->a.leaf.null=0; if (last) - new->a.leaf.element_nr=huff_tree->min_chr=last-1; + new_huff_el->a.leaf.element_nr=huff_tree->min_chr=last-1; else - new->a.leaf.element_nr=huff_tree->max_chr=last+1; - queue.root[found]=(byte*) new; + new_huff_el->a.leaf.element_nr=huff_tree->max_chr=last+1; + queue.root[found]=(byte*) new_huff_el; } } queue.elements=found; @@ -1277,13 +1277,13 @@ static int make_huff_tree(HUFF_TREE *huff_tree, HUFF_COUNTS *huff_counts) { a=(HUFF_ELEMENT*) queue_remove(&queue,0); b=(HUFF_ELEMENT*) queue.root[1]; - new=huff_tree->element_buffer+found+i; - new->count=a->count+b->count; - bits_packed+=(uint) (new->count & 7); - bytes_packed+=new->count/8; - new->a.nod.left=a; /* lesser in left */ - new->a.nod.right=b; - queue.root[1]=(byte*) new; + new_huff_el=huff_tree->element_buffer+found+i; + new_huff_el->count=a->count+b->count; + bits_packed+=(uint) (new_huff_el->count & 7); + bytes_packed+=new_huff_el->count/8; + new_huff_el->a.nod.left=a; /* lesser in left */ + new_huff_el->a.nod.right=b; + queue.root[1]=(byte*) new_huff_el; queue_replaced(&queue); } huff_tree->root=(HUFF_ELEMENT*) queue.root[1]; @@ -1306,14 +1306,14 @@ static int compare_tree(void* cmp_arg __attribute__((unused)), static int save_counts_in_queue(byte *key, element_count count, HUFF_TREE *tree) { - HUFF_ELEMENT *new; + HUFF_ELEMENT *new_huff_el; - new=tree->element_buffer+(tree->elements++); - new->count=count; - new->a.leaf.null=0; - new->a.leaf.element_nr= (uint) (key- tree->counts->tree_buff) / + new_huff_el=tree->element_buffer+(tree->elements++); + new_huff_el->count=count; + new_huff_el->a.leaf.null=0; + new_huff_el->a.leaf.element_nr= (uint) (key- tree->counts->tree_buff) / tree->counts->field_length; - queue.root[tree->elements]=(byte*) new; + queue.root[tree->elements]=(byte*) new_huff_el; return 0; } @@ -1355,14 +1355,14 @@ static my_off_t calc_packed_length(HUFF_COUNTS *huff_counts, _downheap(&queue,i); for (i=0 ; i < found-1 ; i++) { - HUFF_ELEMENT *a,*b,*new; + HUFF_ELEMENT *a,*b,*new_huff_el; a=(HUFF_ELEMENT*) queue_remove(&queue,0); b=(HUFF_ELEMENT*) queue.root[1]; - new=element_buffer+i; - new->count=a->count+b->count; - bits_packed+=(uint) (new->count & 7); - bytes_packed+=new->count/8; - queue.root[1]=(byte*) new; + new_huff_el=element_buffer+i; + new_huff_el->count=a->count+b->count; + bits_packed+=(uint) (new_huff_el->count & 7); + bytes_packed+=new_huff_el->count/8; + queue.root[1]=(byte*) new_huff_el; queue_replaced(&queue); } DBUG_RETURN(bytes_packed+(bits_packed+7)/8); @@ -1673,7 +1673,7 @@ static int compress_isam_file(MRG_INFO *mrg, HUFF_COUNTS *huff_counts) max_calc_length+=huff_counts[i].tree->height; else if (huff_counts[i].field_type == FIELD_BLOB || huff_counts[i].field_type == FIELD_VARCHAR) - max_calc_length=huff_counts[i].tree->height*huff_counts[i].max_length + huff_counts[i].length_bits +1; + max_calc_length+=huff_counts[i].tree->height*huff_counts[i].max_length + huff_counts[i].length_bits +1; else max_calc_length+= (huff_counts[i].field_length - huff_counts[i].max_zero_fill)* diff --git a/myisam/sort.c b/myisam/sort.c index 384c778ab54..e79d199fc03 100644 --- a/myisam/sort.c +++ b/myisam/sort.c @@ -28,6 +28,9 @@ #include <queues.h> /* static variabels */ +#undef MIN_SORT_MEMORY +#undef MYF_RW +#undef DISK_BUFFER_SIZE #define MERGEBUFF 15 #define MERGEBUFF2 31 @@ -36,10 +39,10 @@ #define DISK_BUFFER_SIZE (IO_SIZE*16) typedef struct st_buffpek { - my_off_t file_pos; /* position to buffer */ - ha_rows count; /* keys in buffer */ - uchar *base,*key; /* Pekare inom sort_key - indexdel */ - uint mem_count; /* keys left in memory */ + my_off_t file_pos; /* Where we are in the sort file */ + ha_rows count; /* Number of rows in table */ + uchar *base,*key; /* Key pointers */ + uint mem_count; /* numbers of keys in memory */ uint max_keys; /* Max keys in buffert */ } BUFFPEK; @@ -419,7 +422,7 @@ merge_buffers(MI_SORT_PARAM *info, uint keys, IO_CACHE *from_file, sort_length)); if (error == -1) goto err; /* purecov: inspected */ - queue_insert(&queue,(void*) buffpek); + queue_insert(&queue,(char*) buffpek); } while (queue.elements > 1) |