Commit 00e030af authored by unknown's avatar unknown

Merge


sql/handler.h:
  Auto merged
BitKeeper/etc/logging_ok:
  Auto merged
parents 5adb4dd2 d2f4a5e5
......@@ -761,6 +761,7 @@ MySQL change history
Changes in release 3.23.x (Released as beta)
* News-3.23.23:: Changes in release 3.23.23
* News-3.23.22:: Changes in release 3.23.22
* News-3.23.21:: Changes in release 3.23.21
* News-3.23.20:: Changes in release 3.23.20
......@@ -5724,6 +5725,9 @@ If you are using gcc and have problems with loading @code{UDF} functions
into @code{MySQL}, try adding @code{-lgcc} to the link line for the
@code{UDF} function.
For an automatic start of MySQL you can copy @file{support-files/mysql.server}
to @file{/etc/init.d} and link from there to @code{/etc/rc3.d/S99mysql.server}.
@node Solaris 2.7, Solaris x86, Solaris, Source install system issues
@subsection Solaris 2.7 / 2.8 notes
......@@ -5760,9 +5764,9 @@ Alternatively, you can edit @file{/usr/include/widec.h} directly. Either
way, after you make the fix, you should remove @file{config.cache} and run
@code{configure} again!
If you get errors like this when you run @code{make}, it's because @code{configure}
didn't detect the @file{curses.h} file (probably because of the error in
@code{/usr/include/widec.h}:
If you get errors like this when you run @code{make}, it's because
@code{configure} didn't detect the @file{curses.h} file (probably
because of the error in @code{/usr/include/widec.h}:
@example
In file included from mysql.cc:50:
......@@ -16792,11 +16796,14 @@ are automatically redirected to the new table without any failed updates.
@section @code{CHECK TABLE} syntax
@example
CHECK TABLE tbl_name[,tbl_name...] [TYPE = QUICK]
CHECK TABLE tbl_name[,tbl_name...] [TYPE = [QUICK | FAST | EXTEND | CHANGED]]
@end example
Check the table(s) for errors. The command returns a table with the following
columns:
@code{CHECK TABLE} only works on @code{MyISAM} tables and is the same things
as running @code{myisamchk -m table_name} on the table.
Check the table(s) for errors and updates the key statistics for the table.
The command returns a table with the following columns:
@multitable @columnfractions .35 .65
@item Table @tab Table name
......@@ -16805,16 +16812,21 @@ columns:
@item Msg_text @tab The message.
@end multitable
Note that you can get many rows of information for each checked table. The
last one row will be of @code{Msg_type status} and should normally be
@code{OK}. If you don't get @code{OK}, you should normally run a repair of
the table. @xref{Table maintenance}.
Note that you can get many rows of information for each checked
table. The last one row will be of @code{Msg_type status} and should
normally be @code{OK}. If you don't get @code{OK}, or @code{Not
checked} you should normally run a repair of the table. @xref{Table
maintenance}. @code{Not checked} means that the table the given @code{TYPE}
told @code{MySQL} that there wasn't any need to check the table.
If @code{TYPE=QUICK} is given then @strong{MySQL} will not scan the rows
for table with fixed size records.
The different check types stands for the following:
@code{CHECK TABLE} only works on @code{MyISAM} tables and is the same things
as running @code{myisamchk -m table_name} on the table.
@multitable @columnfractions .20 .80
@item @code{QUICK} @tab Don't scan the rows for fixed size record tables.
@item @code{FAST} @tab Only check tables which hasn't been closed properly.
@item @code{CHANGED} @tab Only check tables which has been changed since last check or hasn't been closed properly.
@item @code{EXTENDED} @tab Do a full key lookup for all keys for each row. This enasures that the table is 100 % consistent, but will take a long time!
@end multitable
@findex ANALYZE TABLE
@node ANALYZE TABLE, REPAIR TABLE, CHECK TABLE, Reference
......@@ -26250,7 +26262,7 @@ to start using the new table.
@node Table maintenance, Maintenance regimen, Maintenance, Maintenance
@section Using @code{myisamchk} for table maintenance and crash recovery
Starting with @strong{MySQL} 3.23.13, you can check tables MyISAM with the
Starting with @strong{MySQL} 3.23.13, you can check MyISAM tables with the
@code{CHECK TABLE} command. @xref{CHECK TABLE}. You can repair tables
with the @code{REPAIR TABLE} command. @xref{REPAIR TABLE}.
......@@ -26562,6 +26574,10 @@ If you have a problem with disk space during repair, you can try to use
@node Maintenance regimen, Table-info, Table maintenance, Maintenance
@section Setting up a table maintenance regimen
Starting with @strong{MySQL} 3.23.13, you can check MyISAM tables with the
@code{CHECK TABLE} command. @xref{CHECK TABLE}. You can repair tables
with the @code{REPAIR TABLE} command. @xref{REPAIR TABLE}.
It is a good idea to perform table checks on a regular basis rather than
waiting for problems to occur. For maintenance purposes, you can use
@code{myisamchk -s} to check tables. The @code{-s} option causes
......@@ -27020,7 +27036,7 @@ case you should at least make a backup before running @code{myisamchk}.
@node Check, Repair, Crash recovery, Crash recovery
@subsection How to check tables for errors
To check a table, use the following commands:
To check a MyISAM table, use the following commands:
@table @code
@item myisamchk tbl_name
......@@ -28026,11 +28042,11 @@ some user that it works:
To make Access work:
@itemize @bullet
@item
If you are using Access 2000, you should get and install Microsoft MDAC from
@uref{http://www.microsoft.com/data/download_21242023.htm}. This will
fix the bug in Access that when you export data to @strong{MySQL}, the
table and column names aren't specified.
If you are using Access 2000, you should get and install the newest
Microsoft MDAC (@code{Microsoft Data Access Components}) from
@uref{http://www.microsoft.com/data}. This will fix the bug in Access
that when you export data to @strong{MySQL}, the table and column names
aren't specified.
@item
You should have a primary key in the table.
@item
......@@ -35310,11 +35326,10 @@ and will soon be declared beta, gamma and release.
@appendixsubsec Changes in release 3.23.23
@itemize @bullet
@item
Changed @code{ALTER TABLE} to create non-unique indexes in a separate batch
(which should make @code{ALTER TABLE} much faster when you have many indexes).
@item
Added delayed index handling to @code{LOAD DATA INFILE}, when you are
reading into an empty file.
Changed @code{ALTER TABLE}, @code{LOAD DATA INFILE} on empty tables and
@code{INSERT ... SELECT...} on empty tables to create non-unique indexs
in a separate batch with sorting. This will make the above calls much
faster when you have many index.
@item
@code{ALTER TABLE} now logs the first used insert_id correctly.
@item
......@@ -35335,12 +35350,20 @@ always deleted.
@item
Fixed that BDB tables work on part keys.
@item
Check table now updates key statistics for the table.
@item
Added @code{CHANGE MASTER TO} command
@item
Added @code{FAST}, @code{QUICK} @code{EXTENDED} check types to
@code{CHECK TABLES}.
@item
Fixed fatal bug in @code{LOAD TABLE FROM MASTER} that did not lock the table during index re-build
@item @code{LOAD DATA INFILE} broke replication if the database was excluded from replication
@item More variables in @code{SHOW SLAVE STATUS} and @code{SHOW MASTER STATUS}
@item @code{SLAVE STOP} now will not return until the slave thread actually exits
@item
@code{LOAD DATA INFILE} broke replication if the database was excluded from replication
@item
More variables in @code{SHOW SLAVE STATUS} and @code{SHOW MASTER STATUS}
@item
@code{SLAVE STOP} now will not return until the slave thread actually exits
@end itemize
@node News-3.23.22, News-3.23.21, News-3.23.23, News-3.23.x
......@@ -35381,7 +35404,8 @@ Added @code{auto-rehash} on reconnect for the @code{mysql} client.
@item
Fixed a newly introduced bug in @code{MyISAM}, where the index file couldn't
get bigger than 64M.
@item Added @code{SHOW MASTER STATUS} and @code{SHOW SLAVE STATUS}
@item
Added @code{SHOW MASTER STATUS} and @code{SHOW SLAVE STATUS}
@end itemize
@node News-3.23.21, News-3.23.20, News-3.23.22, News-3.23.x
Some extra options to DBUG_PUSH:
O,logfile - As "o,logfile", but do a close and reopen each time anything
is written to the logfile. This is neaded when one expects
the program to crash anywhere, in which case one dosen't
O,logfile - As in "o,logfile", but do a close and reopen each time anything
is written to the logfile. This is needed when one expects
the program to crash anywhere, in which case one doesn't
(at least in MSDOS) get a full log-file.
If one wants a logfile with a ': in the filename, one can get it by
If one wants a logfile with a ':' in the filename, one can get it by
giving a double ':'. (As in "O,c::\tmp\log")
DBUG_DUMP("keyword",memory-position,length) writes a hexdump of the
......
......@@ -1401,7 +1401,7 @@ int extend;
}
else if (record_checksum != intern_record_checksum && info->s->state.keys)
{
print_error("Keypointers and records dosen't match");
print_error("Keypointers and records don't match");
error=1;
}
if (used+empty+del_length != info->s->state.data_file_length)
......
......@@ -1983,7 +1983,7 @@ mysql_data_seek(MYSQL_RES *result, my_ulonglong row)
/*************************************************************************
** put the row or field cursor one a position one got from mysql_row_tell()
** This dosen't restore any data. The next mysql_fetch_row or
** This doesn't restore any data. The next mysql_fetch_row or
** mysql_fetch_field will return the next row or field after the last used
*************************************************************************/
......
......@@ -339,7 +339,14 @@ int chk_key(MI_CHECK *param, register MI_INFO *info)
{
param->key_crc[key]=0;
if (!(((ulonglong) 1 << key) & share->state.key_map))
{
/* Remember old statistics for key */
memcpy((char*) rec_per_key_part,
(char*) share->state.rec_per_key_part+
(uint) (rec_per_key_part - param->rec_per_key_part),
keyinfo->keysegs*sizeof(*rec_per_key_part));
continue;
}
found_keys++;
param->record_checksum=init_checksum;
......@@ -1730,7 +1737,14 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
{
sort_info->keyinfo=share->keyinfo+sort_info->key;
if (!(((ulonglong) 1 << sort_info->key) & key_map))
{
/* Remember old statistics for key */
memcpy((char*) rec_per_key_part,
(char*) share->state.rec_per_key_part+
(uint) (rec_per_key_part - param->rec_per_key_part),
sort_info->keyinfo->keysegs*sizeof(*rec_per_key_part));
continue;
}
if ((!(param->testflag & T_SILENT)))
printf ("- Fixing index %d\n",sort_info->key+1);
......
#@PERL@
#!@PERL@
# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
#
# This library is free software; you can redistribute it and/or
......@@ -31,7 +31,7 @@
# $server Object for current server
# $limits Hash reference to limits for benchmark
$benchmark_version="2.8";
$benchmark_version="2.9";
use Getopt::Long;
require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n";
......
#@PERL@
#!@PERL@
# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
#
# This library is free software; you can redistribute it and/or
......@@ -159,6 +159,7 @@ sub new
$limits{'NEG'} = 1; # Supports -id
$limits{'func_extra_in_num'} = 1; # Has function in
$limits{'limit'} = 1; # supports the limit attribute
$limits{'unique_index'} = 1; # Unique index works or not
$smds{'time'} = 1;
$smds{'q1'} = 'b'; # with time not supp by mysql ('')
......@@ -355,6 +356,7 @@ sub new
$limits{'alter_table_dropcol'}= 0;
$limits{'group_func_extra_std'} = 0;
$limits{'limit'} = 1; # supports the limit attribute
$limits{'unique_index'} = 1; # Unique index works or not
$limits{'func_odbc_mod'} = 0;
$limits{'func_extra_%'} = 0;
......@@ -421,7 +423,7 @@ sub create
$field =~ s/tinyint|smallint|mediumint|integer/int/i;
# mSQL can't handle different visual lengths
$field =~ s/int\(\d*\)/int/i;
# mSQL dosen't have float, change it to real
# mSQL doesn't have float, change it to real
$field =~ s/float(\(\d*,\d*\)){0,1}/real/i;
$field =~ s/double(\(\d*,\d*\)){0,1}/real/i;
# mSQL doesn't have blob, it has text instead
......@@ -551,7 +553,8 @@ sub new
$limits{'max_index'} = 64; # Is this true ?
$limits{'max_index_parts'} = 16; # Is this true ?
$limits{'max_text_size'} = 7000; # 8000 crashes pg 6.3
$limits{'query_size'} = 8191;
$limits{'query_size'} = 16777216;
$limits{'unique_index'} = 0; # Unique index works or not
# the different cases per query ...
$smds{'q1'} = 'b'; # with time
......@@ -642,13 +645,17 @@ sub create
$index =~ s/primary key/unique index primary_key/i;
if ($index =~ /^unique.*\(([^\(]*)\)$/i)
{
$indfield="using btree (" .$1.")";
# original: $indfield="using btree (" .$1.")";
# using btree doesnt seem to work with Postgres anymore; it creates
# the table and adds the index, but it isnt unique
$indfield=" (" .$1.")";
$in="unique index";
$table="index_$nr"; $nr++;
}
elsif ($index =~ /^(.*index)\s+(\w*)\s+(\(.*\))$/i)
{
$indfield="using btree " .$3;
# original: $indfield="using btree (" .$1.")";
$indfield=" " .$3;
$in="index";
$table="index_$nr"; $nr++;
}
......@@ -820,6 +827,7 @@ sub new
$limits{'column_alias'} = 1;
$limits{'NEG'} = 1;
$limits{'func_extra_in_num'} = 1;
$limits{'unique_index'} = 1; # Unique index works or not
# for the smds small benchmark test ....
# the different cases per query ...
......@@ -1057,6 +1065,7 @@ sub new
$limits{'column_alias'} = 0;
$limits{'NEG'} = 1;
$limits{'func_extra_in_num'} = 0;
$limits{'unique_index'} = 1; # Unique index works or not
# for the smds small benchmark test ....
# the different cases per query ... EMPRESS
......@@ -1333,6 +1342,7 @@ sub new
$limits{'column_alias'} = 1; # Alias for fields in select statement.
$limits{'NEG'} = 1; # Supports -id
$limits{'func_extra_in_num'} = 1; # Has function in
$limits{'unique_index'} = 1; # Unique index works or not
$smds{'time'} = 1;
$smds{'q1'} = 'b'; # with time not supp by mysql ('')
......@@ -1580,7 +1590,7 @@ sub new
$limits{'select_without_from'}= 0; # Can do 'select 1';
$limits{'subqueries'} = 1; # Doesn't support sub-queries.
$limits{'table_wildcard'} = 1; # Has SELECT table_name.*
$limits{'unique_index'} = 1; # Unique index works or not
return $self;
}
......@@ -1777,6 +1787,7 @@ sub new
$limits{'column_alias'} = 1; # Alias for fields in select statement.
$limits{'NEG'} = 1; # Supports -id
$limits{'func_extra_in_num'} = 1; # Has function in
$limits{'unique_index'} = 1; # Unique index works or not
return $self;
}
......@@ -1947,6 +1958,7 @@ sub new
$limits{'column_alias'} = 1; # Alias for fields in select statement.
$limits{'NEG'} = 1; # Supports -id
$limits{'func_extra_in_num'} = 0; # Has function in
$limits{'unique_index'} = 1; # Unique index works or not
return $self;
}
......@@ -2129,6 +2141,7 @@ sub new
$limits{'column_alias'} = 1; # Alias for fields in select statement.
$limits{'NEG'} = 1; # Supports -id
$limits{'func_extra_in_num'} = 0; # Has function in
$limits{'unique_index'} = 1; # Unique index works or not
return $self;
}
......@@ -2314,6 +2327,7 @@ sub new
$limits{'column_alias'} = 1; # Alias for fields in select statement.
$limits{'NEG'} = 1; # Supports -id
$limits{'func_extra_in_num'} = 1; # Has function in
$limits{'unique_index'} = 1; # Unique index works or not
$smds{'time'} = 1;
$smds{'q1'} = 'b'; # with time not supp by mysql ('')
......@@ -2522,6 +2536,7 @@ sub new
$limits{'column_alias'} = 1; # Alias for fields in select statement.
$limits{'NEG'} = 1; # Supports -id
$limits{'func_extra_in_num'} = 0; # Has function in
$limits{'unique_index'} = 1; # Unique index works or not
return $self;
}
......@@ -2689,6 +2704,7 @@ sub new
$limits{'NEG'} = 1; # Supports -id
$limits{'func_extra_in_num'} = 1; # Has function in
$limits{'limit'} = 0; # Does not support the limit attribute
$limits{'unique_index'} = 1; # Unique index works or not
$smds{'time'} = 1;
$smds{'q1'} = 'b'; # with time not supp by mysql ('')
......
#@PERL@
#!@PERL@
# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
#
# This library is free software; you can redistribute it and/or
......@@ -215,16 +215,19 @@ if ($opt_fast && defined($server->{vacuum}))
#### insert $opt_loop_count records with duplicate id
####
print "Testing insert of duplicates\n";
$loop_time=new Benchmark;
for ($i=0 ; $i < $opt_loop_count ; $i++)
if ($limits->{'unique_index'})
{
$tmpvar^= ((($tmpvar + 63) + $i)*3 % $opt_loop_count);
$tmp=$tmpvar % ($total_rows);
$tmpquery = "$query" . "$tmp" . ",1,2,'D')";
if ($dbh->do($tmpquery))
print "Testing insert of duplicates\n";
$loop_time=new Benchmark;
for ($i=0 ; $i < $opt_loop_count ; $i++)
{
die "Didn't get an error when inserting duplicate record $tmp\n";
$tmpvar^= ((($tmpvar + 63) + $i)*3 % $opt_loop_count);
$tmp=$tmpvar % ($total_rows);
$tmpquery = "$query" . "$tmp" . ",1,2,'D')";
if ($dbh->do($tmpquery))
{
die "Didn't get an error when inserting duplicate record $tmp\n";
}
}
}
......
#@PERL@
#!@PERL@
# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
#
# This library is free software; you can redistribute it and/or
......
......@@ -238,38 +238,38 @@ int ha_myisam::check(THD* thd, HA_CHECK_OPT* check_opt)
param.thd = thd;
param.op_name = (char*)"check";
param.table_name = table->table_name;
param.testflag = check_opt->flags | T_CHECK | T_SILENT;
if (check_opt->quick)
param.testflag |= T_FAST;
param.testflag = check_opt->flags | T_CHECK | T_SILENT | T_MEDIUM;
if (!(table->db_stat & HA_READ_ONLY))
param.testflag|= T_STATISTICS;
param.using_global_keycache = 1;
if (!mi_is_crashed(file) &&
(((param.testflag & T_CHECK_ONLY_CHANGED) &&
!share->state.changed && share->state.open_count == 0) ||
((param.testflag & T_FAST) && share->state.open_count == 0)))
return HA_CHECK_ALREADY_CHECKED;
error = chk_size(&param, file);
if (!((param.testflag & T_FAST) && share->state.open_count == 1 &&
!share->state.changed))
if (!error)
error |= chk_del(&param, file, param.testflag);
if (!error)
error = chk_key(&param, file);
if (!error)
{
if (!error)
error |= chk_del(&param, file, param.testflag);
if (!error)
error = chk_key(&param, file);
if (!error)
if (!check_opt->quick &&
(share->options & (HA_OPTION_PACK_RECORD | HA_OPTION_COMPRESS_RECORD)))
{
if (!(param.testflag & T_FAST) ||
(share->options & (HA_OPTION_PACK_RECORD | HA_OPTION_COMPRESS_RECORD)))
{
init_io_cache(&param.read_cache, file->dfile,
my_default_record_cache_size, READ_CACHE,
share->pack.header_length, 1, MYF(MY_WME));
error |= chk_data_link(&param, file, param.testflag & T_EXTEND);
end_io_cache(&(param.read_cache));
}
init_io_cache(&param.read_cache, file->dfile,
my_default_record_cache_size, READ_CACHE,
share->pack.header_length, 1, MYF(MY_WME));
error |= chk_data_link(&param, file, param.testflag & T_EXTEND);
end_io_cache(&(param.read_cache));
}
}
if (!error)
{
if (share->state.changed)
if (share->state.changed || (param.testflag & T_STATISTICS))
{
file->update|=HA_STATE_CHANGED | HA_STATE_ROW_CHANGED;
pthread_mutex_lock(&share->intern_lock);
......@@ -278,11 +278,14 @@ int ha_myisam::check(THD* thd, HA_CHECK_OPT* check_opt)
#endif
share->state.changed=0;
if (!(table->db_stat & HA_READ_ONLY))
error=update_state_info(&param,file,UPDATE_TIME | UPDATE_OPEN_COUNT);
error=update_state_info(&param,file,UPDATE_TIME | UPDATE_OPEN_COUNT |
UPDATE_STAT);
#ifndef HAVE_PREAD
pthread_mutex_unlock(&THR_LOCK_keycache);// QQ; Has to be removed!
#endif
pthread_mutex_unlock(&share->intern_lock);
info(HA_STATUS_NO_LOCK | HA_STATUS_TIME | HA_STATUS_VARIABLE |
HA_STATUS_CONST);
}
}
else if (!mi_is_crashed(file))
......@@ -379,6 +382,8 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param)
if (file->s->base.auto_key)
update_auto_increment_key(&param, file, 1);
error = update_state_info(&param, file, UPDATE_TIME|UPDATE_STAT);
info(HA_STATUS_NO_LOCK | HA_STATUS_TIME | HA_STATUS_VARIABLE |
HA_STATUS_CONST);
}
else if (!mi_is_crashed(file))
{
......
......@@ -27,6 +27,7 @@
// the following is for checking tables
#define HA_CHECK_ALREADY_CHECKED 1
#define HA_CHECK_OK 0
#define HA_CHECK_NOT_IMPLEMENTED -1
#define HA_CHECK_CORRUPT -2
......
......@@ -78,6 +78,7 @@ static SYMBOL symbols[] = {
{ "CHAR", SYM(CHAR_SYM),0,0},
{ "CHARACTER", SYM(CHAR_SYM),0,0},
{ "CHANGE", SYM(CHANGE),0,0},
{ "CHANGED", SYM(CHANGED),0,0},
{ "CHECK", SYM(CHECK_SYM),0,0},
{ "CHECKSUM", SYM(CHECKSUM_SYM),0,0},
{ "COLLECTION", SYM(COLLECTION),0,0},
......@@ -124,6 +125,7 @@ static SYMBOL symbols[] = {
{ "EXPLAIN", SYM(DESCRIBE),0,0},
{ "EXISTS", SYM(EXISTS),0,0},
{ "EXTENDED", SYM(EXTENDED_SYM),0,0},
{ "FAST", SYM(FAST_SYM),0,0},
{ "FIELDS", SYM(COLUMNS),0,0},
{ "FILE", SYM(FILE_SYM),0,0},
{ "FIRST", SYM(FIRST_SYM),0,0},
......
......@@ -171,7 +171,7 @@ static void check_unused(void)
}
if (count != 0)
{
DBUG_PRINT("error",("Unused_links dosen't match open_cache: diff: %d", /* purecov: inspected */
DBUG_PRINT("error",("Unused_links doesn't match open_cache: diff: %d", /* purecov: inspected */
count)); /* purecov: inspected */
}
}
......
......@@ -224,7 +224,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
else
error=read_sep_field(thd,info,table,fields,read_info,*enclosed);
if (table->file->extra(HA_EXTRA_NO_CACHE) ||
table->file->activate_all_index((ha_rows) 0))
table->file->activate_all_index(thd))
error=1; /* purecov: inspected */
table->time_stamp=save_time_stamp;
......
......@@ -954,6 +954,11 @@ int mysql_check_table(THD* thd, TABLE_LIST* tables,HA_CHECK_OPT* check_opt)
net_store_data(packet, "OK");
break;
case HA_CHECK_ALREADY_CHECKED:
net_store_data(packet, "status");
net_store_data(packet, "Not checked");
break;
case HA_CHECK_CORRUPT:
net_store_data(packet, "status");
net_store_data(packet, "Corrupt");
......
......@@ -86,7 +86,7 @@ void print_cached_tables(void)
}
}
if (count != unused)
printf("Unused_links (%d) dosen't match open_cache: %d\n", count,unused);
printf("Unused_links (%d) doesn't match open_cache: %d\n", count,unused);
printf("\nCurrent refresh version: %ld\n",refresh_version);
if (hash_check(&open_cache))
printf("Error: File hash table is corrupted\n");
......
......@@ -276,12 +276,14 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token BIGINT
%token BLOB_SYM
%token CHAR_SYM
%token CHANGED
%token COALESCE
%token DATETIME
%token DATE_SYM
%token DECIMAL_SYM
%token DOUBLE_SYM
%token ENUM
%token FAST_SYM
%token FLOAT_SYM
%token INT_SYM
%token LIMIT
......@@ -1104,8 +1106,10 @@ opt_mi_check_type:
| TYPE_SYM EQ mi_check_types {}
mi_check_types:
QUICK { Lex->check_opt.quick = 1; }
| EXTENDED_SYM { Lex->check_opt.flags = T_EXTEND; }
QUICK { Lex->check_opt.quick = 1; }
| FAST_SYM { Lex->check_opt.flags|= T_FAST; }
| EXTENDED_SYM { Lex->check_opt.flags|= T_EXTEND; }
| CHANGED { Lex->check_opt.flags|= T_CHECK_ONLY_CHANGED; }
analyze:
ANALYZE_SYM table_or_tables table_list
......@@ -2332,6 +2336,7 @@ keyword:
| BEGIN_SYM {}
| BIT_SYM {}
| BOOL_SYM {}
| CHANGED {}
| CHECKSUM_SYM {}
| CHECK_SYM {}
| COMMENT_SYM {}
......@@ -2348,6 +2353,7 @@ keyword:
| ENUM {}
| ESCAPE_SYM {}
| EXTENDED_SYM {}
| FAST_SYM {}
| FILE_SYM {}
| FIRST_SYM {}
| FIXED_SYM {}
......@@ -2383,6 +2389,7 @@ keyword:
| PASSWORD {}
| PROCESS {}
| PROCESSLIST_SYM {}
| QUICK {}
| RAID_0_SYM {}
| RAID_CHUNKS {}
| RAID_CHUNKSIZE {}
......
......@@ -71,7 +71,7 @@ typedef struct st_key {
char *name; /* Name of key */
ulong *rec_per_key; /* Key part distribution */
union {
uint bdb_return_if_eq;
int bdb_return_if_eq;
} handler;
} KEY;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment