diff options
author | unknown <monty@hundin.mysql.fi> | 2002-09-30 14:54:16 +0300 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2002-09-30 14:54:16 +0300 |
commit | d432f39948741befe94ac42a40c1646441294af7 (patch) | |
tree | 046141bf31365b6775df78bed13b221523a04f9d /sql | |
parent | 948c76cc2e2f981574d24a5d4a93eb802007a33f (diff) | |
download | mariadb-git-d432f39948741befe94ac42a40c1646441294af7.tar.gz |
Revert change to use ha_rows for number of rows as other code depend of this
Docs/manual.texi:
Changelog
Diffstat (limited to 'sql')
-rw-r--r-- | sql/ha_myisammrg.cc | 27 | ||||
-rw-r--r-- | sql/handler.h | 4 |
2 files changed, 24 insertions, 7 deletions
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; |