MariaDB server is a community developed fork of MySQL server. Started by core members of the original MySQL team, MariaDB actively works with outside developers to deliver the most featureful, stable, and sanely licensed open SQL server in the industry.
Find a file
unknown 1ad3a05dd7 Fix for errors during:
"./mtr --mysqld=--default-storage-engine=maria mysqldump".
First problem was use of INSERT DELAYED and MERGE tables without
specifying that the tables to create should always be MyISAM.
After fixing this, no rows were returned by the final SELECT of the
"BUG 19025" portion of the test. Simplified problem was:
LOCK TABLES `t1` WRITE;
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
INSERT INTO `t1` VALUES ('bla',1000),('bla',1001),('bla',1002);
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
UNLOCK TABLES;
select * from t1;
The SELECT would find no rows. Reason: ENABLE KEYS does a maria_repair();
but data pages are still in the page cache and not on disk (because
they were not flushed because maria_lock_database(F_UNLCK) was
not called at the end of INSERT because under LOCK TABLES).
At start of maria_repair(), sort_info.filelength is set to the
physical size of the data file (=> too small because pages are in
cache and not on disk).
Then in sort_get_next_record(), when seeing end-of-file, this is done:
sort_param->max_pos= sort_info->filelength;
Further in maria_repair(), this is done:
info->state->data_file_length= sort_param.max_pos;
and so data_file_length is smaller (0) than reality (16384).
This makes SELECT think EOF is where it is not, and thus find
no rows.
This is fixed by flushing all data pages at the start of maria_repair()
(no performance problem is introduced as in common cases where
ALTER TABLE is not under LOCK TABLES, the previous statement did
this flush anyway).
Another reason to do this flush is that, if not doing it, old cached
pages might go down onto the repaired data file at a later point
and thus corrupt it (assume a REPAIR non-QUICK).
A similar bug is fixed:
LOCK TABLES WRITE; INSERT; CHECK TABLE;
reports "Size of datafile is: 0         Should be: 16384"
again because the physical size was read without a preliminary
page cache flush.


mysql-test/r/maria.result:
  result update
mysql-test/r/mysqldump.result:
  result update
mysql-test/t/maria.test:
  adding test for fixed bug in LOCK TABLES + CHECK TABLE + block format.
  Disabling portion which hits "incorrect key file" but still
  letting it make the test fail (Monty to fix).
mysql-test/t/mysqldump.test:
  in places where test expects engine to support INSERT DELAYED and
  be includable in a MERGE table, i.e. be MyISAM, we explicitely
  ask for MyISAM.
storage/maria/ma_check.c:
  Before reading the data file's physical size with my_seek(MY_SEEK_END)
  during maria_chk_size() and maria_repair(), we must flush this
  data file, otherwise physical size is misleading and leads to
  - CHECK TABLE finding the table corrupted ("size of datafile should be"
  error)
  - ALTER TABLE ENABLE KEYS losing rows (maria_repair()
  setting data_file_length to a too small value => later SELECT does
  not find rows though they are in the data file).
  This fixes the "mysqldump.test" failure.
  sort_info.filelength contains the physical size, re-using it.
2007-08-07 18:23:49 +02:00
BitKeeper Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1 2007-06-27 17:49:12 +03:00
BUILD Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1 2007-07-07 22:13:36 +03:00
client Folow up on the CS patch: 2007-06-29 16:52:05 +04:00
cmd-line-utils Merge pilot.(none):/data/msvensson/mysql/mysql-5.0-maint 2007-06-07 09:22:26 +02:00
config/ac-macros sql_parse.cc, config-win.h, config-netware.h: 2007-05-27 23:21:03 +02:00
dbug WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
debian Made changes to debian control files to support building 5.1 packages. 2007-04-20 16:15:30 -07:00
Docs Merge mysql.com:/home/kent/bk/tmp/mysql-5.0-build 2007-03-22 19:44:14 +01:00
extra Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb 2007-06-17 17:21:27 +02:00
include merging MyISAM changes into Maria (not done in 5.1->maria merge of 2007-07-27 12:06:39 +02:00
libmysql Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1 2007-07-07 18:33:43 +03:00
libmysql_r my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
libmysqld Merge trift2.:/MySQL/M50/push-5.0 2007-06-18 20:22:18 +02:00
man my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
mysql-test Fix for errors during: 2007-08-07 18:23:49 +02:00
mysys porting Serg's fix for BUG#30094 to Maria. Now ma_test_all passes. 2007-07-27 16:11:40 +02:00
netware Merge trift2.:/MySQL/M50/mysql-5.0 2007-05-02 14:08:43 +02:00
plugin Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1 2007-06-27 17:49:12 +03:00
pstack my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
regex WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
scripts Patch for the following bugs: 2007-06-28 21:34:54 +04:00
server-tools Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/51 2007-06-05 17:51:30 +02:00
sql merging MyISAM changes into Maria (not done in 5.1->maria merge of 2007-07-27 12:06:39 +02:00
sql-bench Fixed REPAIR/CHECK/ANALYZE TABLE for tables with new BLOCK-ROW format. 2007-07-01 16:20:57 +03:00
sql-common Merge bk@192.168.21.1:mysql-5.1-opt 2007-06-29 10:51:42 +05:00
storage Fix for errors during: 2007-08-07 18:23:49 +02:00
strings Merge mysql.com:/home/bar/mysql-work/mysql-5.0.b27345 2007-07-03 14:06:57 +05:00
support-files Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-maria 2007-07-04 12:20:53 +03:00
tests Merge bodhi.(none):/opt/local/work/mysql-5.0-runtime 2007-07-02 01:55:01 +04:00
unittest Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1 2007-06-27 17:49:12 +03:00
vio Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/51 2007-06-05 17:51:30 +02:00
win Embedded Server doesn't build on Windows. 2007-06-15 14:32:16 -04:00
zlib Merge mysql.com:/home/kent/bk/tmp3/mysql-5.0-build 2007-04-11 01:48:43 +02:00
.bzrignore Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1 2007-07-07 18:33:43 +03:00
.cvsignore Import changeset 2000-07-31 21:29:14 +02:00
.tree-is-private - WL#3239 "log CREATE TABLE in Maria" 2007-06-22 14:49:37 +02:00
CMakeLists.txt Embedded Server doesn't build on Windows. 2007-06-15 14:32:16 -04:00
configure.in Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1 2007-07-07 22:13:36 +03:00
COPYING - manual.texi will be replaced with a manual written in DocBook/XML. This ChangeSet removes all 2005-04-13 11:51:38 +02:00
EXCEPTIONS-CLIENT EXCEPTIONS-CLIENT: 2007-03-14 18:28:16 +01:00
Makefile.am Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1 2007-06-27 17:49:12 +03:00
README make_binary_distribution.sh: 2006-11-07 22:26:37 +01:00

This is a release of MySQL, a dual-license SQL database server.
MySQL is brought to you by the MySQL team at MySQL AB.

License information can be found in these files:
- For GPL (free) distributions, see the COPYING file and
  the EXCEPTIONS-CLIENT file.
- For commercial distributions, see the LICENSE.mysql file.


For further information about MySQL or additional documentation, see:
- The latest information about MySQL: http://www.mysql.com
- The current MySQL documentation: http://dev.mysql.com/doc

Some manual sections of special interest:

- If you are migrating from an older version of MySQL, please read the
  "Upgrading from..." section first!
- To see what MySQL can do, take a look at the features section.
- For installation instructions, see the Installing and Upgrading chapter.
- For the new features/bugfix history, see the Change History appendix.
- For the currently known bugs/misfeatures (known errors) see the Problems
  and Common Errors appendix.
- For a list of developers and other contributors, see the Credits
  appendix.

A local copy of the MySQL Reference Manual can be found in the Docs
directory in GNU Info format.  You can also browse the manual online or
download it in any of several formats at the URL given earlier in this
file.

************************************************************

IMPORTANT:

Bug or error reports should be sent to http://bugs.mysql.com.