From d432f39948741befe94ac42a40c1646441294af7 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 30 Sep 2002 14:54:16 +0300 Subject: Revert change to use ha_rows for number of rows as other code depend of this Docs/manual.texi: Changelog --- sql/ha_myisammrg.cc | 27 ++++++++++++++++++++++----- sql/handler.h | 4 ++-- 2 files changed, 24 insertions(+), 7 deletions(-) (limited to 'sql') diff --git a/sql/ha_myisammrg.cc b/sql/ha_myisammrg.cc index db83732bd50..c35bf657445 100644 --- a/sql/ha_myisammrg.cc +++ b/sql/ha_myisammrg.cc @@ -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); diff --git a/sql/handler.h b/sql/handler.h index c580a3a158a..6b0f6d35136 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -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; -- cgit v1.2.1