Merge lp://staging/~percona-dev/percona-data-recovery-tool-for-innodb/page-signature-check into lp://staging/percona-data-recovery-tool-for-innodb

Proposed by Aleksandr Kuzminsky
Status: Merged
Merged at revision: not available
Proposed branch: lp://staging/~percona-dev/percona-data-recovery-tool-for-innodb/page-signature-check
Merge into: lp://staging/percona-data-recovery-tool-for-innodb
Diff against target: 300124 lines (+296437/-0)
710 files modified
INSTALL (+1/-0)
Makefile (+64/-0)
check_data.c (+218/-0)
constraints_parser.c (+554/-0)
create_defs.pl (+367/-0)
docs/README (+223/-0)
docs/README.html (+241/-0)
include/check_data.h (+16/-0)
include/error.h (+7/-0)
include/print_data.h (+27/-0)
include/table_defs.h (+69/-0)
include/tables_dict.h (+99/-0)
incrementalupdate.c (+269/-0)
mysql-source/BUILD/Makefile.am (+70/-0)
mysql-source/BUILD/Makefile.in (+562/-0)
mysql-source/Docs/Makefile.am (+62/-0)
mysql-source/Docs/Makefile.in (+560/-0)
mysql-source/Makefile.am (+201/-0)
mysql-source/Makefile.in (+1003/-0)
mysql-source/SSL/Makefile.am (+23/-0)
mysql-source/SSL/Makefile.in (+515/-0)
mysql-source/aclocal.m4 (+7461/-0)
mysql-source/bdb/Makefile.in (+56/-0)
mysql-source/bdb/dist/Makefile.in (+1397/-0)
mysql-source/client/Makefile.am (+77/-0)
mysql-source/client/Makefile.in (+931/-0)
mysql-source/cmd-line-utils/Makefile.am (+24/-0)
mysql-source/cmd-line-utils/Makefile.in (+671/-0)
mysql-source/cmd-line-utils/libedit/Makefile.am (+100/-0)
mysql-source/cmd-line-utils/libedit/Makefile.in (+822/-0)
mysql-source/cmd-line-utils/readline/Makefile.am (+37/-0)
mysql-source/cmd-line-utils/readline/Makefile.in (+705/-0)
mysql-source/config.guess (+1463/-0)
mysql-source/config.h.in (+1157/-0)
mysql-source/config.sub (+1579/-0)
mysql-source/config/ac-macros/alloca.m4 (+68/-0)
mysql-source/config/ac-macros/character_sets.m4 (+444/-0)
mysql-source/config/ac-macros/check_cpu.m4 (+47/-0)
mysql-source/config/ac-macros/compiler_flag.m4 (+62/-0)
mysql-source/config/ac-macros/ha_archive.m4 (+29/-0)
mysql-source/config/ac-macros/ha_berkeley.m4 (+267/-0)
mysql-source/config/ac-macros/ha_blackhole.m4 (+29/-0)
mysql-source/config/ac-macros/ha_example.m4 (+30/-0)
mysql-source/config/ac-macros/ha_federated.m4 (+29/-0)
mysql-source/config/ac-macros/ha_innodb.m4 (+77/-0)
mysql-source/config/ac-macros/ha_ndbcluster.m4 (+172/-0)
mysql-source/config/ac-macros/ha_tina.m4 (+29/-0)
mysql-source/config/ac-macros/large_file.m4 (+140/-0)
mysql-source/config/ac-macros/misc.m4 (+816/-0)
mysql-source/config/ac-macros/openssl.m4 (+138/-0)
mysql-source/config/ac-macros/readline.m4 (+100/-0)
mysql-source/config/ac-macros/yassl.m4 (+45/-0)
mysql-source/config/ac-macros/zlib.m4 (+129/-0)
mysql-source/configure (+44194/-0)
mysql-source/configure.in (+3013/-0)
mysql-source/dbug/Makefile.am (+65/-0)
mysql-source/dbug/Makefile.in (+735/-0)
mysql-source/debian/Makefile.am (+118/-0)
mysql-source/debian/Makefile.in (+616/-0)
mysql-source/debian/control.in (+353/-0)
mysql-source/debian/defs.mk.in (+14/-0)
mysql-source/debian/libmysqlclientSLIB-dev.README.Maintainer.in (+4/-0)
mysql-source/debian/libmysqlclientSLIB-dev.dirs.in (+2/-0)
mysql-source/debian/libmysqlclientSLIB-dev.docs.in (+1/-0)
mysql-source/debian/libmysqlclientSLIB-dev.examples.in (+1/-0)
mysql-source/debian/libmysqlclientSLIB-dev.files.in (+7/-0)
mysql-source/debian/libmysqlclientSLIB-dev.links.in (+2/-0)
mysql-source/debian/libmysqlclientSLIBoff.README.Debian.in (+30/-0)
mysql-source/debian/libmysqlclientSLIBoff.dirs.in (+1/-0)
mysql-source/debian/libmysqlclientSLIBoff.docs.in (+1/-0)
mysql-source/debian/libmysqlclientSLIBoff.files.in (+1/-0)
mysql-source/debian/libmysqlclientSLIBoff.postinst.in (+12/-0)
mysql-source/debian/libndbclientNLIB-dev.dirs.in (+3/-0)
mysql-source/debian/libndbclientNLIB-dev.files.in (+3/-0)
mysql-source/debian/libndbclientNLIB-dev.links.in (+1/-0)
mysql-source/debian/libndbclientNLIB.README.Debian.in (+30/-0)
mysql-source/debian/libndbclientNLIB.dirs.in (+1/-0)
mysql-source/debian/libndbclientNLIB.files.in (+1/-0)
mysql-source/debian/libndbclientNLIB.postinst.in (+12/-0)
mysql-source/debian/mysql-client-BASE.NEWS.in (+6/-0)
mysql-source/debian/mysql-client-BASE.README.Debian.in (+4/-0)
mysql-source/debian/mysql-client-BASE.dirs.in (+2/-0)
mysql-source/debian/mysql-client-BASE.docs.in (+2/-0)
mysql-source/debian/mysql-client-BASE.files.in (+18/-0)
mysql-source/debian/mysql-client-BASE.lintian-overrides.in (+1/-0)
mysql-source/debian/mysql-common.README.Debian.in (+20/-0)
mysql-source/debian/mysql-common.dirs.in (+1/-0)
mysql-source/debian/mysql-common.files.in (+2/-0)
mysql-source/debian/mysql-common.postrm.in (+7/-0)
mysql-source/debian/mysql-common.preinst.in (+215/-0)
mysql-source/debian/mysql-extra-BASE.dirs.in (+1/-0)
mysql-source/debian/mysql-extra-BASE.files.in (+3/-0)
mysql-source/debian/mysql-management-BASE.dirs.in (+1/-0)
mysql-source/debian/mysql-management-BASE.files.in (+1/-0)
mysql-source/debian/mysql-management-BASE.mysql-management.init.in (+86/-0)
mysql-source/debian/mysql-server-BASE.NEWS.in (+10/-0)
mysql-source/debian/mysql-server-BASE.README.Debian.in (+125/-0)
mysql-source/debian/mysql-server-BASE.config.in (+39/-0)
mysql-source/debian/mysql-server-BASE.dirs.in (+13/-0)
mysql-source/debian/mysql-server-BASE.docs.in (+2/-0)
mysql-source/debian/mysql-server-BASE.files.in (+50/-0)
mysql-source/debian/mysql-server-BASE.links.in (+1/-0)
mysql-source/debian/mysql-server-BASE.lintian-overrides.in (+4/-0)
mysql-source/debian/mysql-server-BASE.logcheck.ignore.paranoid.in (+10/-0)
mysql-source/debian/mysql-server-BASE.logcheck.ignore.server.in (+31/-0)
mysql-source/debian/mysql-server-BASE.logcheck.ignore.workstation.in (+31/-0)
mysql-source/debian/mysql-server-BASE.mysql-server.logrotate.in (+28/-0)
mysql-source/debian/mysql-server-BASE.postinst.in (+276/-0)
mysql-source/debian/mysql-server-BASE.postrm.in (+92/-0)
mysql-source/debian/mysql-server-BASE.preinst.in (+167/-0)
mysql-source/debian/mysql-server-BASE.prerm.in (+8/-0)
mysql-source/debian/mysql-server-BASE.templates.in (+71/-0)
mysql-source/debian/mysql-server-PREV.preinst.in (+191/-0)
mysql-source/debian/mysql-server.preinst.in (+191/-0)
mysql-source/debian/mysql-storage-BASE.dirs.in (+1/-0)
mysql-source/debian/mysql-storage-BASE.files.in (+1/-0)
mysql-source/debian/mysql-storage-BASE.mysql-storage.init.in (+85/-0)
mysql-source/debian/mysql-test-BASE.dirs.in (+2/-0)
mysql-source/debian/mysql-test-BASE.files.in (+6/-0)
mysql-source/debian/mysql-tools-BASE.dirs.in (+2/-0)
mysql-source/debian/mysql-tools-BASE.files.in (+13/-0)
mysql-source/debian/source.lintian-overrides.in (+6/-0)
mysql-source/depcomp (+530/-0)
mysql-source/extra/Makefile.am (+53/-0)
mysql-source/extra/Makefile.in (+917/-0)
mysql-source/extra/yassl/Makefile.am (+5/-0)
mysql-source/extra/yassl/Makefile.in (+656/-0)
mysql-source/extra/yassl/src/Makefile.am (+12/-0)
mysql-source/extra/yassl/src/Makefile.in (+628/-0)
mysql-source/extra/yassl/taocrypt/Makefile.am (+5/-0)
mysql-source/extra/yassl/taocrypt/Makefile.in (+657/-0)
mysql-source/extra/yassl/taocrypt/benchmark/Makefile.am (+9/-0)
mysql-source/extra/yassl/taocrypt/benchmark/Makefile.in (+624/-0)
mysql-source/extra/yassl/taocrypt/src/Makefile.am (+17/-0)
mysql-source/extra/yassl/taocrypt/src/Makefile.in (+826/-0)
mysql-source/extra/yassl/taocrypt/test/Makefile.am (+9/-0)
mysql-source/extra/yassl/taocrypt/test/Makefile.in (+624/-0)
mysql-source/extra/yassl/testsuite/Makefile.am (+14/-0)
mysql-source/extra/yassl/testsuite/Makefile.in (+708/-0)
mysql-source/heap/Makefile.am (+32/-0)
mysql-source/heap/Makefile.in (+731/-0)
mysql-source/include/Makefile.am (+75/-0)
mysql-source/include/Makefile.in (+660/-0)
mysql-source/include/base64.h (+50/-0)
mysql-source/include/config-netware.h (+141/-0)
mysql-source/include/config-os2.h (+835/-0)
mysql-source/include/config-win.h (+459/-0)
mysql-source/include/decimal.h (+107/-0)
mysql-source/include/errmsg.h (+102/-0)
mysql-source/include/ft_global.h (+70/-0)
mysql-source/include/hash.h (+73/-0)
mysql-source/include/heap.h (+250/-0)
mysql-source/include/help_end.h (+22/-0)
mysql-source/include/help_start.h (+24/-0)
mysql-source/include/keycache.h (+138/-0)
mysql-source/include/m_ctype.h (+509/-0)
mysql-source/include/m_string.h (+265/-0)
mysql-source/include/md5.h (+92/-0)
mysql-source/include/my_aes.h (+65/-0)
mysql-source/include/my_alarm.h (+58/-0)
mysql-source/include/my_alloc.h (+51/-0)
mysql-source/include/my_attribute.h (+63/-0)
mysql-source/include/my_base.h (+487/-0)
mysql-source/include/my_bitmap.h (+72/-0)
mysql-source/include/my_dbug.h (+107/-0)
mysql-source/include/my_dir.h (+105/-0)
mysql-source/include/my_getopt.h (+76/-0)
mysql-source/include/my_global.h (+1352/-0)
mysql-source/include/my_handler.h (+92/-0)
mysql-source/include/my_libwrap.h (+27/-0)
mysql-source/include/my_list.h (+45/-0)
mysql-source/include/my_net.h (+134/-0)
mysql-source/include/my_no_pthread.h (+54/-0)
mysql-source/include/my_nosys.h (+54/-0)
mysql-source/include/my_pthread.h (+812/-0)
mysql-source/include/my_sys.h (+924/-0)
mysql-source/include/my_time.h (+146/-0)
mysql-source/include/my_tree.h (+103/-0)
mysql-source/include/my_user.h (+34/-0)
mysql-source/include/my_xml.h (+66/-0)
mysql-source/include/myisam.h (+519/-0)
mysql-source/include/myisammrg.h (+109/-0)
mysql-source/include/myisampack.h (+238/-0)
mysql-source/include/mysql.h (+864/-0)
mysql-source/include/mysql_com.h (+463/-0)
mysql-source/include/mysql_embed.h (+31/-0)
mysql-source/include/mysql_h.ic (+969/-0)
mysql-source/include/mysql_time.h (+55/-0)
mysql-source/include/mysql_version.h.in (+29/-0)
mysql-source/include/mysys_err.h (+87/-0)
mysql-source/include/queues.h (+63/-0)
mysql-source/include/raid.h (+158/-0)
mysql-source/include/rijndael.h (+41/-0)
mysql-source/include/sha1.h (+66/-0)
mysql-source/include/sql_common.h (+47/-0)
mysql-source/include/sslopt-case.h (+28/-0)
mysql-source/include/sslopt-longopts.h (+45/-0)
mysql-source/include/sslopt-vars.h (+31/-0)
mysql-source/include/t_ctype.h (+254/-0)
mysql-source/include/thr_alarm.h (+117/-0)
mysql-source/include/thr_lock.h (+159/-0)
mysql-source/include/typelib.h (+36/-0)
mysql-source/include/violite.h (+218/-0)
mysql-source/innobase/Makefile.am (+29/-0)
mysql-source/innobase/Makefile.in (+648/-0)
mysql-source/innobase/aclocal.m4 (+7285/-0)
mysql-source/innobase/btr/Makefile.am (+25/-0)
mysql-source/innobase/btr/Makefile.in (+455/-0)
mysql-source/innobase/buf/Makefile.am (+25/-0)
mysql-source/innobase/buf/Makefile.in (+455/-0)
mysql-source/innobase/configure (+22311/-0)
mysql-source/innobase/configure.in (+139/-0)
mysql-source/innobase/data/Makefile.am (+25/-0)
mysql-source/innobase/data/Makefile.in (+452/-0)
mysql-source/innobase/dict/Makefile.am (+26/-0)
mysql-source/innobase/dict/Makefile.in (+458/-0)
mysql-source/innobase/dyn/Makefile.am (+25/-0)
mysql-source/innobase/dyn/Makefile.in (+451/-0)
mysql-source/innobase/eval/Makefile.am (+25/-0)
mysql-source/innobase/eval/Makefile.in (+452/-0)
mysql-source/innobase/fil/Makefile.am (+25/-0)
mysql-source/innobase/fil/Makefile.in (+451/-0)
mysql-source/innobase/fsp/Makefile.am (+26/-0)
mysql-source/innobase/fsp/Makefile.in (+451/-0)
mysql-source/innobase/fut/Makefile.am (+25/-0)
mysql-source/innobase/fut/Makefile.in (+452/-0)
mysql-source/innobase/ha/Makefile.am (+25/-0)
mysql-source/innobase/ha/Makefile.in (+452/-0)
mysql-source/innobase/ib_config.h.in (+83/-0)
mysql-source/innobase/ibuf/Makefile.am (+25/-0)
mysql-source/innobase/ibuf/Makefile.in (+451/-0)
mysql-source/innobase/include/Makefile.am (+58/-0)
mysql-source/innobase/include/Makefile.i (+6/-0)
mysql-source/innobase/include/Makefile.in (+424/-0)
mysql-source/innobase/include/btr0btr.h (+439/-0)
mysql-source/innobase/include/btr0btr.ic (+233/-0)
mysql-source/innobase/include/btr0cur.h (+704/-0)
mysql-source/innobase/include/btr0cur.ic (+170/-0)
mysql-source/innobase/include/btr0pcur.h (+516/-0)
mysql-source/innobase/include/btr0pcur.ic (+630/-0)
mysql-source/innobase/include/btr0sea.h (+253/-0)
mysql-source/innobase/include/btr0sea.ic (+67/-0)
mysql-source/innobase/include/btr0types.h (+21/-0)
mysql-source/innobase/include/buf0buf.h (+1074/-0)
mysql-source/innobase/include/buf0buf.ic (+668/-0)
mysql-source/innobase/include/buf0flu.h (+120/-0)
mysql-source/innobase/include/buf0flu.ic (+106/-0)
mysql-source/innobase/include/buf0lru.h (+144/-0)
mysql-source/innobase/include/buf0lru.ic (+8/-0)
mysql-source/innobase/include/buf0rea.h (+103/-0)
mysql-source/innobase/include/buf0types.h (+20/-0)
mysql-source/innobase/include/data0data.h (+424/-0)
mysql-source/innobase/include/data0data.ic (+433/-0)
mysql-source/innobase/include/data0type.h (+433/-0)
mysql-source/innobase/include/data0type.ic (+526/-0)
mysql-source/innobase/include/data0types.h (+19/-0)
mysql-source/innobase/include/db0err.h (+69/-0)
mysql-source/innobase/include/dict0boot.h (+133/-0)
mysql-source/innobase/include/dict0boot.ic (+72/-0)
mysql-source/innobase/include/dict0crea.h (+179/-0)
mysql-source/innobase/include/dict0crea.ic (+8/-0)
mysql-source/innobase/include/dict0dict.h (+973/-0)
mysql-source/innobase/include/dict0dict.ic (+618/-0)
mysql-source/innobase/include/dict0load.h (+100/-0)
mysql-source/innobase/include/dict0load.ic (+9/-0)
mysql-source/innobase/include/dict0mem.h (+451/-0)
mysql-source/innobase/include/dict0mem.ic (+9/-0)
mysql-source/innobase/include/dict0types.h (+28/-0)
mysql-source/innobase/include/dyn0dyn.h (+166/-0)
mysql-source/innobase/include/dyn0dyn.ic (+344/-0)
mysql-source/innobase/include/eval0eval.h (+97/-0)
mysql-source/innobase/include/eval0eval.ic (+234/-0)
mysql-source/innobase/include/eval0proc.h (+79/-0)
mysql-source/innobase/include/eval0proc.ic (+71/-0)
mysql-source/innobase/include/fil0fil.h (+683/-0)
mysql-source/innobase/include/fsp0fsp.h (+387/-0)
mysql-source/innobase/include/fsp0fsp.ic (+24/-0)
mysql-source/innobase/include/fut0fut.h (+36/-0)
mysql-source/innobase/include/fut0fut.ic (+38/-0)
mysql-source/innobase/include/fut0lst.h (+198/-0)
mysql-source/innobase/include/fut0lst.ic (+147/-0)
mysql-source/innobase/include/ha0ha.h (+148/-0)
mysql-source/innobase/include/ha0ha.ic (+220/-0)
mysql-source/innobase/include/hash0hash.h (+333/-0)
mysql-source/innobase/include/hash0hash.ic (+130/-0)
mysql-source/innobase/include/ibuf0ibuf.h (+307/-0)
mysql-source/innobase/include/ibuf0ibuf.ic (+232/-0)
mysql-source/innobase/include/ibuf0types.h (+15/-0)
mysql-source/innobase/include/lock0lock.h (+681/-0)
mysql-source/innobase/include/lock0lock.ic (+83/-0)
mysql-source/innobase/include/lock0types.h (+16/-0)
mysql-source/innobase/include/log0log.h (+865/-0)
mysql-source/innobase/include/log0log.ic (+402/-0)
mysql-source/innobase/include/log0recv.h (+375/-0)
mysql-source/innobase/include/log0recv.ic (+35/-0)
mysql-source/innobase/include/mach0data.h (+334/-0)
mysql-source/innobase/include/mach0data.ic (+719/-0)
mysql-source/innobase/include/mem0dbg.h (+132/-0)
mysql-source/innobase/include/mem0dbg.ic (+93/-0)
mysql-source/innobase/include/mem0mem.h (+374/-0)
mysql-source/innobase/include/mem0mem.ic (+644/-0)
mysql-source/innobase/include/mem0pool.h (+108/-0)
mysql-source/innobase/include/mem0pool.ic (+7/-0)
mysql-source/innobase/include/mtr0log.h (+217/-0)
mysql-source/innobase/include/mtr0log.ic (+219/-0)
mysql-source/innobase/include/mtr0mtr.h (+344/-0)
mysql-source/innobase/include/mtr0mtr.ic (+249/-0)
mysql-source/innobase/include/mtr0types.h (+14/-0)
mysql-source/innobase/include/os0file.h (+727/-0)
mysql-source/innobase/include/os0proc.h (+147/-0)
mysql-source/innobase/include/os0proc.ic (+10/-0)
mysql-source/innobase/include/os0sync.h (+242/-0)
mysql-source/innobase/include/os0sync.ic (+46/-0)
mysql-source/innobase/include/os0thread.h (+145/-0)
mysql-source/innobase/include/os0thread.ic (+8/-0)
mysql-source/innobase/include/page0cur.h (+285/-0)
mysql-source/innobase/include/page0cur.ic (+210/-0)
mysql-source/innobase/include/page0page.h (+802/-0)
mysql-source/innobase/include/page0page.ic (+828/-0)
mysql-source/innobase/include/page0types.h (+22/-0)
mysql-source/innobase/include/pars0grm.h (+90/-0)
mysql-source/innobase/include/pars0opt.h (+58/-0)
mysql-source/innobase/include/pars0opt.ic (+7/-0)
mysql-source/innobase/include/pars0pars.h (+526/-0)
mysql-source/innobase/include/pars0pars.ic (+7/-0)
mysql-source/innobase/include/pars0sym.h (+188/-0)
mysql-source/innobase/include/pars0sym.ic (+7/-0)
mysql-source/innobase/include/pars0types.h (+28/-0)
mysql-source/innobase/include/que0que.h (+502/-0)
mysql-source/innobase/include/que0que.ic (+258/-0)
mysql-source/innobase/include/que0types.h (+43/-0)
mysql-source/innobase/include/read0read.h (+148/-0)
mysql-source/innobase/include/read0read.ic (+80/-0)
mysql-source/innobase/include/read0types.h (+15/-0)
mysql-source/innobase/include/rem0cmp.h (+170/-0)
mysql-source/innobase/include/rem0cmp.ic (+69/-0)
mysql-source/innobase/include/rem0rec.h (+588/-0)
mysql-source/innobase/include/rem0rec.ic (+1516/-0)
mysql-source/innobase/include/rem0types.h (+16/-0)
mysql-source/innobase/include/row0ins.h (+169/-0)
mysql-source/innobase/include/row0ins.ic (+9/-0)
mysql-source/innobase/include/row0mysql.h (+668/-0)
mysql-source/innobase/include/row0mysql.ic (+7/-0)
mysql-source/innobase/include/row0purge.h (+80/-0)
mysql-source/innobase/include/row0purge.ic (+8/-0)
mysql-source/innobase/include/row0row.h (+252/-0)
mysql-source/innobase/include/row0row.ic (+182/-0)
mysql-source/innobase/include/row0sel.h (+348/-0)
mysql-source/innobase/include/row0sel.ic (+88/-0)
mysql-source/innobase/include/row0types.h (+37/-0)
mysql-source/innobase/include/row0uins.h (+36/-0)
mysql-source/innobase/include/row0uins.ic (+8/-0)
mysql-source/innobase/include/row0umod.h (+35/-0)
mysql-source/innobase/include/row0umod.ic (+7/-0)
mysql-source/innobase/include/row0undo.h (+116/-0)
mysql-source/innobase/include/row0undo.ic (+7/-0)
mysql-source/innobase/include/row0upd.h (+428/-0)
mysql-source/innobase/include/row0upd.ic (+122/-0)
mysql-source/innobase/include/row0vers.h (+100/-0)
mysql-source/innobase/include/row0vers.ic (+13/-0)
mysql-source/innobase/include/srv0que.h (+53/-0)
mysql-source/innobase/include/srv0srv.h (+583/-0)
mysql-source/innobase/include/srv0srv.ic (+7/-0)
mysql-source/innobase/include/srv0start.h (+112/-0)
mysql-source/innobase/include/sync0arr.h (+122/-0)
mysql-source/innobase/include/sync0arr.ic (+10/-0)
mysql-source/innobase/include/sync0rw.h (+492/-0)
mysql-source/innobase/include/sync0rw.ic (+507/-0)
mysql-source/innobase/include/sync0sync.h (+545/-0)
mysql-source/innobase/include/sync0sync.ic (+256/-0)
mysql-source/innobase/include/sync0types.h (+16/-0)
mysql-source/innobase/include/thr0loc.h (+67/-0)
mysql-source/innobase/include/thr0loc.ic (+7/-0)
mysql-source/innobase/include/trx0purge.h (+169/-0)
mysql-source/innobase/include/trx0purge.ic (+26/-0)
mysql-source/innobase/include/trx0rec.h (+303/-0)
mysql-source/innobase/include/trx0rec.ic (+86/-0)
mysql-source/innobase/include/trx0roll.h (+306/-0)
mysql-source/innobase/include/trx0roll.ic (+23/-0)
mysql-source/innobase/include/trx0rseg.h (+193/-0)
mysql-source/innobase/include/trx0rseg.ic (+124/-0)
mysql-source/innobase/include/trx0sys.h (+453/-0)
mysql-source/innobase/include/trx0sys.ic (+384/-0)
mysql-source/innobase/include/trx0trx.h (+762/-0)
mysql-source/innobase/include/trx0trx.ic (+98/-0)
mysql-source/innobase/include/trx0types.h (+45/-0)
mysql-source/innobase/include/trx0undo.h (+499/-0)
mysql-source/innobase/include/trx0undo.ic (+323/-0)
mysql-source/innobase/include/trx0xa.h (+182/-0)
mysql-source/innobase/include/univ.i (+274/-0)
mysql-source/innobase/include/usr0sess.h (+61/-0)
mysql-source/innobase/include/usr0sess.ic (+7/-0)
mysql-source/innobase/include/usr0types.h (+14/-0)
mysql-source/innobase/include/ut0byte.h (+250/-0)
mysql-source/innobase/include/ut0byte.ic (+395/-0)
mysql-source/innobase/include/ut0dbg.h (+96/-0)
mysql-source/innobase/include/ut0lst.h (+215/-0)
mysql-source/innobase/include/ut0mem.h (+187/-0)
mysql-source/innobase/include/ut0mem.ic (+70/-0)
mysql-source/innobase/include/ut0rnd.h (+121/-0)
mysql-source/innobase/include/ut0rnd.ic (+222/-0)
mysql-source/innobase/include/ut0sort.h (+91/-0)
mysql-source/innobase/include/ut0ut.h (+254/-0)
mysql-source/innobase/include/ut0ut.ic (+174/-0)
mysql-source/innobase/lock/Makefile.am (+25/-0)
mysql-source/innobase/lock/Makefile.in (+451/-0)
mysql-source/innobase/log/Makefile.am (+25/-0)
mysql-source/innobase/log/Makefile.in (+452/-0)
mysql-source/innobase/mach/Makefile.am (+25/-0)
mysql-source/innobase/mach/Makefile.in (+451/-0)
mysql-source/innobase/mem/Makefile.am (+27/-0)
mysql-source/innobase/mem/Makefile.in (+453/-0)
mysql-source/innobase/mtr/Makefile.am (+25/-0)
mysql-source/innobase/mtr/Makefile.in (+452/-0)
mysql-source/innobase/os/Makefile.am (+25/-0)
mysql-source/innobase/os/Makefile.in (+455/-0)
mysql-source/innobase/page/Makefile.am (+25/-0)
mysql-source/innobase/page/Makefile.in (+452/-0)
mysql-source/innobase/pars/Makefile.am (+27/-0)
mysql-source/innobase/pars/Makefile.in (+459/-0)
mysql-source/innobase/que/Makefile.am (+25/-0)
mysql-source/innobase/que/Makefile.in (+451/-0)
mysql-source/innobase/read/Makefile.am (+25/-0)
mysql-source/innobase/read/Makefile.in (+451/-0)
mysql-source/innobase/rem/Makefile.am (+25/-0)
mysql-source/innobase/rem/Makefile.in (+452/-0)
mysql-source/innobase/row/Makefile.am (+26/-0)
mysql-source/innobase/row/Makefile.in (+465/-0)
mysql-source/innobase/srv/Makefile.am (+25/-0)
mysql-source/innobase/srv/Makefile.in (+454/-0)
mysql-source/innobase/sync/Makefile.am (+25/-0)
mysql-source/innobase/sync/Makefile.in (+454/-0)
mysql-source/innobase/thr/Makefile.am (+25/-0)
mysql-source/innobase/thr/Makefile.in (+451/-0)
mysql-source/innobase/trx/Makefile.am (+26/-0)
mysql-source/innobase/trx/Makefile.in (+461/-0)
mysql-source/innobase/usr/Makefile.am (+25/-0)
mysql-source/innobase/usr/Makefile.in (+451/-0)
mysql-source/innobase/ut/Makefile.am (+25/-0)
mysql-source/innobase/ut/Makefile.in (+456/-0)
mysql-source/innobase/ut/ut0byte.c (+31/-0)
mysql-source/innobase/ut/ut0dbg.c (+90/-0)
mysql-source/innobase/ut/ut0mem.c (+438/-0)
mysql-source/innobase/ut/ut0rnd.c (+78/-0)
mysql-source/innobase/ut/ut0ut.c (+505/-0)
mysql-source/install-sh (+323/-0)
mysql-source/libmysql/Makefile.am (+116/-0)
mysql-source/libmysql/Makefile.in (+924/-0)
mysql-source/libmysql/Makefile.shared (+117/-0)
mysql-source/libmysql/libmysql.ver.in (+1/-0)
mysql-source/libmysql_r/Makefile.am (+47/-0)
mysql-source/libmysql_r/Makefile.in (+849/-0)
mysql-source/libmysqld/Makefile.am (+160/-0)
mysql-source/libmysqld/Makefile.in (+1082/-0)
mysql-source/libmysqld/examples/Makefile.am (+53/-0)
mysql-source/libmysqld/examples/Makefile.in (+740/-0)
mysql-source/ltmain.sh (+6863/-0)
mysql-source/man/Makefile.am (+25/-0)
mysql-source/man/Makefile.in (+617/-0)
mysql-source/missing (+360/-0)
mysql-source/myisam/Makefile.am (+107/-0)
mysql-source/myisam/Makefile.in (+946/-0)
mysql-source/myisammrg/Makefile.am (+27/-0)
mysql-source/myisammrg/Makefile.in (+695/-0)
mysql-source/mysql-test/Makefile.am (+159/-0)
mysql-source/mysql-test/Makefile.in (+862/-0)
mysql-source/mysql-test/ndb/Makefile.am (+24/-0)
mysql-source/mysql-test/ndb/Makefile.in (+616/-0)
mysql-source/mysys/Makefile.am (+127/-0)
mysql-source/mysys/Makefile.in (+933/-0)
mysql-source/ndb/Makefile.am (+49/-0)
mysql-source/ndb/Makefile.in (+726/-0)
mysql-source/ndb/docs/Makefile.am (+132/-0)
mysql-source/ndb/docs/Makefile.in (+673/-0)
mysql-source/ndb/include/Makefile.am (+65/-0)
mysql-source/ndb/include/Makefile.in (+715/-0)
mysql-source/ndb/src/Makefile.am (+53/-0)
mysql-source/ndb/src/Makefile.in (+797/-0)
mysql-source/ndb/src/common/Makefile.am (+33/-0)
mysql-source/ndb/src/common/Makefile.in (+719/-0)
mysql-source/ndb/src/common/debugger/Makefile.am (+40/-0)
mysql-source/ndb/src/common/debugger/Makefile.in (+810/-0)
mysql-source/ndb/src/common/debugger/signaldata/Makefile.am (+61/-0)
mysql-source/ndb/src/common/debugger/signaldata/Makefile.in (+793/-0)
mysql-source/ndb/src/common/logger/Makefile.am (+39/-0)
mysql-source/ndb/src/common/logger/Makefile.in (+698/-0)
mysql-source/ndb/src/common/mgmcommon/Makefile.am (+43/-0)
mysql-source/ndb/src/common/mgmcommon/Makefile.in (+711/-0)
mysql-source/ndb/src/common/portlib/Makefile.am (+59/-0)
mysql-source/ndb/src/common/portlib/Makefile.in (+772/-0)
mysql-source/ndb/src/common/transporter/Makefile.am (+50/-0)
mysql-source/ndb/src/common/transporter/Makefile.in (+702/-0)
mysql-source/ndb/src/common/util/Makefile.am (+63/-0)
mysql-source/ndb/src/common/util/Makefile.in (+772/-0)
mysql-source/ndb/src/cw/Makefile.am (+21/-0)
mysql-source/ndb/src/cw/Makefile.in (+671/-0)
mysql-source/ndb/src/cw/cpcd/Makefile.am (+34/-0)
mysql-source/ndb/src/cw/cpcd/Makefile.in (+715/-0)
mysql-source/ndb/src/kernel/Makefile.am (+88/-0)
mysql-source/ndb/src/kernel/Makefile.in (+876/-0)
mysql-source/ndb/src/kernel/blocks/Makefile.am (+36/-0)
mysql-source/ndb/src/kernel/blocks/Makefile.in (+687/-0)
mysql-source/ndb/src/kernel/blocks/backup/Makefile.am (+38/-0)
mysql-source/ndb/src/kernel/blocks/backup/Makefile.in (+691/-0)
mysql-source/ndb/src/kernel/blocks/cmvmi/Makefile.am (+38/-0)
mysql-source/ndb/src/kernel/blocks/cmvmi/Makefile.in (+690/-0)
mysql-source/ndb/src/kernel/blocks/dbacc/Makefile.am (+40/-0)
mysql-source/ndb/src/kernel/blocks/dbacc/Makefile.in (+692/-0)
mysql-source/ndb/src/kernel/blocks/dbdict/Makefile.am (+48/-0)
mysql-source/ndb/src/kernel/blocks/dbdict/Makefile.in (+709/-0)
mysql-source/ndb/src/kernel/blocks/dbdih/Makefile.am (+44/-0)
mysql-source/ndb/src/kernel/blocks/dbdih/Makefile.in (+718/-0)
mysql-source/ndb/src/kernel/blocks/dblqh/Makefile.am (+44/-0)
mysql-source/ndb/src/kernel/blocks/dblqh/Makefile.in (+734/-0)
mysql-source/ndb/src/kernel/blocks/dbtc/Makefile.am (+38/-0)
mysql-source/ndb/src/kernel/blocks/dbtc/Makefile.in (+691/-0)
mysql-source/ndb/src/kernel/blocks/dbtup/Makefile.am (+57/-0)
mysql-source/ndb/src/kernel/blocks/dbtup/Makefile.in (+736/-0)
mysql-source/ndb/src/kernel/blocks/dbtux/Makefile.am (+49/-0)
mysql-source/ndb/src/kernel/blocks/dbtux/Makefile.in (+712/-0)
mysql-source/ndb/src/kernel/blocks/dbutil/Makefile.am (+38/-0)
mysql-source/ndb/src/kernel/blocks/dbutil/Makefile.in (+690/-0)
mysql-source/ndb/src/kernel/blocks/ndbcntr/Makefile.am (+41/-0)
mysql-source/ndb/src/kernel/blocks/ndbcntr/Makefile.in (+697/-0)
mysql-source/ndb/src/kernel/blocks/ndbfs/Makefile.am (+42/-0)
mysql-source/ndb/src/kernel/blocks/ndbfs/Makefile.in (+700/-0)
mysql-source/ndb/src/kernel/blocks/qmgr/Makefile.am (+40/-0)
mysql-source/ndb/src/kernel/blocks/qmgr/Makefile.in (+694/-0)
mysql-source/ndb/src/kernel/blocks/suma/Makefile.am (+38/-0)
mysql-source/ndb/src/kernel/blocks/suma/Makefile.in (+691/-0)
mysql-source/ndb/src/kernel/blocks/trix/Makefile.am (+38/-0)
mysql-source/ndb/src/kernel/blocks/trix/Makefile.in (+690/-0)
mysql-source/ndb/src/kernel/error/Makefile.am (+40/-0)
mysql-source/ndb/src/kernel/error/Makefile.in (+725/-0)
mysql-source/ndb/src/kernel/vm/Makefile.am (+58/-0)
mysql-source/ndb/src/kernel/vm/Makefile.in (+730/-0)
mysql-source/ndb/src/mgmapi/Makefile.am (+44/-0)
mysql-source/ndb/src/mgmapi/Makefile.in (+728/-0)
mysql-source/ndb/src/mgmclient/Makefile.am (+72/-0)
mysql-source/ndb/src/mgmclient/Makefile.in (+771/-0)
mysql-source/ndb/src/mgmsrv/Makefile.am (+75/-0)
mysql-source/ndb/src/mgmsrv/Makefile.in (+772/-0)
mysql-source/ndb/src/ndbapi/Makefile.am (+77/-0)
mysql-source/ndb/src/ndbapi/Makefile.in (+798/-0)
mysql-source/ndb/test/Makefile.am (+26/-0)
mysql-source/ndb/test/Makefile.in (+678/-0)
mysql-source/ndb/test/ndbapi/Makefile.am (+185/-0)
mysql-source/ndb/test/ndbapi/Makefile.in (+1552/-0)
mysql-source/ndb/test/ndbapi/bank/Makefile.am (+38/-0)
mysql-source/ndb/test/ndbapi/bank/Makefile.in (+829/-0)
mysql-source/ndb/test/run-test/Makefile.am (+47/-0)
mysql-source/ndb/test/run-test/Makefile.in (+821/-0)
mysql-source/ndb/test/src/Makefile.am (+49/-0)
mysql-source/ndb/test/src/Makefile.in (+753/-0)
mysql-source/ndb/test/tools/Makefile.am (+44/-0)
mysql-source/ndb/test/tools/Makefile.in (+898/-0)
mysql-source/ndb/tools/Makefile.am (+186/-0)
mysql-source/ndb/tools/Makefile.in (+1236/-0)
mysql-source/netware/Makefile.am (+111/-0)
mysql-source/netware/Makefile.in (+784/-0)
mysql-source/os2/Makefile.am (+27/-0)
mysql-source/os2/Makefile.in (+676/-0)
mysql-source/os2/include/Makefile.am (+22/-0)
mysql-source/os2/include/Makefile.in (+670/-0)
mysql-source/os2/include/sys/Makefile.am (+21/-0)
mysql-source/os2/include/sys/Makefile.in (+512/-0)
mysql-source/pstack/Makefile.am (+35/-0)
mysql-source/pstack/Makefile.in (+797/-0)
mysql-source/pstack/aout/Makefile.am (+4/-0)
mysql-source/pstack/aout/Makefile.in (+546/-0)
mysql-source/regex/Makefile.am (+36/-0)
mysql-source/regex/Makefile.in (+662/-0)
mysql-source/scripts/Makefile.am (+190/-0)
mysql-source/scripts/Makefile.in (+836/-0)
mysql-source/server-tools/Makefile.am (+20/-0)
mysql-source/server-tools/Makefile.in (+669/-0)
mysql-source/server-tools/instance-manager/Makefile.am (+94/-0)
mysql-source/server-tools/instance-manager/Makefile.in (+803/-0)
mysql-source/sql-bench/Makefile.am (+86/-0)
mysql-source/sql-bench/Makefile.in (+611/-0)
mysql-source/sql-common/Makefile.am (+20/-0)
mysql-source/sql-common/Makefile.in (+512/-0)
mysql-source/sql/CMakeLists.txt (+142/-0)
mysql-source/sql/Makefile.am (+180/-0)
mysql-source/sql/Makefile.in (+1238/-0)
mysql-source/sql/mysqld.cc (+7792/-0)
mysql-source/sql/share/Makefile.am (+62/-0)
mysql-source/sql/share/Makefile.in (+558/-0)
mysql-source/sql/share/charsets/Index.xml (+595/-0)
mysql-source/sql/share/charsets/README (+40/-0)
mysql-source/sql/share/charsets/armscii8.xml (+138/-0)
mysql-source/sql/share/charsets/ascii.xml (+138/-0)
mysql-source/sql/share/charsets/cp1250.xml (+161/-0)
mysql-source/sql/share/charsets/cp1251.xml (+214/-0)
mysql-source/sql/share/charsets/cp1256.xml (+141/-0)
mysql-source/sql/share/charsets/cp1257.xml (+227/-0)
mysql-source/sql/share/charsets/cp850.xml (+138/-0)
mysql-source/sql/share/charsets/cp852.xml (+138/-0)
mysql-source/sql/share/charsets/cp866.xml (+141/-0)
mysql-source/sql/share/charsets/dec8.xml (+139/-0)
mysql-source/sql/share/charsets/geostd8.xml (+138/-0)
mysql-source/sql/share/charsets/greek.xml (+143/-0)
mysql-source/sql/share/charsets/hebrew.xml (+139/-0)
mysql-source/sql/share/charsets/hp8.xml (+139/-0)
mysql-source/sql/share/charsets/keybcs2.xml (+139/-0)
mysql-source/sql/share/charsets/koi8r.xml (+138/-0)
mysql-source/sql/share/charsets/koi8u.xml (+139/-0)
mysql-source/sql/share/charsets/languages.html (+257/-0)
mysql-source/sql/share/charsets/latin1.xml (+252/-0)
mysql-source/sql/share/charsets/latin2.xml (+185/-0)
mysql-source/sql/share/charsets/latin5.xml (+138/-0)
mysql-source/sql/share/charsets/latin7.xml (+186/-0)
mysql-source/sql/share/charsets/macce.xml (+206/-0)
mysql-source/sql/share/charsets/macroman.xml (+199/-0)
mysql-source/sql/share/charsets/swe7.xml (+140/-0)
mysql-source/sql/share/errmsg.txt (+5636/-0)
mysql-source/strings/Makefile.am (+78/-0)
mysql-source/strings/Makefile.in (+883/-0)
mysql-source/strings/bchange.c (+38/-0)
mysql-source/strings/bcmp.c (+64/-0)
mysql-source/strings/bfill.c (+98/-0)
mysql-source/strings/bmove.c (+80/-0)
mysql-source/strings/bmove512.c (+125/-0)
mysql-source/strings/bmove_upp.c (+49/-0)
mysql-source/strings/ctype-bin.c (+579/-0)
mysql-source/strings/ctype-latin1.c (+782/-0)
mysql-source/strings/ctype-mb.c (+969/-0)
mysql-source/strings/ctype-simple.c (+1795/-0)
mysql-source/strings/ctype-utf8.c (+2979/-0)
mysql-source/strings/ctype.c (+308/-0)
mysql-source/strings/decimal.c (+3124/-0)
mysql-source/strings/int2str.c (+160/-0)
mysql-source/strings/is_prefix.c (+32/-0)
mysql-source/strings/llstr.c (+34/-0)
mysql-source/strings/longlong2str.c (+139/-0)
mysql-source/strings/my_strtoll10.c (+247/-0)
mysql-source/strings/my_vsnprintf.c (+223/-0)
mysql-source/strings/r_strinstr.c (+50/-0)
mysql-source/strings/str2int.c (+201/-0)
mysql-source/strings/str_alloc.c (+33/-0)
mysql-source/strings/strappend.c (+39/-0)
mysql-source/strings/strcend.c (+54/-0)
mysql-source/strings/strcont.c (+44/-0)
mysql-source/strings/strend-sparc.s (+35/-0)
mysql-source/strings/strend.c (+50/-0)
mysql-source/strings/strfill.c (+34/-0)
mysql-source/strings/strinstr.c (+48/-0)
mysql-source/strings/strmake.c (+52/-0)
mysql-source/strings/strmov.c (+57/-0)
mysql-source/strings/strnlen.c (+34/-0)
mysql-source/strings/strnmov.c (+34/-0)
mysql-source/strings/strstr.c (+52/-0)
mysql-source/strings/strtod.c (+232/-0)
mysql-source/strings/strtol.c (+28/-0)
mysql-source/strings/strtoll.c (+33/-0)
mysql-source/strings/strtoul.c (+29/-0)
mysql-source/strings/strtoull.c (+34/-0)
mysql-source/strings/strxmov.c (+50/-0)
mysql-source/strings/strxnmov.c (+65/-0)
mysql-source/strings/t_ctype.h (+258/-0)
mysql-source/strings/xml.c (+400/-0)
mysql-source/support-files/MacOSX/Makefile.am (+57/-0)
mysql-source/support-files/MacOSX/Makefile.in (+552/-0)
mysql-source/support-files/Makefile.am (+112/-0)
mysql-source/support-files/Makefile.in (+815/-0)
mysql-source/support-files/RHEL4-SElinux/Makefile.am (+23/-0)
mysql-source/support-files/RHEL4-SElinux/Makefile.in (+514/-0)
mysql-source/tests/Makefile.am (+55/-0)
mysql-source/tests/Makefile.in (+729/-0)
mysql-source/tools/Makefile.am (+30/-0)
mysql-source/tools/Makefile.in (+655/-0)
mysql-source/vio/Makefile.am (+28/-0)
mysql-source/vio/Makefile.in (+669/-0)
mysql-source/win/Makefile.am (+21/-0)
mysql-source/win/Makefile.in (+514/-0)
mysql-source/zlib/CMakeLists.txt (+23/-0)
mysql-source/zlib/ChangeLog (+855/-0)
mysql-source/zlib/FAQ (+339/-0)
mysql-source/zlib/INDEX (+51/-0)
mysql-source/zlib/Makefile.am (+38/-0)
mysql-source/zlib/Makefile.in (+697/-0)
mysql-source/zlib/README (+125/-0)
mysql-source/zlib/adler32.c (+149/-0)
mysql-source/zlib/algorithm.txt (+209/-0)
mysql-source/zlib/compress.c (+79/-0)
mysql-source/zlib/crc32.c (+423/-0)
mysql-source/zlib/crc32.h (+441/-0)
mysql-source/zlib/deflate.c (+1736/-0)
mysql-source/zlib/deflate.h (+331/-0)
mysql-source/zlib/gzio.c (+1026/-0)
mysql-source/zlib/infback.c (+623/-0)
mysql-source/zlib/inffast.c (+318/-0)
mysql-source/zlib/inffast.h (+11/-0)
mysql-source/zlib/inffixed.h (+94/-0)
mysql-source/zlib/inflate.c (+1368/-0)
mysql-source/zlib/inflate.h (+115/-0)
mysql-source/zlib/inftrees.c (+329/-0)
mysql-source/zlib/inftrees.h (+55/-0)
mysql-source/zlib/trees.c (+1219/-0)
mysql-source/zlib/trees.h (+128/-0)
mysql-source/zlib/uncompr.c (+61/-0)
mysql-source/zlib/zconf.h (+336/-0)
mysql-source/zlib/zlib.3 (+159/-0)
mysql-source/zlib/zlib.h (+1357/-0)
mysql-source/zlib/zutil.c (+318/-0)
mysql-source/zlib/zutil.h (+269/-0)
page_parser.c (+284/-0)
print_data.c (+230/-0)
split_dump.pl (+19/-0)
tables_dict.c (+67/-0)
To merge this branch: bzr merge lp://staging/~percona-dev/percona-data-recovery-tool-for-innodb/page-signature-check
Reviewer Review Type Date Requested Status
Aleksandr Kuzminsky (community) Approve
Review via email: mp+17374@code.staging.launchpad.net
To post a comment you must log in.
Revision history for this message
Aleksandr Kuzminsky (akuzminsky) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'INSTALL'
2--- INSTALL 1970-01-01 00:00:00 +0000
3+++ INSTALL 2010-01-14 13:03:26 +0000
4@@ -0,0 +1,1 @@
5+Read usage and installation docs in docs/README or docs/README.html files.
6\ No newline at end of file
7
8=== added file 'Makefile'
9--- Makefile 1970-01-01 00:00:00 +0000
10+++ Makefile 2010-01-14 13:03:26 +0000
11@@ -0,0 +1,64 @@
12+# Uncomment to build static binaries
13+#CFLAGS=-static
14+CFLAGS=-DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3
15+#CFLAGS=-DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall
16+
17+INCLUDES=-I include -I mysql-source/include -I mysql-source/innobase/include
18+
19+all: constraints_parser page_parser
20+
21+# LIBS
22+
23+lib:
24+ mkdir lib
25+
26+lib/print_data.o: lib print_data.c include/print_data.h include/tables_dict.h
27+ gcc $(CFLAGS) -g $(INCLUDES) -c print_data.c -o lib/print_data.o
28+
29+lib/check_data.o: lib check_data.c include/check_data.h include/tables_dict.h
30+ gcc $(CFLAGS) -g $(INCLUDES) -c check_data.c -o lib/check_data.o
31+
32+lib/tables_dict.o: lib tables_dict.c include/tables_dict.h include/table_defs.h mysql-source/include/my_config.h
33+ gcc $(CFLAGS) -g $(INCLUDES) -c tables_dict.c -o lib/tables_dict.o
34+
35+# BINARIES
36+
37+page_parser: page_parser.c include/error.h lib/tables_dict.o lib/libut.a
38+ gcc $(CFLAGS) -g $(INCLUDES) -o page_parser page_parser.c lib/tables_dict.o lib/libut.a
39+
40+constraints_parser: constraints_parser.c include/error.h lib/tables_dict.o lib/print_data.o lib/check_data.o lib/libut.a lib/libmystrings.a
41+ gcc $(CFLAGS) -g $(INCLUDES) -o constraints_parser constraints_parser.c lib/tables_dict.o lib/print_data.o lib/check_data.o lib/libut.a lib/libmystrings.a
42+
43+# DEPENDENCIES FROM MYSQL
44+
45+mysql-source/config.h:
46+ cd mysql-source && CFLAGS=-g ./configure --without-docs --without-man --without-bench --without-extra-tools
47+
48+mysql-source/include/my_config.h: mysql-source/config.h
49+ cd mysql-source/include && $(MAKE) my_config.h
50+
51+lib/libut.a: mysql-source/include/my_config.h
52+ cd mysql-source/innobase/ut && $(MAKE) libut.a
53+ ln -fs ../mysql-source/innobase/ut/libut.a lib/libut.a
54+
55+lib/libmystrings.a: mysql-source/include/my_config.h
56+ cd mysql-source/strings && $(MAKE) libmystrings.a
57+ ln -fs ../mysql-source/strings/libmystrings.a lib/libmystrings.a
58+
59+# CLEAN
60+
61+dist:
62+ mkdir -p innodb_recovery
63+ cp page_parser constraints_parser innodb_recovery/
64+ tar czf innodb_recovery.tar.gz innodb_recovery
65+ rm -rf innodb_recovery
66+
67+clean:
68+ rm -f page_parser constraints_parser
69+ rm -rf lib constraints_parser.dSYM page_parser.dSYM
70+
71+distclean: clean
72+ rm -rf innodb_recovery
73+ rm -f innodb_recovery.tar.gz
74+ cd mysql-source && (test -f Makefile && $(MAKE) -i distclean) || true
75+ rm -rf mysql-source/Docs/Makefile mysql-source/man/Makefile mysql-source/sql-bench/Makefile mysql-source/autom4te.cache
76
77=== added file 'check_data.c'
78--- check_data.c 1970-01-01 00:00:00 +0000
79+++ check_data.c 2010-01-14 13:03:26 +0000
80@@ -0,0 +1,218 @@
81+#include <check_data.h>
82+#include <print_data.h>
83+#include <string.h>
84+#include <regex.h>
85+
86+// Linux has no isnumber function? (Debian 4.0 has no such function)
87+#ifndef isnumber
88+inline int isnumber(char c) {
89+ return (isdigit(c) || c == '.' || c == '-');
90+}
91+#endif
92+
93+#define MAX_CHAR_PREFIX_LENGTH 0xfff
94+
95+/*******************************************************************/
96+inline ulonglong make_ulonglong(dulint x) {
97+ ulonglong lx = x.high;
98+ lx <<= 32;
99+ lx += x.low;
100+ return lx;
101+}
102+
103+/*******************************************************************/
104+inline longlong make_longlong(dulint x) {
105+ longlong lx = x.high;
106+ lx <<= 32;
107+ lx += x.low;
108+ return lx;
109+}
110+
111+/*******************************************************************/
112+inline ibool check_datetime(ulonglong ldate) {
113+ int year, month, day, hour, min, sec;
114+
115+ ldate &= ~(1ULL << 63);
116+
117+ if (ldate == 0) return TRUE;
118+ if (debug) printf("DATE=OK ");
119+
120+ sec = ldate % 100; ldate /= 100;
121+ if (debug) printf("SEC(%d)", sec);
122+ if (sec < 0 || sec > 59) return FALSE;
123+ if (debug) printf("=OK ");
124+
125+ min = ldate % 100; ldate /= 100;
126+ if (debug) printf("MIN(%d)", min);
127+ if (min < 0 || min > 59) return FALSE;
128+ if (debug) printf("=OK ");
129+
130+ hour = ldate % 100; ldate /= 100;
131+ if (debug) printf("HOUR(%d)", hour);
132+ if (hour < 0 || hour > 23) return FALSE;
133+ if (debug) printf("=OK ");
134+
135+ day = ldate % 100; ldate /= 100;
136+ if (debug) printf("DAY(%d)", day);
137+ if (day < 0 || day > 31) return FALSE;
138+ if (debug) printf("=OK ");
139+
140+ month = ldate % 100; ldate /= 100;
141+ if (debug) printf("MONTH(%d)", month);
142+ if (month < 0 || month > 12) return FALSE;
143+ if (debug) printf("=OK ");
144+
145+ year = ldate % 10000;
146+ if (debug) printf("YEAR(%d)", year);
147+ if (year < 1950 || year > 2050) return FALSE;
148+ if (debug) printf("=OK ");
149+
150+ return TRUE;
151+}
152+
153+/*******************************************************************/
154+inline ibool check_char_ascii(char *value, ulint len) {
155+ char *p = value;
156+ if (!len) return TRUE;
157+ do {
158+ if (!isprint(*p) && *p != '\n' && *p != '\t' && *p != '\r') return FALSE;
159+ } while (++p < value + len);
160+ return TRUE;
161+}
162+
163+/*******************************************************************/
164+inline ibool check_char_digits(char *value, ulint len) {
165+ char *p = value;
166+ if (!len) return TRUE;
167+ do {
168+ if (!isdigit(*p)) return FALSE;
169+ } while (++p < value + len);
170+ return TRUE;
171+}
172+
173+/*******************************************************************/
174+// Try and match a given regular expression with a given text.
175+// Returns TRUE/FALSE upon match/mismatch respectively.
176+// The function recomputes the regular expression per call. There is
177+// no caching of regex. This can be optimized later on.
178+/*******************************************************************/
179+inline ibool regex_match(const char *string, char *pattern) {
180+ int status;
181+ regex_t re;
182+ if(regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB) != 0)
183+ return 0;
184+ status = regexec(&re, string, (size_t)0, NULL, 0);
185+ regfree(&re);
186+ if(status == 0)
187+ return TRUE; // success
188+ else
189+ return FALSE; // no match
190+}
191+
192+/*******************************************************************/
193+// Validate regex constraints.
194+// Given value is not null terminated. When len < 4096, use staticly
195+// allocated buffer; otherwise, allecate with malloc.
196+// For long texts, this means a lot of overhead.
197+/*******************************************************************/
198+inline ibool check_regex_match(char *value, ulint len, char *pattern)
199+{
200+ static char prefix[MAX_CHAR_PREFIX_LENGTH + 1];
201+ char * null_terminated_value = NULL ;
202+ ibool result = FALSE ;
203+
204+ if (len <= MAX_CHAR_PREFIX_LENGTH)
205+ {
206+ null_terminated_value = prefix;
207+ }
208+ else
209+ {
210+ null_terminated_value = (char*)malloc(len + 1);
211+ }
212+ strncpy(null_terminated_value, value, len-1);
213+ null_terminated_value[len] = 0;
214+
215+ if (regex_match(null_terminated_value, pattern))
216+ {
217+ result = TRUE ;
218+ }
219+ if (null_terminated_value != prefix)
220+ {
221+ free(null_terminated_value);
222+ }
223+ return result;
224+}
225+
226+/*******************************************************************/
227+ibool check_field_limits(field_def_t *field, byte *value, ulint len) {
228+ long long int int_value;
229+ unsigned long long int uint_value;
230+
231+ switch (field->type) {
232+ case FT_INT:
233+ int_value = get_int_value(field, value);
234+ if (debug) printf("INT(%i)=%lli ", field->fixed_length, int_value);
235+ if (int_value < field->limits.int_min_val) {
236+ if (debug) printf(" is less than %lli ", field->limits.int_min_val);
237+ return FALSE;
238+ }
239+ if (int_value > field->limits.int_max_val) {
240+ if (debug) printf(" is more than %lli ", field->limits.int_max_val);
241+ return FALSE;
242+ }
243+ break;
244+
245+ case FT_UINT:
246+ uint_value = get_uint_value(field, value);
247+ if (debug) printf("UINT(%i)=%llu ", field->fixed_length, uint_value);
248+ if (uint_value < field->limits.uint_min_val) {
249+ if (debug) printf(" is less than %llu ", field->limits.uint_min_val);
250+ return FALSE;
251+ }
252+ if (uint_value > field->limits.uint_max_val) {
253+ if (debug) printf(" is more than %llu ", field->limits.uint_max_val);
254+ return FALSE;
255+ }
256+ break;
257+
258+ case FT_TEXT:
259+ case FT_CHAR:
260+ if (debug) {
261+ if (len != UNIV_SQL_NULL) {
262+ if (len <= 30) {
263+ ut_print_buf(stdout, value, len);
264+ } else {
265+ ut_print_buf(stdout, value, 30);
266+ printf("...(truncated)");
267+ }
268+ } else {
269+ printf("SQL NULL ");
270+ }
271+ }
272+ if (len < field->limits.char_min_len) return FALSE;
273+ if (len > field->limits.char_max_len) return FALSE;
274+ if (field->limits.char_ascii_only && !check_char_ascii((char*)value, len)) return FALSE;
275+ if (field->limits.char_digits_only && !check_char_digits((char*)value, len)) return FALSE;
276+ if (field->limits.char_regex != NULL) {
277+ if (!check_regex_match((char *)value, len, field->limits.char_regex))
278+ {
279+ if (debug) printf(" does not match regex [[%s]] ", (char*)field->limits.char_regex);
280+ return FALSE;
281+ }
282+ }
283+ break;
284+
285+ case FT_DATE:
286+ case FT_DATETIME:
287+ if (!check_datetime(make_longlong(mach_read_from_8(value)))) return FALSE;
288+ break;
289+
290+ case FT_ENUM:
291+ int_value = get_int_value(field, value);
292+ if (debug) printf("ENUM=%lli ", int_value);
293+ if (int_value < 1 || int_value > field->limits.enum_values_count) return FALSE;
294+ break;
295+ }
296+
297+ return TRUE;
298+}
299
300=== added file 'constraints_parser.c'
301--- constraints_parser.c 1970-01-01 00:00:00 +0000
302+++ constraints_parser.c 2010-01-14 13:03:26 +0000
303@@ -0,0 +1,554 @@
304+#include <stdio.h>
305+#include <sys/types.h>
306+#include <sys/uio.h>
307+#include <unistd.h>
308+#include <sys/stat.h>
309+#include <fcntl.h>
310+#include <time.h>
311+#include <string.h>
312+#include <sys/dir.h>
313+
314+#include <error.h>
315+#include <tables_dict.h>
316+#include <print_data.h>
317+#include <check_data.h>
318+
319+// Global flags from getopt
320+bool deleted_pages_only = 0;
321+bool deleted_records_only = 0;
322+bool undeleted_records_only = 0;
323+bool debug = 0;
324+bool process_redundant = 0;
325+bool process_compact = 0;
326+
327+dulint filter_id;
328+bool use_filter_id = 0;
329+
330+/*******************************************************************/
331+ulint process_ibrec(page_t *page, rec_t *rec, table_def_t *table, ulint *offsets) {
332+ ulint data_size;
333+ int i;
334+
335+ // Print table name
336+ if (debug) {
337+ printf("Processing record %p from table '%s'\n", rec, table->name);
338+ rec_print_new(stdout, rec, offsets);
339+ } else {
340+ printf("%s\t", table->name);
341+ }
342+
343+ data_size = rec_offs_data_size(offsets);
344+
345+ for(i = 0; i < table->fields_count; i++) {
346+ ulint len;
347+ byte *field = rec_get_nth_field(rec, offsets, i, &len);
348+
349+ if (table->fields[i].type == FT_INTERNAL) continue;
350+
351+ if (debug) printf("Field #%i @ %p: length %lu, value: ", i, field, len);
352+
353+ if (len == UNIV_SQL_NULL) {
354+ printf("NULL");
355+ } else {
356+ print_field_value(field, len, &(table->fields[i]));
357+ }
358+
359+ if (i < table->fields_count - 1) printf("\t");
360+ if (debug) printf("\n");
361+ }
362+
363+ printf("\n");
364+ return data_size; // point to the next possible record's start
365+}
366+
367+/*******************************************************************/
368+static inline ibool check_constraints(rec_t *rec, table_def_t* table, ulint* offsets) {
369+ int i;
370+
371+ if (debug) {
372+ printf("\nChecking constraints for a row (%s) at %p:", table->name, rec);
373+ ut_print_buf(stdout, rec, 100);
374+ }
375+
376+ // Check every field
377+ for(i = 0; i < table->fields_count; i++) {
378+ // Get field value pointer and field length
379+ ulint len;
380+ byte *field = rec_get_nth_field(rec, offsets, i, &len);
381+ if (debug) printf("\n - field %s(addr = %p, len = %lu):", table->fields[i].name, field, len);
382+
383+ // Skip null fields from type checks and fail if null is not allowed by data limits
384+ if (len == UNIV_SQL_NULL) {
385+ if (table->fields[i].has_limits && !table->fields[i].limits.can_be_null) {
386+ if (debug) printf("data can't be NULL");
387+ return FALSE;
388+ }
389+ continue;
390+ }
391+
392+ // Check limits
393+ if (!table->fields[i].has_limits) continue;
394+ if (!check_field_limits(&(table->fields[i]), field, len)) {
395+ if (debug) printf("LIMITS check failed(field = %p, len = %ld)!\n", field, len);
396+ return FALSE;
397+ }
398+ }
399+
400+ if (debug) printf("\nRow looks OK!\n");
401+ return TRUE;
402+}
403+
404+/*******************************************************************/
405+inline ibool check_fields_sizes(rec_t *rec, table_def_t *table, ulint *offsets) {
406+ int i;
407+
408+ if (debug) {
409+ printf("\nChecking field lengths for a row (%s): ", table->name);
410+ printf("OFFSETS: ");
411+ for(i = 0; i < rec_offs_n_fields(offsets); i++) {
412+ printf("%lu ", rec_offs_base(offsets)[i]);
413+ }
414+// printf("\n");
415+ }
416+
417+ // check every field
418+ for(i = 0; i < table->fields_count; i++) {
419+ // Get field size
420+ ulint len = rec_offs_nth_size(offsets, i);
421+ if (debug) printf("\n - field %s(%lu):", table->fields[i].name, len);
422+
423+ // If field is null
424+ if (len == UNIV_SQL_NULL) {
425+ // Check if it can be null and jump to a next field if it is OK
426+ if (table->fields[i].can_be_null) continue;
427+ // Invalid record where non-nullable field is NULL
428+ if (debug) printf("Can't be NULL or zero-length!\n");
429+ return FALSE;
430+ }
431+
432+ // Check size of fixed-length field
433+ if (table->fields[i].fixed_length) {
434+ // Check if size is the same and jump to the next field if it is OK
435+ if (len == table->fields[i].fixed_length || (len == 0 && table->fields[i].can_be_null)) continue;
436+ // Invalid fixed length field
437+ if (debug) printf("Invalid fixed length field size: %lu, but should be %u!\n", len, table->fields[i].fixed_length);
438+ return FALSE;
439+ }
440+
441+ // Check if has externally stored data
442+ if (rec_offs_nth_extern(offsets, i)) {
443+ if (debug) printf("\nEXTERNALLY STORED VALUE FOUND in field %i\n", i);
444+ if (table->fields[i].type == FT_TEXT || table->fields[i].type == FT_BLOB) continue;
445+ if (debug) printf("Invalid external data flag!\n");
446+ return FALSE;
447+ }
448+
449+ // Check size limits for varlen fields
450+ if (len < table->fields[i].min_length || len > table->fields[i].max_length) {
451+ if (debug) printf("Length limits check failed (%lu < %u || %lu > %u)!\n", len, table->fields[i].min_length, len, table->fields[i].max_length);
452+ return FALSE;
453+ }
454+
455+ if (debug) printf("OK!");
456+ }
457+
458+ if (debug) printf("\n");
459+ return TRUE;
460+}
461+
462+/*******************************************************************/
463+static inline ibool ibrec_init_offsets_new(page_t *page, rec_t* rec, table_def_t* table, ulint* offsets) {
464+ ulint i = 0;
465+ ulint offs;
466+ const byte* nulls;
467+ const byte* lens;
468+ ulint null_mask;
469+ ulint status = rec_get_status(rec);
470+
471+ // Skip non-ordinary records
472+ if (status != REC_STATUS_ORDINARY) return FALSE;
473+
474+ // First field is 0 bytes from origin point
475+ rec_offs_base(offsets)[0] = 0;
476+
477+ // Init first bytes
478+ rec_offs_set_n_fields(offsets, table->fields_count);
479+
480+ nulls = rec - (REC_N_NEW_EXTRA_BYTES + 1);
481+ lens = nulls - (table->n_nullable + 7) / 8;
482+ offs = 0;
483+ null_mask = 1;
484+
485+ /* read the lengths of fields 0..n */
486+ do {
487+ ulint len;
488+ field_def_t *field = &(table->fields[i]);
489+
490+ /* nullable field => read the null flag */
491+ if (field->can_be_null) {
492+// if (debug) printf("nullable field => read the null flag\n");
493+ if (!(byte)null_mask) {
494+ nulls--;
495+ null_mask = 1;
496+ }
497+
498+ if (*nulls & null_mask) {
499+ null_mask <<= 1;
500+ /* No length is stored for NULL fields.
501+ We do not advance offs, and we set
502+ the length to zero and enable the
503+ SQL NULL flag in offsets[]. */
504+ len = offs | REC_OFFS_SQL_NULL;
505+ goto resolved;
506+ }
507+ null_mask <<= 1;
508+ }
509+
510+ if (!field->fixed_length) {
511+// if (debug) printf("Variable-length field: read the length\n");
512+ /* Variable-length field: read the length */
513+ len = *lens--;
514+
515+ if (field->max_length > 255 || field->type == FT_BLOB || field->type == FT_TEXT) {
516+ if (len & 0x80) {
517+ /* 1exxxxxxx xxxxxxxx */
518+ len <<= 8;
519+ len |= *lens--;
520+
521+ offs += len & 0x3fff;
522+ if (len & 0x4000) {
523+ len = offs | REC_OFFS_EXTERNAL;
524+ } else {
525+ len = offs;
526+ }
527+
528+ goto resolved;
529+ }
530+ }
531+
532+ len = offs += len;
533+ } else {
534+ len = offs += field->fixed_length;
535+ }
536+ resolved:
537+ offs &= 0xffff;
538+ if (rec + offs - page > UNIV_PAGE_SIZE) {
539+ if (debug) printf("Invalid offset for field %lu: %lu\n", i, offs);
540+ return FALSE;
541+ }
542+ rec_offs_base(offsets)[i + 1] = len;
543+ } while (++i < table->fields_count);
544+
545+ return TRUE;
546+}
547+
548+/*******************************************************************/
549+static inline ibool ibrec_init_offsets_old(page_t *page, rec_t* rec, table_def_t* table, ulint* offsets) {
550+ ulint i = 0;
551+ ulint offs;
552+
553+ // First field is 0 bytes from origin point
554+ rec_offs_base(offsets)[0] = 0;
555+
556+ // Init first bytes
557+ rec_offs_set_n_fields(offsets, table->fields_count);
558+
559+ /* Old-style record: determine extra size and end offsets */
560+ offs = REC_N_OLD_EXTRA_BYTES;
561+ if (rec_get_1byte_offs_flag(rec)) {
562+ offs += rec_offs_n_fields(offsets);
563+ *rec_offs_base(offsets) = offs;
564+ /* Determine offsets to fields */
565+ do {
566+ offs = rec_1_get_field_end_info(rec, i);
567+ if (offs & REC_1BYTE_SQL_NULL_MASK) {
568+ offs &= ~REC_1BYTE_SQL_NULL_MASK;
569+ offs |= REC_OFFS_SQL_NULL;
570+ }
571+
572+ offs &= 0xffff;
573+ if (rec + offs - page > UNIV_PAGE_SIZE) {
574+ if (debug) printf("Invalid offset for field %lu: %lu\n", i, offs);
575+ return FALSE;
576+ }
577+
578+ rec_offs_base(offsets)[1 + i] = offs;
579+ } while (++i < rec_offs_n_fields(offsets));
580+ } else {
581+ offs += 2 * rec_offs_n_fields(offsets);
582+ *rec_offs_base(offsets) = offs;
583+ /* Determine offsets to fields */
584+ do {
585+ offs = rec_2_get_field_end_info(rec, i);
586+ if (offs & REC_2BYTE_SQL_NULL_MASK) {
587+ offs &= ~REC_2BYTE_SQL_NULL_MASK;
588+ offs |= REC_OFFS_SQL_NULL;
589+ }
590+
591+ if (offs & REC_2BYTE_EXTERN_MASK) {
592+ offs &= ~REC_2BYTE_EXTERN_MASK;
593+ offs |= REC_OFFS_EXTERNAL;
594+ }
595+
596+ offs &= 0xffff;
597+ if (rec + offs - page > UNIV_PAGE_SIZE) {
598+ if (debug) printf("Invalid offset for field %lu: %lu\n", i, offs);
599+ return FALSE;
600+ }
601+
602+ rec_offs_base(offsets)[1 + i] = offs;
603+ } while (++i < rec_offs_n_fields(offsets));
604+ }
605+
606+ return TRUE;
607+}
608+
609+/*******************************************************************/
610+inline ibool check_for_a_record(page_t *page, rec_t *rec, table_def_t *table, ulint *offsets) {
611+ ulint offset, data_size;
612+
613+ // Check if given origin is valid
614+ offset = rec - page;
615+ if (offset < record_extra_bytes + table->min_rec_header_len) return FALSE;
616+ if (debug) printf("ORIGIN=OK ");
617+
618+ // Skip non-deleted records
619+ if (deleted_records_only && !rec_get_deleted_flag(rec, page_is_comp(page))) return FALSE;
620+ if (debug) printf("DELETED=OK ");
621+ // Skip non-deleted records
622+ if (undeleted_records_only && rec_get_deleted_flag(rec, page_is_comp(page))) return FALSE;
623+ if (debug) printf("UNDELETED=OK ");
624+
625+ // Get field offsets for current table
626+ if (process_compact && !ibrec_init_offsets_new(page, rec, table, offsets)) return FALSE;
627+ if (process_redundant && !ibrec_init_offsets_old(page, rec, table, offsets)) return FALSE;
628+ if (debug) printf("OFFSETS=OK ");
629+
630+ // Check the record's data size
631+ data_size = rec_offs_data_size(offsets);
632+ if (data_size > table->data_max_size) {
633+ if (debug) printf("DATA_SIZE=FAIL(%lu > %lu) ", (long int)data_size, (long int)table->data_max_size);
634+ return FALSE;
635+ }
636+ if (data_size < table->data_min_size) {
637+ if (debug) printf("DATA_SIZE=FAIL(%lu < %lu) ", (long int)data_size, (long int)table->data_min_size);
638+ return FALSE;
639+ }
640+ if (debug) printf("DATA_SIZE=OK ");
641+
642+ // Check fields sizes
643+ if (!check_fields_sizes(rec, table, offsets)) return FALSE;
644+ if (debug) printf("FIELD_SIZES=OK ");
645+
646+ // This record could be valid and useful for us
647+ return TRUE;
648+}
649+
650+/*******************************************************************/
651+inline bool check_page_format(page_t *page) {
652+ if (process_redundant && page_is_comp(page)) {
653+ if (debug) printf("Page is in COMPACT format while we're looking for REDUNDANT - skipping\n");
654+ return FALSE;
655+ }
656+
657+ if (process_compact && !page_is_comp(page)) {
658+ if (debug) printf("Page is in REDUNDANT format while we're looking for COMPACT - skipping\n");
659+ return FALSE;
660+ }
661+
662+ return TRUE;
663+}
664+
665+/*******************************************************************/
666+void process_ibpage(page_t *page) {
667+ ulint page_id;
668+ rec_t *origin;
669+ ulint offsets[MAX_TABLE_FIELDS + 2];
670+ ulint offset, i;
671+
672+ // Skip tables if filter used
673+ if (use_filter_id) {
674+ dulint index_id = mach_read_from_8(page + PAGE_HEADER + PAGE_INDEX_ID);
675+ if (index_id.low != filter_id.low || index_id.high != filter_id.high) {
676+ if (debug) {
677+ page_id = mach_read_from_4(page + FIL_PAGE_OFFSET);
678+ printf("Skipped using index id filter: %lu!\n", page_id);
679+ }
680+ return;
681+ }
682+ }
683+
684+ // Read page id
685+ page_id = mach_read_from_4(page + FIL_PAGE_OFFSET);
686+ if (debug) printf("Page id: %lu\n", page_id);
687+
688+ // Check requested and actual formats
689+ if (!check_page_format(page)) return;
690+
691+ // Find possible data area start point (at least 5 bytes of utility data)
692+ offset = 100 + record_extra_bytes;
693+ if (debug) printf("Starting offset: %lu. Checking %d table definitions.\n", offset, table_definitions_cnt);
694+
695+ // Walk through all possible positions to the end of page
696+ // (start of directory - extra bytes of the last rec)
697+ while (offset < UNIV_PAGE_SIZE - record_extra_bytes) {
698+ // Get record pointer
699+ origin = page + offset;
700+ if (debug) printf("\nChecking offset: %lu: ", offset);
701+
702+ // Check all tables
703+ for (i = 0; i < table_definitions_cnt; i++) {
704+ // Get table info
705+ table_def_t *table = &(table_definitions[i]);
706+ if (debug) printf(" (%s) ", table->name);
707+
708+ // Check if origin points to a valid record
709+ if (check_for_a_record(page, origin, table, offsets) && check_constraints(origin, table, offsets)) {
710+ if (debug) printf("\n---------------------------------------------------\n"
711+ "PAGE%lu: Found a table %s record: %p (offset = %lu)\n", page_id, table->name, origin, offset);
712+ offset += process_ibrec(page, origin, table, offsets);
713+ break;
714+ }
715+ }
716+
717+ // Check from next byte
718+ offset++;
719+ }
720+}
721+
722+/*******************************************************************/
723+void process_ibfile(int fn) {
724+ int read_bytes;
725+ page_t *page = malloc(UNIV_PAGE_SIZE);
726+ struct stat st;
727+ off_t pos;
728+ ulint free_offset;
729+
730+ if (!page) error("Can't allocate page buffer!");
731+
732+ // Initialize table definitions (count nullable fields, data sizes, etc)
733+ init_table_defs();
734+
735+ if (debug) printf("Read data from fn=%d...\n", fn);
736+
737+ // Get file info
738+ fstat(fn, &st);
739+
740+ // Read pages to the end of file
741+ while ((read_bytes = read(fn, page, UNIV_PAGE_SIZE)) == UNIV_PAGE_SIZE) {
742+ pos = lseek(fn, 0, SEEK_CUR);
743+
744+ if (pos % (UNIV_PAGE_SIZE * 10) == 0) {
745+ fprintf(stderr, "%.2f%% done\n", 100.0 * pos / st.st_size);
746+ }
747+
748+ if (deleted_pages_only) {
749+ free_offset = page_header_get_field(page, PAGE_FREE);
750+ if (page_header_get_field(page, PAGE_N_RECS) == 0 && free_offset == 0) continue;
751+ if (free_offset > 0 && page_header_get_field(page, PAGE_GARBAGE) == 0) continue;
752+ if (free_offset > UNIV_PAGE_SIZE) continue;
753+ }
754+
755+ process_ibpage(page);
756+ }
757+}
758+
759+/*******************************************************************/
760+int open_ibfile(char *fname) {
761+ struct stat fstat;
762+ int fn;
763+
764+ // Skip non-regular files
765+ if (debug) printf("Opening file: %s\n", fname);
766+ if (stat(fname, &fstat) != 0 || (fstat.st_mode & S_IFREG) != S_IFREG) error("Invalid file specified!");
767+ fn = open(fname, O_RDONLY, 0);
768+ if (!fn) error("Can't open file!");
769+
770+ return fn;
771+}
772+
773+/*******************************************************************/
774+void set_filter_id(char *id) {
775+ int cnt = sscanf(id, "%lu:%lu", &filter_id.high, &filter_id.low);
776+ if (cnt < 2) {
777+ error("Invalid index id provided! It should be in N:M format, where N and M are unsigned integers");
778+ }
779+ use_filter_id = 1;
780+}
781+
782+/*******************************************************************/
783+void usage() {
784+ error(
785+ "Usage: ./constraints_parser -4|-5 [-dDV] -f <innodb_datafile> [-T N:M]\n"
786+ " Where\n"
787+ " -h -- Print this help\n"
788+ " -d -- Process only those pages which potentially could have deleted records (default = NO)\n"
789+ " -D -- Recover deleted rows only (default = NO)\n"
790+ " -U -- Recover UNdeleted rows only (default = NO)\n"
791+ " -V -- Verbode mode (lots of debug information)\n"
792+ " -4 -- innodb_datafile is in REDUNDANT format\n"
793+ " -5 -- innodb_datafile is in COMPACT format\n"
794+ " -T -- retrieves only pages with index id = NM (N - high word, M - low word of id)\n"
795+ "\n"
796+ );
797+}
798+
799+/*******************************************************************/
800+int main(int argc, char **argv) {
801+ int fn = 0, ch;
802+
803+ setbuf(stdout, NULL);
804+
805+ while ((ch = getopt(argc, argv, "45hdDUVf:T:")) != -1) {
806+ switch (ch) {
807+ case 'd':
808+ deleted_pages_only = 1;
809+ break;
810+
811+ case 'D':
812+ deleted_records_only = 1;
813+ break;
814+
815+ case 'U':
816+ undeleted_records_only = 1;
817+ break;
818+
819+ case 'f':
820+ fn = open_ibfile(optarg);
821+ break;
822+
823+ case 'V':
824+ debug = 1;
825+ break;
826+
827+ case '4':
828+ process_redundant = 1;
829+ break;
830+
831+ case '5':
832+ process_compact = 1;
833+ break;
834+
835+ case 'T':
836+ set_filter_id(optarg);
837+ break;
838+
839+ default:
840+ case '?':
841+ case 'h':
842+ usage();
843+ }
844+ }
845+
846+ if (fn != 0) {
847+ process_ibfile(fn);
848+ close(fn);
849+ } else usage();
850+
851+ if (!process_compact && !process_redundant) {
852+ printf("Error: Please, specify what format your datafile in. Use -4 for mysql 4.1 and below and -5 for 5.X+\n");
853+ usage();
854+ }
855+
856+ return 0;
857+}
858
859=== added file 'create_defs.pl'
860--- create_defs.pl 1970-01-01 00:00:00 +0000
861+++ create_defs.pl 2010-01-14 13:03:26 +0000
862@@ -0,0 +1,367 @@
863+#!/usr/bin/env perl
864+
865+use strict;
866+use DBI;
867+use Data::Dumper;
868+use POSIX;
869+use Getopt::Long;
870+
871+#----------------------------------------------------------------
872+# Parse command line
873+
874+# Defaults
875+my $db_name = "test";
876+my $db_host = "127.0.0.1";
877+my $db_port = 3306;
878+my $db_user = "root";
879+my $db_pass = "";
880+my $db_table = "";
881+my $help = 0;
882+
883+# Parse options
884+my $res = GetOptions ("db=s" => \$db_name,
885+ "host=s" => \$db_host,
886+ "port=i" => \$db_port,
887+ "user=s" => \$db_user,
888+ "password=s" => \$db_pass,
889+ "table=s" => \$db_table,
890+ "help|?" => \$help
891+ );
892+
893+Usage() if !$res || $help;
894+
895+#----------------------------------------------------------------
896+# Connect to mysql
897+
898+my $dsn = "DBI:mysql:database=$db_name;host=$db_host;port=$db_port";
899+my $dbh = DBI->connect($dsn, $db_user, $db_pass);
900+
901+Usage("Can't connect to mysql!") unless $dbh;
902+
903+#----------------------------------------------------------------
904+# Dump tables definitions
905+my $sth = $dbh->prepare("SHOW TABLES");
906+$sth->execute;
907+
908+print("#ifndef table_defs_h\n#define table_defs_h\n\n");
909+print("// Table definitions\ntable_def_t table_definitions[] = {\n");
910+
911+while (my $row = $sth->fetchrow_arrayref) {
912+ my $table = $row->[0];
913+
914+ # Skip if not a requested specific table
915+ next if ($db_table ne '' && $table ne $db_table);
916+
917+ # Skip if it is not an innodb table
918+ next unless(GetTableStorageEngine($table) =~ /innodb/i);
919+
920+ # Get fields list for table
921+ my @fields = ();
922+ my $tbl_sth = $dbh->prepare("SHOW FIELDS FROM $table");
923+ $tbl_sth->execute;
924+ while (my $field = $tbl_sth->fetchrow_hashref) { push @fields, $field }
925+
926+ # Get primary key fields
927+ my @pk_fields = ();
928+ $tbl_sth = $dbh->prepare("show indexes from $table");
929+ $tbl_sth->execute;
930+ while (my $field = $tbl_sth->fetchrow_hashref) {
931+ push @pk_fields, $field if ($field->{Key_name} eq 'PRIMARY');
932+ }
933+
934+ # If no primary keys defined, check unique keys and use first one as primary
935+ if (scalar(@pk_fields) == 0) {
936+ $tbl_sth = $dbh->prepare("show indexes from $table");
937+ $tbl_sth->execute;
938+ my $pk_name = undef;
939+ while (my $field = $tbl_sth->fetchrow_hashref) {
940+ next unless ($field->{Non_unique} == 0);
941+ $pk_name = $field->{Key_name} unless ($pk_name);
942+ last if ($field->{Key_name} ne $pk_name);
943+ push @pk_fields, $field;
944+ }
945+ }
946+
947+ DumpTableDef($table, \@fields, \@pk_fields);
948+}
949+
950+print("};\n\n#endif\n");
951+
952+exit(0);
953+
954+#------------------------------------------------------------------
955+sub DumpTableDef($$$) {
956+ my $table = shift;
957+ my $fields = shift;
958+ my $pk_fields = shift;
959+
960+ print("\t{\n\t\tname: \"$table\",\n\t\t{\n");
961+
962+ # Dump all PK fields
963+ foreach my $pk_field (@$pk_fields) {
964+ DumpField($table, FindFieldByName($fields, $pk_field->{Column_name}));
965+ }
966+
967+ # Dump system PK if no PK fields found
968+ if (scalar(@$pk_fields) == 0) {
969+ DumpFieldLow(Name => 'DB_ROW_ID', ParsedType => 'FT_INTERNAL', FixedLen => 6, Null => 0);
970+ }
971+
972+ # Dump 2 more sys fields
973+ DumpFieldLow(Name => 'DB_TRX_ID', ParsedType => 'FT_INTERNAL', FixedLen => 6, Null => 0);
974+ DumpFieldLow(Name => 'DB_ROLL_PTR', ParsedType => 'FT_INTERNAL', FixedLen => 7, Null => 0);
975+
976+ # Dump the rest of the fields
977+ foreach my $field (@$fields) {
978+ DumpField($table, $field) unless $field->{Key} eq 'PRI';
979+ }
980+
981+ print("\t\t\t{ type: FT_NONE }\n");
982+ print("\t\t}\n\t},\n");
983+}
984+
985+#------------------------------------------------------------------
986+sub FindFieldByName($$) {
987+ my $fields = shift;
988+ my $name = shift;
989+
990+ foreach my $field (@$fields) {
991+ return $field if $field->{Field} eq $name;
992+ }
993+
994+ return undef;
995+}
996+
997+#------------------------------------------------------------------
998+sub GetUIntLimits($) {
999+ my $len = shift;
1000+
1001+ return (0, 255) if ($len == 1);
1002+ return (0, 65535) if ($len == 2);
1003+ return (0, "16777215UL") if ($len == 3);
1004+ return (0, "4294967295ULL") if ($len == 4);
1005+ return (0, "18446744073709551615ULL") if ($len == 8);
1006+ return (0, 30000);
1007+}
1008+
1009+#------------------------------------------------------------------
1010+sub GetIntLimits($) {
1011+ my $len = shift;
1012+
1013+ return (-128, 127) if ($len == 1);
1014+ return (-32768, 32767) if ($len == 2);
1015+ return ("-8388608L", "8388607L") if ($len == 3);
1016+ return ("-2147483648LL", "2147483647LL") if ($len == 4);
1017+ return ("-9223372036854775808LL", "9223372036854775807LL") if ($len == 8);
1018+ return (0, 30000);
1019+}
1020+
1021+#------------------------------------------------------------------
1022+sub DumpFieldLow {
1023+ my %info = @_;
1024+
1025+ printf("\t\t\t{ /* %s */\n", $info{Type});
1026+ printf("\t\t\t\tname: \"%s\",\n", $info{Name});
1027+ printf("\t\t\t\ttype: %s,\n", $info{ParsedType});
1028+
1029+ if ($info{FixedLen}) {
1030+ printf("\t\t\t\tfixed_length: %d,\n", $info{FixedLen});
1031+ } else {
1032+ printf("\t\t\t\tmin_length: %d,\n", $info{MinLen});
1033+ printf("\t\t\t\tmax_length: %d,\n", $info{MaxLen});
1034+ }
1035+
1036+ printf("\n");
1037+
1038+ if ($info{ParsedType} eq 'FT_TEXT' || $info{ParsedType} eq 'FT_CHAR') {
1039+ printf("\t\t\t\thas_limits: TRUE,\n");
1040+ printf("\t\t\t\tlimits: {\n");
1041+ printf("\t\t\t\t\tcan_be_null: %s,\n", $info{Null} ? 'TRUE' : 'FALSE');
1042+ printf("\t\t\t\t\tchar_min_len: 0,\n");
1043+ printf("\t\t\t\t\tchar_max_len: %d,\n", $info{MaxLen} + $info{FixedLen});
1044+ printf("\t\t\t\t\tchar_ascii_only: TRUE\n");
1045+ printf("\t\t\t\t},\n\n");
1046+ }
1047+
1048+ if ($info{ParsedType} eq 'FT_INT' && $info{Name} =~ /id$/i) {
1049+ my ($min, $max) = GetIntLimits($info{FixedLen});
1050+ printf("\t\t\t\thas_limits: TRUE,\n");
1051+ printf("\t\t\t\tlimits: {\n");
1052+ printf("\t\t\t\t\tcan_be_null: %s,\n", $info{Null} ? 'TRUE' : 'FALSE');
1053+ printf("\t\t\t\t\tint_min_val: %s,\n", $min);
1054+ printf("\t\t\t\t\tint_max_val: %s\n", $max);
1055+ printf("\t\t\t\t},\n\n");
1056+ }
1057+
1058+ if ($info{ParsedType} eq 'FT_UINT' && $info{Name} =~ /id$/i) {
1059+ my ($min, $max) = GetUIntLimits($info{FixedLen});
1060+ printf("\t\t\t\thas_limits: TRUE,\n");
1061+ printf("\t\t\t\tlimits: {\n");
1062+ printf("\t\t\t\t\tcan_be_null: %s,\n", $info{Null} ? 'TRUE' : 'FALSE');
1063+ printf("\t\t\t\t\tuint_min_val: %s,\n", $min);
1064+ printf("\t\t\t\t\tuint_max_val: %s\n", $max);
1065+ printf("\t\t\t\t},\n\n");
1066+ }
1067+
1068+ if ($info{ParsedType} eq 'FT_ENUM') {
1069+ printf("\t\t\t\thas_limits: TRUE,\n");
1070+ printf("\t\t\t\tlimits: {\n");
1071+ printf("\t\t\t\t\tcan_be_null: %s,\n", $info{Null} ? 'TRUE' : 'FALSE');
1072+ printf("\t\t\t\t\tenum_values_count: %d,\n", scalar(@{$info{Values}}));
1073+ printf("\t\t\t\t\tenum_values: { \"%s\" }\n", join('", "', @{$info{Values}}));
1074+ printf("\t\t\t\t},\n\n");
1075+ }
1076+
1077+ printf("\t\t\t\tcan_be_null: %s\n", $info{Null} ? 'TRUE' : 'FALSE');
1078+ printf("\t\t\t},\n");
1079+}
1080+
1081+#------------------------------------------------------------------
1082+sub DumpField($$) {
1083+ my $table = shift;
1084+ my $field = shift;
1085+
1086+ my %info;
1087+ $info{Null} = ($field->{Null} eq 'YES');
1088+ $info{Name} = $field->{Field};
1089+
1090+ my $type_info = ParseFieldType($field->{Type});
1091+ if ($type_info->{type} eq 'FT_INT' && IsFieldUnsigned($table, $field->{Field})) {
1092+ $type_info->{type} = 'FT_UINT';
1093+ }
1094+
1095+ $info{Type} = $field->{Type};
1096+ $info{Values} = $type_info->{values};
1097+ $info{ParsedType} = $type_info->{type};
1098+ $info{MinLen} = $type_info->{min_len};
1099+ $info{MaxLen} = $type_info->{max_len};
1100+ $info{FixedLen} = $type_info->{fixed_len};
1101+
1102+ DumpFieldLow(%info);
1103+}
1104+
1105+#------------------------------------------------------------------
1106+sub IsFieldUnsigned($$) {
1107+ my ($table, $field) = @_;
1108+ my $sth = $dbh->prepare("SHOW CREATE TABLE $table");
1109+ $sth->execute;
1110+ my $row = $sth->fetchrow_arrayref;
1111+ return ($row->[1] =~ /$field[^,]*unsigned/i);
1112+}
1113+
1114+#------------------------------------------------------------------
1115+sub GetTableStorageEngine($) {
1116+ my $table = shift;
1117+ my $sth = $dbh->prepare("SHOW TABLE STATUS LIKE '$table'");
1118+ $sth->execute;
1119+ my $row = $sth->fetchrow_hashref;
1120+ return $row->{Engine};
1121+}
1122+
1123+#------------------------------------------------------------------
1124+sub Usage {
1125+ my $msg = shift;
1126+ if ($msg) {
1127+ print "Error: $msg\n";
1128+ }
1129+
1130+ print "Usage: $0 [options]\n" .
1131+ "Where options are:\n" .
1132+ "\t--host - mysql host\n" .
1133+ "\t--port - mysql port\n" .
1134+ "\t--user - mysql username\n" .
1135+ "\t--password - mysql password\n" .
1136+ "\t--db - mysql database\n" .
1137+ "\t--table - specific table only\n" .
1138+ "\t--help - show this help\n\n";
1139+ exit(1);
1140+}
1141+
1142+#------------------------------------------------------------------
1143+sub ParseFieldType($) {
1144+ my $type = shift;
1145+
1146+ if ($type =~ /DATETIME/i) {
1147+ return { type => 'FT_DATETIME', fixed_len => 8 };
1148+ }
1149+
1150+ if ($type =~ /TIMESTAMP/i) {
1151+ return { type => 'FT_UINT', fixed_len => 4 };
1152+ }
1153+
1154+ if ($type =~ /DATE/i) {
1155+ return { type => 'FT_DATE', fixed_len => 3 };
1156+ }
1157+
1158+ if ($type =~ /TIME/i) {
1159+ return { type => 'FT_DATE', fixed_len => 3 };
1160+ }
1161+
1162+ if ($type =~ /YEAR/i) {
1163+ return { type => 'FT_UINT', fixed_len => 1 };
1164+ }
1165+
1166+ if ($type =~ /^TINYINT/i) {
1167+ return { type => 'FT_INT', fixed_len => 1 };
1168+ }
1169+
1170+ if ($type =~ /^SMALLINT/i) {
1171+ return { type => 'FT_INT', fixed_len => 2 };
1172+ }
1173+
1174+ if ($type =~ /^MEDIUMINT/i) {
1175+ return { type => 'FT_INT', fixed_len => 3 };
1176+ }
1177+
1178+ if ($type =~ /^INT/i) {
1179+ return { type => 'FT_INT', fixed_len => 4 };
1180+ }
1181+
1182+ if ($type =~ /^BIGINT/i) {
1183+ return { type => 'FT_INT', fixed_len => 8 };
1184+ }
1185+
1186+ if ($type =~ /^CHAR\((\d+)\)/i) {
1187+ return { type => 'FT_CHAR', fixed_len => $1 };
1188+ }
1189+
1190+ if ($type =~ /VARCHAR\((\d+)\)/i) {
1191+ return { type => 'FT_CHAR', min_len => 0, max_len => $1 };
1192+ }
1193+
1194+ if ($type =~ /^TINYTEXT$/i) {
1195+ return { type => 'FT_TEXT', min_len => 0, max_len => 255 };
1196+ }
1197+
1198+ if ($type =~ /^TEXT$/i) {
1199+ return { type => 'FT_TEXT', min_len => 0, max_len => 65535 };
1200+ }
1201+
1202+ if ($type =~ /^MEDIUMTEXT$/i) {
1203+ return { type => 'FT_TEXT', min_len => 0, max_len => 16777215 };
1204+ }
1205+
1206+ if ($type =~ /^LONGTEXT$/i) {
1207+ return { type => 'FT_TEXT', min_len => 0, max_len => 4294967295 };
1208+ }
1209+
1210+ if ($type =~ /^FLOAT/i) {
1211+ return { type => 'FT_FLOAT', fixed_len => 4 };
1212+ }
1213+
1214+ if ($type =~ /^DOUBLE/i) {
1215+ return { type => 'FT_DOUBLE', fixed_len => 8 };
1216+ }
1217+
1218+ if ($type =~ /^ENUM\(\'(.*)\'\)/i) {
1219+ my @enum_values = split(/[\'\"]\,[\'\"]/, $1);
1220+ return { type => 'FT_ENUM', fixed_len => 1, values => \@enum_values };
1221+ }
1222+
1223+ if ($type =~ /^DECIMAL\((\d+),\s*(\d+)\)/i) {
1224+ my $len_bytes = ceil(($1-$2) * 4 / 9) + ceil($2*4/9);
1225+ return { type => 'FT_CHAR', fixed_len => $len_bytes };
1226+ }
1227+
1228+ die "Unsupported type: $type!\n";
1229+}
1230
1231=== added directory 'docs'
1232=== added file 'docs/README'
1233--- docs/README 1970-01-01 00:00:00 +0000
1234+++ docs/README 2010-01-14 13:03:26 +0000
1235@@ -0,0 +1,223 @@
1236+Innodb Recovery Howto
1237+=====================
1238+
1239+InnoDB is pretty stable and reliable storage engine, but even it could be corrupted in case of hardware failure or human mistakes. For example, you could have a failures in your RAID controller (duet to cabling) or memory errors or someone could do "DELETE FROM some_table" and you'll lose your data.
1240+
1241+In many cases innodb's internal recovery code could not handle such problems and the only way to recover data is to work with innodb tablespaces directly. This is what you can do with our **innodb recovery toolkit** (_toolkit_ later in this document).
1242+
1243+Tools Overview
1244+--------------
1245+
1246+Described toolkit consists of a set of useful tools for innodb recovery such as:
1247+
1248+* **`page_parser`** - this tools takes some InnoDB tablespace and splits it to a separate sets of pages grouped by tablespace ID and table ID.
1249+* **`constraints_parser`** - this tool takes some tablespace or any other file and tries to find your data in this file considering it as a part of real innodb tablespace.
1250+* **`create_defs.pl`** - this tool uses your database server login/password to create table definitions for your database so these definitions could be used with constraints parser.
1251+* **`split_dump.pl`** - this tool splits constraints_parser tool output to a set of separate CSV files.
1252+* **`show_data_dictionary`** (to be done in v.0.2+) - this tool tries to read and display innodb global data dictionary for a specified tablespace file.
1253+* **`checksum_tablespace`** (to be done in v.0.2+) - this tool tries to read an innodb tablespace and calculate its checksum to check if file is corrupted.
1254+
1255+Pre-recovery Tablespace Processing
1256+----------------------------------
1257+
1258+Before you'd start recovering your data you'd definitely like to make a small research on your tablespace. So far we have no tools for innodb global data dictionary view, but you could use innodb's internal tools for this. One of the most useful is __table_monitor__. To use it you need to be able to at least start your mysql on your corrupted tablespace (see `innodb_force_recovery` option of mysqld). When you have your mysql up and running, just connect to any database (like mysql or test) and perform a following command:
1259+
1260+ CREATE TABLE innodb_table_monitor(x int) engine=innodb;
1261+
1262+This would force innodb engine to start table monitor and dump some useful data regarding your tablespaces in mysql's error log (log-error option).
1263+
1264+Most interesting information here is a mapping between your tables' primary indexes and table ids. For example you can get an output like this:
1265+
1266+ TABLE: name test/site_folders, id 0 119, columns 9, indexes 1, appr.rows 1
1267+ COLUMNS: id: DATA_INT len 4 prec 0; name: type 12 len 765 prec 0; sites_count: DATA_INT len 4 prec 0;
1268+ created_at: DATA_INT len 8 prec 0; updated_at: DATA_INT len 8 prec 0;
1269+ DB_ROW_ID: DATA_SYS prtype 256 len 6 prec 0; DB_TRX_ID: DATA_SYS prtype 257 len 6 prec 0;
1270+ DB_ROLL_PTR: DATA_SYS prtype 258 len 7 prec 0;
1271+ INDEX: name PRIMARY, id 0 254, fields 1/7, type 3
1272+ root page 271, appr.key vals 1, leaf pages 1, size pages 1
1273+ FIELDS: id DB_TRX_ID DB_ROLL_PTR name sites_count created_at updated_at
1274+
1275+Here you can see a list of fields in your table and, most interesting - you can see that the PRIMARY index for your table is mapped to `index_id`="0 254". Read below to see how to use this information.
1276+
1277+Working With a Part of InnoDB Tablespace
1278+----------------------------------------
1279+
1280+`heuristics_parser` tool works fine with any tablespace types (single and file-per-table), but in some cases you'd like to work with a smaller part of your data: huge tablespace files (10Gb+), tablespaces with many tables that have an identical structure or just for testing your table descriptions.
1281+
1282+At this moment we have a `page_parser` tool which takes some tablespace and slices it to a set of pages grouped by `table_id`. Next steps you could make are:
1283+
1284+ * Prepare your table descriptions and test them on a separate pages.
1285+ * Concatenate all pages with one table_id and recover your table data.
1286+
1287+When you run `page_parser` your pages are placed in `pages-NNNNNNNN/HHHH-LLLL` directories where __NNNNNNNN__ is timespamp of the second when you started the tool, __HHHH__ and __LLLL__ are high and low words for `index_id` of a page. Every page would be placed in __III-NNNNN.page__ files where __III__ is a page number (offset / page size) and __NNNNN__ is `page_id` of a page.
1288+
1289+To concatenate some table pages in one files, you can use a following command:
1290+
1291+ $ cat *.page > my.tables
1292+
1293+Preparing a Tables Description File
1294+-----------------------------------
1295+
1296+First of all, what are these table definitions? The answer is simple: table definition is a simple, but really powerful set of rules which describe your table structure and help our tools recover your data. One table definition consists of a set of fields, each of which consists of:
1297+
1298+ * field type
1299+ * field size (fixed_size for fixed-size fields and min/max sizes for variable-size fields)
1300+ * NULL/NOT NULL specification for this field
1301+ * optional set of data constraints:
1302+ * `can_be_null` describes if NULL field can contain NULL values or not
1303+ * value limits for INT/UINT fields
1304+ * min/max values length for CHAR/TEXT fields
1305+ * character set for CHAR/TEXT fields
1306+ * values set for ENUM fields
1307+
1308+As of version 0.1 `constraints_parser` could work with compiled-in table definitions only. This mean that you need to write your table definitions and then compile your own version of tool binary. In next versions we're going to add some external config file support to be able to ship binary versions of our toolset.
1309+
1310+At this moment you have two options how to create your table definitions:
1311+ * you can create them manually from scratch (do not forget innodb's internal fields)
1312+ * or you can restore your tables (even empty) from backups and then start `create_defs.pl` script to get scaffolds for your definitions.
1313+
1314+After an automatic table definitions generation you'll need to check fields limits, etc and fix defaults of they do not match your own data limits.
1315+
1316+Here is an example of `table_def.h` file with some table definition made by `create_defs.pl` script and adjusted to match real table constraints:
1317+
1318+ #ifndef table_defs_h
1319+ #define table_defs_h
1320+
1321+ // Table definitions
1322+ table_def_t table_definitions[] = {
1323+ {
1324+ name: "some_table",
1325+ {
1326+ { /* int(11) */
1327+ name: "id",
1328+ type: FT_INT,
1329+ fixed_length: 4,
1330+
1331+ has_limits: TRUE,
1332+ limits: {
1333+ int_min_val: 1,
1334+ int_max_val: 10000
1335+ },
1336+
1337+ can_be_null: FALSE
1338+ },
1339+ { /* Innodb's internally used field */
1340+ name: "DB_TRX_ID",
1341+ type: FT_INTERNAL,
1342+ fixed_length: 6,
1343+
1344+ can_be_null: FALSE
1345+ },
1346+ { /* Innodb's internally used field */
1347+ name: "DB_ROLL_PTR",
1348+ type: FT_INTERNAL,
1349+ fixed_length: 7,
1350+
1351+ can_be_null: FALSE
1352+ },
1353+ { /* enum('yes','no') */
1354+ name: "auto_restart",
1355+ type: FT_ENUM,
1356+ fixed_length: 1,
1357+
1358+ has_limits: TRUE,
1359+ limits: {
1360+ enum_values_count: 2,
1361+ enum_values: { "yes", "no" }
1362+ },
1363+
1364+ can_be_null: FALSE
1365+ },
1366+ { /* int(11) */
1367+ name: "num_created_today",
1368+ type: FT_INT,
1369+ fixed_length: 4,
1370+
1371+ can_be_null: FALSE
1372+ },
1373+ { /* bigint(20) */
1374+ name: "time_yesterday",
1375+ type: FT_INT,
1376+ fixed_length: 8,
1377+
1378+ can_be_null: FALSE
1379+ },
1380+ { /* varchar(20) */
1381+ name: "from_username",
1382+ type: FT_CHAR,
1383+ min_length: 0,
1384+ max_length: 20,
1385+
1386+ has_limits: TRUE,
1387+ limits: {
1388+ char_min_len: 0,
1389+ char_max_len: 15,
1390+ char_ascii_only: TRUE
1391+ },
1392+
1393+ can_be_null: FALSE
1394+ },
1395+ { /* tinyint(1) */
1396+ name: "affiliate_admin",
1397+ type: FT_INT,
1398+ fixed_length: 1,
1399+
1400+ has_limits: TRUE,
1401+ limits: {
1402+ int_min_value: 0,
1403+ int_max_value: 1,
1404+ can_be_null: FALSE
1405+ },
1406+
1407+ can_be_null: TRUE
1408+ },
1409+ { type: FT_NONE }
1410+ }
1411+ }
1412+ };
1413+
1414+ #endif
1415+
1416+I'd like to bring your attention to two fields here (actually, tree, but in a definition above we see only two):
1417+
1418+ - `DB_TRX_ID` - this field is managed by InnoDB internally and contains a ID of transaction which changed a record last time
1419+ - `DB_ROLL_PTR` - one more internal InnoDB field (TODO: find out what is it used for).
1420+ - `DB_ROW_ID` - this internally used field should be the first field in tables without primary keys (it is an auto-increment field used by InnoDB to identify rows in such tables)
1421+
1422+These two (or three) fields should be in your table definition (at least in v.0.1) to let `constraints_parser` to find your data in a tablespace.
1423+
1424+When `table_defs.h` file is ready, you can proceed with the toolset compilation to get a set of binaries specific for your own database (we'll try to avoid this compilation step in future releases).
1425+
1426+Toolset Compilation Procedure
1427+-----------------------------
1428+
1429+As mentioned before, in release 0.1 of the toolset you need to compile your own binaries to use our toolkit. Internally our toolset uses some low-level InnoDB code pieces to work with pages and fields in tablespaces. That is why we ship trimmed down version of mysql sources with our project (`mysql-source` directory).
1430+
1431+We tried to make build process as simple as possible so after you have `table_defs.h` file created you can just run `make` and you should be done with building. If you'll get any problems, most possible they would be in mysql-sources building process. In this case you can just download mysql sources from [MySQL site](http://www.mysql.com), configure and build mysql as following:
1432+
1433+ $ ./configure
1434+ $ make
1435+
1436+and copy `MYSQL_SOURCES/innobase/ut/libut.a` file to toolkit build directory and try to run `make` again.
1437+
1438+If you'd like to build static versions of binaries, uncomment CFLAGS line in the Makefile.
1439+
1440+Data Recovery Process Explained
1441+-------------------------------
1442+
1443+Now, let's get to data recovery process. Recommended (really detailed) sequence of a actions for data recovery is a following:
1444+
1445+ 1. Split your tablespace to pages with `page_parser`
1446+ 2. Find your `index_id` values of a primary indexes for your pages.
1447+ 3. Take one page from your most valuable table directory.
1448+ 4. Create table definition for this table (automatically with `create_defs.pl` or manually).
1449+ 5. Try to recover some data from this one page file in debug mode.
1450+ 6. If no data was recovered, check your `table_defs.h` file and try again.
1451+ 7. If everything worked fine, try to run `constraints_parser` in normal (non-debug) mode and check your data.
1452+ 8. If data looks ok, then get all pages from your table's directory, concatenate them (`cat *.page > pages`) and try to recover all your table's data.
1453+ 9. Repeat steps 3-8 for all tables you need.
1454+
1455+If you have no tables with an identical structure and you're pretty confident about your table definitions, you can recover your data from your tablespace data directly.
1456+
1457+If you are getting a lot of junk records in your `constraints_parser` output, try to set more limits in your definitions file so parser would know how to filter out these false positives.
1458+
1459
1460=== added file 'docs/README.html'
1461--- docs/README.html 1970-01-01 00:00:00 +0000
1462+++ docs/README.html 2010-01-14 13:03:26 +0000
1463@@ -0,0 +1,241 @@
1464+<?xml version="1.0" encoding="UTF-8" ?>
1465+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
1466+<html>
1467+ <head>
1468+ <meta name="Format" content="complete" />
1469+ </head>
1470+<body>
1471+<h1 id="innodbrecoveryhowto">Innodb Recovery Howto</h1>
1472+
1473+<p>InnoDB is pretty stable and reliable storage engine, but even it could be corrupted in case of hardware failure or human mistakes. For example, you could have a failures in your RAID controller (duet to cabling) or memory errors or someone could do &#8220;DELETE FROM some_table&#8221; and you&#8217;ll lose your data.</p>
1474+
1475+<p>In many cases innodb&#8217;s internal recovery code could not handle such problems and the only way to recover data is to work with innodb tablespaces directly. This is what you can do with our <strong>innodb recovery toolkit</strong> (<em>toolkit</em> later in this document). </p>
1476+
1477+<h2 id="toolsoverview">Tools Overview</h2>
1478+
1479+<p>Described toolkit consists of a set of useful tools for innodb recovery such as:</p>
1480+
1481+<ul>
1482+<li><strong><code>page_parser</code></strong> - this tools takes some InnoDB tablespace and splits it to a separate sets of pages grouped by tablespace ID and table ID.</li>
1483+<li><strong><code>constraints_parser</code></strong> - this tool takes some tablespace or any other file and tries to find your data in this file considering it as a part of real innodb tablespace. </li>
1484+<li><strong><code>create_defs.pl</code></strong> - this tool uses your database server login/password to create table definitions for your database so these definitions could be used with constraints parser.</li>
1485+<li><strong><code>split_dump.pl</code></strong> - this tool splits constraints_parser tool output to a set of separate CSV files. </li>
1486+<li><strong><code>show_data_dictionary</code></strong> (to be done in v.0.2+) - this tool tries to read and display innodb global data dictionary for a specified tablespace file.</li>
1487+<li><strong><code>checksum_tablespace</code></strong> (to be done in v.0.2+) - this tool tries to read an innodb tablespace and calculate its checksum to check if file is corrupted. </li>
1488+</ul>
1489+
1490+<h2 id="pre-recoverytablespaceprocessing">Pre-recovery Tablespace Processing</h2>
1491+
1492+<p>Before you&#8217;d start recovering your data you&#8217;d definitely like to make a small research on your tablespace. So far we have no tools for innodb global data dictionary view, but you could use innodb&#8217;s internal tools for this. One of the most useful is <strong>table_monitor</strong>. To use it you need to be able to at least start your mysql on your corrupted tablespace (see <code>innodb_force_recovery</code> option of mysqld). When you have your mysql up and running, just connect to any database (like mysql or test) and perform a following command:</p>
1493+
1494+<pre><code>CREATE TABLE innodb_table_monitor(x int) engine=innodb;
1495+</code></pre>
1496+
1497+<p>This would force innodb engine to start table monitor and dump some useful data regarding your tablespaces in mysql&#8217;s error log (log-error option).</p>
1498+
1499+<p>Most interesting information here is a mapping between your tables&#8217; primary indexes and table ids. For example you can get an output like this:</p>
1500+
1501+<pre><code>TABLE: name test/site_folders, id 0 119, columns 9, indexes 1, appr.rows 1
1502+ COLUMNS: id: DATA_INT len 4 prec 0; name: type 12 len 765 prec 0; sites_count: DATA_INT len 4 prec 0;
1503+ created_at: DATA_INT len 8 prec 0; updated_at: DATA_INT len 8 prec 0;
1504+ DB_ROW_ID: DATA_SYS prtype 256 len 6 prec 0; DB_TRX_ID: DATA_SYS prtype 257 len 6 prec 0;
1505+ DB_ROLL_PTR: DATA_SYS prtype 258 len 7 prec 0;
1506+ INDEX: name PRIMARY, id 0 254, fields 1/7, type 3
1507+ root page 271, appr.key vals 1, leaf pages 1, size pages 1
1508+ FIELDS: id DB_TRX_ID DB_ROLL_PTR name sites_count created_at updated_at
1509+</code></pre>
1510+
1511+<p>Here you can see a list of fields in your table and, most interesting - you can see that the PRIMARY index for your table is mapped to <code>index_id</code>=&#8221;0 254&#8221;. Read below to see how to use this information.</p>
1512+
1513+<h2 id="workingwithapartofinnodbtablespace">Working With a Part of InnoDB Tablespace</h2>
1514+
1515+<p><code>heuristics_parser</code> tool works fine with any tablespace types (single and file-per-table), but in some cases you&#8217;d like to work with a smaller part of your data: huge tablespace files (10Gb+), tablespaces with many tables that have an identical structure or just for testing your table descriptions. </p>
1516+
1517+<p>At this moment we have a <code>page_parser</code> tool which takes some tablespace and slices it to a set of pages grouped by <code>table_id</code>. Next steps you could make are:</p>
1518+
1519+<ul>
1520+<li>Prepare your table descriptions and test them on a separate pages.</li>
1521+<li>Concatenate all pages with one table_id and recover your table data.</li>
1522+</ul>
1523+
1524+<p>When you run <code>page_parser</code> your pages are placed in <code>pages-NNNNNNNN/HHHH-LLLL</code> directories where <strong>NNNNNNNN</strong> is timespamp of the second when you started the tool, <strong>HHHH</strong> and <strong>LLLL</strong> are high and low words for <code>index_id</code> of a page. Every page would be placed in <strong>III-NNNNN.page</strong> files where <strong>III</strong> is a page number (offset / page size) and <strong>NNNNN</strong> is <code>page_id</code> of a page.</p>
1525+
1526+<p>To concatenate some table pages in one files, you can use a following command:</p>
1527+
1528+<pre><code>$ cat *.page &gt; my.tables
1529+</code></pre>
1530+
1531+<h2 id="preparingatablesdescriptionfile">Preparing a Tables Description File</h2>
1532+
1533+<p>First of all, what are these table definitions? The answer is simple: table definition is a simple, but really powerful set of rules which describe your table structure and help our tools recover your data. One table definition consists of a set of fields, each of which consists of:</p>
1534+
1535+<ul>
1536+<li>field type</li>
1537+<li>field size (fixed_size for fixed-size fields and min/max sizes for variable-size fields)</li>
1538+<li>NULL/NOT NULL specification for this field</li>
1539+<li>optional set of data constraints:
1540+<ul>
1541+<li><code>can_be_null</code> describes if NULL field can contain NULL values or not</li>
1542+<li>value limits for INT/UINT fields</li>
1543+<li>min/max values length for CHAR/TEXT fields</li>
1544+<li>character set for CHAR/TEXT fields</li>
1545+<li>values set for ENUM fields</li>
1546+</ul></li>
1547+</ul>
1548+
1549+<p>As of version 0.1 <code>constraints_parser</code> could work with compiled-in table definitions only. This mean that you need to write your table definitions and then compile your own version of tool binary. In next versions we&#8217;re going to add some external config file support to be able to ship binary versions of our toolset.</p>
1550+
1551+<p>At this moment you have two options how to create your table definitions:
1552+ * you can create them manually from scratch (do not forget innodb&#8217;s internal fields)
1553+ * or you can restore your tables (even empty) from backups and then start <code>create_defs.pl</code> script to get scaffolds for your definitions. </p>
1554+
1555+<p>After an automatic table definitions generation you&#8217;ll need to check fields limits, etc and fix defaults of they do not match your own data limits.</p>
1556+
1557+<p>Here is an example of <code>table_def.h</code> file with some table definition made by <code>create_defs.pl</code> script and adjusted to match real table constraints:</p>
1558+
1559+<pre><code>#ifndef table_defs_h
1560+#define table_defs_h
1561+
1562+// Table definitions
1563+table_def_t table_definitions[] = {
1564+ {
1565+ name: "some_table",
1566+ {
1567+ { /* int(11) */
1568+ name: "id",
1569+ type: FT_INT,
1570+ fixed_length: 4,
1571+
1572+ has_limits: TRUE,
1573+ limits: {
1574+ int_min_val: 1,
1575+ int_max_val: 10000
1576+ },
1577+
1578+ can_be_null: FALSE
1579+ },
1580+ { /* Innodb's internally used field */
1581+ name: "DB_TRX_ID",
1582+ type: FT_INTERNAL,
1583+ fixed_length: 6,
1584+
1585+ can_be_null: FALSE
1586+ },
1587+ { /* Innodb's internally used field */
1588+ name: "DB_ROLL_PTR",
1589+ type: FT_INTERNAL,
1590+ fixed_length: 7,
1591+
1592+ can_be_null: FALSE
1593+ },
1594+ { /* enum('yes','no') */
1595+ name: "auto_restart",
1596+ type: FT_ENUM,
1597+ fixed_length: 1,
1598+
1599+ has_limits: TRUE,
1600+ limits: {
1601+ enum_values_count: 2,
1602+ enum_values: { "yes", "no" }
1603+ },
1604+
1605+ can_be_null: FALSE
1606+ },
1607+ { /* int(11) */
1608+ name: "num_created_today",
1609+ type: FT_INT,
1610+ fixed_length: 4,
1611+
1612+ can_be_null: FALSE
1613+ },
1614+ { /* bigint(20) */
1615+ name: "time_yesterday",
1616+ type: FT_INT,
1617+ fixed_length: 8,
1618+
1619+ can_be_null: FALSE
1620+ },
1621+ { /* varchar(20) */
1622+ name: "from_username",
1623+ type: FT_CHAR,
1624+ min_length: 0,
1625+ max_length: 20,
1626+
1627+ has_limits: TRUE,
1628+ limits: {
1629+ char_min_len: 0,
1630+ char_max_len: 15,
1631+ char_ascii_only: TRUE
1632+ },
1633+
1634+ can_be_null: FALSE
1635+ },
1636+ { /* tinyint(1) */
1637+ name: "affiliate_admin",
1638+ type: FT_INT,
1639+ fixed_length: 1,
1640+
1641+ has_limits: TRUE,
1642+ limits: {
1643+ int_min_value: 0,
1644+ int_max_value: 1,
1645+ can_be_null: FALSE
1646+ },
1647+
1648+ can_be_null: TRUE
1649+ },
1650+ { type: FT_NONE }
1651+ }
1652+ }
1653+};
1654+
1655+#endif
1656+</code></pre>
1657+
1658+<p>I&#8217;d like to bring your attention to two fields here (actually, tree, but in a definition above we see only two):</p>
1659+
1660+<ul>
1661+<li><code>DB_TRX_ID</code> - this field is managed by InnoDB internally and contains a ID of transaction which changed a record last time</li>
1662+<li><code>DB_ROLL_PTR</code> - one more internal InnoDB field (TODO: find out what is it used for).</li>
1663+<li><code>DB_ROW_ID</code> - this internally used field should be the first field in tables without primary keys (it is an auto-increment field used by InnoDB to identify rows in such tables)</li>
1664+</ul>
1665+
1666+<p>These two (or three) fields should be in your table definition (at least in v.0.1) to let <code>constraints_parser</code> to find your data in a tablespace.</p>
1667+
1668+<p>When <code>table_defs.h</code> file is ready, you can proceed with the toolset compilation to get a set of binaries specific for your own database (we&#8217;ll try to avoid this compilation step in future releases).</p>
1669+
1670+<h2 id="toolsetcompilationprocedure">Toolset Compilation Procedure</h2>
1671+
1672+<p>As mentioned before, in release 0.1 of the toolset you need to compile your own binaries to use our toolkit. Internally our toolset uses some low-level InnoDB code pieces to work with pages and fields in tablespaces. That is why we ship trimmed down version of mysql sources with our project (<code>mysql-source</code> directory). </p>
1673+
1674+<p>We tried to make build process as simple as possible so after you have <code>table_defs.h</code> file created you can just run <code>make</code> and you should be done with building. If you&#8217;ll get any problems, most possible they would be in mysql-sources building process. In this case you can just download mysql sources from <a href="http://www.mysql.com">MySQL site</a>, configure and build mysql as following:</p>
1675+
1676+<pre><code>$ ./configure
1677+$ make
1678+</code></pre>
1679+
1680+<p>and copy <code>MYSQL_SOURCES/innobase/ut/libut.a</code> file to toolkit build directory and try to run <code>make</code> again.</p>
1681+
1682+<p>If you&#8217;d like to build static versions of binaries, uncomment CFLAGS line in the Makefile.</p>
1683+
1684+<h2 id="datarecoveryprocessexplained">Data Recovery Process Explained</h2>
1685+
1686+<p>Now, let&#8217;s get to data recovery process. Recommended (really detailed) sequence of a actions for data recovery is a following:</p>
1687+
1688+<ol>
1689+<li>Split your tablespace to pages with <code>page_parser</code></li>
1690+<li>Find your <code>index_id</code> values of a primary indexes for your pages.</li>
1691+<li>Take one page from your most valuable table directory.</li>
1692+<li>Create table definition for this table (automatically with <code>create_defs.pl</code> or manually).</li>
1693+<li>Try to recover some data from this one page file in debug mode.</li>
1694+<li>If no data was recovered, check your <code>table_defs.h</code> file and try again.</li>
1695+<li>If everything worked fine, try to run <code>constraints_parser</code> in normal (non-debug) mode and check your data.</li>
1696+<li>If data looks ok, then get all pages from your table&#8217;s directory, concatenate them (<code>cat *.page &gt; pages</code>) and try to recover all your table&#8217;s data.</li>
1697+<li>Repeat steps 3-8 for all tables you need.</li>
1698+</ol>
1699+
1700+<p>If you have no tables with an identical structure and you&#8217;re pretty confident about your table definitions, you can recover your data from your tablespace data directly.</p>
1701+
1702+<p>If you are getting a lot of junk records in your <code>constraints_parser</code> output, try to set more limits in your definitions file so parser would know how to filter out these false positives.</p>
1703+</body>
1704+</html>
1705\ No newline at end of file
1706
1707=== added directory 'include'
1708=== added file 'include/check_data.h'
1709--- include/check_data.h 1970-01-01 00:00:00 +0000
1710+++ include/check_data.h 2010-01-14 13:03:26 +0000
1711@@ -0,0 +1,16 @@
1712+#ifndef _check_data_h_
1713+#define _check_data_h_
1714+
1715+#include "tables_dict.h"
1716+
1717+extern bool debug;
1718+
1719+ibool check_datetime(ulonglong ldate);
1720+ibool check_char_ascii(char *value, ulint len);
1721+ibool check_char_digits(char *value, ulint len);
1722+ibool check_field_limits(field_def_t *field, byte *value, ulint len);
1723+
1724+inline ulonglong make_ulonglong(dulint x);
1725+inline longlong make_longlong(dulint x);
1726+
1727+#endif
1728
1729=== added file 'include/error.h'
1730--- include/error.h 1970-01-01 00:00:00 +0000
1731+++ include/error.h 2010-01-14 13:03:26 +0000
1732@@ -0,0 +1,7 @@
1733+#include <stdlib.h>
1734+#include <stdio.h>
1735+
1736+inline void error(char *msg) {
1737+ printf("Error: %s\n", msg);
1738+ exit(1);
1739+}
1740
1741=== added file 'include/print_data.h'
1742--- include/print_data.h 1970-01-01 00:00:00 +0000
1743+++ include/print_data.h 2010-01-14 13:03:26 +0000
1744@@ -0,0 +1,27 @@
1745+#ifndef _print_data_h_
1746+#define _print_data_h_
1747+
1748+#include <univ.i>
1749+#include <page0page.h>
1750+#include <rem0rec.h>
1751+
1752+#include "tables_dict.h"
1753+
1754+extern bool debug;
1755+
1756+inline ulonglong make_ulonglong(dulint x);
1757+inline longlong make_longlong(dulint x);
1758+
1759+unsigned long long int get_uint_value(field_def_t *field, byte *value);
1760+long long int get_int_value(field_def_t *field, byte *value);
1761+
1762+void print_datetime(ulonglong ldate);
1763+void print_date(ulong ldate);
1764+void print_time(ulong ltime);
1765+
1766+void print_enum(int value, field_def_t *field);
1767+void print_field_value(byte *value, ulint len, field_def_t *field);
1768+
1769+void rec_print_new(FILE* file, rec_t* rec, const ulint* offsets);
1770+
1771+#endif
1772
1773=== added file 'include/table_defs.h'
1774--- include/table_defs.h 1970-01-01 00:00:00 +0000
1775+++ include/table_defs.h 2010-01-14 13:03:26 +0000
1776@@ -0,0 +1,69 @@
1777+#ifndef table_defs_h
1778+#define table_defs_h
1779+
1780+// Table definitions
1781+table_def_t table_definitions[] = {
1782+ {
1783+ name: "reptest",
1784+ {
1785+ { /* int(10) unsigned */
1786+ name: "id",
1787+ type: FT_UINT,
1788+ fixed_length: 4,
1789+
1790+ has_limits: TRUE,
1791+ limits: {
1792+ uint_min_val: 0,
1793+ uint_max_val: 30000
1794+ },
1795+
1796+ can_be_null: FALSE
1797+ },
1798+ { /* */
1799+ name: "DB_TRX_ID",
1800+ type: FT_INTERNAL,
1801+ fixed_length: 6,
1802+
1803+ can_be_null: FALSE
1804+ },
1805+ { /* */
1806+ name: "DB_ROLL_PTR",
1807+ type: FT_INTERNAL,
1808+ fixed_length: 7,
1809+
1810+ can_be_null: FALSE
1811+ },
1812+ { /* varchar(32) */
1813+ name: "a",
1814+ type: FT_CHAR,
1815+ min_length: 0,
1816+ max_length: 32,
1817+
1818+ has_limits: TRUE,
1819+ limits: {
1820+ char_min_len: 0,
1821+ char_max_len: 32,
1822+ char_ascii_only: TRUE
1823+ },
1824+
1825+ can_be_null: TRUE
1826+ },
1827+ { /* enum('odd','even') */
1828+ name: "b",
1829+ type: FT_ENUM,
1830+ fixed_length: 1,
1831+
1832+ has_limits: TRUE,
1833+ limits: {
1834+ enum_values_count: 2,
1835+ enum_values: { "odd", "even" }
1836+ },
1837+
1838+ can_be_null: FALSE
1839+ },
1840+ { type: FT_NONE }
1841+ }
1842+ },
1843+};
1844+
1845+#endif
1846
1847=== added file 'include/tables_dict.h'
1848--- include/tables_dict.h 1970-01-01 00:00:00 +0000
1849+++ include/tables_dict.h 2010-01-14 13:03:26 +0000
1850@@ -0,0 +1,99 @@
1851+#ifndef common_h
1852+#define common_h
1853+
1854+#include <univ.i>
1855+#include <page0page.h>
1856+#include <rem0rec.h>
1857+
1858+#define MAX_TABLE_FIELDS 500
1859+#define MAX_ENUM_VALUES 100
1860+
1861+// Field limits type
1862+typedef struct field_limits {
1863+ // In opposite to field.can_be_null, this field sets
1864+ // limit from the data point of view
1865+ ibool can_be_null;
1866+
1867+ // min and max values for FT_INT fields
1868+ long long int int_min_val;
1869+ long long int int_max_val;
1870+
1871+ // min and max values for FT_UNT fields
1872+ unsigned long long int uint_min_val;
1873+ unsigned long long int uint_max_val;
1874+
1875+ // min and max string length
1876+ long long int char_min_len;
1877+ long long int char_max_len;
1878+
1879+ // Should data be forced down to some ASCII sub-set or not
1880+ ibool char_ascii_only;
1881+ ibool char_digits_only;
1882+
1883+ char* char_regex;
1884+
1885+ // Dates validation
1886+ ibool date_validation;
1887+
1888+ // Enum values
1889+ char *enum_values[MAX_ENUM_VALUES];
1890+ uint enum_values_count;
1891+} field_limits_t;
1892+
1893+// Table definition types
1894+typedef enum field_type {
1895+ FT_NONE, // dummy type for stop records
1896+ FT_INTERNAL, // supported
1897+ FT_CHAR, // supported (w/o externals)
1898+ FT_INT, // supported
1899+ FT_UINT, // supported
1900+ FT_FLOAT, // supported
1901+ FT_DOUBLE, // supported
1902+ FT_DATE, // supported
1903+ FT_TIME, // supported
1904+ FT_DATETIME, // supported
1905+ FT_ENUM, // supported
1906+ FT_SET,
1907+ FT_BLOB,
1908+ FT_TEXT, // supported (w/o externals)
1909+ FT_BIT,
1910+ FT_DECIMAL // supported
1911+} field_type_t;
1912+
1913+typedef struct field_def {
1914+ char *name;
1915+ field_type_t type;
1916+ int min_length;
1917+ int max_length;
1918+
1919+ ibool can_be_null;
1920+ int fixed_length;
1921+
1922+ // For DECIMAL numbers only
1923+ int decimal_precision;
1924+ int decimal_digits;
1925+
1926+ ibool has_limits;
1927+ ibool char_rstrip_spaces;
1928+ field_limits_t limits;
1929+} field_def_t;
1930+
1931+typedef struct table_def {
1932+ char *name;
1933+ field_def_t fields[MAX_TABLE_FIELDS];
1934+ int fields_count;
1935+ int data_min_size;
1936+ int data_max_size;
1937+ int n_nullable;
1938+ int min_rec_header_len;
1939+} table_def_t;
1940+
1941+#ifndef table_definitions_cnt
1942+ extern table_def_t table_definitions[];
1943+ extern int table_definitions_cnt;
1944+ extern int record_extra_bytes;
1945+#endif
1946+
1947+void init_table_defs();
1948+
1949+#endif
1950
1951=== added file 'incrementalupdate.c'
1952--- incrementalupdate.c 1970-01-01 00:00:00 +0000
1953+++ incrementalupdate.c 2010-01-14 13:03:26 +0000
1954@@ -0,0 +1,269 @@
1955+/* Copyright (C) 2000-2005 MySQL AB & Innobase Oy
1956+
1957+ This program is free software; you can redistribute it and/or modify
1958+ it under the terms of the GNU General Public License as published by
1959+ the Free Software Foundation; version 2 of the License.
1960+
1961+ This program is distributed in the hope that it will be useful,
1962+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1963+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1964+ GNU General Public License for more details.
1965+
1966+ You should have received a copy of the GNU General Public License
1967+ along with this program; if not, write to the Free Software
1968+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
1969+
1970+/*
1971+ InnoDB offline file checksum utility. 85% of the code in this file
1972+ was taken wholesale fron the InnoDB codebase.
1973+
1974+ The final 15% was originally written by Mark Smith of Danga
1975+ Interactive, Inc. <junior@danga.com>
1976+
1977+ Published with a permission.
1978+*/
1979+
1980+/*
1981+ This was once a well written tool for InnoDB checkums, I took it and spoiled it
1982+ because I am a programing florist, cut and arrange here and there and suddenly a
1983+ tool for doing incremental page based updates between tablespace snapshots.
1984+*/
1985+
1986+/* needed to have access to 64 bit file functions */
1987+#define _LARGEFILE_SOURCE
1988+#define _LARGEFILE64_SOURCE
1989+
1990+#define _XOPEN_SOURCE 500 /* needed to include getopt.h on some platforms. */
1991+
1992+#include <stdio.h>
1993+#include <stdlib.h>
1994+#include <time.h>
1995+#include <sys/types.h>
1996+#include <sys/stat.h>
1997+#include <unistd.h>
1998+
1999+/* all of these ripped from InnoDB code from MySQL 4.0.22 */
2000+#define UT_HASH_RANDOM_MASK 1463735687
2001+#define UT_HASH_RANDOM_MASK2 1653893711
2002+#define FIL_PAGE_LSN 16
2003+#define FIL_PAGE_FILE_FLUSH_LSN 26
2004+#define FIL_PAGE_OFFSET 4
2005+#define FIL_PAGE_DATA 38
2006+#define FIL_PAGE_END_LSN_OLD_CHKSUM 8
2007+#define FIL_PAGE_SPACE_OR_CHKSUM 0
2008+#define UNIV_PAGE_SIZE (2 * 8192)
2009+
2010+/* command line argument to do page checks (that's it) */
2011+/* another argument to specify page ranges... seek to right spot and go from there */
2012+
2013+typedef unsigned long int ulint;
2014+typedef unsigned char byte;
2015+
2016+/* innodb function in name; modified slightly to not have the ASM version (lots of #ifs that didn't apply) */
2017+ulint mach_read_from_4(byte *b)
2018+{
2019+ return( ((ulint)(b[0]) << 24)
2020+ + ((ulint)(b[1]) << 16)
2021+ + ((ulint)(b[2]) << 8)
2022+ + (ulint)(b[3])
2023+ );
2024+}
2025+
2026+ulint
2027+ut_fold_ulint_pair(
2028+/*===============*/
2029+ /* out: folded value */
2030+ ulint n1, /* in: ulint */
2031+ ulint n2) /* in: ulint */
2032+{
2033+ return(((((n1 ^ n2 ^ UT_HASH_RANDOM_MASK2) << 8) + n1)
2034+ ^ UT_HASH_RANDOM_MASK) + n2);
2035+}
2036+
2037+ulint
2038+ut_fold_binary(
2039+/*===========*/
2040+ /* out: folded value */
2041+ byte* str, /* in: string of bytes */
2042+ ulint len) /* in: length */
2043+{
2044+ ulint i;
2045+ ulint fold= 0;
2046+
2047+ for (i= 0; i < len; i++)
2048+ {
2049+ fold= ut_fold_ulint_pair(fold, (ulint)(*str));
2050+
2051+ str++;
2052+ }
2053+
2054+ return(fold);
2055+}
2056+
2057+int main(int argc, char **argv)
2058+{
2059+ FILE *f; /* our input file */
2060+ FILE *b; /* our output file */
2061+ byte *p; /* storage of pages read input file*/
2062+ byte *op; /* storage of pages read output file*/
2063+ int bytes; /* bytes read count */
2064+ ulint ct; /* current page number (0 based) */
2065+ int now; /* current time */
2066+ int lastt; /* last time */
2067+ ulint oldcsum, noldcsum, oldcsumfield, noldcsumfield, csum, ncsum, csumfield, ncsumfield, logseq, nlogseq, logseqfield, nlogseqfield; /* ulints for checksum storage */
2068+ struct stat st; /* for stat, if you couldn't guess */
2069+ unsigned long long int size; /* size of file (has to be 64 bits) */
2070+ ulint pages; /* number of pages in file */
2071+ ulint start_page= 0, end_page= 0, use_end_page= 0; /* for starting and ending at certain pages */
2072+ off_t offset= 0;
2073+ off_t boffset= 0;
2074+ int just_count= 0; /* if true, just print page count */
2075+ int verbose= 0;
2076+ int debug= 0;
2077+ int c;
2078+ int fd;
2079+ int fn;
2080+ int posstat;
2081+ off_t pos;
2082+
2083+
2084+ /* make sure we have the right arguments */
2085+ if (argc != 3)
2086+ {
2087+ printf("InnoDB offline file checksum utility.\n");
2088+ printf("usage: %s <backupfilename> <filename>\n", argv[0]);
2089+ return 1;
2090+ }
2091+
2092+ /* stat the file to get size and page count */
2093+ if (stat(argv[2], &st))
2094+ {
2095+ perror("error statting file");
2096+ return 1;
2097+ }
2098+ size= st.st_size;
2099+ pages= size / UNIV_PAGE_SIZE;
2100+ if (just_count)
2101+ {
2102+ printf("%lu\n", pages);
2103+ return 0;
2104+ }
2105+ else if (verbose)
2106+ {
2107+ printf("file %s= %llu bytes (%lu pages)...\n", argv[1], size, pages);
2108+ printf("checking pages in range %lu to %lu\n", start_page, use_end_page ? end_page : (pages - 1));
2109+ }
2110+
2111+
2112+ /* open the file for reading */
2113+ f= fopen(argv[2], "rb");
2114+ if (!f)
2115+ {
2116+ perror("error opening ibdata file");
2117+ return 1;
2118+ }
2119+
2120+ /* open the file for readwrite */
2121+ b= fopen(argv[1], "rb+");
2122+ if (!b)
2123+ {
2124+ perror("error opening backup file");
2125+ return 1;
2126+ }
2127+
2128+printf("Comparing files %s and %s\n", argv[1], argv[2]);
2129+ /* seek to the necessary position */
2130+ if (start_page)
2131+ {
2132+ fd= fileno(f);
2133+ fn= fileno(b);
2134+ if (!fd || !fn)
2135+ {
2136+ perror("unable to obtain file descriptor number");
2137+ return 1;
2138+ }
2139+
2140+
2141+ offset= (off_t)start_page * (off_t)UNIV_PAGE_SIZE;
2142+ boffset= (off_t)start_page * (off_t)UNIV_PAGE_SIZE;
2143+
2144+
2145+ if (lseek(fd, offset, SEEK_SET) != offset)
2146+ {
2147+ perror("unable to seek to necessary offset");
2148+ return 1;
2149+ }
2150+
2151+ if (lseek(fn, boffset, SEEK_SET) != boffset)
2152+ {
2153+ perror("unable to seek to necessary offset");
2154+ return 1;
2155+ }
2156+
2157+ }
2158+
2159+ /* allocate buffer for reading (so we don't realloc every time) */
2160+ p= (byte *)malloc(UNIV_PAGE_SIZE);
2161+ op= (byte *)malloc(UNIV_PAGE_SIZE);
2162+
2163+ /* main checksumming loop */
2164+ ct= start_page;
2165+ lastt= 0;
2166+ while (!feof(f))
2167+ {
2168+
2169+ bytes= fread(p, 1, UNIV_PAGE_SIZE, f);
2170+
2171+ if (!bytes && feof(f)) return 0;
2172+ if (bytes != UNIV_PAGE_SIZE)
2173+ {
2174+ fprintf(stderr, "bytes read (%d) doesn't match universal page size (%d)\n", bytes, UNIV_PAGE_SIZE);
2175+ return 1;
2176+ }
2177+
2178+ /* get position before reading page from backup file */
2179+ pos = ftell(b);
2180+
2181+ /* read page from backup file */
2182+ bytes= fread(op, 1, UNIV_PAGE_SIZE, b);
2183+
2184+ /* check the "stored log sequence numbers" */
2185+ logseq= mach_read_from_4(p + FIL_PAGE_LSN + 4);
2186+ nlogseq= mach_read_from_4(op + FIL_PAGE_LSN + 4);
2187+ logseqfield= mach_read_from_4(p + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM + 4);
2188+ nlogseqfield= mach_read_from_4(op + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM + 4);
2189+
2190+ /* Make sure our page LSNs make sense */
2191+ if (logseq != logseqfield || nlogseq != nlogseqfield)
2192+ {
2193+ fprintf(stderr, "page %lu invalid (fails log sequence number check)\n", ct);
2194+ return 1;
2195+ }
2196+
2197+ /* get old method checksums */
2198+ oldcsumfield= mach_read_from_4(p + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM);
2199+ noldcsumfield= mach_read_from_4(op + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM);
2200+
2201+
2202+ /* get new method checksums */
2203+ csumfield= mach_read_from_4(p + FIL_PAGE_SPACE_OR_CHKSUM);
2204+ ncsumfield= mach_read_from_4(op + FIL_PAGE_SPACE_OR_CHKSUM);
2205+ /* If any of the LSNs or checksums dont make assume we need the newer page */
2206+ if(logseq != nlogseq || oldcsumfield != noldcsumfield || csumfield != ncsumfield) {
2207+ printf("%lu:%lu:%lu:%lu:%lu\t Is different from \t%lu:%lu:%lu:%lu:%lu\n", ct, logseq, logseqfield,oldcsumfield,csumfield,ct, nlogseq, nlogseqfield,noldcsumfield,ncsumfield);
2208+ printf("Page start position is %lu\n", pos);
2209+ /* seek back to the start of this page */
2210+ fseek(b, -UNIV_PAGE_SIZE, SEEK_CUR);
2211+ printf("Successfully rewound position to %lu\n", pos);
2212+ /* write the page from the newer file to the backup */
2213+ fwrite(p, 1, UNIV_PAGE_SIZE, b);
2214+ /* we should now be back at the end of the page */
2215+ pos = ftell(b);
2216+ printf("Wrote new page and back at %lu\n", pos);
2217+exit;
2218+ }
2219+ /* do counter increase and progress printing */
2220+ ct++;
2221+ }
2222+ return 0;
2223+}
2224
2225=== added directory 'mysql-source'
2226=== added directory 'mysql-source/BUILD'
2227=== added file 'mysql-source/BUILD/Makefile.am'
2228--- mysql-source/BUILD/Makefile.am 1970-01-01 00:00:00 +0000
2229+++ mysql-source/BUILD/Makefile.am 2010-01-14 13:03:26 +0000
2230@@ -0,0 +1,70 @@
2231+# Copyright (C) 2002, 2004-2005 MySQL AB
2232+#
2233+# This library is free software; you can redistribute it and/or
2234+# modify it under the terms of the GNU Library General Public
2235+# License as published by the Free Software Foundation; version 2
2236+# of the License.
2237+#
2238+# This library is distributed in the hope that it will be useful,
2239+# but WITHOUT ANY WARRANTY; without even the implied warranty of
2240+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2241+# Library General Public License for more details.
2242+#
2243+# You should have received a copy of the GNU Library General Public
2244+# License along with this library; if not, write to the Free
2245+# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
2246+# MA 02111-1307, USA
2247+
2248+## Process this file with automake to create Makefile.in
2249+
2250+EXTRA_DIST = FINISH.sh \
2251+ SETUP.sh \
2252+ autorun.sh \
2253+ check-cpu \
2254+ cleanup \
2255+ compile-alpha \
2256+ compile-alpha-ccc \
2257+ compile-alpha-cxx \
2258+ compile-alpha-debug \
2259+ compile-amd64-debug-max \
2260+ compile-amd64-max \
2261+ compile-amd64-max-sci \
2262+ compile-darwin-mwcc \
2263+ compile-dist \
2264+ compile-hpux11-parisc2-aCC \
2265+ compile-ia64-debug-max \
2266+ compile-irix-mips64-mipspro \
2267+ compile-pentium \
2268+ compile-pentium-debug \
2269+ compile-pentium-debug-max \
2270+ compile-pentium-debug-max-no-embedded \
2271+ compile-pentium-debug-max-no-ndb \
2272+ compile-pentium-debug-no-bdb \
2273+ compile-pentium-debug-openssl \
2274+ compile-pentium-debug-yassl \
2275+ compile-pentium-gcov \
2276+ compile-pentium-gprof \
2277+ compile-pentium-icc \
2278+ compile-pentium-icc-valgrind-max \
2279+ compile-pentium-icc-yassl \
2280+ compile-pentium-max \
2281+ compile-pentium-myodbc \
2282+ compile-pentium-mysqlfs-debug \
2283+ compile-pentium-pgcc \
2284+ compile-pentium-valgrind-max \
2285+ compile-pentium64-debug \
2286+ compile-pentium64-debug-max \
2287+ compile-pentium64-max-sci \
2288+ compile-pentium64-valgrind-max \
2289+ compile-ppc \
2290+ compile-ppc-debug \
2291+ compile-ppc-debug-max \
2292+ compile-ppc-debug-max-no-ndb \
2293+ compile-ppc-max \
2294+ compile-solaris-sparc \
2295+ compile-solaris-sparc-debug \
2296+ compile-solaris-sparc-forte \
2297+ compile-solaris-sparc-purify
2298+
2299+# Don't update the files from bitkeeper
2300+%::SCCS/s.%
2301
2302=== added file 'mysql-source/BUILD/Makefile.in'
2303--- mysql-source/BUILD/Makefile.in 1970-01-01 00:00:00 +0000
2304+++ mysql-source/BUILD/Makefile.in 2010-01-14 13:03:27 +0000
2305@@ -0,0 +1,562 @@
2306+# Makefile.in generated by automake 1.9.6 from Makefile.am.
2307+# @configure_input@
2308+
2309+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
2310+# 2003, 2004, 2005 Free Software Foundation, Inc.
2311+# This Makefile.in is free software; the Free Software Foundation
2312+# gives unlimited permission to copy and/or distribute it,
2313+# with or without modifications, as long as this notice is preserved.
2314+
2315+# This program is distributed in the hope that it will be useful,
2316+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
2317+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
2318+# PARTICULAR PURPOSE.
2319+
2320+@SET_MAKE@
2321+
2322+# Copyright (C) 2002, 2004-2005 MySQL AB
2323+#
2324+# This library is free software; you can redistribute it and/or
2325+# modify it under the terms of the GNU Library General Public
2326+# License as published by the Free Software Foundation; version 2
2327+# of the License.
2328+#
2329+# This library is distributed in the hope that it will be useful,
2330+# but WITHOUT ANY WARRANTY; without even the implied warranty of
2331+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2332+# Library General Public License for more details.
2333+#
2334+# You should have received a copy of the GNU Library General Public
2335+# License along with this library; if not, write to the Free
2336+# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
2337+# MA 02111-1307, USA
2338+srcdir = @srcdir@
2339+top_srcdir = @top_srcdir@
2340+VPATH = @srcdir@
2341+pkgdatadir = $(datadir)/@PACKAGE@
2342+pkglibdir = $(libdir)/@PACKAGE@
2343+pkgincludedir = $(includedir)/@PACKAGE@
2344+top_builddir = ..
2345+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
2346+INSTALL = @INSTALL@
2347+install_sh_DATA = $(install_sh) -c -m 644
2348+install_sh_PROGRAM = $(install_sh) -c
2349+install_sh_SCRIPT = $(install_sh) -c
2350+INSTALL_HEADER = $(INSTALL_DATA)
2351+transform = $(program_transform_name)
2352+NORMAL_INSTALL = :
2353+PRE_INSTALL = :
2354+POST_INSTALL = :
2355+NORMAL_UNINSTALL = :
2356+PRE_UNINSTALL = :
2357+POST_UNINSTALL = :
2358+build_triplet = @build@
2359+host_triplet = @host@
2360+target_triplet = @target@
2361+subdir = BUILD
2362+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
2363+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
2364+am__aclocal_m4_deps = $(top_srcdir)/config/ac-macros/alloca.m4 \
2365+ $(top_srcdir)/config/ac-macros/check_cpu.m4 \
2366+ $(top_srcdir)/config/ac-macros/character_sets.m4 \
2367+ $(top_srcdir)/config/ac-macros/compiler_flag.m4 \
2368+ $(top_srcdir)/config/ac-macros/ha_archive.m4 \
2369+ $(top_srcdir)/config/ac-macros/ha_berkeley.m4 \
2370+ $(top_srcdir)/config/ac-macros/ha_blackhole.m4 \
2371+ $(top_srcdir)/config/ac-macros/ha_example.m4 \
2372+ $(top_srcdir)/config/ac-macros/ha_federated.m4 \
2373+ $(top_srcdir)/config/ac-macros/ha_innodb.m4 \
2374+ $(top_srcdir)/config/ac-macros/ha_ndbcluster.m4 \
2375+ $(top_srcdir)/config/ac-macros/ha_tina.m4 \
2376+ $(top_srcdir)/config/ac-macros/large_file.m4 \
2377+ $(top_srcdir)/config/ac-macros/misc.m4 \
2378+ $(top_srcdir)/config/ac-macros/openssl.m4 \
2379+ $(top_srcdir)/config/ac-macros/readline.m4 \
2380+ $(top_srcdir)/config/ac-macros/yassl.m4 \
2381+ $(top_srcdir)/config/ac-macros/zlib.m4 \
2382+ $(top_srcdir)/configure.in
2383+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
2384+ $(ACLOCAL_M4)
2385+mkinstalldirs = $(install_sh) -d
2386+CONFIG_HEADER = $(top_builddir)/config.h
2387+CONFIG_CLEAN_FILES =
2388+SOURCES =
2389+DIST_SOURCES =
2390+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
2391+ACLOCAL = @ACLOCAL@
2392+ALLOCA = @ALLOCA@
2393+AMDEP_FALSE = @AMDEP_FALSE@
2394+AMDEP_TRUE = @AMDEP_TRUE@
2395+AMTAR = @AMTAR@
2396+AR = @AR@
2397+ARFLAGS = @ARFLAGS@
2398+AS = @AS@
2399+ASSEMBLER_FALSE = @ASSEMBLER_FALSE@
2400+ASSEMBLER_TRUE = @ASSEMBLER_TRUE@
2401+ASSEMBLER_sparc32_FALSE = @ASSEMBLER_sparc32_FALSE@
2402+ASSEMBLER_sparc32_TRUE = @ASSEMBLER_sparc32_TRUE@
2403+ASSEMBLER_sparc64_FALSE = @ASSEMBLER_sparc64_FALSE@
2404+ASSEMBLER_sparc64_TRUE = @ASSEMBLER_sparc64_TRUE@
2405+ASSEMBLER_x86_FALSE = @ASSEMBLER_x86_FALSE@
2406+ASSEMBLER_x86_TRUE = @ASSEMBLER_x86_TRUE@
2407+AUTOCONF = @AUTOCONF@
2408+AUTOHEADER = @AUTOHEADER@
2409+AUTOMAKE = @AUTOMAKE@
2410+AVAILABLE_LANGUAGES = @AVAILABLE_LANGUAGES@
2411+AWK = @AWK@
2412+CC = @CC@
2413+CCAS = @CCAS@
2414+CCASFLAGS = @CCASFLAGS@
2415+CCDEPMODE = @CCDEPMODE@
2416+CC_VERSION = @CC_VERSION@
2417+CFLAGS = @CFLAGS@
2418+CHECK_PID = @CHECK_PID@
2419+CHMOD = @CHMOD@
2420+CLIENT_EXTRA_LDFLAGS = @CLIENT_EXTRA_LDFLAGS@
2421+CLIENT_LIBS = @CLIENT_LIBS@
2422+CMP = @CMP@
2423+COMPILATION_COMMENT = @COMPILATION_COMMENT@
2424+COMPILE_PSTACK_FALSE = @COMPILE_PSTACK_FALSE@
2425+COMPILE_PSTACK_TRUE = @COMPILE_PSTACK_TRUE@
2426+CONF_COMMAND = @CONF_COMMAND@
2427+CP = @CP@
2428+CPP = @CPP@
2429+CPPFLAGS = @CPPFLAGS@
2430+CXX = @CXX@
2431+CXXCPP = @CXXCPP@
2432+CXXDEPMODE = @CXXDEPMODE@
2433+CXXFLAGS = @CXXFLAGS@
2434+CXXLDFLAGS = @CXXLDFLAGS@
2435+CXX_VERSION = @CXX_VERSION@
2436+CYGPATH_W = @CYGPATH_W@
2437+DARWIN_MWCC_FALSE = @DARWIN_MWCC_FALSE@
2438+DARWIN_MWCC_TRUE = @DARWIN_MWCC_TRUE@
2439+DEFS = @DEFS@
2440+DEPDIR = @DEPDIR@
2441+DOT_FRM_VERSION = @DOT_FRM_VERSION@
2442+DOXYGEN = @DOXYGEN@
2443+DVIS = @DVIS@
2444+ECHO = @ECHO@
2445+ECHO_C = @ECHO_C@
2446+ECHO_N = @ECHO_N@
2447+ECHO_T = @ECHO_T@
2448+EGREP = @EGREP@
2449+EXEEXT = @EXEEXT@
2450+F77 = @F77@
2451+FFLAGS = @FFLAGS@
2452+FIND_PROC = @FIND_PROC@
2453+GETCONF = @GETCONF@
2454+GXX = @GXX@
2455+HAVE_NDBCLUSTER_DB_FALSE = @HAVE_NDBCLUSTER_DB_FALSE@
2456+HAVE_NDBCLUSTER_DB_TRUE = @HAVE_NDBCLUSTER_DB_TRUE@
2457+HAVE_NETWARE_FALSE = @HAVE_NETWARE_FALSE@
2458+HAVE_NETWARE_TRUE = @HAVE_NETWARE_TRUE@
2459+HAVE_YASSL_FALSE = @HAVE_YASSL_FALSE@
2460+HAVE_YASSL_TRUE = @HAVE_YASSL_TRUE@
2461+HOSTNAME = @HOSTNAME@
2462+ICHECK = @ICHECK@
2463+INSTALL_DATA = @INSTALL_DATA@
2464+INSTALL_PROGRAM = @INSTALL_PROGRAM@
2465+INSTALL_SCRIPT = @INSTALL_SCRIPT@
2466+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
2467+KILL = @KILL@
2468+LD = @LD@
2469+LDFLAGS = @LDFLAGS@
2470+LD_VERSION_SCRIPT = @LD_VERSION_SCRIPT@
2471+LIBDL = @LIBDL@
2472+LIBEDIT_LOBJECTS = @LIBEDIT_LOBJECTS@
2473+LIBOBJS = @LIBOBJS@
2474+LIBS = @LIBS@
2475+LIBTOOL = @LIBTOOL@
2476+LIB_EXTRA_CCFLAGS = @LIB_EXTRA_CCFLAGS@
2477+LM_CFLAGS = @LM_CFLAGS@
2478+LN = @LN@
2479+LN_CP_F = @LN_CP_F@
2480+LN_S = @LN_S@
2481+LTLIBOBJS = @LTLIBOBJS@
2482+MACHINE_TYPE = @MACHINE_TYPE@
2483+MAKEINDEX = @MAKEINDEX@
2484+MAKEINFO = @MAKEINFO@
2485+MAKE_BINARY_DISTRIBUTION_OPTIONS = @MAKE_BINARY_DISTRIBUTION_OPTIONS@
2486+MAKE_SHELL = @MAKE_SHELL@
2487+MV = @MV@
2488+MYSQLD_DEFAULT_SWITCHES = @MYSQLD_DEFAULT_SWITCHES@
2489+MYSQLD_EXTRA_LDFLAGS = @MYSQLD_EXTRA_LDFLAGS@
2490+MYSQLD_EXTRA_LIBS = @MYSQLD_EXTRA_LIBS@
2491+MYSQLD_USER = @MYSQLD_USER@
2492+MYSQL_BASE_VERSION = @MYSQL_BASE_VERSION@
2493+MYSQL_NO_DASH_VERSION = @MYSQL_NO_DASH_VERSION@
2494+MYSQL_PREVIOUS_BASE_VERSION = @MYSQL_PREVIOUS_BASE_VERSION@
2495+MYSQL_SERVER_SUFFIX = @MYSQL_SERVER_SUFFIX@
2496+MYSQL_TCP_PORT = @MYSQL_TCP_PORT@
2497+MYSQL_TCP_PORT_DEFAULT = @MYSQL_TCP_PORT_DEFAULT@
2498+MYSQL_UNIX_ADDR = @MYSQL_UNIX_ADDR@
2499+MYSQL_VERSION_ID = @MYSQL_VERSION_ID@
2500+NDB_DEFS = @NDB_DEFS@
2501+NDB_LD_VERSION_SCRIPT = @NDB_LD_VERSION_SCRIPT@
2502+NDB_SCI_INCLUDES = @NDB_SCI_INCLUDES@
2503+NDB_SCI_LIBS = @NDB_SCI_LIBS@
2504+NDB_SHARED_LIB_MAJOR_VERSION = @NDB_SHARED_LIB_MAJOR_VERSION@
2505+NDB_SHARED_LIB_VERSION = @NDB_SHARED_LIB_VERSION@
2506+NDB_SIZEOF_CHAR = @NDB_SIZEOF_CHAR@
2507+NDB_SIZEOF_CHARP = @NDB_SIZEOF_CHARP@
2508+NDB_SIZEOF_INT = @NDB_SIZEOF_INT@
2509+NDB_SIZEOF_LONG = @NDB_SIZEOF_LONG@
2510+NDB_SIZEOF_LONG_LONG = @NDB_SIZEOF_LONG_LONG@
2511+NDB_SIZEOF_SHORT = @NDB_SIZEOF_SHORT@
2512+NDB_VERSION_BUILD = @NDB_VERSION_BUILD@
2513+NDB_VERSION_MAJOR = @NDB_VERSION_MAJOR@
2514+NDB_VERSION_MINOR = @NDB_VERSION_MINOR@
2515+NDB_VERSION_STATUS = @NDB_VERSION_STATUS@
2516+NM = @NM@
2517+NOINST_LDFLAGS = @NOINST_LDFLAGS@
2518+NON_THREADED_LIBS = @NON_THREADED_LIBS@
2519+OBJEXT = @OBJEXT@
2520+PACKAGE = @PACKAGE@
2521+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
2522+PACKAGE_NAME = @PACKAGE_NAME@
2523+PACKAGE_STRING = @PACKAGE_STRING@
2524+PACKAGE_TARNAME = @PACKAGE_TARNAME@
2525+PACKAGE_VERSION = @PACKAGE_VERSION@
2526+PATH_SEPARATOR = @PATH_SEPARATOR@
2527+PDFLATEX = @PDFLATEX@
2528+PDFMANUAL = @PDFMANUAL@
2529+PERL = @PERL@
2530+PERL5 = @PERL5@
2531+PROTOCOL_VERSION = @PROTOCOL_VERSION@
2532+PS = @PS@
2533+RANLIB = @RANLIB@
2534+RM = @RM@
2535+SAVE_ASFLAGS = @SAVE_ASFLAGS@
2536+SAVE_CFLAGS = @SAVE_CFLAGS@
2537+SAVE_CXXFLAGS = @SAVE_CXXFLAGS@
2538+SAVE_CXXLDFLAGS = @SAVE_CXXLDFLAGS@
2539+SAVE_LDFLAGS = @SAVE_LDFLAGS@
2540+SED = @SED@
2541+SET_MAKE = @SET_MAKE@
2542+SHARED_LIB_MAJOR_VERSION = @SHARED_LIB_MAJOR_VERSION@
2543+SHARED_LIB_VERSION = @SHARED_LIB_VERSION@
2544+SHELL = @SHELL@
2545+STATIC_NSS_FLAGS = @STATIC_NSS_FLAGS@
2546+STRIP = @STRIP@
2547+SYSTEM_TYPE = @SYSTEM_TYPE@
2548+TAR = @TAR@
2549+TARGET_LINUX = @TARGET_LINUX@
2550+TERMCAP_LIB = @TERMCAP_LIB@
2551+THREAD_LOBJECTS = @THREAD_LOBJECTS@
2552+VERSION = @VERSION@
2553+WRAPLIBS = @WRAPLIBS@
2554+YACC = @YACC@
2555+ZLIB_DEPS = @ZLIB_DEPS@
2556+ZLIB_INCLUDES = @ZLIB_INCLUDES@
2557+ZLIB_LIBS = @ZLIB_LIBS@
2558+ac_ct_AR = @ac_ct_AR@
2559+ac_ct_CC = @ac_ct_CC@
2560+ac_ct_CXX = @ac_ct_CXX@
2561+ac_ct_F77 = @ac_ct_F77@
2562+ac_ct_GETCONF = @ac_ct_GETCONF@
2563+ac_ct_RANLIB = @ac_ct_RANLIB@
2564+ac_ct_STRIP = @ac_ct_STRIP@
2565+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
2566+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
2567+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
2568+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
2569+am__include = @am__include@
2570+am__leading_dot = @am__leading_dot@
2571+am__quote = @am__quote@
2572+am__tar = @am__tar@
2573+am__untar = @am__untar@
2574+bdb_includes = @bdb_includes@
2575+bdb_libs = @bdb_libs@
2576+bdb_libs_with_path = @bdb_libs_with_path@
2577+bench_dirs = @bench_dirs@
2578+bindir = @bindir@
2579+build = @build@
2580+build_alias = @build_alias@
2581+build_cpu = @build_cpu@
2582+build_os = @build_os@
2583+build_vendor = @build_vendor@
2584+datadir = @datadir@
2585+docs_dirs = @docs_dirs@
2586+exec_prefix = @exec_prefix@
2587+host = @host@
2588+host_alias = @host_alias@
2589+host_cpu = @host_cpu@
2590+host_os = @host_os@
2591+host_vendor = @host_vendor@
2592+includedir = @includedir@
2593+infodir = @infodir@
2594+innodb_includes = @innodb_includes@
2595+innodb_libs = @innodb_libs@
2596+innodb_system_libs = @innodb_system_libs@
2597+install_sh = @install_sh@
2598+libdir = @libdir@
2599+libexecdir = @libexecdir@
2600+libmysqld_dirs = @libmysqld_dirs@
2601+linked_client_targets = @linked_client_targets@
2602+linked_libmysqld_targets = @linked_libmysqld_targets@
2603+linked_netware_sources = @linked_netware_sources@
2604+localstatedir = @localstatedir@
2605+man1_files = @man1_files@
2606+man8_files = @man8_files@
2607+man_dirs = @man_dirs@
2608+mandir = @mandir@
2609+mkdir_p = @mkdir_p@
2610+ndb_bin_am_ldflags = @ndb_bin_am_ldflags@
2611+ndb_cxxflags_fix = @ndb_cxxflags_fix@
2612+ndb_mgmclient_libs = @ndb_mgmclient_libs@
2613+ndb_opt_subdirs = @ndb_opt_subdirs@
2614+ndb_port = @ndb_port@
2615+ndb_transporter_opt_objs = @ndb_transporter_opt_objs@
2616+ndbcluster_includes = @ndbcluster_includes@
2617+ndbcluster_libs = @ndbcluster_libs@
2618+ndbcluster_system_libs = @ndbcluster_system_libs@
2619+netware_dir = @netware_dir@
2620+oldincludedir = @oldincludedir@
2621+openssl_includes = @openssl_includes@
2622+openssl_libs = @openssl_libs@
2623+prefix = @prefix@
2624+program_transform_name = @program_transform_name@
2625+pstack_dirs = @pstack_dirs@
2626+pstack_libs = @pstack_libs@
2627+readline_basedir = @readline_basedir@
2628+readline_dir = @readline_dir@
2629+readline_h_ln_cmd = @readline_h_ln_cmd@
2630+readline_link = @readline_link@
2631+readline_topdir = @readline_topdir@
2632+sbindir = @sbindir@
2633+server_scripts = @server_scripts@
2634+sharedstatedir = @sharedstatedir@
2635+sql_client_dirs = @sql_client_dirs@
2636+sql_server_dirs = @sql_server_dirs@
2637+sql_union_dirs = @sql_union_dirs@
2638+subdirs = @subdirs@
2639+sysconfdir = @sysconfdir@
2640+target = @target@
2641+target_alias = @target_alias@
2642+target_cpu = @target_cpu@
2643+target_os = @target_os@
2644+target_vendor = @target_vendor@
2645+thread_dirs = @thread_dirs@
2646+tools_dirs = @tools_dirs@
2647+uname_prog = @uname_prog@
2648+yassl_dir = @yassl_dir@
2649+yassl_h_ln_cmd = @yassl_h_ln_cmd@
2650+yassl_libs = @yassl_libs@
2651+yassl_taocrypt_extra_cxxflags = @yassl_taocrypt_extra_cxxflags@
2652+zlib_dir = @zlib_dir@
2653+EXTRA_DIST = FINISH.sh \
2654+ SETUP.sh \
2655+ autorun.sh \
2656+ check-cpu \
2657+ cleanup \
2658+ compile-alpha \
2659+ compile-alpha-ccc \
2660+ compile-alpha-cxx \
2661+ compile-alpha-debug \
2662+ compile-amd64-debug-max \
2663+ compile-amd64-max \
2664+ compile-amd64-max-sci \
2665+ compile-darwin-mwcc \
2666+ compile-dist \
2667+ compile-hpux11-parisc2-aCC \
2668+ compile-ia64-debug-max \
2669+ compile-irix-mips64-mipspro \
2670+ compile-pentium \
2671+ compile-pentium-debug \
2672+ compile-pentium-debug-max \
2673+ compile-pentium-debug-max-no-embedded \
2674+ compile-pentium-debug-max-no-ndb \
2675+ compile-pentium-debug-no-bdb \
2676+ compile-pentium-debug-openssl \
2677+ compile-pentium-debug-yassl \
2678+ compile-pentium-gcov \
2679+ compile-pentium-gprof \
2680+ compile-pentium-icc \
2681+ compile-pentium-icc-valgrind-max \
2682+ compile-pentium-icc-yassl \
2683+ compile-pentium-max \
2684+ compile-pentium-myodbc \
2685+ compile-pentium-mysqlfs-debug \
2686+ compile-pentium-pgcc \
2687+ compile-pentium-valgrind-max \
2688+ compile-pentium64-debug \
2689+ compile-pentium64-debug-max \
2690+ compile-pentium64-max-sci \
2691+ compile-pentium64-valgrind-max \
2692+ compile-ppc \
2693+ compile-ppc-debug \
2694+ compile-ppc-debug-max \
2695+ compile-ppc-debug-max-no-ndb \
2696+ compile-ppc-max \
2697+ compile-solaris-sparc \
2698+ compile-solaris-sparc-debug \
2699+ compile-solaris-sparc-forte \
2700+ compile-solaris-sparc-purify
2701+
2702+all: all-am
2703+
2704+.SUFFIXES:
2705+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
2706+ @for dep in $?; do \
2707+ case '$(am__configure_deps)' in \
2708+ *$$dep*) \
2709+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
2710+ && exit 0; \
2711+ exit 1;; \
2712+ esac; \
2713+ done; \
2714+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu BUILD/Makefile'; \
2715+ cd $(top_srcdir) && \
2716+ $(AUTOMAKE) --gnu BUILD/Makefile
2717+.PRECIOUS: Makefile
2718+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
2719+ @case '$?' in \
2720+ *config.status*) \
2721+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
2722+ *) \
2723+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
2724+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
2725+ esac;
2726+
2727+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
2728+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
2729+
2730+$(top_srcdir)/configure: $(am__configure_deps)
2731+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
2732+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
2733+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
2734+
2735+mostlyclean-libtool:
2736+ -rm -f *.lo
2737+
2738+clean-libtool:
2739+ -rm -rf .libs _libs
2740+
2741+distclean-libtool:
2742+ -rm -f libtool
2743+uninstall-info-am:
2744+tags: TAGS
2745+TAGS:
2746+
2747+ctags: CTAGS
2748+CTAGS:
2749+
2750+
2751+distdir: $(DISTFILES)
2752+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
2753+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
2754+ list='$(DISTFILES)'; for file in $$list; do \
2755+ case $$file in \
2756+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
2757+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
2758+ esac; \
2759+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
2760+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
2761+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
2762+ dir="/$$dir"; \
2763+ $(mkdir_p) "$(distdir)$$dir"; \
2764+ else \
2765+ dir=''; \
2766+ fi; \
2767+ if test -d $$d/$$file; then \
2768+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
2769+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
2770+ fi; \
2771+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
2772+ else \
2773+ test -f $(distdir)/$$file \
2774+ || cp -p $$d/$$file $(distdir)/$$file \
2775+ || exit 1; \
2776+ fi; \
2777+ done
2778+check-am: all-am
2779+check: check-am
2780+all-am: Makefile
2781+installdirs:
2782+install: install-am
2783+install-exec: install-exec-am
2784+install-data: install-data-am
2785+uninstall: uninstall-am
2786+
2787+install-am: all-am
2788+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
2789+
2790+installcheck: installcheck-am
2791+install-strip:
2792+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
2793+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
2794+ `test -z '$(STRIP)' || \
2795+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
2796+mostlyclean-generic:
2797+
2798+clean-generic:
2799+
2800+distclean-generic:
2801+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
2802+
2803+maintainer-clean-generic:
2804+ @echo "This command is intended for maintainers to use"
2805+ @echo "it deletes files that may require special tools to rebuild."
2806+clean: clean-am
2807+
2808+clean-am: clean-generic clean-libtool mostlyclean-am
2809+
2810+distclean: distclean-am
2811+ -rm -f Makefile
2812+distclean-am: clean-am distclean-generic distclean-libtool
2813+
2814+dvi: dvi-am
2815+
2816+dvi-am:
2817+
2818+html: html-am
2819+
2820+info: info-am
2821+
2822+info-am:
2823+
2824+install-data-am:
2825+
2826+install-exec-am:
2827+
2828+install-info: install-info-am
2829+
2830+install-man:
2831+
2832+installcheck-am:
2833+
2834+maintainer-clean: maintainer-clean-am
2835+ -rm -f Makefile
2836+maintainer-clean-am: distclean-am maintainer-clean-generic
2837+
2838+mostlyclean: mostlyclean-am
2839+
2840+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
2841+
2842+pdf: pdf-am
2843+
2844+pdf-am:
2845+
2846+ps: ps-am
2847+
2848+ps-am:
2849+
2850+uninstall-am: uninstall-info-am
2851+
2852+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
2853+ distclean distclean-generic distclean-libtool distdir dvi \
2854+ dvi-am html html-am info info-am install install-am \
2855+ install-data install-data-am install-exec install-exec-am \
2856+ install-info install-info-am install-man install-strip \
2857+ installcheck installcheck-am installdirs maintainer-clean \
2858+ maintainer-clean-generic mostlyclean mostlyclean-generic \
2859+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
2860+ uninstall-info-am
2861+
2862+
2863+# Don't update the files from bitkeeper
2864+%::SCCS/s.%
2865+# Tell versions [3.59,3.63) of GNU make to not export all variables.
2866+# Otherwise a system limit (for SysV at least) may be exceeded.
2867+.NOEXPORT:
2868
2869=== added directory 'mysql-source/Docs'
2870=== added file 'mysql-source/Docs/Makefile.am'
2871--- mysql-source/Docs/Makefile.am 1970-01-01 00:00:00 +0000
2872+++ mysql-source/Docs/Makefile.am 2010-01-14 13:03:27 +0000
2873@@ -0,0 +1,62 @@
2874+# Copyright (C) 2000-2006 MySQL AB
2875+#
2876+# This program is free software; you can redistribute it and/or modify
2877+# it under the terms of the GNU General Public License as published by
2878+# the Free Software Foundation; version 2 of the License.
2879+#
2880+# This program is distributed in the hope that it will be useful,
2881+# but WITHOUT ANY WARRANTY; without even the implied warranty of
2882+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2883+# GNU General Public License for more details.
2884+#
2885+# You should have received a copy of the GNU General Public License
2886+# along with this program; if not, write to the Free Software
2887+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
2888+
2889+noinst_SCRIPTS = Support/generate-text-files.pl
2890+
2891+EXTRA_DIST = $(noinst_SCRIPTS) manual.chm mysql.info INSTALL-BINARY
2892+
2893+TXT_FILES= ../INSTALL-SOURCE ../INSTALL-WIN-SOURCE \
2894+ INSTALL-BINARY ../support-files/MacOSX/ReadMe.txt
2895+
2896+all-local: $(TXT_FILES)
2897+
2898+# make sure that "make install" installs the info page, too
2899+# automake only seems to take care of this automatically,
2900+# if we're building the info page from texi directly.
2901+install-data-hook: $(srcdir)/mysql.info
2902+ $(mkinstalldirs) $(DESTDIR)$(infodir)
2903+ $(INSTALL_DATA) $(srcdir)/mysql.info $(DESTDIR)$(infodir)
2904+
2905+uninstall-local:
2906+ @RM@ -f $(DESTDIR)$(infodir)/mysql.info
2907+
2908+# Problems with "make distclean", works differently for make files
2909+# generated by different versions of the automake. Some require the
2910+# generated files explicitly in DISTCLEANFILES.
2911+DISTCLEANFILES = $(TXT_FILES)
2912+
2913+# This target is not used in builds, just for convinience
2914+CLEAN_FILES: $(TXT_FILES)
2915+ touch $(TXT_FILES)
2916+
2917+GT = $(srcdir)/Support/generate-text-files.pl
2918+
2919+../INSTALL-SOURCE: $(srcdir)/mysql.info $(GT)
2920+ perl -w $(GT) $(srcdir)/mysql.info "installing-source" "windows-source-build" > $@
2921+
2922+../INSTALL-WIN-SOURCE: $(srcdir)/mysql.info $(GT)
2923+ perl -w $(GT) $(srcdir)/mysql.info "windows-source-build" "post-installation" > $@
2924+
2925+# We put the description for the binary installation here so that
2926+# people who download source wont have to see it. It is moved up to
2927+# the toplevel by the script that makes the binary tar files.
2928+INSTALL-BINARY: $(srcdir)/mysql.info $(GT)
2929+ perl -w $(GT) $(srcdir)/mysql.info "installing-binary" "installing-source" > $@
2930+
2931+../support-files/MacOSX/ReadMe.txt: $(srcdir)/mysql.info $(GT)
2932+ perl -w $(GT) $(srcdir)/mysql.info "mac-os-x-installation" "netware-installation" > $@
2933+
2934+# Don't update the files from bitkeeper
2935+%::SCCS/s.%
2936
2937=== added file 'mysql-source/Docs/Makefile.in'
2938--- mysql-source/Docs/Makefile.in 1970-01-01 00:00:00 +0000
2939+++ mysql-source/Docs/Makefile.in 2010-01-14 13:03:27 +0000
2940@@ -0,0 +1,560 @@
2941+# Makefile.in generated by automake 1.9.6 from Makefile.am.
2942+# @configure_input@
2943+
2944+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
2945+# 2003, 2004, 2005 Free Software Foundation, Inc.
2946+# This Makefile.in is free software; the Free Software Foundation
2947+# gives unlimited permission to copy and/or distribute it,
2948+# with or without modifications, as long as this notice is preserved.
2949+
2950+# This program is distributed in the hope that it will be useful,
2951+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
2952+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
2953+# PARTICULAR PURPOSE.
2954+
2955+@SET_MAKE@
2956+
2957+# Copyright (C) 2000-2006 MySQL AB
2958+#
2959+# This program is free software; you can redistribute it and/or modify
2960+# it under the terms of the GNU General Public License as published by
2961+# the Free Software Foundation; version 2 of the License.
2962+#
2963+# This program is distributed in the hope that it will be useful,
2964+# but WITHOUT ANY WARRANTY; without even the implied warranty of
2965+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2966+# GNU General Public License for more details.
2967+#
2968+# You should have received a copy of the GNU General Public License
2969+# along with this program; if not, write to the Free Software
2970+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
2971+
2972+srcdir = @srcdir@
2973+top_srcdir = @top_srcdir@
2974+VPATH = @srcdir@
2975+pkgdatadir = $(datadir)/@PACKAGE@
2976+pkglibdir = $(libdir)/@PACKAGE@
2977+pkgincludedir = $(includedir)/@PACKAGE@
2978+top_builddir = ..
2979+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
2980+INSTALL = @INSTALL@
2981+install_sh_DATA = $(install_sh) -c -m 644
2982+install_sh_PROGRAM = $(install_sh) -c
2983+install_sh_SCRIPT = $(install_sh) -c
2984+INSTALL_HEADER = $(INSTALL_DATA)
2985+transform = $(program_transform_name)
2986+NORMAL_INSTALL = :
2987+PRE_INSTALL = :
2988+POST_INSTALL = :
2989+NORMAL_UNINSTALL = :
2990+PRE_UNINSTALL = :
2991+POST_UNINSTALL = :
2992+build_triplet = @build@
2993+host_triplet = @host@
2994+target_triplet = @target@
2995+subdir = Docs
2996+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
2997+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
2998+am__aclocal_m4_deps = $(top_srcdir)/config/ac-macros/alloca.m4 \
2999+ $(top_srcdir)/config/ac-macros/check_cpu.m4 \
3000+ $(top_srcdir)/config/ac-macros/character_sets.m4 \
3001+ $(top_srcdir)/config/ac-macros/compiler_flag.m4 \
3002+ $(top_srcdir)/config/ac-macros/ha_archive.m4 \
3003+ $(top_srcdir)/config/ac-macros/ha_berkeley.m4 \
3004+ $(top_srcdir)/config/ac-macros/ha_blackhole.m4 \
3005+ $(top_srcdir)/config/ac-macros/ha_example.m4 \
3006+ $(top_srcdir)/config/ac-macros/ha_federated.m4 \
3007+ $(top_srcdir)/config/ac-macros/ha_innodb.m4 \
3008+ $(top_srcdir)/config/ac-macros/ha_ndbcluster.m4 \
3009+ $(top_srcdir)/config/ac-macros/ha_tina.m4 \
3010+ $(top_srcdir)/config/ac-macros/large_file.m4 \
3011+ $(top_srcdir)/config/ac-macros/misc.m4 \
3012+ $(top_srcdir)/config/ac-macros/openssl.m4 \
3013+ $(top_srcdir)/config/ac-macros/readline.m4 \
3014+ $(top_srcdir)/config/ac-macros/yassl.m4 \
3015+ $(top_srcdir)/config/ac-macros/zlib.m4 \
3016+ $(top_srcdir)/configure.in
3017+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
3018+ $(ACLOCAL_M4)
3019+mkinstalldirs = $(install_sh) -d
3020+CONFIG_HEADER = $(top_builddir)/config.h
3021+CONFIG_CLEAN_FILES =
3022+SCRIPTS = $(noinst_SCRIPTS)
3023+SOURCES =
3024+DIST_SOURCES =
3025+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
3026+ACLOCAL = @ACLOCAL@
3027+ALLOCA = @ALLOCA@
3028+AMDEP_FALSE = @AMDEP_FALSE@
3029+AMDEP_TRUE = @AMDEP_TRUE@
3030+AMTAR = @AMTAR@
3031+AR = @AR@
3032+ARFLAGS = @ARFLAGS@
3033+AS = @AS@
3034+ASSEMBLER_FALSE = @ASSEMBLER_FALSE@
3035+ASSEMBLER_TRUE = @ASSEMBLER_TRUE@
3036+ASSEMBLER_sparc32_FALSE = @ASSEMBLER_sparc32_FALSE@
3037+ASSEMBLER_sparc32_TRUE = @ASSEMBLER_sparc32_TRUE@
3038+ASSEMBLER_sparc64_FALSE = @ASSEMBLER_sparc64_FALSE@
3039+ASSEMBLER_sparc64_TRUE = @ASSEMBLER_sparc64_TRUE@
3040+ASSEMBLER_x86_FALSE = @ASSEMBLER_x86_FALSE@
3041+ASSEMBLER_x86_TRUE = @ASSEMBLER_x86_TRUE@
3042+AUTOCONF = @AUTOCONF@
3043+AUTOHEADER = @AUTOHEADER@
3044+AUTOMAKE = @AUTOMAKE@
3045+AVAILABLE_LANGUAGES = @AVAILABLE_LANGUAGES@
3046+AWK = @AWK@
3047+CC = @CC@
3048+CCAS = @CCAS@
3049+CCASFLAGS = @CCASFLAGS@
3050+CCDEPMODE = @CCDEPMODE@
3051+CC_VERSION = @CC_VERSION@
3052+CFLAGS = @CFLAGS@
3053+CHECK_PID = @CHECK_PID@
3054+CHMOD = @CHMOD@
3055+CLIENT_EXTRA_LDFLAGS = @CLIENT_EXTRA_LDFLAGS@
3056+CLIENT_LIBS = @CLIENT_LIBS@
3057+CMP = @CMP@
3058+COMPILATION_COMMENT = @COMPILATION_COMMENT@
3059+COMPILE_PSTACK_FALSE = @COMPILE_PSTACK_FALSE@
3060+COMPILE_PSTACK_TRUE = @COMPILE_PSTACK_TRUE@
3061+CONF_COMMAND = @CONF_COMMAND@
3062+CP = @CP@
3063+CPP = @CPP@
3064+CPPFLAGS = @CPPFLAGS@
3065+CXX = @CXX@
3066+CXXCPP = @CXXCPP@
3067+CXXDEPMODE = @CXXDEPMODE@
3068+CXXFLAGS = @CXXFLAGS@
3069+CXXLDFLAGS = @CXXLDFLAGS@
3070+CXX_VERSION = @CXX_VERSION@
3071+CYGPATH_W = @CYGPATH_W@
3072+DARWIN_MWCC_FALSE = @DARWIN_MWCC_FALSE@
3073+DARWIN_MWCC_TRUE = @DARWIN_MWCC_TRUE@
3074+DEFS = @DEFS@
3075+DEPDIR = @DEPDIR@
3076+DOT_FRM_VERSION = @DOT_FRM_VERSION@
3077+DOXYGEN = @DOXYGEN@
3078+DVIS = @DVIS@
3079+ECHO = @ECHO@
3080+ECHO_C = @ECHO_C@
3081+ECHO_N = @ECHO_N@
3082+ECHO_T = @ECHO_T@
3083+EGREP = @EGREP@
3084+EXEEXT = @EXEEXT@
3085+F77 = @F77@
3086+FFLAGS = @FFLAGS@
3087+FIND_PROC = @FIND_PROC@
3088+GETCONF = @GETCONF@
3089+GXX = @GXX@
3090+HAVE_NDBCLUSTER_DB_FALSE = @HAVE_NDBCLUSTER_DB_FALSE@
3091+HAVE_NDBCLUSTER_DB_TRUE = @HAVE_NDBCLUSTER_DB_TRUE@
3092+HAVE_NETWARE_FALSE = @HAVE_NETWARE_FALSE@
3093+HAVE_NETWARE_TRUE = @HAVE_NETWARE_TRUE@
3094+HAVE_YASSL_FALSE = @HAVE_YASSL_FALSE@
3095+HAVE_YASSL_TRUE = @HAVE_YASSL_TRUE@
3096+HOSTNAME = @HOSTNAME@
3097+ICHECK = @ICHECK@
3098+INSTALL_DATA = @INSTALL_DATA@
3099+INSTALL_PROGRAM = @INSTALL_PROGRAM@
3100+INSTALL_SCRIPT = @INSTALL_SCRIPT@
3101+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
3102+KILL = @KILL@
3103+LD = @LD@
3104+LDFLAGS = @LDFLAGS@
3105+LD_VERSION_SCRIPT = @LD_VERSION_SCRIPT@
3106+LIBDL = @LIBDL@
3107+LIBEDIT_LOBJECTS = @LIBEDIT_LOBJECTS@
3108+LIBOBJS = @LIBOBJS@
3109+LIBS = @LIBS@
3110+LIBTOOL = @LIBTOOL@
3111+LIB_EXTRA_CCFLAGS = @LIB_EXTRA_CCFLAGS@
3112+LM_CFLAGS = @LM_CFLAGS@
3113+LN = @LN@
3114+LN_CP_F = @LN_CP_F@
3115+LN_S = @LN_S@
3116+LTLIBOBJS = @LTLIBOBJS@
3117+MACHINE_TYPE = @MACHINE_TYPE@
3118+MAKEINDEX = @MAKEINDEX@
3119+MAKEINFO = @MAKEINFO@
3120+MAKE_BINARY_DISTRIBUTION_OPTIONS = @MAKE_BINARY_DISTRIBUTION_OPTIONS@
3121+MAKE_SHELL = @MAKE_SHELL@
3122+MV = @MV@
3123+MYSQLD_DEFAULT_SWITCHES = @MYSQLD_DEFAULT_SWITCHES@
3124+MYSQLD_EXTRA_LDFLAGS = @MYSQLD_EXTRA_LDFLAGS@
3125+MYSQLD_EXTRA_LIBS = @MYSQLD_EXTRA_LIBS@
3126+MYSQLD_USER = @MYSQLD_USER@
3127+MYSQL_BASE_VERSION = @MYSQL_BASE_VERSION@
3128+MYSQL_NO_DASH_VERSION = @MYSQL_NO_DASH_VERSION@
3129+MYSQL_PREVIOUS_BASE_VERSION = @MYSQL_PREVIOUS_BASE_VERSION@
3130+MYSQL_SERVER_SUFFIX = @MYSQL_SERVER_SUFFIX@
3131+MYSQL_TCP_PORT = @MYSQL_TCP_PORT@
3132+MYSQL_TCP_PORT_DEFAULT = @MYSQL_TCP_PORT_DEFAULT@
3133+MYSQL_UNIX_ADDR = @MYSQL_UNIX_ADDR@
3134+MYSQL_VERSION_ID = @MYSQL_VERSION_ID@
3135+NDB_DEFS = @NDB_DEFS@
3136+NDB_LD_VERSION_SCRIPT = @NDB_LD_VERSION_SCRIPT@
3137+NDB_SCI_INCLUDES = @NDB_SCI_INCLUDES@
3138+NDB_SCI_LIBS = @NDB_SCI_LIBS@
3139+NDB_SHARED_LIB_MAJOR_VERSION = @NDB_SHARED_LIB_MAJOR_VERSION@
3140+NDB_SHARED_LIB_VERSION = @NDB_SHARED_LIB_VERSION@
3141+NDB_SIZEOF_CHAR = @NDB_SIZEOF_CHAR@
3142+NDB_SIZEOF_CHARP = @NDB_SIZEOF_CHARP@
3143+NDB_SIZEOF_INT = @NDB_SIZEOF_INT@
3144+NDB_SIZEOF_LONG = @NDB_SIZEOF_LONG@
3145+NDB_SIZEOF_LONG_LONG = @NDB_SIZEOF_LONG_LONG@
3146+NDB_SIZEOF_SHORT = @NDB_SIZEOF_SHORT@
3147+NDB_VERSION_BUILD = @NDB_VERSION_BUILD@
3148+NDB_VERSION_MAJOR = @NDB_VERSION_MAJOR@
3149+NDB_VERSION_MINOR = @NDB_VERSION_MINOR@
3150+NDB_VERSION_STATUS = @NDB_VERSION_STATUS@
3151+NM = @NM@
3152+NOINST_LDFLAGS = @NOINST_LDFLAGS@
3153+NON_THREADED_LIBS = @NON_THREADED_LIBS@
3154+OBJEXT = @OBJEXT@
3155+PACKAGE = @PACKAGE@
3156+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
3157+PACKAGE_NAME = @PACKAGE_NAME@
3158+PACKAGE_STRING = @PACKAGE_STRING@
3159+PACKAGE_TARNAME = @PACKAGE_TARNAME@
3160+PACKAGE_VERSION = @PACKAGE_VERSION@
3161+PATH_SEPARATOR = @PATH_SEPARATOR@
3162+PDFLATEX = @PDFLATEX@
3163+PDFMANUAL = @PDFMANUAL@
3164+PERL = @PERL@
3165+PERL5 = @PERL5@
3166+PROTOCOL_VERSION = @PROTOCOL_VERSION@
3167+PS = @PS@
3168+RANLIB = @RANLIB@
3169+RM = @RM@
3170+SAVE_ASFLAGS = @SAVE_ASFLAGS@
3171+SAVE_CFLAGS = @SAVE_CFLAGS@
3172+SAVE_CXXFLAGS = @SAVE_CXXFLAGS@
3173+SAVE_CXXLDFLAGS = @SAVE_CXXLDFLAGS@
3174+SAVE_LDFLAGS = @SAVE_LDFLAGS@
3175+SED = @SED@
3176+SET_MAKE = @SET_MAKE@
3177+SHARED_LIB_MAJOR_VERSION = @SHARED_LIB_MAJOR_VERSION@
3178+SHARED_LIB_VERSION = @SHARED_LIB_VERSION@
3179+SHELL = @SHELL@
3180+STATIC_NSS_FLAGS = @STATIC_NSS_FLAGS@
3181+STRIP = @STRIP@
3182+SYSTEM_TYPE = @SYSTEM_TYPE@
3183+TAR = @TAR@
3184+TARGET_LINUX = @TARGET_LINUX@
3185+TERMCAP_LIB = @TERMCAP_LIB@
3186+THREAD_LOBJECTS = @THREAD_LOBJECTS@
3187+VERSION = @VERSION@
3188+WRAPLIBS = @WRAPLIBS@
3189+YACC = @YACC@
3190+ZLIB_DEPS = @ZLIB_DEPS@
3191+ZLIB_INCLUDES = @ZLIB_INCLUDES@
3192+ZLIB_LIBS = @ZLIB_LIBS@
3193+ac_ct_AR = @ac_ct_AR@
3194+ac_ct_CC = @ac_ct_CC@
3195+ac_ct_CXX = @ac_ct_CXX@
3196+ac_ct_F77 = @ac_ct_F77@
3197+ac_ct_GETCONF = @ac_ct_GETCONF@
3198+ac_ct_RANLIB = @ac_ct_RANLIB@
3199+ac_ct_STRIP = @ac_ct_STRIP@
3200+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
3201+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
3202+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
3203+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
3204+am__include = @am__include@
3205+am__leading_dot = @am__leading_dot@
3206+am__quote = @am__quote@
3207+am__tar = @am__tar@
3208+am__untar = @am__untar@
3209+bdb_includes = @bdb_includes@
3210+bdb_libs = @bdb_libs@
3211+bdb_libs_with_path = @bdb_libs_with_path@
3212+bench_dirs = @bench_dirs@
3213+bindir = @bindir@
3214+build = @build@
3215+build_alias = @build_alias@
3216+build_cpu = @build_cpu@
3217+build_os = @build_os@
3218+build_vendor = @build_vendor@
3219+datadir = @datadir@
3220+docs_dirs = @docs_dirs@
3221+exec_prefix = @exec_prefix@
3222+host = @host@
3223+host_alias = @host_alias@
3224+host_cpu = @host_cpu@
3225+host_os = @host_os@
3226+host_vendor = @host_vendor@
3227+includedir = @includedir@
3228+infodir = @infodir@
3229+innodb_includes = @innodb_includes@
3230+innodb_libs = @innodb_libs@
3231+innodb_system_libs = @innodb_system_libs@
3232+install_sh = @install_sh@
3233+libdir = @libdir@
3234+libexecdir = @libexecdir@
3235+libmysqld_dirs = @libmysqld_dirs@
3236+linked_client_targets = @linked_client_targets@
3237+linked_libmysqld_targets = @linked_libmysqld_targets@
3238+linked_netware_sources = @linked_netware_sources@
3239+localstatedir = @localstatedir@
3240+man1_files = @man1_files@
3241+man8_files = @man8_files@
3242+man_dirs = @man_dirs@
3243+mandir = @mandir@
3244+mkdir_p = @mkdir_p@
3245+ndb_bin_am_ldflags = @ndb_bin_am_ldflags@
3246+ndb_cxxflags_fix = @ndb_cxxflags_fix@
3247+ndb_mgmclient_libs = @ndb_mgmclient_libs@
3248+ndb_opt_subdirs = @ndb_opt_subdirs@
3249+ndb_port = @ndb_port@
3250+ndb_transporter_opt_objs = @ndb_transporter_opt_objs@
3251+ndbcluster_includes = @ndbcluster_includes@
3252+ndbcluster_libs = @ndbcluster_libs@
3253+ndbcluster_system_libs = @ndbcluster_system_libs@
3254+netware_dir = @netware_dir@
3255+oldincludedir = @oldincludedir@
3256+openssl_includes = @openssl_includes@
3257+openssl_libs = @openssl_libs@
3258+prefix = @prefix@
3259+program_transform_name = @program_transform_name@
3260+pstack_dirs = @pstack_dirs@
3261+pstack_libs = @pstack_libs@
3262+readline_basedir = @readline_basedir@
3263+readline_dir = @readline_dir@
3264+readline_h_ln_cmd = @readline_h_ln_cmd@
3265+readline_link = @readline_link@
3266+readline_topdir = @readline_topdir@
3267+sbindir = @sbindir@
3268+server_scripts = @server_scripts@
3269+sharedstatedir = @sharedstatedir@
3270+sql_client_dirs = @sql_client_dirs@
3271+sql_server_dirs = @sql_server_dirs@
3272+sql_union_dirs = @sql_union_dirs@
3273+subdirs = @subdirs@
3274+sysconfdir = @sysconfdir@
3275+target = @target@
3276+target_alias = @target_alias@
3277+target_cpu = @target_cpu@
3278+target_os = @target_os@
3279+target_vendor = @target_vendor@
3280+thread_dirs = @thread_dirs@
3281+tools_dirs = @tools_dirs@
3282+uname_prog = @uname_prog@
3283+yassl_dir = @yassl_dir@
3284+yassl_h_ln_cmd = @yassl_h_ln_cmd@
3285+yassl_libs = @yassl_libs@
3286+yassl_taocrypt_extra_cxxflags = @yassl_taocrypt_extra_cxxflags@
3287+zlib_dir = @zlib_dir@
3288+noinst_SCRIPTS = Support/generate-text-files.pl
3289+EXTRA_DIST = $(noinst_SCRIPTS) manual.chm mysql.info INSTALL-BINARY
3290+TXT_FILES = ../INSTALL-SOURCE ../INSTALL-WIN-SOURCE \
3291+ INSTALL-BINARY ../support-files/MacOSX/ReadMe.txt
3292+
3293+
3294+# Problems with "make distclean", works differently for make files
3295+# generated by different versions of the automake. Some require the
3296+# generated files explicitly in DISTCLEANFILES.
3297+DISTCLEANFILES = $(TXT_FILES)
3298+GT = $(srcdir)/Support/generate-text-files.pl
3299+all: all-am
3300+
3301+.SUFFIXES:
3302+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
3303+ @for dep in $?; do \
3304+ case '$(am__configure_deps)' in \
3305+ *$$dep*) \
3306+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
3307+ && exit 0; \
3308+ exit 1;; \
3309+ esac; \
3310+ done; \
3311+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Docs/Makefile'; \
3312+ cd $(top_srcdir) && \
3313+ $(AUTOMAKE) --gnu Docs/Makefile
3314+.PRECIOUS: Makefile
3315+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
3316+ @case '$?' in \
3317+ *config.status*) \
3318+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
3319+ *) \
3320+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
3321+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
3322+ esac;
3323+
3324+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
3325+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
3326+
3327+$(top_srcdir)/configure: $(am__configure_deps)
3328+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
3329+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
3330+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
3331+
3332+mostlyclean-libtool:
3333+ -rm -f *.lo
3334+
3335+clean-libtool:
3336+ -rm -rf .libs _libs
3337+
3338+distclean-libtool:
3339+ -rm -f libtool
3340+uninstall-info-am:
3341+tags: TAGS
3342+TAGS:
3343+
3344+ctags: CTAGS
3345+CTAGS:
3346+
3347+
3348+distdir: $(DISTFILES)
3349+ $(mkdir_p) $(distdir)/Support
3350+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
3351+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
3352+ list='$(DISTFILES)'; for file in $$list; do \
3353+ case $$file in \
3354+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
3355+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
3356+ esac; \
3357+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
3358+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
3359+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
3360+ dir="/$$dir"; \
3361+ $(mkdir_p) "$(distdir)$$dir"; \
3362+ else \
3363+ dir=''; \
3364+ fi; \
3365+ if test -d $$d/$$file; then \
3366+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
3367+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
3368+ fi; \
3369+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
3370+ else \
3371+ test -f $(distdir)/$$file \
3372+ || cp -p $$d/$$file $(distdir)/$$file \
3373+ || exit 1; \
3374+ fi; \
3375+ done
3376+check-am: all-am
3377+check: check-am
3378+all-am: Makefile $(SCRIPTS) all-local
3379+installdirs:
3380+install: install-am
3381+install-exec: install-exec-am
3382+install-data: install-data-am
3383+uninstall: uninstall-am
3384+
3385+install-am: all-am
3386+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
3387+
3388+installcheck: installcheck-am
3389+install-strip:
3390+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
3391+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
3392+ `test -z '$(STRIP)' || \
3393+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
3394+mostlyclean-generic:
3395+
3396+clean-generic:
3397+
3398+distclean-generic:
3399+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
3400+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
3401+
3402+maintainer-clean-generic:
3403+ @echo "This command is intended for maintainers to use"
3404+ @echo "it deletes files that may require special tools to rebuild."
3405+clean: clean-am
3406+
3407+clean-am: clean-generic clean-libtool mostlyclean-am
3408+
3409+distclean: distclean-am
3410+ -rm -f Makefile
3411+distclean-am: clean-am distclean-generic distclean-libtool
3412+
3413+dvi: dvi-am
3414+
3415+dvi-am:
3416+
3417+html: html-am
3418+
3419+info: info-am
3420+
3421+info-am:
3422+
3423+install-data-am:
3424+ @$(NORMAL_INSTALL)
3425+ $(MAKE) $(AM_MAKEFLAGS) install-data-hook
3426+
3427+install-exec-am:
3428+
3429+install-info: install-info-am
3430+
3431+install-man:
3432+
3433+installcheck-am:
3434+
3435+maintainer-clean: maintainer-clean-am
3436+ -rm -f Makefile
3437+maintainer-clean-am: distclean-am maintainer-clean-generic
3438+
3439+mostlyclean: mostlyclean-am
3440+
3441+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
3442+
3443+pdf: pdf-am
3444+
3445+pdf-am:
3446+
3447+ps: ps-am
3448+
3449+ps-am:
3450+
3451+uninstall-am: uninstall-info-am uninstall-local
3452+
3453+.PHONY: all all-am all-local check check-am clean clean-generic \
3454+ clean-libtool distclean distclean-generic distclean-libtool \
3455+ distdir dvi dvi-am html html-am info info-am install \
3456+ install-am install-data install-data-am install-data-hook \
3457+ install-exec install-exec-am install-info install-info-am \
3458+ install-man install-strip installcheck installcheck-am \
3459+ installdirs maintainer-clean maintainer-clean-generic \
3460+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
3461+ ps ps-am uninstall uninstall-am uninstall-info-am \
3462+ uninstall-local
3463+
3464+
3465+all-local: $(TXT_FILES)
3466+
3467+# make sure that "make install" installs the info page, too
3468+# automake only seems to take care of this automatically,
3469+# if we're building the info page from texi directly.
3470+install-data-hook: $(srcdir)/mysql.info
3471+ $(mkinstalldirs) $(DESTDIR)$(infodir)
3472+ $(INSTALL_DATA) $(srcdir)/mysql.info $(DESTDIR)$(infodir)
3473+
3474+uninstall-local:
3475+ @RM@ -f $(DESTDIR)$(infodir)/mysql.info
3476+
3477+# This target is not used in builds, just for convinience
3478+CLEAN_FILES: $(TXT_FILES)
3479+ touch $(TXT_FILES)
3480+
3481+../INSTALL-SOURCE: $(srcdir)/mysql.info $(GT)
3482+ perl -w $(GT) $(srcdir)/mysql.info "installing-source" "windows-source-build" > $@
3483+
3484+../INSTALL-WIN-SOURCE: $(srcdir)/mysql.info $(GT)
3485+ perl -w $(GT) $(srcdir)/mysql.info "windows-source-build" "post-installation" > $@
3486+
3487+# We put the description for the binary installation here so that
3488+# people who download source wont have to see it. It is moved up to
3489+# the toplevel by the script that makes the binary tar files.
3490+INSTALL-BINARY: $(srcdir)/mysql.info $(GT)
3491+ perl -w $(GT) $(srcdir)/mysql.info "installing-binary" "installing-source" > $@
3492+
3493+../support-files/MacOSX/ReadMe.txt: $(srcdir)/mysql.info $(GT)
3494+ perl -w $(GT) $(srcdir)/mysql.info "mac-os-x-installation" "netware-installation" > $@
3495+
3496+# Don't update the files from bitkeeper
3497+%::SCCS/s.%
3498+# Tell versions [3.59,3.63) of GNU make to not export all variables.
3499+# Otherwise a system limit (for SysV at least) may be exceeded.
3500+.NOEXPORT:
3501
3502=== added file 'mysql-source/Makefile.am'
3503--- mysql-source/Makefile.am 1970-01-01 00:00:00 +0000
3504+++ mysql-source/Makefile.am 2010-01-14 13:03:26 +0000
3505@@ -0,0 +1,201 @@
3506+# Copyright (C) 2000-2006 MySQL AB
3507+#
3508+# This program is free software; you can redistribute it and/or modify
3509+# it under the terms of the GNU General Public License as published by
3510+# the Free Software Foundation; version 2 of the License.
3511+#
3512+# This program is distributed in the hope that it will be useful,
3513+# but WITHOUT ANY WARRANTY; without even the implied warranty of
3514+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3515+# GNU General Public License for more details.
3516+#
3517+# You should have received a copy of the GNU General Public License
3518+# along with this program; if not, write to the Free Software
3519+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
3520+
3521+# Process this file with automake to create Makefile.in
3522+
3523+AUTOMAKE_OPTIONS = foreign
3524+
3525+# These are built from source in the Docs directory
3526+EXTRA_DIST = INSTALL-SOURCE INSTALL-WIN-SOURCE \
3527+ README COPYING EXCEPTIONS-CLIENT CMakeLists.txt
3528+SUBDIRS = . include @docs_dirs@ @zlib_dir@ @yassl_dir@ \
3529+ @readline_topdir@ sql-common scripts \
3530+ @thread_dirs@ pstack \
3531+ @sql_union_dirs@ @man_dirs@ tests \
3532+ netware @libmysqld_dirs@ \
3533+ @bench_dirs@ support-files @tools_dirs@
3534+
3535+DIST_SUBDIRS = . include @docs_dirs@ zlib \
3536+ @readline_topdir@ sql-common \
3537+ @thread_dirs@ pstack \
3538+ @sql_union_dirs@ scripts @man_dirs@ tests SSL\
3539+ BUILD netware os2 @libmysqld_dirs@ \
3540+ @bench_dirs@ support-files @tools_dirs@ win \
3541+ debian
3542+
3543+# Run these targets before any others, also make part of clean target,
3544+# to make sure we create new links after a clean.
3545+BUILT_SOURCES = linked_client_sources linked_server_sources \
3546+ @linked_client_targets@ \
3547+ @linked_libmysqld_targets@ \
3548+ linked_include_sources @linked_netware_sources@
3549+
3550+# The db.h file is a bit special, see note in "configure.in".
3551+# In the case we didn't compile with bdb, a dummy file is put
3552+# there, but will not be removed by the bdb make file becuase
3553+# it will never be called.
3554+CLEANFILES = $(BUILT_SOURCES) bdb/build_unix/db.h
3555+DISTCLEANFILES = ac_available_languages_fragment
3556+
3557+# Our current filtering of "sql_yacc.cc" in "sql/Makefile.am" creates
3558+# a problem, if a VPATH build and "sql_yacc.cc" was part of the source
3559+# distribution we end up with one "sql_yacc.cc" in the source tree,
3560+# and one in the build tree. This breaks "distcleancheck", until this
3561+# is sorted out we redefine the find that scans for files not removed
3562+
3563+distcleancheck_listfiles = find . -name sql_yacc.cc -o -type f -print
3564+
3565+linked_include_sources:
3566+ cd include; $(MAKE) link_sources
3567+ echo timestamp > linked_include_sources
3568+
3569+linked_client_sources: @linked_client_targets@
3570+ cd client; $(MAKE) link_sources
3571+ echo timestamp > linked_client_sources
3572+
3573+linked_libmysql_sources:
3574+ cd libmysql; $(MAKE) link_sources
3575+ echo timestamp > linked_libmysql_sources
3576+
3577+linked_libmysql_r_sources: linked_libmysql_sources
3578+ cd libmysql_r; $(MAKE) link_sources
3579+ echo timestamp > linked_libmysql_r_sources
3580+
3581+linked_libmysqld_sources:
3582+ cd libmysqld; $(MAKE) link_sources
3583+ echo timestamp > linked_libmysqld_sources
3584+
3585+linked_libmysqldex_sources:
3586+ cd libmysqld/examples; $(MAKE) link_sources
3587+ echo timestamp > linked_libmysqldex_sources
3588+
3589+linked_netware_sources:
3590+ cd @netware_dir@; $(MAKE) link_sources
3591+ echo timestamp > linked_netware_sources
3592+
3593+linked_server_sources:
3594+ cd sql; $(MAKE) link_sources
3595+ echo timestamp > linked_server_sources
3596+
3597+# Create permission databases
3598+init-db: all
3599+ $(top_builddir)/scripts/mysql_install_db
3600+
3601+bin-dist: all
3602+ $(top_builddir)/scripts/make_binary_distribution @MAKE_BINARY_DISTRIBUTION_OPTIONS@
3603+
3604+# Remove BK's "SCCS" subdirectories from source distribution
3605+# Create initial database files for Windows installations.
3606+dist-hook:
3607+ rm -rf `find $(distdir) -type d -name SCCS -print`
3608+ rm -f `find $(distdir) -type l -print`
3609+ mkdir -p $(distdir)/win
3610+ scripts/mysql_install_db --no-defaults --windows \
3611+ --basedir=$(top_builddir) \
3612+ --datadir=$(distdir)/win/data \
3613+ --srcdir=$(top_srcdir)
3614+
3615+tags:
3616+ support-files/build-tags
3617+
3618+.PHONY: init-db bin-dist \
3619+ test test-force test-full test-force-full test-force-mem \
3620+ test-pl test-force-pl test-full-pl test-force-full-pl test-force-pl-mem \
3621+ test-ps test-ns test-ext-funcs test-ext \
3622+ test-fast test-fast-cursor test-fast-view test-fast-prepare \
3623+ test-full-qa
3624+
3625+# Target 'test' will run the regression test suite using the built server.
3626+#
3627+# If you are running in a shared environment, users can avoid clashing
3628+# port numbers by setting individual small numbers 1-100 to the
3629+# environment variable MTR_BUILD_THREAD. The script "mysql-test-run"
3630+# will then calculate the various port numbers it needs from this,
3631+# making sure each user use different ports.
3632+
3633+test-ps:
3634+ cd mysql-test ; \
3635+ @PERL@ ./mysql-test-run.pl $(force) $(mem) --ps-protocol
3636+
3637+test-ns:
3638+ cd mysql-test ; \
3639+ @PERL@ ./mysql-test-run.pl $(force) $(mem)
3640+
3641+test: test-ns test-ps
3642+
3643+# To ease script-writing, although in 5.0 it is identical to 'test'
3644+test-full: test
3645+
3646+test-force:
3647+ $(MAKE) force=--force test
3648+
3649+test-force-full:
3650+ $(MAKE) force=--force test-full
3651+
3652+#used by autopush.pl to run memory based tests
3653+test-force-mem:
3654+ $(MAKE) force=--force mem=--mem test
3655+
3656+test-bt:
3657+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
3658+ @PERL@ ./mysql-test-run.pl --force --comment=normal --report-features
3659+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
3660+ @PERL@ ./mysql-test-run.pl --force --comment=ps --ps-protocol
3661+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
3662+ @PERL@ ./mysql-test-run.pl --force --comment=funcs1_ps --ps-protocol --suite=funcs_1
3663+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
3664+ @PERL@ ./mysql-test-run.pl --force --comment=funcs2 --suite=funcs_2
3665+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
3666+ @PERL@ ./mysql-test-run.pl --force --comment=rowlock --suite=row_lock
3667+
3668+test-bt-debug:
3669+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
3670+ @PERL@ ./mysql-test-run.pl --force --comment=debug --report-features
3671+
3672+# Keep these for a while
3673+test-pl: test
3674+test-full-pl: test-full
3675+test-force-pl: test-force
3676+test-force-pl-mem: test-force-mem
3677+test-force-full-pl: test-force-full
3678+
3679+test-ext-funcs:
3680+ cd mysql-test ; \
3681+ @PERL@ ./mysql-test-run.pl --force --suite=funcs_1 ; \
3682+ @PERL@ ./mysql-test-run.pl --force --suite=funcs_2
3683+
3684+test-ext: test-ext-funcs
3685+
3686+test-fast:
3687+ cd mysql-test ; \
3688+ @PERL@ ./mysql-test-run.pl $(subset) --force --skip-ndb --skip-innodb --skip-im --skip-rpl ; \
3689+ @PERL@ ./mysql-test-run.pl $(subset) --force --suite=funcs_1 --do-test=myisam
3690+
3691+test-fast-view:
3692+ $(MAKE) subset=--view-protocol test-fast
3693+
3694+test-fast-cursor:
3695+ $(MAKE) subset=--cursor-protocol test-fast
3696+
3697+test-fast-prepare:
3698+ $(MAKE) subset=--ps-protocol test-fast
3699+
3700+test-full-qa:
3701+ $(MAKE) force=--force test-pl \
3702+ test-ext test-fast-view \
3703+ test-fast-cursor
3704+
3705+# Don't update the files from bitkeeper
3706+%::SCCS/s.%
3707
3708=== added file 'mysql-source/Makefile.in'
3709--- mysql-source/Makefile.in 1970-01-01 00:00:00 +0000
3710+++ mysql-source/Makefile.in 2010-01-14 13:03:26 +0000
3711@@ -0,0 +1,1003 @@
3712+# Makefile.in generated by automake 1.9.6 from Makefile.am.
3713+# @configure_input@
3714+
3715+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
3716+# 2003, 2004, 2005 Free Software Foundation, Inc.
3717+# This Makefile.in is free software; the Free Software Foundation
3718+# gives unlimited permission to copy and/or distribute it,
3719+# with or without modifications, as long as this notice is preserved.
3720+
3721+# This program is distributed in the hope that it will be useful,
3722+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
3723+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
3724+# PARTICULAR PURPOSE.
3725+
3726+@SET_MAKE@
3727+
3728+# Copyright (C) 2000-2006 MySQL AB
3729+#
3730+# This program is free software; you can redistribute it and/or modify
3731+# it under the terms of the GNU General Public License as published by
3732+# the Free Software Foundation; version 2 of the License.
3733+#
3734+# This program is distributed in the hope that it will be useful,
3735+# but WITHOUT ANY WARRANTY; without even the implied warranty of
3736+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3737+# GNU General Public License for more details.
3738+#
3739+# You should have received a copy of the GNU General Public License
3740+# along with this program; if not, write to the Free Software
3741+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
3742+
3743+# Process this file with automake to create Makefile.in
3744+srcdir = @srcdir@
3745+top_srcdir = @top_srcdir@
3746+VPATH = @srcdir@
3747+pkgdatadir = $(datadir)/@PACKAGE@
3748+pkglibdir = $(libdir)/@PACKAGE@
3749+pkgincludedir = $(includedir)/@PACKAGE@
3750+top_builddir = .
3751+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
3752+INSTALL = @INSTALL@
3753+install_sh_DATA = $(install_sh) -c -m 644
3754+install_sh_PROGRAM = $(install_sh) -c
3755+install_sh_SCRIPT = $(install_sh) -c
3756+INSTALL_HEADER = $(INSTALL_DATA)
3757+transform = $(program_transform_name)
3758+NORMAL_INSTALL = :
3759+PRE_INSTALL = :
3760+POST_INSTALL = :
3761+NORMAL_UNINSTALL = :
3762+PRE_UNINSTALL = :
3763+POST_UNINSTALL = :
3764+build_triplet = @build@
3765+host_triplet = @host@
3766+target_triplet = @target@
3767+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
3768+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
3769+ $(top_srcdir)/bdb/Makefile.in $(top_srcdir)/configure COPYING \
3770+ ChangeLog config.guess config.sub depcomp install-sh ltmain.sh \
3771+ missing
3772+subdir = .
3773+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
3774+am__aclocal_m4_deps = $(top_srcdir)/config/ac-macros/alloca.m4 \
3775+ $(top_srcdir)/config/ac-macros/check_cpu.m4 \
3776+ $(top_srcdir)/config/ac-macros/character_sets.m4 \
3777+ $(top_srcdir)/config/ac-macros/compiler_flag.m4 \
3778+ $(top_srcdir)/config/ac-macros/ha_archive.m4 \
3779+ $(top_srcdir)/config/ac-macros/ha_berkeley.m4 \
3780+ $(top_srcdir)/config/ac-macros/ha_blackhole.m4 \
3781+ $(top_srcdir)/config/ac-macros/ha_example.m4 \
3782+ $(top_srcdir)/config/ac-macros/ha_federated.m4 \
3783+ $(top_srcdir)/config/ac-macros/ha_innodb.m4 \
3784+ $(top_srcdir)/config/ac-macros/ha_ndbcluster.m4 \
3785+ $(top_srcdir)/config/ac-macros/ha_tina.m4 \
3786+ $(top_srcdir)/config/ac-macros/large_file.m4 \
3787+ $(top_srcdir)/config/ac-macros/misc.m4 \
3788+ $(top_srcdir)/config/ac-macros/openssl.m4 \
3789+ $(top_srcdir)/config/ac-macros/readline.m4 \
3790+ $(top_srcdir)/config/ac-macros/yassl.m4 \
3791+ $(top_srcdir)/config/ac-macros/zlib.m4 \
3792+ $(top_srcdir)/configure.in
3793+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
3794+ $(ACLOCAL_M4)
3795+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
3796+ configure.lineno configure.status.lineno
3797+mkinstalldirs = $(install_sh) -d
3798+CONFIG_HEADER = config.h
3799+CONFIG_CLEAN_FILES = bdb/Makefile
3800+SOURCES =
3801+DIST_SOURCES =
3802+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
3803+ html-recursive info-recursive install-data-recursive \
3804+ install-exec-recursive install-info-recursive \
3805+ install-recursive installcheck-recursive installdirs-recursive \
3806+ pdf-recursive ps-recursive uninstall-info-recursive \
3807+ uninstall-recursive
3808+ETAGS = etags
3809+CTAGS = ctags
3810+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
3811+distdir = $(PACKAGE)-$(VERSION)
3812+top_distdir = $(distdir)
3813+am__remove_distdir = \
3814+ { test ! -d $(distdir) \
3815+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
3816+ && rm -fr $(distdir); }; }
3817+DIST_ARCHIVES = $(distdir).tar.gz
3818+GZIP_ENV = --best
3819+distuninstallcheck_listfiles = find . -type f -print
3820+ACLOCAL = @ACLOCAL@
3821+ALLOCA = @ALLOCA@
3822+AMDEP_FALSE = @AMDEP_FALSE@
3823+AMDEP_TRUE = @AMDEP_TRUE@
3824+AMTAR = @AMTAR@
3825+AR = @AR@
3826+ARFLAGS = @ARFLAGS@
3827+AS = @AS@
3828+ASSEMBLER_FALSE = @ASSEMBLER_FALSE@
3829+ASSEMBLER_TRUE = @ASSEMBLER_TRUE@
3830+ASSEMBLER_sparc32_FALSE = @ASSEMBLER_sparc32_FALSE@
3831+ASSEMBLER_sparc32_TRUE = @ASSEMBLER_sparc32_TRUE@
3832+ASSEMBLER_sparc64_FALSE = @ASSEMBLER_sparc64_FALSE@
3833+ASSEMBLER_sparc64_TRUE = @ASSEMBLER_sparc64_TRUE@
3834+ASSEMBLER_x86_FALSE = @ASSEMBLER_x86_FALSE@
3835+ASSEMBLER_x86_TRUE = @ASSEMBLER_x86_TRUE@
3836+AUTOCONF = @AUTOCONF@
3837+AUTOHEADER = @AUTOHEADER@
3838+AUTOMAKE = @AUTOMAKE@
3839+AVAILABLE_LANGUAGES = @AVAILABLE_LANGUAGES@
3840+AWK = @AWK@
3841+CC = @CC@
3842+CCAS = @CCAS@
3843+CCASFLAGS = @CCASFLAGS@
3844+CCDEPMODE = @CCDEPMODE@
3845+CC_VERSION = @CC_VERSION@
3846+CFLAGS = @CFLAGS@
3847+CHECK_PID = @CHECK_PID@
3848+CHMOD = @CHMOD@
3849+CLIENT_EXTRA_LDFLAGS = @CLIENT_EXTRA_LDFLAGS@
3850+CLIENT_LIBS = @CLIENT_LIBS@
3851+CMP = @CMP@
3852+COMPILATION_COMMENT = @COMPILATION_COMMENT@
3853+COMPILE_PSTACK_FALSE = @COMPILE_PSTACK_FALSE@
3854+COMPILE_PSTACK_TRUE = @COMPILE_PSTACK_TRUE@
3855+CONF_COMMAND = @CONF_COMMAND@
3856+CP = @CP@
3857+CPP = @CPP@
3858+CPPFLAGS = @CPPFLAGS@
3859+CXX = @CXX@
3860+CXXCPP = @CXXCPP@
3861+CXXDEPMODE = @CXXDEPMODE@
3862+CXXFLAGS = @CXXFLAGS@
3863+CXXLDFLAGS = @CXXLDFLAGS@
3864+CXX_VERSION = @CXX_VERSION@
3865+CYGPATH_W = @CYGPATH_W@
3866+DARWIN_MWCC_FALSE = @DARWIN_MWCC_FALSE@
3867+DARWIN_MWCC_TRUE = @DARWIN_MWCC_TRUE@
3868+DEFS = @DEFS@
3869+DEPDIR = @DEPDIR@
3870+DOT_FRM_VERSION = @DOT_FRM_VERSION@
3871+DOXYGEN = @DOXYGEN@
3872+DVIS = @DVIS@
3873+ECHO = @ECHO@
3874+ECHO_C = @ECHO_C@
3875+ECHO_N = @ECHO_N@
3876+ECHO_T = @ECHO_T@
3877+EGREP = @EGREP@
3878+EXEEXT = @EXEEXT@
3879+F77 = @F77@
3880+FFLAGS = @FFLAGS@
3881+FIND_PROC = @FIND_PROC@
3882+GETCONF = @GETCONF@
3883+GXX = @GXX@
3884+HAVE_NDBCLUSTER_DB_FALSE = @HAVE_NDBCLUSTER_DB_FALSE@
3885+HAVE_NDBCLUSTER_DB_TRUE = @HAVE_NDBCLUSTER_DB_TRUE@
3886+HAVE_NETWARE_FALSE = @HAVE_NETWARE_FALSE@
3887+HAVE_NETWARE_TRUE = @HAVE_NETWARE_TRUE@
3888+HAVE_YASSL_FALSE = @HAVE_YASSL_FALSE@
3889+HAVE_YASSL_TRUE = @HAVE_YASSL_TRUE@
3890+HOSTNAME = @HOSTNAME@
3891+ICHECK = @ICHECK@
3892+INSTALL_DATA = @INSTALL_DATA@
3893+INSTALL_PROGRAM = @INSTALL_PROGRAM@
3894+INSTALL_SCRIPT = @INSTALL_SCRIPT@
3895+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
3896+KILL = @KILL@
3897+LD = @LD@
3898+LDFLAGS = @LDFLAGS@
3899+LD_VERSION_SCRIPT = @LD_VERSION_SCRIPT@
3900+LIBDL = @LIBDL@
3901+LIBEDIT_LOBJECTS = @LIBEDIT_LOBJECTS@
3902+LIBOBJS = @LIBOBJS@
3903+LIBS = @LIBS@
3904+LIBTOOL = @LIBTOOL@
3905+LIB_EXTRA_CCFLAGS = @LIB_EXTRA_CCFLAGS@
3906+LM_CFLAGS = @LM_CFLAGS@
3907+LN = @LN@
3908+LN_CP_F = @LN_CP_F@
3909+LN_S = @LN_S@
3910+LTLIBOBJS = @LTLIBOBJS@
3911+MACHINE_TYPE = @MACHINE_TYPE@
3912+MAKEINDEX = @MAKEINDEX@
3913+MAKEINFO = @MAKEINFO@
3914+MAKE_BINARY_DISTRIBUTION_OPTIONS = @MAKE_BINARY_DISTRIBUTION_OPTIONS@
3915+MAKE_SHELL = @MAKE_SHELL@
3916+MV = @MV@
3917+MYSQLD_DEFAULT_SWITCHES = @MYSQLD_DEFAULT_SWITCHES@
3918+MYSQLD_EXTRA_LDFLAGS = @MYSQLD_EXTRA_LDFLAGS@
3919+MYSQLD_EXTRA_LIBS = @MYSQLD_EXTRA_LIBS@
3920+MYSQLD_USER = @MYSQLD_USER@
3921+MYSQL_BASE_VERSION = @MYSQL_BASE_VERSION@
3922+MYSQL_NO_DASH_VERSION = @MYSQL_NO_DASH_VERSION@
3923+MYSQL_PREVIOUS_BASE_VERSION = @MYSQL_PREVIOUS_BASE_VERSION@
3924+MYSQL_SERVER_SUFFIX = @MYSQL_SERVER_SUFFIX@
3925+MYSQL_TCP_PORT = @MYSQL_TCP_PORT@
3926+MYSQL_TCP_PORT_DEFAULT = @MYSQL_TCP_PORT_DEFAULT@
3927+MYSQL_UNIX_ADDR = @MYSQL_UNIX_ADDR@
3928+MYSQL_VERSION_ID = @MYSQL_VERSION_ID@
3929+NDB_DEFS = @NDB_DEFS@
3930+NDB_LD_VERSION_SCRIPT = @NDB_LD_VERSION_SCRIPT@
3931+NDB_SCI_INCLUDES = @NDB_SCI_INCLUDES@
3932+NDB_SCI_LIBS = @NDB_SCI_LIBS@
3933+NDB_SHARED_LIB_MAJOR_VERSION = @NDB_SHARED_LIB_MAJOR_VERSION@
3934+NDB_SHARED_LIB_VERSION = @NDB_SHARED_LIB_VERSION@
3935+NDB_SIZEOF_CHAR = @NDB_SIZEOF_CHAR@
3936+NDB_SIZEOF_CHARP = @NDB_SIZEOF_CHARP@
3937+NDB_SIZEOF_INT = @NDB_SIZEOF_INT@
3938+NDB_SIZEOF_LONG = @NDB_SIZEOF_LONG@
3939+NDB_SIZEOF_LONG_LONG = @NDB_SIZEOF_LONG_LONG@
3940+NDB_SIZEOF_SHORT = @NDB_SIZEOF_SHORT@
3941+NDB_VERSION_BUILD = @NDB_VERSION_BUILD@
3942+NDB_VERSION_MAJOR = @NDB_VERSION_MAJOR@
3943+NDB_VERSION_MINOR = @NDB_VERSION_MINOR@
3944+NDB_VERSION_STATUS = @NDB_VERSION_STATUS@
3945+NM = @NM@
3946+NOINST_LDFLAGS = @NOINST_LDFLAGS@
3947+NON_THREADED_LIBS = @NON_THREADED_LIBS@
3948+OBJEXT = @OBJEXT@
3949+PACKAGE = @PACKAGE@
3950+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
3951+PACKAGE_NAME = @PACKAGE_NAME@
3952+PACKAGE_STRING = @PACKAGE_STRING@
3953+PACKAGE_TARNAME = @PACKAGE_TARNAME@
3954+PACKAGE_VERSION = @PACKAGE_VERSION@
3955+PATH_SEPARATOR = @PATH_SEPARATOR@
3956+PDFLATEX = @PDFLATEX@
3957+PDFMANUAL = @PDFMANUAL@
3958+PERL = @PERL@
3959+PERL5 = @PERL5@
3960+PROTOCOL_VERSION = @PROTOCOL_VERSION@
3961+PS = @PS@
3962+RANLIB = @RANLIB@
3963+RM = @RM@
3964+SAVE_ASFLAGS = @SAVE_ASFLAGS@
3965+SAVE_CFLAGS = @SAVE_CFLAGS@
3966+SAVE_CXXFLAGS = @SAVE_CXXFLAGS@
3967+SAVE_CXXLDFLAGS = @SAVE_CXXLDFLAGS@
3968+SAVE_LDFLAGS = @SAVE_LDFLAGS@
3969+SED = @SED@
3970+SET_MAKE = @SET_MAKE@
3971+SHARED_LIB_MAJOR_VERSION = @SHARED_LIB_MAJOR_VERSION@
3972+SHARED_LIB_VERSION = @SHARED_LIB_VERSION@
3973+SHELL = @SHELL@
3974+STATIC_NSS_FLAGS = @STATIC_NSS_FLAGS@
3975+STRIP = @STRIP@
3976+SYSTEM_TYPE = @SYSTEM_TYPE@
3977+TAR = @TAR@
3978+TARGET_LINUX = @TARGET_LINUX@
3979+TERMCAP_LIB = @TERMCAP_LIB@
3980+THREAD_LOBJECTS = @THREAD_LOBJECTS@
3981+VERSION = @VERSION@
3982+WRAPLIBS = @WRAPLIBS@
3983+YACC = @YACC@
3984+ZLIB_DEPS = @ZLIB_DEPS@
3985+ZLIB_INCLUDES = @ZLIB_INCLUDES@
3986+ZLIB_LIBS = @ZLIB_LIBS@
3987+ac_ct_AR = @ac_ct_AR@
3988+ac_ct_CC = @ac_ct_CC@
3989+ac_ct_CXX = @ac_ct_CXX@
3990+ac_ct_F77 = @ac_ct_F77@
3991+ac_ct_GETCONF = @ac_ct_GETCONF@
3992+ac_ct_RANLIB = @ac_ct_RANLIB@
3993+ac_ct_STRIP = @ac_ct_STRIP@
3994+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
3995+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
3996+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
3997+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
3998+am__include = @am__include@
3999+am__leading_dot = @am__leading_dot@
4000+am__quote = @am__quote@
4001+am__tar = @am__tar@
4002+am__untar = @am__untar@
4003+bdb_includes = @bdb_includes@
4004+bdb_libs = @bdb_libs@
4005+bdb_libs_with_path = @bdb_libs_with_path@
4006+bench_dirs = @bench_dirs@
4007+bindir = @bindir@
4008+build = @build@
4009+build_alias = @build_alias@
4010+build_cpu = @build_cpu@
4011+build_os = @build_os@
4012+build_vendor = @build_vendor@
4013+datadir = @datadir@
4014+docs_dirs = @docs_dirs@
4015+exec_prefix = @exec_prefix@
4016+host = @host@
4017+host_alias = @host_alias@
4018+host_cpu = @host_cpu@
4019+host_os = @host_os@
4020+host_vendor = @host_vendor@
4021+includedir = @includedir@
4022+infodir = @infodir@
4023+innodb_includes = @innodb_includes@
4024+innodb_libs = @innodb_libs@
4025+innodb_system_libs = @innodb_system_libs@
4026+install_sh = @install_sh@
4027+libdir = @libdir@
4028+libexecdir = @libexecdir@
4029+libmysqld_dirs = @libmysqld_dirs@
4030+linked_client_targets = @linked_client_targets@
4031+linked_libmysqld_targets = @linked_libmysqld_targets@
4032+linked_netware_sources = @linked_netware_sources@
4033+localstatedir = @localstatedir@
4034+man1_files = @man1_files@
4035+man8_files = @man8_files@
4036+man_dirs = @man_dirs@
4037+mandir = @mandir@
4038+mkdir_p = @mkdir_p@
4039+ndb_bin_am_ldflags = @ndb_bin_am_ldflags@
4040+ndb_cxxflags_fix = @ndb_cxxflags_fix@
4041+ndb_mgmclient_libs = @ndb_mgmclient_libs@
4042+ndb_opt_subdirs = @ndb_opt_subdirs@
4043+ndb_port = @ndb_port@
4044+ndb_transporter_opt_objs = @ndb_transporter_opt_objs@
4045+ndbcluster_includes = @ndbcluster_includes@
4046+ndbcluster_libs = @ndbcluster_libs@
4047+ndbcluster_system_libs = @ndbcluster_system_libs@
4048+netware_dir = @netware_dir@
4049+oldincludedir = @oldincludedir@
4050+openssl_includes = @openssl_includes@
4051+openssl_libs = @openssl_libs@
4052+prefix = @prefix@
4053+program_transform_name = @program_transform_name@
4054+pstack_dirs = @pstack_dirs@
4055+pstack_libs = @pstack_libs@
4056+readline_basedir = @readline_basedir@
4057+readline_dir = @readline_dir@
4058+readline_h_ln_cmd = @readline_h_ln_cmd@
4059+readline_link = @readline_link@
4060+readline_topdir = @readline_topdir@
4061+sbindir = @sbindir@
4062+server_scripts = @server_scripts@
4063+sharedstatedir = @sharedstatedir@
4064+sql_client_dirs = @sql_client_dirs@
4065+sql_server_dirs = @sql_server_dirs@
4066+sql_union_dirs = @sql_union_dirs@
4067+subdirs = @subdirs@
4068+sysconfdir = @sysconfdir@
4069+target = @target@
4070+target_alias = @target_alias@
4071+target_cpu = @target_cpu@
4072+target_os = @target_os@
4073+target_vendor = @target_vendor@
4074+thread_dirs = @thread_dirs@
4075+tools_dirs = @tools_dirs@
4076+uname_prog = @uname_prog@
4077+yassl_dir = @yassl_dir@
4078+yassl_h_ln_cmd = @yassl_h_ln_cmd@
4079+yassl_libs = @yassl_libs@
4080+yassl_taocrypt_extra_cxxflags = @yassl_taocrypt_extra_cxxflags@
4081+zlib_dir = @zlib_dir@
4082+AUTOMAKE_OPTIONS = foreign
4083+
4084+# These are built from source in the Docs directory
4085+EXTRA_DIST = INSTALL-SOURCE INSTALL-WIN-SOURCE \
4086+ README COPYING EXCEPTIONS-CLIENT CMakeLists.txt
4087+
4088+SUBDIRS = . include @docs_dirs@ @zlib_dir@ @yassl_dir@ \
4089+ @readline_topdir@ sql-common scripts \
4090+ @thread_dirs@ pstack \
4091+ @sql_union_dirs@ @man_dirs@ tests \
4092+ netware @libmysqld_dirs@ \
4093+ @bench_dirs@ support-files @tools_dirs@
4094+
4095+DIST_SUBDIRS = . include @docs_dirs@ zlib \
4096+ @readline_topdir@ sql-common \
4097+ @thread_dirs@ pstack \
4098+ @sql_union_dirs@ scripts @man_dirs@ tests SSL\
4099+ BUILD netware os2 @libmysqld_dirs@ \
4100+ @bench_dirs@ support-files @tools_dirs@ win \
4101+ debian
4102+
4103+
4104+# Run these targets before any others, also make part of clean target,
4105+# to make sure we create new links after a clean.
4106+BUILT_SOURCES = linked_client_sources linked_server_sources \
4107+ @linked_client_targets@ \
4108+ @linked_libmysqld_targets@ \
4109+ linked_include_sources @linked_netware_sources@
4110+
4111+
4112+# The db.h file is a bit special, see note in "configure.in".
4113+# In the case we didn't compile with bdb, a dummy file is put
4114+# there, but will not be removed by the bdb make file becuase
4115+# it will never be called.
4116+CLEANFILES = $(BUILT_SOURCES) bdb/build_unix/db.h
4117+DISTCLEANFILES = ac_available_languages_fragment
4118+
4119+# Our current filtering of "sql_yacc.cc" in "sql/Makefile.am" creates
4120+# a problem, if a VPATH build and "sql_yacc.cc" was part of the source
4121+# distribution we end up with one "sql_yacc.cc" in the source tree,
4122+# and one in the build tree. This breaks "distcleancheck", until this
4123+# is sorted out we redefine the find that scans for files not removed
4124+distcleancheck_listfiles = find . -name sql_yacc.cc -o -type f -print
4125+all: $(BUILT_SOURCES) config.h
4126+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
4127+
4128+.SUFFIXES:
4129+am--refresh:
4130+ @:
4131+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
4132+ @for dep in $?; do \
4133+ case '$(am__configure_deps)' in \
4134+ *$$dep*) \
4135+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
4136+ cd $(srcdir) && $(AUTOMAKE) --foreign \
4137+ && exit 0; \
4138+ exit 1;; \
4139+ esac; \
4140+ done; \
4141+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
4142+ cd $(top_srcdir) && \
4143+ $(AUTOMAKE) --foreign Makefile
4144+.PRECIOUS: Makefile
4145+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
4146+ @case '$?' in \
4147+ *config.status*) \
4148+ echo ' $(SHELL) ./config.status'; \
4149+ $(SHELL) ./config.status;; \
4150+ *) \
4151+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
4152+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
4153+ esac;
4154+
4155+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
4156+ $(SHELL) ./config.status --recheck
4157+
4158+$(top_srcdir)/configure: $(am__configure_deps)
4159+ cd $(srcdir) && $(AUTOCONF)
4160+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
4161+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
4162+
4163+config.h: stamp-h1
4164+ @if test ! -f $@; then \
4165+ rm -f stamp-h1; \
4166+ $(MAKE) stamp-h1; \
4167+ else :; fi
4168+
4169+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
4170+ @rm -f stamp-h1
4171+ cd $(top_builddir) && $(SHELL) ./config.status config.h
4172+$(srcdir)/config.h.in: $(am__configure_deps)
4173+ cd $(top_srcdir) && $(AUTOHEADER)
4174+ rm -f stamp-h1
4175+ touch $@
4176+
4177+distclean-hdr:
4178+ -rm -f config.h stamp-h1
4179+bdb/Makefile: $(top_builddir)/config.status $(top_srcdir)/bdb/Makefile.in
4180+ cd $(top_builddir) && $(SHELL) ./config.status $@
4181+
4182+mostlyclean-libtool:
4183+ -rm -f *.lo
4184+
4185+clean-libtool:
4186+ -rm -rf .libs _libs
4187+
4188+distclean-libtool:
4189+ -rm -f libtool
4190+uninstall-info-am:
4191+
4192+# This directory's subdirectories are mostly independent; you can cd
4193+# into them and run `make' without going through this Makefile.
4194+# To change the values of `make' variables: instead of editing Makefiles,
4195+# (1) if the variable is set in `config.status', edit `config.status'
4196+# (which will cause the Makefiles to be regenerated when you run `make');
4197+# (2) otherwise, pass the desired values on the `make' command line.
4198+$(RECURSIVE_TARGETS):
4199+ @failcom='exit 1'; \
4200+ for f in x $$MAKEFLAGS; do \
4201+ case $$f in \
4202+ *=* | --[!k]*);; \
4203+ *k*) failcom='fail=yes';; \
4204+ esac; \
4205+ done; \
4206+ dot_seen=no; \
4207+ target=`echo $@ | sed s/-recursive//`; \
4208+ list='$(SUBDIRS)'; for subdir in $$list; do \
4209+ echo "Making $$target in $$subdir"; \
4210+ if test "$$subdir" = "."; then \
4211+ dot_seen=yes; \
4212+ local_target="$$target-am"; \
4213+ else \
4214+ local_target="$$target"; \
4215+ fi; \
4216+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
4217+ || eval $$failcom; \
4218+ done; \
4219+ if test "$$dot_seen" = "no"; then \
4220+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
4221+ fi; test -z "$$fail"
4222+
4223+mostlyclean-recursive clean-recursive distclean-recursive \
4224+maintainer-clean-recursive:
4225+ @failcom='exit 1'; \
4226+ for f in x $$MAKEFLAGS; do \
4227+ case $$f in \
4228+ *=* | --[!k]*);; \
4229+ *k*) failcom='fail=yes';; \
4230+ esac; \
4231+ done; \
4232+ dot_seen=no; \
4233+ case "$@" in \
4234+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
4235+ *) list='$(SUBDIRS)' ;; \
4236+ esac; \
4237+ rev=''; for subdir in $$list; do \
4238+ if test "$$subdir" = "."; then :; else \
4239+ rev="$$subdir $$rev"; \
4240+ fi; \
4241+ done; \
4242+ rev="$$rev ."; \
4243+ target=`echo $@ | sed s/-recursive//`; \
4244+ for subdir in $$rev; do \
4245+ echo "Making $$target in $$subdir"; \
4246+ if test "$$subdir" = "."; then \
4247+ local_target="$$target-am"; \
4248+ else \
4249+ local_target="$$target"; \
4250+ fi; \
4251+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
4252+ || eval $$failcom; \
4253+ done && test -z "$$fail"
4254+tags-recursive:
4255+ list='$(SUBDIRS)'; for subdir in $$list; do \
4256+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
4257+ done
4258+ctags-recursive:
4259+ list='$(SUBDIRS)'; for subdir in $$list; do \
4260+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
4261+ done
4262+
4263+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
4264+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
4265+ unique=`for i in $$list; do \
4266+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
4267+ done | \
4268+ $(AWK) ' { files[$$0] = 1; } \
4269+ END { for (i in files) print i; }'`; \
4270+ mkid -fID $$unique
4271+
4272+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
4273+ $(TAGS_FILES) $(LISP)
4274+ tags=; \
4275+ here=`pwd`; \
4276+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
4277+ include_option=--etags-include; \
4278+ empty_fix=.; \
4279+ else \
4280+ include_option=--include; \
4281+ empty_fix=; \
4282+ fi; \
4283+ list='$(SUBDIRS)'; for subdir in $$list; do \
4284+ if test "$$subdir" = .; then :; else \
4285+ test ! -f $$subdir/TAGS || \
4286+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
4287+ fi; \
4288+ done; \
4289+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
4290+ unique=`for i in $$list; do \
4291+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
4292+ done | \
4293+ $(AWK) ' { files[$$0] = 1; } \
4294+ END { for (i in files) print i; }'`; \
4295+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
4296+ test -n "$$unique" || unique=$$empty_fix; \
4297+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
4298+ $$tags $$unique; \
4299+ fi
4300+ctags: CTAGS
4301+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
4302+ $(TAGS_FILES) $(LISP)
4303+ tags=; \
4304+ here=`pwd`; \
4305+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
4306+ unique=`for i in $$list; do \
4307+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
4308+ done | \
4309+ $(AWK) ' { files[$$0] = 1; } \
4310+ END { for (i in files) print i; }'`; \
4311+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
4312+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
4313+ $$tags $$unique
4314+
4315+GTAGS:
4316+ here=`$(am__cd) $(top_builddir) && pwd` \
4317+ && cd $(top_srcdir) \
4318+ && gtags -i $(GTAGS_ARGS) $$here
4319+
4320+distclean-tags:
4321+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
4322+
4323+distdir: $(DISTFILES)
4324+ $(am__remove_distdir)
4325+ mkdir $(distdir)
4326+ $(mkdir_p) $(distdir)/bdb $(distdir)/config/ac-macros $(distdir)/debian $(distdir)/include $(distdir)/libmysql $(distdir)/ndb/include $(distdir)/ndb/src
4327+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
4328+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
4329+ list='$(DISTFILES)'; for file in $$list; do \
4330+ case $$file in \
4331+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
4332+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
4333+ esac; \
4334+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
4335+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
4336+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
4337+ dir="/$$dir"; \
4338+ $(mkdir_p) "$(distdir)$$dir"; \
4339+ else \
4340+ dir=''; \
4341+ fi; \
4342+ if test -d $$d/$$file; then \
4343+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
4344+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
4345+ fi; \
4346+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
4347+ else \
4348+ test -f $(distdir)/$$file \
4349+ || cp -p $$d/$$file $(distdir)/$$file \
4350+ || exit 1; \
4351+ fi; \
4352+ done
4353+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
4354+ if test "$$subdir" = .; then :; else \
4355+ test -d "$(distdir)/$$subdir" \
4356+ || $(mkdir_p) "$(distdir)/$$subdir" \
4357+ || exit 1; \
4358+ distdir=`$(am__cd) $(distdir) && pwd`; \
4359+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
4360+ (cd $$subdir && \
4361+ $(MAKE) $(AM_MAKEFLAGS) \
4362+ top_distdir="$$top_distdir" \
4363+ distdir="$$distdir/$$subdir" \
4364+ distdir) \
4365+ || exit 1; \
4366+ fi; \
4367+ done
4368+ $(MAKE) $(AM_MAKEFLAGS) \
4369+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
4370+ dist-hook
4371+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
4372+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
4373+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
4374+ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
4375+ || chmod -R a+r $(distdir)
4376+dist-gzip: distdir
4377+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
4378+ $(am__remove_distdir)
4379+
4380+dist-bzip2: distdir
4381+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
4382+ $(am__remove_distdir)
4383+
4384+dist-tarZ: distdir
4385+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
4386+ $(am__remove_distdir)
4387+
4388+dist-shar: distdir
4389+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
4390+ $(am__remove_distdir)
4391+
4392+dist-zip: distdir
4393+ -rm -f $(distdir).zip
4394+ zip -rq $(distdir).zip $(distdir)
4395+ $(am__remove_distdir)
4396+
4397+dist dist-all: distdir
4398+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
4399+ $(am__remove_distdir)
4400+
4401+# This target untars the dist file and tries a VPATH configuration. Then
4402+# it guarantees that the distribution is self-contained by making another
4403+# tarfile.
4404+distcheck: dist
4405+ case '$(DIST_ARCHIVES)' in \
4406+ *.tar.gz*) \
4407+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
4408+ *.tar.bz2*) \
4409+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
4410+ *.tar.Z*) \
4411+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
4412+ *.shar.gz*) \
4413+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
4414+ *.zip*) \
4415+ unzip $(distdir).zip ;;\
4416+ esac
4417+ chmod -R a-w $(distdir); chmod a+w $(distdir)
4418+ mkdir $(distdir)/_build
4419+ mkdir $(distdir)/_inst
4420+ chmod a-w $(distdir)
4421+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
4422+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
4423+ && cd $(distdir)/_build \
4424+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
4425+ $(DISTCHECK_CONFIGURE_FLAGS) \
4426+ && $(MAKE) $(AM_MAKEFLAGS) \
4427+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
4428+ && $(MAKE) $(AM_MAKEFLAGS) check \
4429+ && $(MAKE) $(AM_MAKEFLAGS) install \
4430+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
4431+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
4432+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
4433+ distuninstallcheck \
4434+ && chmod -R a-w "$$dc_install_base" \
4435+ && ({ \
4436+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
4437+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
4438+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
4439+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
4440+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
4441+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
4442+ && rm -rf "$$dc_destdir" \
4443+ && $(MAKE) $(AM_MAKEFLAGS) dist \
4444+ && rm -rf $(DIST_ARCHIVES) \
4445+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
4446+ $(am__remove_distdir)
4447+ @(echo "$(distdir) archives ready for distribution: "; \
4448+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
4449+ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
4450+distuninstallcheck:
4451+ @cd $(distuninstallcheck_dir) \
4452+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
4453+ || { echo "ERROR: files left after uninstall:" ; \
4454+ if test -n "$(DESTDIR)"; then \
4455+ echo " (check DESTDIR support)"; \
4456+ fi ; \
4457+ $(distuninstallcheck_listfiles) ; \
4458+ exit 1; } >&2
4459+distcleancheck: distclean
4460+ @if test '$(srcdir)' = . ; then \
4461+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
4462+ exit 1 ; \
4463+ fi
4464+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
4465+ || { echo "ERROR: files left in build directory after distclean:" ; \
4466+ $(distcleancheck_listfiles) ; \
4467+ exit 1; } >&2
4468+check-am: all-am
4469+check: $(BUILT_SOURCES)
4470+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
4471+all-am: Makefile config.h
4472+installdirs: installdirs-recursive
4473+installdirs-am:
4474+install: $(BUILT_SOURCES)
4475+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
4476+install-exec: install-exec-recursive
4477+install-data: install-data-recursive
4478+uninstall: uninstall-recursive
4479+
4480+install-am: all-am
4481+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
4482+
4483+installcheck: installcheck-recursive
4484+install-strip:
4485+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
4486+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
4487+ `test -z '$(STRIP)' || \
4488+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
4489+mostlyclean-generic:
4490+
4491+clean-generic:
4492+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
4493+
4494+distclean-generic:
4495+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
4496+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
4497+
4498+maintainer-clean-generic:
4499+ @echo "This command is intended for maintainers to use"
4500+ @echo "it deletes files that may require special tools to rebuild."
4501+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
4502+clean: clean-recursive
4503+
4504+clean-am: clean-generic clean-libtool mostlyclean-am
4505+
4506+distclean: distclean-recursive
4507+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
4508+ -rm -f Makefile
4509+distclean-am: clean-am distclean-generic distclean-hdr \
4510+ distclean-libtool distclean-tags
4511+
4512+dvi: dvi-recursive
4513+
4514+dvi-am:
4515+
4516+html: html-recursive
4517+
4518+info: info-recursive
4519+
4520+info-am:
4521+
4522+install-data-am:
4523+
4524+install-exec-am:
4525+
4526+install-info: install-info-recursive
4527+
4528+install-man:
4529+
4530+installcheck-am:
4531+
4532+maintainer-clean: maintainer-clean-recursive
4533+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
4534+ -rm -rf $(top_srcdir)/autom4te.cache
4535+ -rm -f Makefile
4536+maintainer-clean-am: distclean-am maintainer-clean-generic
4537+
4538+mostlyclean: mostlyclean-recursive
4539+
4540+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
4541+
4542+pdf: pdf-recursive
4543+
4544+pdf-am:
4545+
4546+ps: ps-recursive
4547+
4548+ps-am:
4549+
4550+uninstall-am: uninstall-info-am
4551+
4552+uninstall-info: uninstall-info-recursive
4553+
4554+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
4555+ check-am clean clean-generic clean-libtool clean-recursive \
4556+ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
4557+ dist-hook dist-shar dist-tarZ dist-zip distcheck distclean \
4558+ distclean-generic distclean-hdr distclean-libtool \
4559+ distclean-recursive distclean-tags distcleancheck distdir \
4560+ distuninstallcheck dvi dvi-am html html-am info info-am \
4561+ install install-am install-data install-data-am install-exec \
4562+ install-exec-am install-info install-info-am install-man \
4563+ install-strip installcheck installcheck-am installdirs \
4564+ installdirs-am maintainer-clean maintainer-clean-generic \
4565+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
4566+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
4567+ tags tags-recursive uninstall uninstall-am uninstall-info-am
4568+
4569+
4570+linked_include_sources:
4571+ cd include; $(MAKE) link_sources
4572+ echo timestamp > linked_include_sources
4573+
4574+linked_client_sources: @linked_client_targets@
4575+ cd client; $(MAKE) link_sources
4576+ echo timestamp > linked_client_sources
4577+
4578+linked_libmysql_sources:
4579+ cd libmysql; $(MAKE) link_sources
4580+ echo timestamp > linked_libmysql_sources
4581+
4582+linked_libmysql_r_sources: linked_libmysql_sources
4583+ cd libmysql_r; $(MAKE) link_sources
4584+ echo timestamp > linked_libmysql_r_sources
4585+
4586+linked_libmysqld_sources:
4587+ cd libmysqld; $(MAKE) link_sources
4588+ echo timestamp > linked_libmysqld_sources
4589+
4590+linked_libmysqldex_sources:
4591+ cd libmysqld/examples; $(MAKE) link_sources
4592+ echo timestamp > linked_libmysqldex_sources
4593+
4594+linked_netware_sources:
4595+ cd @netware_dir@; $(MAKE) link_sources
4596+ echo timestamp > linked_netware_sources
4597+
4598+linked_server_sources:
4599+ cd sql; $(MAKE) link_sources
4600+ echo timestamp > linked_server_sources
4601+
4602+# Create permission databases
4603+init-db: all
4604+ $(top_builddir)/scripts/mysql_install_db
4605+
4606+bin-dist: all
4607+ $(top_builddir)/scripts/make_binary_distribution @MAKE_BINARY_DISTRIBUTION_OPTIONS@
4608+
4609+# Remove BK's "SCCS" subdirectories from source distribution
4610+# Create initial database files for Windows installations.
4611+dist-hook:
4612+ rm -rf `find $(distdir) -type d -name SCCS -print`
4613+ rm -f `find $(distdir) -type l -print`
4614+ mkdir -p $(distdir)/win
4615+ scripts/mysql_install_db --no-defaults --windows \
4616+ --basedir=$(top_builddir) \
4617+ --datadir=$(distdir)/win/data \
4618+ --srcdir=$(top_srcdir)
4619+
4620+tags:
4621+ support-files/build-tags
4622+
4623+.PHONY: init-db bin-dist \
4624+ test test-force test-full test-force-full test-force-mem \
4625+ test-pl test-force-pl test-full-pl test-force-full-pl test-force-pl-mem \
4626+ test-ps test-ns test-ext-funcs test-ext \
4627+ test-fast test-fast-cursor test-fast-view test-fast-prepare \
4628+ test-full-qa
4629+
4630+# Target 'test' will run the regression test suite using the built server.
4631+#
4632+# If you are running in a shared environment, users can avoid clashing
4633+# port numbers by setting individual small numbers 1-100 to the
4634+# environment variable MTR_BUILD_THREAD. The script "mysql-test-run"
4635+# will then calculate the various port numbers it needs from this,
4636+# making sure each user use different ports.
4637+
4638+test-ps:
4639+ cd mysql-test ; \
4640+ @PERL@ ./mysql-test-run.pl $(force) $(mem) --ps-protocol
4641+
4642+test-ns:
4643+ cd mysql-test ; \
4644+ @PERL@ ./mysql-test-run.pl $(force) $(mem)
4645+
4646+test: test-ns test-ps
4647+
4648+# To ease script-writing, although in 5.0 it is identical to 'test'
4649+test-full: test
4650+
4651+test-force:
4652+ $(MAKE) force=--force test
4653+
4654+test-force-full:
4655+ $(MAKE) force=--force test-full
4656+
4657+#used by autopush.pl to run memory based tests
4658+test-force-mem:
4659+ $(MAKE) force=--force mem=--mem test
4660+
4661+test-bt:
4662+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
4663+ @PERL@ ./mysql-test-run.pl --force --comment=normal --report-features
4664+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
4665+ @PERL@ ./mysql-test-run.pl --force --comment=ps --ps-protocol
4666+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
4667+ @PERL@ ./mysql-test-run.pl --force --comment=funcs1_ps --ps-protocol --suite=funcs_1
4668+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
4669+ @PERL@ ./mysql-test-run.pl --force --comment=funcs2 --suite=funcs_2
4670+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
4671+ @PERL@ ./mysql-test-run.pl --force --comment=rowlock --suite=row_lock
4672+
4673+test-bt-debug:
4674+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
4675+ @PERL@ ./mysql-test-run.pl --force --comment=debug --report-features
4676+
4677+# Keep these for a while
4678+test-pl: test
4679+test-full-pl: test-full
4680+test-force-pl: test-force
4681+test-force-pl-mem: test-force-mem
4682+test-force-full-pl: test-force-full
4683+
4684+test-ext-funcs:
4685+ cd mysql-test ; \
4686+ @PERL@ ./mysql-test-run.pl --force --suite=funcs_1 ; \
4687+ @PERL@ ./mysql-test-run.pl --force --suite=funcs_2
4688+
4689+test-ext: test-ext-funcs
4690+
4691+test-fast:
4692+ cd mysql-test ; \
4693+ @PERL@ ./mysql-test-run.pl $(subset) --force --skip-ndb --skip-innodb --skip-im --skip-rpl ; \
4694+ @PERL@ ./mysql-test-run.pl $(subset) --force --suite=funcs_1 --do-test=myisam
4695+
4696+test-fast-view:
4697+ $(MAKE) subset=--view-protocol test-fast
4698+
4699+test-fast-cursor:
4700+ $(MAKE) subset=--cursor-protocol test-fast
4701+
4702+test-fast-prepare:
4703+ $(MAKE) subset=--ps-protocol test-fast
4704+
4705+test-full-qa:
4706+ $(MAKE) force=--force test-pl \
4707+ test-ext test-fast-view \
4708+ test-fast-cursor
4709+
4710+# Don't update the files from bitkeeper
4711+%::SCCS/s.%
4712+# Tell versions [3.59,3.63) of GNU make to not export all variables.
4713+# Otherwise a system limit (for SysV at least) may be exceeded.
4714+.NOEXPORT:
4715
4716=== added directory 'mysql-source/SSL'
4717=== added file 'mysql-source/SSL/Makefile.am'
4718--- mysql-source/SSL/Makefile.am 1970-01-01 00:00:00 +0000
4719+++ mysql-source/SSL/Makefile.am 2010-01-14 13:03:27 +0000
4720@@ -0,0 +1,23 @@
4721+# Copyright (C) 2003, 2006 MySQL AB
4722+#
4723+# This program is free software; you can redistribute it and/or modify
4724+# it under the terms of the GNU General Public License as published by
4725+# the Free Software Foundation; version 2 of the License.
4726+#
4727+# This program is distributed in the hope that it will be useful,
4728+# but WITHOUT ANY WARRANTY; without even the implied warranty of
4729+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4730+# GNU General Public License for more details.
4731+#
4732+# You should have received a copy of the GNU General Public License
4733+# along with this program; if not, write to the Free Software
4734+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
4735+
4736+## Process this file with automake to create Makefile.in
4737+
4738+EXTRA_DIST= NOTES cacert.pem client-cert.pem client-key.pem \
4739+ run-client run-server server-cert.pem \
4740+ server-key.pem
4741+
4742+# Don't update the files from bitkeeper
4743+%::SCCS/s.%
4744
4745=== added file 'mysql-source/SSL/Makefile.in'
4746--- mysql-source/SSL/Makefile.in 1970-01-01 00:00:00 +0000
4747+++ mysql-source/SSL/Makefile.in 2010-01-14 13:03:27 +0000
4748@@ -0,0 +1,515 @@
4749+# Makefile.in generated by automake 1.9.6 from Makefile.am.
4750+# @configure_input@
4751+
4752+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
4753+# 2003, 2004, 2005 Free Software Foundation, Inc.
4754+# This Makefile.in is free software; the Free Software Foundation
4755+# gives unlimited permission to copy and/or distribute it,
4756+# with or without modifications, as long as this notice is preserved.
4757+
4758+# This program is distributed in the hope that it will be useful,
4759+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
4760+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
4761+# PARTICULAR PURPOSE.
4762+
4763+@SET_MAKE@
4764+
4765+# Copyright (C) 2003, 2006 MySQL AB
4766+#
4767+# This program is free software; you can redistribute it and/or modify
4768+# it under the terms of the GNU General Public License as published by
4769+# the Free Software Foundation; version 2 of the License.
4770+#
4771+# This program is distributed in the hope that it will be useful,
4772+# but WITHOUT ANY WARRANTY; without even the implied warranty of
4773+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4774+# GNU General Public License for more details.
4775+#
4776+# You should have received a copy of the GNU General Public License
4777+# along with this program; if not, write to the Free Software
4778+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
4779+srcdir = @srcdir@
4780+top_srcdir = @top_srcdir@
4781+VPATH = @srcdir@
4782+pkgdatadir = $(datadir)/@PACKAGE@
4783+pkglibdir = $(libdir)/@PACKAGE@
4784+pkgincludedir = $(includedir)/@PACKAGE@
4785+top_builddir = ..
4786+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
4787+INSTALL = @INSTALL@
4788+install_sh_DATA = $(install_sh) -c -m 644
4789+install_sh_PROGRAM = $(install_sh) -c
4790+install_sh_SCRIPT = $(install_sh) -c
4791+INSTALL_HEADER = $(INSTALL_DATA)
4792+transform = $(program_transform_name)
4793+NORMAL_INSTALL = :
4794+PRE_INSTALL = :
4795+POST_INSTALL = :
4796+NORMAL_UNINSTALL = :
4797+PRE_UNINSTALL = :
4798+POST_UNINSTALL = :
4799+build_triplet = @build@
4800+host_triplet = @host@
4801+target_triplet = @target@
4802+subdir = SSL
4803+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
4804+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
4805+am__aclocal_m4_deps = $(top_srcdir)/config/ac-macros/alloca.m4 \
4806+ $(top_srcdir)/config/ac-macros/check_cpu.m4 \
4807+ $(top_srcdir)/config/ac-macros/character_sets.m4 \
4808+ $(top_srcdir)/config/ac-macros/compiler_flag.m4 \
4809+ $(top_srcdir)/config/ac-macros/ha_archive.m4 \
4810+ $(top_srcdir)/config/ac-macros/ha_berkeley.m4 \
4811+ $(top_srcdir)/config/ac-macros/ha_blackhole.m4 \
4812+ $(top_srcdir)/config/ac-macros/ha_example.m4 \
4813+ $(top_srcdir)/config/ac-macros/ha_federated.m4 \
4814+ $(top_srcdir)/config/ac-macros/ha_innodb.m4 \
4815+ $(top_srcdir)/config/ac-macros/ha_ndbcluster.m4 \
4816+ $(top_srcdir)/config/ac-macros/ha_tina.m4 \
4817+ $(top_srcdir)/config/ac-macros/large_file.m4 \
4818+ $(top_srcdir)/config/ac-macros/misc.m4 \
4819+ $(top_srcdir)/config/ac-macros/openssl.m4 \
4820+ $(top_srcdir)/config/ac-macros/readline.m4 \
4821+ $(top_srcdir)/config/ac-macros/yassl.m4 \
4822+ $(top_srcdir)/config/ac-macros/zlib.m4 \
4823+ $(top_srcdir)/configure.in
4824+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
4825+ $(ACLOCAL_M4)
4826+mkinstalldirs = $(install_sh) -d
4827+CONFIG_HEADER = $(top_builddir)/config.h
4828+CONFIG_CLEAN_FILES =
4829+SOURCES =
4830+DIST_SOURCES =
4831+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
4832+ACLOCAL = @ACLOCAL@
4833+ALLOCA = @ALLOCA@
4834+AMDEP_FALSE = @AMDEP_FALSE@
4835+AMDEP_TRUE = @AMDEP_TRUE@
4836+AMTAR = @AMTAR@
4837+AR = @AR@
4838+ARFLAGS = @ARFLAGS@
4839+AS = @AS@
4840+ASSEMBLER_FALSE = @ASSEMBLER_FALSE@
4841+ASSEMBLER_TRUE = @ASSEMBLER_TRUE@
4842+ASSEMBLER_sparc32_FALSE = @ASSEMBLER_sparc32_FALSE@
4843+ASSEMBLER_sparc32_TRUE = @ASSEMBLER_sparc32_TRUE@
4844+ASSEMBLER_sparc64_FALSE = @ASSEMBLER_sparc64_FALSE@
4845+ASSEMBLER_sparc64_TRUE = @ASSEMBLER_sparc64_TRUE@
4846+ASSEMBLER_x86_FALSE = @ASSEMBLER_x86_FALSE@
4847+ASSEMBLER_x86_TRUE = @ASSEMBLER_x86_TRUE@
4848+AUTOCONF = @AUTOCONF@
4849+AUTOHEADER = @AUTOHEADER@
4850+AUTOMAKE = @AUTOMAKE@
4851+AVAILABLE_LANGUAGES = @AVAILABLE_LANGUAGES@
4852+AWK = @AWK@
4853+CC = @CC@
4854+CCAS = @CCAS@
4855+CCASFLAGS = @CCASFLAGS@
4856+CCDEPMODE = @CCDEPMODE@
4857+CC_VERSION = @CC_VERSION@
4858+CFLAGS = @CFLAGS@
4859+CHECK_PID = @CHECK_PID@
4860+CHMOD = @CHMOD@
4861+CLIENT_EXTRA_LDFLAGS = @CLIENT_EXTRA_LDFLAGS@
4862+CLIENT_LIBS = @CLIENT_LIBS@
4863+CMP = @CMP@
4864+COMPILATION_COMMENT = @COMPILATION_COMMENT@
4865+COMPILE_PSTACK_FALSE = @COMPILE_PSTACK_FALSE@
4866+COMPILE_PSTACK_TRUE = @COMPILE_PSTACK_TRUE@
4867+CONF_COMMAND = @CONF_COMMAND@
4868+CP = @CP@
4869+CPP = @CPP@
4870+CPPFLAGS = @CPPFLAGS@
4871+CXX = @CXX@
4872+CXXCPP = @CXXCPP@
4873+CXXDEPMODE = @CXXDEPMODE@
4874+CXXFLAGS = @CXXFLAGS@
4875+CXXLDFLAGS = @CXXLDFLAGS@
4876+CXX_VERSION = @CXX_VERSION@
4877+CYGPATH_W = @CYGPATH_W@
4878+DARWIN_MWCC_FALSE = @DARWIN_MWCC_FALSE@
4879+DARWIN_MWCC_TRUE = @DARWIN_MWCC_TRUE@
4880+DEFS = @DEFS@
4881+DEPDIR = @DEPDIR@
4882+DOT_FRM_VERSION = @DOT_FRM_VERSION@
4883+DOXYGEN = @DOXYGEN@
4884+DVIS = @DVIS@
4885+ECHO = @ECHO@
4886+ECHO_C = @ECHO_C@
4887+ECHO_N = @ECHO_N@
4888+ECHO_T = @ECHO_T@
4889+EGREP = @EGREP@
4890+EXEEXT = @EXEEXT@
4891+F77 = @F77@
4892+FFLAGS = @FFLAGS@
4893+FIND_PROC = @FIND_PROC@
4894+GETCONF = @GETCONF@
4895+GXX = @GXX@
4896+HAVE_NDBCLUSTER_DB_FALSE = @HAVE_NDBCLUSTER_DB_FALSE@
4897+HAVE_NDBCLUSTER_DB_TRUE = @HAVE_NDBCLUSTER_DB_TRUE@
4898+HAVE_NETWARE_FALSE = @HAVE_NETWARE_FALSE@
4899+HAVE_NETWARE_TRUE = @HAVE_NETWARE_TRUE@
4900+HAVE_YASSL_FALSE = @HAVE_YASSL_FALSE@
4901+HAVE_YASSL_TRUE = @HAVE_YASSL_TRUE@
4902+HOSTNAME = @HOSTNAME@
4903+ICHECK = @ICHECK@
4904+INSTALL_DATA = @INSTALL_DATA@
4905+INSTALL_PROGRAM = @INSTALL_PROGRAM@
4906+INSTALL_SCRIPT = @INSTALL_SCRIPT@
4907+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
4908+KILL = @KILL@
4909+LD = @LD@
4910+LDFLAGS = @LDFLAGS@
4911+LD_VERSION_SCRIPT = @LD_VERSION_SCRIPT@
4912+LIBDL = @LIBDL@
4913+LIBEDIT_LOBJECTS = @LIBEDIT_LOBJECTS@
4914+LIBOBJS = @LIBOBJS@
4915+LIBS = @LIBS@
4916+LIBTOOL = @LIBTOOL@
4917+LIB_EXTRA_CCFLAGS = @LIB_EXTRA_CCFLAGS@
4918+LM_CFLAGS = @LM_CFLAGS@
4919+LN = @LN@
4920+LN_CP_F = @LN_CP_F@
4921+LN_S = @LN_S@
4922+LTLIBOBJS = @LTLIBOBJS@
4923+MACHINE_TYPE = @MACHINE_TYPE@
4924+MAKEINDEX = @MAKEINDEX@
4925+MAKEINFO = @MAKEINFO@
4926+MAKE_BINARY_DISTRIBUTION_OPTIONS = @MAKE_BINARY_DISTRIBUTION_OPTIONS@
4927+MAKE_SHELL = @MAKE_SHELL@
4928+MV = @MV@
4929+MYSQLD_DEFAULT_SWITCHES = @MYSQLD_DEFAULT_SWITCHES@
4930+MYSQLD_EXTRA_LDFLAGS = @MYSQLD_EXTRA_LDFLAGS@
4931+MYSQLD_EXTRA_LIBS = @MYSQLD_EXTRA_LIBS@
4932+MYSQLD_USER = @MYSQLD_USER@
4933+MYSQL_BASE_VERSION = @MYSQL_BASE_VERSION@
4934+MYSQL_NO_DASH_VERSION = @MYSQL_NO_DASH_VERSION@
4935+MYSQL_PREVIOUS_BASE_VERSION = @MYSQL_PREVIOUS_BASE_VERSION@
4936+MYSQL_SERVER_SUFFIX = @MYSQL_SERVER_SUFFIX@
4937+MYSQL_TCP_PORT = @MYSQL_TCP_PORT@
4938+MYSQL_TCP_PORT_DEFAULT = @MYSQL_TCP_PORT_DEFAULT@
4939+MYSQL_UNIX_ADDR = @MYSQL_UNIX_ADDR@
4940+MYSQL_VERSION_ID = @MYSQL_VERSION_ID@
4941+NDB_DEFS = @NDB_DEFS@
4942+NDB_LD_VERSION_SCRIPT = @NDB_LD_VERSION_SCRIPT@
4943+NDB_SCI_INCLUDES = @NDB_SCI_INCLUDES@
4944+NDB_SCI_LIBS = @NDB_SCI_LIBS@
4945+NDB_SHARED_LIB_MAJOR_VERSION = @NDB_SHARED_LIB_MAJOR_VERSION@
4946+NDB_SHARED_LIB_VERSION = @NDB_SHARED_LIB_VERSION@
4947+NDB_SIZEOF_CHAR = @NDB_SIZEOF_CHAR@
4948+NDB_SIZEOF_CHARP = @NDB_SIZEOF_CHARP@
4949+NDB_SIZEOF_INT = @NDB_SIZEOF_INT@
4950+NDB_SIZEOF_LONG = @NDB_SIZEOF_LONG@
4951+NDB_SIZEOF_LONG_LONG = @NDB_SIZEOF_LONG_LONG@
4952+NDB_SIZEOF_SHORT = @NDB_SIZEOF_SHORT@
4953+NDB_VERSION_BUILD = @NDB_VERSION_BUILD@
4954+NDB_VERSION_MAJOR = @NDB_VERSION_MAJOR@
4955+NDB_VERSION_MINOR = @NDB_VERSION_MINOR@
4956+NDB_VERSION_STATUS = @NDB_VERSION_STATUS@
4957+NM = @NM@
4958+NOINST_LDFLAGS = @NOINST_LDFLAGS@
4959+NON_THREADED_LIBS = @NON_THREADED_LIBS@
4960+OBJEXT = @OBJEXT@
4961+PACKAGE = @PACKAGE@
4962+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
4963+PACKAGE_NAME = @PACKAGE_NAME@
4964+PACKAGE_STRING = @PACKAGE_STRING@
4965+PACKAGE_TARNAME = @PACKAGE_TARNAME@
4966+PACKAGE_VERSION = @PACKAGE_VERSION@
4967+PATH_SEPARATOR = @PATH_SEPARATOR@
4968+PDFLATEX = @PDFLATEX@
4969+PDFMANUAL = @PDFMANUAL@
4970+PERL = @PERL@
4971+PERL5 = @PERL5@
4972+PROTOCOL_VERSION = @PROTOCOL_VERSION@
4973+PS = @PS@
4974+RANLIB = @RANLIB@
4975+RM = @RM@
4976+SAVE_ASFLAGS = @SAVE_ASFLAGS@
4977+SAVE_CFLAGS = @SAVE_CFLAGS@
4978+SAVE_CXXFLAGS = @SAVE_CXXFLAGS@
4979+SAVE_CXXLDFLAGS = @SAVE_CXXLDFLAGS@
4980+SAVE_LDFLAGS = @SAVE_LDFLAGS@
4981+SED = @SED@
4982+SET_MAKE = @SET_MAKE@
4983+SHARED_LIB_MAJOR_VERSION = @SHARED_LIB_MAJOR_VERSION@
4984+SHARED_LIB_VERSION = @SHARED_LIB_VERSION@
4985+SHELL = @SHELL@
4986+STATIC_NSS_FLAGS = @STATIC_NSS_FLAGS@
4987+STRIP = @STRIP@
4988+SYSTEM_TYPE = @SYSTEM_TYPE@
4989+TAR = @TAR@
4990+TARGET_LINUX = @TARGET_LINUX@
4991+TERMCAP_LIB = @TERMCAP_LIB@
4992+THREAD_LOBJECTS = @THREAD_LOBJECTS@
4993+VERSION = @VERSION@
4994+WRAPLIBS = @WRAPLIBS@
4995+YACC = @YACC@
4996+ZLIB_DEPS = @ZLIB_DEPS@
4997+ZLIB_INCLUDES = @ZLIB_INCLUDES@
4998+ZLIB_LIBS = @ZLIB_LIBS@
4999+ac_ct_AR = @ac_ct_AR@
5000+ac_ct_CC = @ac_ct_CC@
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches