summaryrefslogtreecommitdiff
path: root/myisam
diff options
context:
space:
mode:
authorunknown <monty@work.mysql.com>2001-09-02 18:38:33 +0200
committerunknown <monty@work.mysql.com>2001-09-02 18:38:33 +0200
commitddee00a6edc735b3bbef42b7d0d662091debd560 (patch)
tree4689ffbe50e97ce9a47deb58fa2b9e7decdfc6a8 /myisam
parent3c951b6d99dd2753522501adce2d28f40d54a5e3 (diff)
parent1e97b27ee2b908a17c12962778b82237934a6b73 (diff)
downloadmariadb-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.c8
-rw-r--r--myisam/ft_eval.h5
-rw-r--r--myisam/ft_search.c2
-rw-r--r--myisam/ft_test1.c7
-rw-r--r--myisam/ftdefs.h2
-rw-r--r--myisam/mi_cache.c4
-rw-r--r--myisam/mi_check.c37
-rw-r--r--myisam/mi_packrec.c2
-rw-r--r--myisam/mi_test1.c3
-rw-r--r--myisam/mi_test2.c46
-rw-r--r--myisam/myisamchk.c10
-rw-r--r--myisam/myisamlog.c13
-rw-r--r--myisam/myisampack.c72
-rw-r--r--myisam/sort.c13
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= &param->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(&param->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)