Commit 39c55409 authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi

Merge work:/home/bk/mysql-4.0 into hundin.mysql.fi:/my/bk/mysql-4.0

parents 2007a034 2d66b2f5
......@@ -50223,6 +50223,7 @@ each individual 4.0.x release.
@menu
* News-4.0.5:: Changes in release 4.0.5
* News-4.0.4:: Changes in release 4.0.4
* News-4.0.3:: Changes in release 4.0.3 (26 Aug 2002: Beta)
* News-4.0.2:: Changes in release 4.0.2 (01 Jul 2002)
......@@ -50230,7 +50231,15 @@ each individual 4.0.x release.
* News-4.0.0:: Changes in release 4.0.0 (Oct 2001: Alpha)
@end menu
@node News-4.0.4, News-4.0.3, News-4.0.x, News-4.0.x
@node News-4.0.5, News-4.0.4, News-4.0.x, News-4.0.x
@appendixsubsec Changes in release 4.0.5
@itemize
@item
Give error if one has more than 2 ^ 32 rows in a MyISAM MERGE file and one
has not compiled MySQL with @code{-DBIG_TABLES}.
@end itemize
@node News-4.0.4, News-4.0.3, News-4.0.5, News-4.0.x
@appendixsubsec Changes in release 4.0.4
@itemize @bullet
......@@ -53,15 +53,23 @@ int ha_myisammrg::open(const char *name, int mode, uint test_if_locked)
info(HA_STATUS_NO_LOCK | HA_STATUS_VARIABLE | HA_STATUS_CONST);
if (!(test_if_locked & HA_OPEN_WAIT_IF_LOCKED))
myrg_extra(file,HA_EXTRA_WAIT_LOCK,0);
if (table->reclength != mean_rec_length && mean_rec_length)
{
DBUG_PRINT("error",("reclength: %d mean_rec_length: %d",
table->reclength, mean_rec_length));
myrg_close(file);
file=0;
return my_errno=HA_ERR_WRONG_TABLE_DEF;
goto err;
}
#if !defined(BIG_TABLES) || SIZEOF_OFF_T == 4
/* Merge table has more than 2G rows */
if (table->crashed)
goto err;
#endif
return (0);
err:
myrg_close(file);
file=0;
return (my_errno= HA_ERR_WRONG_TABLE_DEF);
}
int ha_myisammrg::close(void)
......@@ -184,8 +192,17 @@ void ha_myisammrg::info(uint flag)
{
MYMERGE_INFO info;
(void) myrg_status(file,&info,flag);
records = info.records;
deleted = info.deleted;
/*
The following fails if one has not compiled MySQL with -DBIG_TABLES
and one has more than 2^32 rows in the merge tables.
*/
records = (ha_rows) info.records;
deleted = (ha_rows) info.deleted;
#if !defined(BIG_TABLES) || SIZEOF_OFF_T == 4
if ((info.records >= (ulonglong) 1 << 32) ||
(info.deleted >= (ulonglong) 1 << 32))
table->crashed=1;
#endif
data_file_length=info.data_file_length;
errkey = info.errkey;
table->keys_in_use= set_bits(key_map, table->keys);
......
......@@ -192,8 +192,8 @@ public:
byte *dupp_ref; /* Pointer to dupp row */
uint ref_length; /* Length of ref (1-8) */
uint block_size; /* index block size */
ulonglong records; /* Records i datafilen */
ulonglong deleted; /* Deleted records */
ha_rows records; /* Records i datafilen */
ha_rows deleted; /* Deleted records */
ulonglong data_file_length; /* Length off data file */
ulonglong max_data_file_length; /* Length off data file */
ulonglong index_file_length;
......
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