Patches in mysql-5.1.22-stew2 ----------------------- Apply to MySQL 5.1.22. No warranty at all. If it breaks you get to keep all three shattered pieces. ---------------------------------------------------- PATCH: mysql-5.1.22-telco-6.3-using-diff.patch import telco-6.3 ============================== PATCH: stew_tree_configure_in_version.patch Add -stew suffix to version in configure script --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ============================== PATCH: suma_extra_debug_on_crash.patch On crash in SUMA, display extra DEBUG information to help diagnosis There's some extra things that may be useful on crash - feedback from a customer issues where some more info would be nice. --- storage/ndb/src/kernel/blocks/suma/Suma.cpp | 43 +++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 7 deletions(-) ============================== PATCH: remove_ndb_use_exact_count.patch Remove ndb_use_exact_count - use cache of approximate count instead Util thread maintains cache in table share, updated every ndb_cache_check_time. On info call, if count is zero - force a check. If ndb_cache_check_time is zero, leave 2sec between checks. For an exact row count, NDB requires round-trips to the data nodes. For approximate, we can cache. Old behaviour of disabling ndb_use_exact_count would return 100 as the row count. This led to horrible execution plans in some cases, but big respens time boosts in others. This patch gives us our cake *and* we can eat it too! I've observed 300% improvement in response time in some tests. --- mysql-test/suite/ndb/r/ndb_alter_table.result | 8 - mysql-test/suite/ndb/r/ndb_basic.result | 1 mysql-test/suite/ndb/t/ndb_alter_table.test | 8 - sql/ha_ndbcluster.cc | 120 ++++++++++++-------------- sql/ha_ndbcluster.h | 3 sql/mysqld.cc | 15 --- sql/set_var.cc | 2 sql/sql_class.h | 1 8 files changed, 69 insertions(+), 89 deletions(-) ============================== PATCH: portlib_ndbtcp_select_fix.patch FIXME: This is in ndbwin32 work. Shouldn't be pushed sep ============================== PATCH: ndb_IS.patch INFORMATION_SCHEMA.NDB_NODE_STATUS Use pluggable information schema to add a casually crappy table that will show you the current status of the cluster (similar to ndb_mgm -e show) --- sql/ha_ndbcluster.cc | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) ============================== PATCH: copy_azio_for_ndb.patch WL4081: Copy azio for NDB Only copy the files directly from ARCHIVE engine. ============================== PATCH: azio_for_ndb.patch WL4081: Make azio build for NDB ============================== PATCH: asycfile_gzip.patch WL4081: Add compressed file support to AsyncFile (azio) and support compressed backups. - add azio to NDB - add config option for CompressedBackup - add ability to change CompressedBackup (per-node) online using DUMP interface - add test for mysql-test-run for compressed backups (NOTE: won't pass unless read compressed backups patch also applied) Part of the design here is to by default (i.e. without any of the compressed options enabled) - NOT futz with the code paths for normal IO. So if any bug/problem is found - disabling the compression options means none of that code is run. --- mysql-test/suite/ndb/r/ndb_restore_compressed.result | 490 +++++++++++++++++ mysql-test/suite/ndb/t/ndb_restore_compressed.test | 3 storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp | 4 storage/ndb/include/kernel/signaldata/FsOpenReq.hpp | 1 storage/ndb/include/mgmapi/mgmapi_config_parameters.h | 2 storage/ndb/src/kernel/blocks/Makefile.am | 3 storage/ndb/src/kernel/blocks/backup/Backup.cpp | 17 storage/ndb/src/kernel/blocks/backup/Backup.hpp | 1 storage/ndb/src/kernel/blocks/backup/BackupInit.cpp | 2 storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp | 56 + storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp | 7 storage/ndb/src/mgmsrv/ConfigInfo.cpp | 11 12 files changed, 584 insertions(+), 13 deletions(-) ============================== PATCH: read_compressed_backup.patch WL4081: read compressed backup files - use azio in ndb_restore - makes ndb_backup_compressed test pass (as can restore compressed backups) ============================== PATCH: compressed_lcp.patch WL4081: add support for *storing* compressed LCP --- storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp | 3 ++- storage/ndb/include/mgmapi/mgmapi_config_parameters.h | 2 ++ storage/ndb/src/kernel/blocks/backup/Backup.cpp | 11 +++++++++++ storage/ndb/src/kernel/blocks/backup/Backup.hpp | 1 + storage/ndb/src/kernel/blocks/backup/BackupInit.cpp | 2 ++ storage/ndb/src/mgmsrv/ConfigInfo.cpp | 11 +++++++++++ 6 files changed, 29 insertions(+), 1 deletion(-) ============================== PATCH: asyncfile_compressed_read.patch WL4081: Add support to AsyncFile for reading zlib compressed files. Add OM_GZ flag to restore block (allowing restore of compressed LCPs) Current issues: - doesn't work with O_DIRECT - doesn't do anything aligned Likely issues for LockPages and lots of memory used... but good for smaller places i hope. --- storage/ndb/src/common/util/azio.c | 2 - storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp | 43 +++++++++++++++++----- storage/ndb/src/kernel/blocks/restore.cpp | 2 - 3 files changed, 36 insertions(+), 11 deletions(-) ============================== PATCH: ndb_mtr_odirect.patch WL4081 Futz with mtr ndb config to enable compressed lcp, backup and O_DIRECT ============================== PATCH: ndb_azio_direct_io.patch WL4081 Allow use of direct IO (O_DIRECT) with azio Change azio to either posix_memalign allocate in and out buffers OR allow user to allocate these. Flag in azio_stream should be where padding was so no additional memory used. This enables O_DIRECT usage with azio if aligned buffers are allocated (by default, the azio allocation - posix_memalign - does this). Also fiddles with ZLIB internals to get the correct buffer sizes to allocate for deflate and inflate. --- storage/ndb/include/util/azlib.h | 24 ++--- storage/ndb/src/common/util/azio.c | 89 +++++++++++++++++++--- storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp | 38 ++++++++- storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp | 2 zlib/inflate.h | 5 + 5 files changed, 134 insertions(+), 24 deletions(-) ============================== PATCH: asyncfile_cleanup.patch Cleanup AsyncFile, make modular and nice to read Move all platform specific AsyncFile functionality out into sep classes. Generic functionality in AsyncFile, POSIX specific in PosixAsyncFile. In future, will have azioAsyncFile (maybe a mysysAsyncFile) and can have specific numbers of each instantiated in kernel. Then, NDBFS can decide which AsyncFile should be used for that file - e.g. we can keep the number of azioAsyncFiles to a minimum. --- storage/ndb/include/kernel/signaldata/FsOpenReq.hpp | 1 storage/ndb/include/kernel/signaldata/FsReadWriteReq.hpp | 1 storage/ndb/src/kernel/blocks/Makefile.am | 4 storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp | 1129 --------------- storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp | 192 +- storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp | 6 storage/ndb/src/kernel/blocks/ndbfs/PosixAsyncFile.cpp | 767 ++++++++++ storage/ndb/src/kernel/blocks/ndbfs/PosixAsyncFile.hpp | 72 storage/ndb/src/kernel/blocks/ndbfs/Win32AsyncFile.cpp | 334 ++++ storage/ndb/src/kernel/blocks/ndbfs/Win32AsyncFile.hpp | 83 + storage/ndb/src/kernel/vm/SimulatedBlock.hpp | 1 11 files changed, 1412 insertions(+), 1178 deletions(-) ============================== PATCH: azio_bugfix.patch Massive azio bugfix (mainly for O_DIRECT) and error reporting --- Massive azio bugfix (mainly for O_DIRECT) and error reporting --- storage/ndb/src/common/util/azio.c | 336 ++++++++++------- storage/ndb/src/kernel/blocks/ndbfs/PosixAsyncFile.cpp | 32 + 2 files changed, 232 insertions(+), 136 deletions(-) ============================== PATCH: cluster_log_csv.patch Add support for CSV format cluster log add this to ndb_mgmd section of config.ini: LogDestination=CSV:filename=clusterlog.csv,maxsize=1000000,maxfiles=6 can be read with: create table ndblog (dt datetime, server varchar(50), level varchar(50), log text) engine=csv; and then symlinking the ndblog.CSV file to where the clusterlog.csv is --- mysql-test/ndb/ndb_config_2_node.ini | 1 storage/ndb/include/logger/CSVFileLogHandler.hpp | 64 +++++++++++++++ storage/ndb/include/logger/FileLogHandler.hpp | 2 storage/ndb/include/logger/LogHandler.hpp | 5 - storage/ndb/src/common/logger/CSVFileLogHandler.cpp | 84 ++++++++++++++++++++ storage/ndb/src/common/logger/Logger.cpp | 3 storage/ndb/src/common/logger/Makefile.am | 2 7 files changed, 157 insertions(+), 4 deletions(-) ============================== PATCH: skeleton.patch import skeleton engine ============================== PATCH: myhttp.patch import myhttp engine ============================== PATCH: no_embedded.patch no embedded server (breaks ndb MyBS) ============================== PATCH: atrt-mtr.patch Make autotest run mysql-test-run.pl with NDB enabled (against real cluster) - make atrt-mysql-test-run call mtr correctly - increase max run time to 2hrs (1hr isn't enough anymore) ============================== PATCH: pbxt.patch import pbxt engine ============================== PATCH: archive_azio_fastest.patch Use BEST_SPEED compression level in archive AZIO to improve speed. At expense of compression. With compressed LCP/BACKUP for NDB this makes the difference between same-as-non-compressed speed and about 30% slower. ============================== PATCH: wl3615_byteswap.patch [wl3615 patch 01/11] byte order swap functions Added one file per cpu for some platforms, using asm swapping functions to improve the byte order swapping performance. Files for i386 and sparc have been tested, files for other platforms have not been tested yet. --- config/ac-macros/ha_ndbcluster.m4 | 12 + storage/ndb/include/util/ndb_byteorder.h | 62 +++++ storage/ndb/src/common/util/Makefile.am | 2 storage/ndb/src/common/util/ndb_byteorder_generic.c | 224 +++++++++++++++++++ storage/ndb/src/common/util/ndb_byteorder_i386.c | 229 +++++++++++++++++++ storage/ndb/src/common/util/ndb_byteorder_ia64.c | 224 +++++++++++++++++++ storage/ndb/src/common/util/ndb_byteorder_ppc.c | 219 ++++++++++++++++++ storage/ndb/src/common/util/ndb_byteorder_ppc64.c | 219 ++++++++++++++++++ storage/ndb/src/common/util/ndb_byteorder_sparc.c | 233 ++++++++++++++++++++ storage/ndb/src/common/util/ndb_byteorder_sparc64.c | 224 +++++++++++++++++++ storage/ndb/src/common/util/ndb_byteorder_x86_64.c | 222 +++++++++++++++++++ 11 files changed, 1869 insertions(+), 1 deletion(-) ============================== PATCH: bug31876_win_innodb_commit.patch Bug #31876 InnoDB commit performance slow on Windows XP During a consulting gig, a customer benchmarked MySQL on Windows XP against MS SQL server and IBM DB/2 on the very same hardware (low powered POS system with little memory and single, slow disk). The benchmark is 500 inserts/commit pairs. While DB/2 and MS SQL process the benchmark in 6 seconds, MySQL takes 12 second when ACID compliance is enabled. Further investigation of MS SQL and DB/2 find that they use CreateFile with additional flags FLAG_FILE_WRITE_THROUGH and FLAG_FILE_RANDOM_ACCESS. MS Knowlegebase entry http://support.microsoft.com/kb/332023 suggests that FLAG_FILE_WRITE_THROUGH is necessary and makes the FLUSH calls redundant. --- storage/innobase/os/os0file.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) ==============================