mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
4dabfa5de7
into mysql.com:/home/kent/bk/main/mysql-5.1 BUILD/Makefile.am: Auto merged BitKeeper/deleted/.del-ArrayFifoList.hpp~7036ae04dd7e7bd2: Auto merged BitKeeper/deleted/.del-ArrayList.hpp~44695d09b1a02179: Auto merged BitKeeper/deleted/.del-DbtupLCP.cpp~855b1ed3fbc86a42: Auto merged BitKeeper/deleted/.del-DbtupSystemRestart.cpp~15b54d7e4e75d2d: Auto merged BitKeeper/deleted/.del-DbtupUndoLog.cpp~5a2ef6e86b1404e9: Auto merged Makefile.am: Auto merged BitKeeper/deleted/.del-Makefile.am~2: Auto merged BitKeeper/deleted/.del-Makefile.am~ab5c84d46412dc2e: Auto merged BitKeeper/deleted/.del-Makefile.am~abb265028eb9b6a7: Auto merged BitKeeper/deleted/.del-Makefile.am~de166d6fcac3b9b6: Auto merged BitKeeper/deleted/.del-Makefile.am~e5b911533dad2713: Auto merged BitKeeper/deleted/.del-Makefile.am~ead19441cc5ff35c: Auto merged BitKeeper/deleted/.del-Makefile.am~f87185e232d7c4f: Auto merged BitKeeper/deleted/.del-Makefile.in: Auto merged BitKeeper/deleted/.del-MemoryChannelOSE.hpp: Auto merged BitKeeper/deleted/.del-MetaData.cpp~146ae9865dd35829: Auto merged BitKeeper/deleted/.del-MetaData.hpp~538342afcd8ac53c: Auto merged BitKeeper/deleted/.del-NdbCondition.c~ad83464328ab37af: Auto merged BitKeeper/deleted/.del-NdbCondition.c~ee56562abdd718cf: Auto merged BitKeeper/deleted/.del-NdbConditionOSE.h~455dd2c29c2e6344: Auto merged BitKeeper/deleted/.del-NdbDaemon.c~3b8101f376b28df: Auto merged BitKeeper/deleted/.del-NdbEnv.c~207f9ce9754c9e8a: Auto merged BitKeeper/deleted/.del-NdbEnv.c~bb6fe7572d45288a: Auto merged BitKeeper/deleted/.del-NdbErrHnd.cpp: Auto merged BitKeeper/deleted/.del-NdbHost.c~2c29816c77396d7b: Auto merged BitKeeper/deleted/.del-NdbHost.c~cf18d6b3c825180c: Auto merged BitKeeper/deleted/.del-NdbMem.c~6285b159985d46da: Auto merged BitKeeper/deleted/.del-NdbMem.c~6c2b317c1ce230ab: Auto merged BitKeeper/deleted/.del-NdbMem_SoftOse.cpp~9c61e311ec168d44: Auto merged BitKeeper/deleted/.del-NdbMutex.c~768131269bccca10: Auto merged BitKeeper/deleted/.del-NdbMutex.c~f4bdd19be08b84ab: Auto merged BitKeeper/deleted/.del-NdbOut.cpp~8caa99a0d729540c: Auto merged BitKeeper/deleted/.del-NdbSleep.c~b643ea3e7103eb62: Auto merged BitKeeper/deleted/.del-NdbSleep.c~b88fbc5b140de10d: Auto merged BitKeeper/deleted/.del-NdbTCP.c~1e9f416992352f6d: Auto merged BitKeeper/deleted/.del-NdbTCP.c~b09cdcbef3ea2c57: Auto merged BitKeeper/deleted/.del-NdbThread.c~2fe1fa5f47801772: Auto merged BitKeeper/deleted/.del-NdbThread.c~fe71a67b5c3a4724: Auto merged BitKeeper/deleted/.del-NdbTick.c~aa6385567216509d: Auto merged BitKeeper/deleted/.del-NdbTick.c~b76feba2cf1493d1: Auto merged BitKeeper/deleted/.del-OSE_Receiver.cpp: Auto merged BitKeeper/deleted/.del-OSE_Receiver.hpp: Auto merged BitKeeper/deleted/.del-OSE_Signals.hpp: Auto merged BitKeeper/deleted/.del-OSE_Transporter.cpp: Auto merged BitKeeper/deleted/.del-OSE_Transporter.hpp: Auto merged BitKeeper/deleted/.del-TraceNdbApi.hpp~7a7f0ae5b70358bc: Auto merged BitKeeper/deleted/.del-VerifyNdbApi.hpp~f417f78f7cd05935: Auto merged BitKeeper/deleted/.del-bcd.h~81fbfcc1530534da: Auto merged BitKeeper/deleted/.del-config-os2.h~a16b51851ddd317b: Auto merged BitKeeper/deleted/.del-dbGenerator.c~7509c19f70cad0bf: Auto merged BitKeeper/deleted/.del-dbGenerator.h~63f1aeb98260bcb7: Auto merged BitKeeper/deleted/.del-dbGenerator.h~e1aaa6725999d458: Auto merged BitKeeper/deleted/.del-dbPopulate.c~5dcff1c99783d83b: Auto merged BitKeeper/deleted/.del-dbPopulate.h~229a894b59d4da73: Auto merged BitKeeper/deleted/.del-ha_berkeley.cc: Auto merged BitKeeper/deleted/.del-ha_berkeley.h: Auto merged BitKeeper/deleted/.del-localDbPrepare.c~33a2c46afc8fac9a: Auto merged BitKeeper/deleted/.del-macros.h~58097d584e29b5df: Auto merged BitKeeper/deleted/.del-macros.h~742871fab0681964: Auto merged BitKeeper/deleted/.del-mainGenerator.c~2d1c8016f72b2517: Auto merged BitKeeper/deleted/.del-mainPopulate.c~37def9a44980b8ec: Auto merged BitKeeper/deleted/.del-mgmapi_logevent.cpp~f1e7cf3e70edc4: Auto merged BitKeeper/deleted/.del-mmslist.cpp: Auto merged BitKeeper/deleted/.del-my_lread.c: Auto merged BitKeeper/deleted/.del-my_lwrite.c: Auto merged BitKeeper/deleted/.del-my_os2cond.c~e3b520af1c371bb5: Auto merged BitKeeper/deleted/.del-my_os2dirsrch.c~4e2479b2abb2eb5a: Auto merged BitKeeper/deleted/.del-my_os2dirsrch.h~5011cbc657537d0: Auto merged BitKeeper/deleted/.del-my_os2dlfcn.c~6d94b488717683dd: Auto merged BitKeeper/deleted/.del-my_os2dlfcn.h0~eae8edb8555eff87: Auto merged BitKeeper/deleted/.del-my_os2file64.c~251fb8a1e950c31b: Auto merged BitKeeper/deleted/.del-my_os2thread.c~65dca991548cec2a: Auto merged BitKeeper/deleted/.del-my_os2tls.c~58ade7a0f70ad5ea: Auto merged BitKeeper/deleted/.del-mysqlmanager-pwgen.c~d8f5f91ec54432b9: Auto merged BitKeeper/deleted/.del-mysqlmanager.c~e97636d71145a0b: Auto merged BitKeeper/deleted/.del-mysqlmanagerc.c~4f6e3499e68508f6: Auto merged BitKeeper/deleted/.del-ndb_error.hpp~24468bb7f20a0b41: Auto merged BitKeeper/deleted/.del-ndb_error.hpp~45a2fef922beae3: Auto merged BitKeeper/deleted/.del-ndb_schema.hpp~de9c21185d6bfe4e: Auto merged BitKeeper/deleted/.del-ndbapi_async.cpp~319189569fb659ec: Auto merged BitKeeper/deleted/.del-ndbapi_async1.cpp~2995dac9b963a0d: Auto merged BitKeeper/deleted/.del-ndbapi_event.cpp~c5d949802966180: Auto merged BitKeeper/deleted/.del-ndbapi_retries.cpp~7301496d8c1c310a: Auto merged BitKeeper/deleted/.del-ndbapi_scan.cpp~14ed2aa9a5d9e597: Auto merged BitKeeper/deleted/.del-ndbapi_simple.cpp~80962179f3c2f5b8: Auto merged BitKeeper/deleted/.del-ndbapi_simple_index.cpp~4b95a4d71808b5b6: Auto merged BitKeeper/deleted/.del-print-limit-table~b8e808031daa3758: Auto merged BitKeeper/deleted/.del-raid.cc~488f5fa6538394e1: Auto merged BitKeeper/deleted/.del-raid.h~2d2503a66b128ac6: Auto merged BitKeeper/deleted/.del-raid2.c~fe7aea5fb4b9748c: Auto merged BitKeeper/deleted/.del-sql_manager.h: Auto merged BitKeeper/deleted/.del-testData.h~696038ea2623a90b: Auto merged BitKeeper/deleted/.del-testData.h~898b71d7c639319e: Auto merged BitKeeper/deleted/.del-testDefinitions.h~f18a4553579a3725: Auto merged BitKeeper/deleted/.del-userHandle.h~3275bb415e1ca2c2: Auto merged BitKeeper/deleted/.del-userHandle.h~ec22dc7a7ed2f81b: Auto merged BitKeeper/deleted/.del-userInterface.cpp~82ee612ab14b3d48: Auto merged BitKeeper/deleted/.del-userInterface.c~92a20032f7d1e91: Auto merged BitKeeper/deleted/.del-userInterface.h~1f76ad2f28b283fd: Auto merged BitKeeper/deleted/.del-userInterface.h~49139f029bbdaabc: Auto merged BitKeeper/deleted/.del-userTransaction.c~438012ecc761b776: Auto merged BitKeeper/deleted/.del-userTransaction.c~f50661b4f54b0bdd: Auto merged BitKeeper/deleted/.del-utv.h~f64af026b9705ebb: Auto merged BitKeeper/deleted/.del-vcdrfunc.h~85803875180684cd: Auto merged BitKeeper/deleted/.del-waiter.cpp~b188e4bfddf2cf98: Auto merged Docs/Makefile.am: Auto merged client/Makefile.am: Auto merged client/client_priv.h: Auto merged client/get_password.c: Auto merged client/mysql.cc: Auto merged client/mysql_upgrade.c: Auto merged client/mysqladmin.cc: Auto merged client/mysqlbinlog.cc: Auto merged client/mysqlcheck.c: Auto merged client/mysqldump.c: Auto merged client/mysqlimport.c: Auto merged client/mysqlshow.c: Auto merged client/mysqltest.c: Auto merged dbug/Makefile.am: Auto merged extra/Makefile.am: Auto merged extra/comp_err.c: Auto merged extra/perror.c: Auto merged extra/replace.c: Auto merged extra/resolveip.c: Auto merged include/Makefile.am: Auto merged include/base64.h: Auto merged include/config-netware.h: Auto merged include/config-win.h: Auto merged include/decimal.h: Auto merged include/errmsg.h: Auto merged include/ft_global.h: Auto merged include/heap.h: Auto merged include/m_ctype.h: Auto merged include/m_string.h: Auto merged include/my_base.h: Auto merged include/my_bitmap.h: Auto merged include/my_dbug.h: Auto merged include/my_global.h: Auto merged include/my_net.h: Auto merged include/my_no_pthread.h: Auto merged include/my_nosys.h: Auto merged include/my_pthread.h: Auto merged include/my_sys.h: Auto merged include/my_time.h: Auto merged include/my_tree.h: Auto merged include/my_xml.h: Auto merged include/myisam.h: Auto merged include/myisammrg.h: Auto merged include/mysql.h: Auto merged include/mysql_com.h: Auto merged include/mysys_err.h: Auto merged include/queues.h: Auto merged include/thr_alarm.h: Auto merged include/thr_lock.h: Auto merged include/violite.h: Auto merged libmysqld/Makefile.am: Auto merged libmysqld/emb_qcache.cc: Auto merged libmysqld/embedded_priv.h: Auto merged libmysqld/examples/Makefile.am: Auto merged libmysqld/libmysqld.c: Auto merged mysql-test/Makefile.am: Auto merged mysys/Makefile.am: Auto merged mysys/array.c: Auto merged mysys/base64.c: Auto merged mysys/charset-def.c: Auto merged mysys/default.c: Auto merged mysys/default_modify.c: Auto merged mysys/errors.c: Auto merged mysys/hash.c: Auto merged mysys/mf_dirname.c: Auto merged mysys/mf_format.c: Auto merged mysys/mf_iocache.c: Auto merged mysys/mf_iocache2.c: Auto merged mysys/mf_keycache.c: Auto merged mysys/mf_pack.c: Auto merged mysys/mf_path.c: Auto merged mysys/mf_tempdir.c: Auto merged mysys/mf_tempfile.c: Auto merged mysys/my_access.c: Auto merged mysys/my_alloc.c: Auto merged mysys/my_append.c: Auto merged mysys/my_bit.c: Auto merged mysys/my_bitmap.c: Auto merged mysys/my_clock.c: Auto merged mysys/my_compress.c: Auto merged mysys/my_copy.c: Auto merged mysys/my_create.c: Auto merged mysys/my_dup.c: Auto merged mysys/my_error.c: Auto merged mysys/my_file.c: Auto merged mysys/my_gethostbyname.c: Auto merged mysys/my_getopt.c: Auto merged mysys/my_getwd.c: Auto merged mysys/my_handler.c: Auto merged mysys/my_init.c: Auto merged mysys/my_lib.c: Auto merged mysys/my_lock.c: Auto merged mysys/my_malloc.c: Auto merged mysys/my_mkdir.c: Auto merged mysys/my_mmap.c: Auto merged mysys/my_net.c: Auto merged mysys/my_once.c: Auto merged mysys/my_open.c: Auto merged mysys/my_pread.c: Auto merged mysys/my_pthread.c: Auto merged mysys/my_redel.c: Auto merged mysys/my_rename.c: Auto merged mysys/my_seek.c: Auto merged mysys/my_sleep.c: Auto merged mysys/my_static.c: Auto merged mysys/my_symlink2.c: Auto merged mysys/my_thr_init.c: Auto merged mysys/mysys_priv.h: Auto merged mysys/ptr_cmp.c: Auto merged mysys/queues.c: Auto merged mysys/safemalloc.c: Auto merged mysys/string.c: Auto merged mysys/test_dir.c: Auto merged mysys/testhash.c: Auto merged mysys/thr_alarm.c: Auto merged mysys/thr_lock.c: Auto merged mysys/thr_mutex.c: Auto merged regex/Makefile.am: Auto merged scripts/Makefile.am: Auto merged server-tools/instance-manager/Makefile.am: Auto merged server-tools/instance-manager/buffer.cc: Auto merged server-tools/instance-manager/command.cc: Auto merged server-tools/instance-manager/command.h: Auto merged server-tools/instance-manager/commands.cc: Auto merged server-tools/instance-manager/commands.h: Auto merged server-tools/instance-manager/guardian.cc: Auto merged server-tools/instance-manager/guardian.h: Auto merged server-tools/instance-manager/instance.cc: Auto merged server-tools/instance-manager/instance.h: Auto merged server-tools/instance-manager/instance_map.cc: Auto merged server-tools/instance-manager/instance_map.h: Auto merged server-tools/instance-manager/instance_options.cc: Auto merged server-tools/instance-manager/instance_options.h: Auto merged server-tools/instance-manager/listener.cc: Auto merged server-tools/instance-manager/listener.h: Auto merged server-tools/instance-manager/log.cc: Auto merged server-tools/instance-manager/log.h: Auto merged server-tools/instance-manager/manager.cc: Auto merged server-tools/instance-manager/manager.h: Auto merged server-tools/instance-manager/messages.cc: Auto merged server-tools/instance-manager/mysql_connection.cc: Auto merged server-tools/instance-manager/mysql_connection.h: Auto merged server-tools/instance-manager/mysql_manager_error.h: Auto merged server-tools/instance-manager/mysqlmanager.cc: Auto merged server-tools/instance-manager/options.cc: Auto merged server-tools/instance-manager/options.h: Auto merged server-tools/instance-manager/parse.cc: Auto merged server-tools/instance-manager/parse.h: Auto merged server-tools/instance-manager/parse_output.cc: Auto merged server-tools/instance-manager/parse_output.h: Auto merged server-tools/instance-manager/priv.cc: Auto merged server-tools/instance-manager/priv.h: Auto merged server-tools/instance-manager/protocol.cc: Auto merged server-tools/instance-manager/protocol.h: Auto merged server-tools/instance-manager/thread_registry.cc: Auto merged server-tools/instance-manager/thread_registry.h: Auto merged server-tools/instance-manager/user_map.cc: Auto merged server-tools/instance-manager/user_map.h: Auto merged sql/Makefile.am: Auto merged sql/discover.cc: Auto merged sql/field.cc: Auto merged sql/field.h: Auto merged sql/field_conv.cc: Auto merged sql/filesort.cc: Auto merged sql/gen_lex_hash.cc: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/ha_ndbcluster.h: Auto merged sql/handler.cc: Auto merged sql/handler.h: Auto merged sql/hostname.cc: Auto merged sql/init.cc: Auto merged sql/item.cc: Auto merged sql/item.h: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_cmpfunc.h: Auto merged sql/item_create.cc: Auto merged sql/item_create.h: Auto merged sql/item_func.cc: Auto merged sql/item_func.h: Auto merged sql/item_geofunc.cc: Auto merged sql/item_geofunc.h: Auto merged sql/item_row.cc: Auto merged sql/item_row.h: Auto merged sql/item_strfunc.cc: Auto merged sql/item_strfunc.h: Auto merged sql/item_subselect.cc: Auto merged sql/item_subselect.h: Auto merged sql/item_sum.cc: Auto merged sql/item_sum.h: Auto merged sql/item_timefunc.cc: Auto merged sql/item_timefunc.h: Auto merged sql/item_uniq.cc: Auto merged sql/key.cc: Auto merged sql/lex.h: Auto merged sql/lex_symbol.h: Auto merged sql/lock.cc: Auto merged sql/log.cc: Auto merged sql/log_event.cc: Auto merged sql/log_event.h: Auto merged sql/my_decimal.cc: Auto merged sql/my_decimal.h: Auto merged sql/my_lock.c: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/net_serv.cc: Auto merged sql/opt_range.cc: Auto merged sql/opt_range.h: Auto merged sql/opt_sum.cc: Auto merged sql/parse_file.cc: Auto merged sql/parse_file.h: Auto merged sql/password.c: Auto merged sql/procedure.h: Auto merged sql/protocol.cc: Auto merged sql/protocol.h: Auto merged sql/records.cc: Auto merged sql/repl_failsafe.cc: Auto merged sql/set_var.cc: Auto merged sql/set_var.h: Auto merged sql/slave.cc: Auto merged sql/slave.h: Auto merged sql/sp.cc: Auto merged sql/sp.h: Auto merged sql/sp_cache.cc: Auto merged sql/sp_head.cc: Auto merged sql/sp_head.h: Auto merged sql/spatial.cc: Auto merged sql/spatial.h: Auto merged sql/sql_acl.cc: Auto merged sql/sql_acl.h: Auto merged sql/sql_analyse.cc: Auto merged sql/sql_analyse.h: Auto merged sql/sql_base.cc: Auto merged sql/sql_bitmap.h: Auto merged sql/sql_cache.cc: Auto merged sql/sql_cache.h: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_crypt.cc: Auto merged sql/sql_cursor.cc: Auto merged sql/sql_db.cc: Auto merged sql/sql_delete.cc: Auto merged sql/sql_derived.cc: Auto merged sql/sql_do.cc: Auto merged sql/sql_error.cc: Auto merged sql/sql_error.h: Auto merged sql/sql_handler.cc: Auto merged sql/sql_help.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_list.h: Auto merged sql/sql_load.cc: Auto merged sql/sql_manager.cc: Auto merged sql/sql_map.cc: Auto merged sql/sql_olap.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_rename.cc: Auto merged sql/sql_repl.cc: Auto merged sql/sql_repl.h: Auto merged sql/sql_select.cc: Auto merged sql/sql_select.h: Auto merged sql/sql_show.cc: Auto merged sql/sql_string.cc: Auto merged sql/sql_string.h: Auto merged sql/sql_table.cc: Auto merged sql/sql_test.cc: Auto merged sql/sql_trigger.cc: Auto merged sql/sql_trigger.h: Auto merged sql/sql_udf.cc: Auto merged sql/sql_union.cc: Auto merged sql/sql_update.cc: Auto merged sql/sql_view.cc: Auto merged sql-bench/Makefile.am: Auto merged sql-bench/as3ap.sh: Auto merged sql-bench/bench-count-distinct.sh: Auto merged sql-bench/bench-init.pl.sh: Auto merged sql-bench/compare-results.sh: Auto merged sql-bench/copy-db.sh: Auto merged sql/share/charsets/Index.xml: Auto merged sql/share/charsets/cp1250.xml: Auto merged sql/sql_view.h: Auto merged sql/sql_yacc.yy: Auto merged sql/stacktrace.c: Auto merged sql/stacktrace.h: Auto merged sql/strfunc.cc: Auto merged sql/structs.h: Auto merged sql/table.cc: Auto merged sql/table.h: Auto merged sql/time.cc: Auto merged sql/tztime.cc: Auto merged sql/tztime.h: Auto merged sql/udf_example.c: Auto merged sql/unireg.cc: Auto merged sql/unireg.h: Auto merged sql-bench/crash-me.sh: Auto merged sql-bench/run-all-tests.sh: Auto merged sql-bench/server-cfg.sh: Auto merged sql-bench/test-ATIS.sh: Auto merged sql-bench/test-alter-table.sh: Auto merged sql-bench/test-big-tables.sh: Auto merged sql-bench/test-connect.sh: Auto merged sql-bench/test-create.sh: Auto merged sql-bench/test-insert.sh: Auto merged sql-bench/test-select.sh: Auto merged sql-bench/test-transactions.sh: Auto merged sql-bench/test-wisconsin.sh: Auto merged sql-common/client.c: Auto merged sql-common/my_time.c: Auto merged storage/archive/ha_archive.cc: Auto merged storage/archive/ha_archive.h: Auto merged storage/blackhole/ha_blackhole.cc: Auto merged storage/blackhole/ha_blackhole.h: Auto merged storage/csv/ha_tina.cc: Auto merged storage/csv/ha_tina.h: Auto merged storage/example/ha_example.cc: Auto merged storage/example/ha_example.h: Auto merged storage/federated/ha_federated.cc: Auto merged storage/federated/ha_federated.h: Auto merged storage/heap/Makefile.am: Auto merged storage/heap/_check.c: Auto merged storage/heap/_rectest.c: Auto merged storage/heap/ha_heap.cc: Auto merged storage/heap/ha_heap.h: Auto merged storage/heap/heapdef.h: Auto merged storage/heap/hp_block.c: Auto merged storage/heap/hp_clear.c: Auto merged storage/heap/hp_close.c: Auto merged storage/heap/hp_create.c: Auto merged storage/heap/hp_delete.c: Auto merged storage/heap/hp_extra.c: Auto merged storage/heap/hp_hash.c: Auto merged storage/heap/hp_info.c: Auto merged storage/heap/hp_open.c: Auto merged storage/heap/hp_panic.c: Auto merged storage/heap/hp_rename.c: Auto merged storage/heap/hp_rfirst.c: Auto merged storage/heap/hp_rkey.c: Auto merged storage/heap/hp_rlast.c: Auto merged storage/heap/hp_rnext.c: Auto merged storage/heap/hp_rprev.c: Auto merged storage/heap/hp_rrnd.c: Auto merged storage/heap/hp_rsame.c: Auto merged storage/heap/hp_scan.c: Auto merged storage/heap/hp_static.c: Auto merged storage/heap/hp_test1.c: Auto merged storage/heap/hp_test2.c: Auto merged storage/heap/hp_update.c: Auto merged storage/heap/hp_write.c: Auto merged storage/innobase/Makefile.am: Auto merged storage/innobase/btr/Makefile.am: Auto merged storage/innobase/buf/Makefile.am: Auto merged storage/innobase/data/Makefile.am: Auto merged storage/innobase/dict/Makefile.am: Auto merged storage/innobase/dyn/Makefile.am: Auto merged storage/innobase/eval/Makefile.am: Auto merged storage/innobase/fil/Makefile.am: Auto merged storage/innobase/fsp/Makefile.am: Auto merged storage/innobase/fut/Makefile.am: Auto merged storage/innobase/ha/Makefile.am: Auto merged storage/innobase/handler/ha_innodb.cc: Auto merged storage/innobase/handler/ha_innodb.h: Auto merged storage/innobase/ibuf/Makefile.am: Auto merged storage/innobase/lock/Makefile.am: Auto merged storage/innobase/log/Makefile.am: Auto merged storage/innobase/mach/Makefile.am: Auto merged storage/innobase/mem/Makefile.am: Auto merged storage/innobase/mtr/Makefile.am: Auto merged storage/innobase/os/Makefile.am: Auto merged storage/innobase/page/Makefile.am: Auto merged storage/innobase/pars/Makefile.am: Auto merged storage/innobase/que/Makefile.am: Auto merged storage/innobase/read/Makefile.am: Auto merged storage/innobase/rem/Makefile.am: Auto merged storage/innobase/row/Makefile.am: Auto merged storage/innobase/srv/Makefile.am: Auto merged storage/innobase/sync/Makefile.am: Auto merged storage/innobase/thr/Makefile.am: Auto merged storage/innobase/trx/Makefile.am: Auto merged storage/innobase/usr/Makefile.am: Auto merged storage/innobase/ut/Makefile.am: Auto merged storage/myisam/Makefile.am: Auto merged storage/myisam/ft_boolean_search.c: Auto merged storage/myisam/ft_eval.c: Auto merged storage/myisam/ft_eval.h: Auto merged storage/myisam/ft_nlq_search.c: Auto merged storage/myisam/ft_parser.c: Auto merged storage/myisam/ft_static.c: Auto merged storage/myisam/ft_stem.c: Auto merged storage/myisam/ft_stopwords.c: Auto merged storage/myisam/ft_test1.c: Auto merged storage/myisam/ft_test1.h: Auto merged storage/myisam/ft_update.c: Auto merged storage/myisam/ftdefs.h: Auto merged storage/myisam/fulltext.h: Auto merged storage/myisam/ha_myisam.cc: Auto merged storage/myisam/ha_myisam.h: Auto merged storage/myisam/mi_cache.c: Auto merged storage/myisam/mi_changed.c: Auto merged storage/myisam/mi_check.c: Auto merged storage/myisam/mi_checksum.c: Auto merged storage/myisam/mi_close.c: Auto merged storage/myisam/mi_create.c: Auto merged storage/myisam/mi_dbug.c: Auto merged storage/myisam/mi_delete.c: Auto merged storage/myisam/mi_delete_all.c: Auto merged storage/myisam/mi_delete_table.c: Auto merged storage/myisam/mi_dynrec.c: Auto merged storage/myisam/mi_extra.c: Auto merged storage/myisam/mi_info.c: Auto merged storage/myisam/mi_key.c: Auto merged storage/myisam/mi_keycache.c: Auto merged storage/myisam/mi_locking.c: Auto merged storage/myisam/mi_log.c: Auto merged storage/myisam/mi_open.c: Auto merged storage/myisam/mi_packrec.c: Auto merged storage/myisam/mi_page.c: Auto merged storage/myisam/mi_panic.c: Auto merged storage/myisam/mi_preload.c: Auto merged storage/myisam/mi_range.c: Auto merged storage/myisam/mi_rename.c: Auto merged storage/myisam/mi_rfirst.c: Auto merged storage/myisam/mi_rkey.c: Auto merged storage/myisam/mi_rlast.c: Auto merged storage/myisam/mi_rnext.c: Auto merged storage/myisam/mi_rnext_same.c: Auto merged storage/myisam/mi_rprev.c: Auto merged storage/myisam/mi_rrnd.c: Auto merged storage/myisam/mi_rsame.c: Auto merged storage/myisam/mi_rsamepos.c: Auto merged storage/myisam/mi_scan.c: Auto merged storage/myisam/mi_search.c: Auto merged storage/myisam/mi_static.c: Auto merged storage/myisam/mi_statrec.c: Auto merged storage/myisam/mi_test1.c: Auto merged storage/myisam/mi_test2.c: Auto merged storage/myisam/mi_test3.c: Auto merged storage/myisam/mi_unique.c: Auto merged storage/myisam/mi_update.c: Auto merged storage/myisam/mi_write.c: Auto merged storage/myisam/myisam_ftdump.c: Auto merged storage/myisam/myisamchk.c: Auto merged storage/myisam/myisamdef.h: Auto merged storage/myisam/myisamlog.c: Auto merged storage/myisam/myisampack.c: Auto merged storage/myisam/rt_index.c: Auto merged storage/myisam/rt_index.h: Auto merged storage/myisam/rt_key.c: Auto merged storage/myisam/rt_key.h: Auto merged storage/myisam/rt_mbr.c: Auto merged storage/myisam/rt_mbr.h: Auto merged storage/myisam/rt_split.c: Auto merged storage/myisam/rt_test.c: Auto merged storage/myisam/sort.c: Auto merged storage/myisam/sp_defs.h: Auto merged storage/myisam/sp_key.c: Auto merged storage/myisam/sp_test.c: Auto merged storage/myisammrg/Makefile.am: Auto merged storage/myisammrg/ha_myisammrg.cc: Auto merged storage/myisammrg/ha_myisammrg.h: Auto merged storage/myisammrg/myrg_close.c: Auto merged storage/myisammrg/myrg_create.c: Auto merged storage/myisammrg/myrg_def.h: Auto merged storage/myisammrg/myrg_delete.c: Auto merged storage/myisammrg/myrg_extra.c: Auto merged storage/myisammrg/myrg_info.c: Auto merged storage/myisammrg/myrg_locking.c: Auto merged storage/myisammrg/myrg_open.c: Auto merged storage/myisammrg/myrg_panic.c: Auto merged storage/myisammrg/myrg_queue.c: Auto merged storage/myisammrg/myrg_range.c: Auto merged storage/myisammrg/myrg_rfirst.c: Auto merged storage/myisammrg/myrg_rkey.c: Auto merged storage/myisammrg/myrg_rlast.c: Auto merged storage/myisammrg/myrg_rnext.c: Auto merged storage/myisammrg/myrg_rnext_same.c: Auto merged storage/myisammrg/myrg_rprev.c: Auto merged storage/myisammrg/myrg_rrnd.c: Auto merged storage/myisammrg/myrg_rsame.c: Auto merged storage/myisammrg/myrg_static.c: Auto merged storage/myisammrg/myrg_update.c: Auto merged storage/myisammrg/myrg_write.c: Auto merged storage/ndb/include/debugger/DebuggerNames.hpp: Auto merged storage/ndb/include/debugger/EventLogger.hpp: Auto merged storage/ndb/include/debugger/GrepError.hpp: Auto merged storage/ndb/include/debugger/SignalLoggerManager.hpp: Auto merged storage/ndb/include/ndb_constants.h: Auto merged storage/ndb/include/ndb_global.h.in: Auto merged storage/ndb/include/ndb_init.h: Auto merged storage/ndb/include/ndb_types.h.in: Auto merged storage/ndb/include/ndb_version.h.in: Auto merged storage/ndb/include/editline/editline.h: Auto merged storage/ndb/include/kernel/AttributeDescriptor.hpp: Auto merged storage/ndb/include/kernel/AttributeHeader.hpp: Auto merged storage/ndb/include/kernel/AttributeList.hpp: Auto merged storage/ndb/include/kernel/BlockNumbers.h: Auto merged storage/ndb/include/kernel/GlobalSignalNumbers.h: Auto merged storage/ndb/include/kernel/GrepEvent.hpp: Auto merged storage/ndb/include/kernel/Interpreter.hpp: Auto merged storage/ndb/include/kernel/LogLevel.hpp: Auto merged storage/ndb/include/kernel/NodeBitmask.hpp: Auto merged storage/ndb/include/kernel/NodeInfo.hpp: Auto merged storage/ndb/include/kernel/NodeState.hpp: Auto merged storage/ndb/include/kernel/RefConvert.hpp: Auto merged storage/ndb/include/kernel/kernel_types.h: Auto merged storage/ndb/include/kernel/ndb_limits.h: Auto merged storage/ndb/include/kernel/signaldata/AbortAll.hpp: Auto merged storage/ndb/include/kernel/signaldata/AccFrag.hpp: Auto merged storage/ndb/include/kernel/signaldata/AccLock.hpp: Auto merged storage/ndb/include/kernel/signaldata/AccScan.hpp: Auto merged storage/ndb/include/kernel/signaldata/AccSizeAltReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/AlterIndx.hpp: Auto merged storage/ndb/include/kernel/signaldata/AlterTab.hpp: Auto merged storage/ndb/include/kernel/signaldata/AlterTable.hpp: Auto merged storage/ndb/include/kernel/signaldata/AlterTrig.hpp: Auto merged storage/ndb/include/kernel/signaldata/ApiBroadcast.hpp: Auto merged storage/ndb/include/kernel/signaldata/ApiRegSignalData.hpp: Auto merged storage/ndb/include/kernel/signaldata/ApiVersion.hpp: Auto merged storage/ndb/include/kernel/signaldata/ArbitSignalData.hpp: Auto merged storage/ndb/include/kernel/signaldata/AttrInfo.hpp: Auto merged storage/ndb/include/kernel/signaldata/BackupContinueB.hpp: Auto merged storage/ndb/include/kernel/signaldata/BackupImpl.hpp: Auto merged storage/ndb/include/kernel/signaldata/BackupSignalData.hpp: Auto merged storage/ndb/include/kernel/signaldata/BlockCommitOrd.hpp: Auto merged storage/ndb/include/kernel/signaldata/BuildIndx.hpp: Auto merged storage/ndb/include/kernel/signaldata/CheckNodeGroups.hpp: Auto merged storage/ndb/include/kernel/signaldata/CloseComReqConf.hpp: Auto merged storage/ndb/include/kernel/signaldata/CmInit.hpp: Auto merged storage/ndb/include/kernel/trigger_definitions.h: Auto merged storage/ndb/include/kernel/signaldata/CmRegSignalData.hpp: Auto merged storage/ndb/include/kernel/signaldata/CmvmiCfgConf.hpp: Auto merged storage/ndb/include/kernel/signaldata/CntrMasterConf.hpp: Auto merged storage/ndb/include/kernel/signaldata/CntrMasterReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/ConfigParamId.hpp: Auto merged storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp: Auto merged storage/ndb/include/kernel/signaldata/CopyActive.hpp: Auto merged storage/ndb/include/kernel/signaldata/CopyFrag.hpp: Auto merged storage/ndb/include/kernel/signaldata/CopyGCIReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/CreateEvnt.hpp: Auto merged storage/ndb/include/kernel/signaldata/CreateFrag.hpp: Auto merged storage/ndb/include/kernel/signaldata/CreateFragmentation.hpp: Auto merged storage/ndb/include/kernel/signaldata/CreateIndx.hpp: Auto merged storage/ndb/include/kernel/signaldata/CreateTab.hpp: Auto merged storage/ndb/include/kernel/signaldata/CreateTable.hpp: Auto merged storage/ndb/include/kernel/signaldata/CreateTrig.hpp: Auto merged storage/ndb/include/kernel/signaldata/DiAddTab.hpp: Auto merged storage/ndb/include/kernel/signaldata/DiGetNodes.hpp: Auto merged storage/ndb/include/kernel/signaldata/DictLock.hpp: Auto merged storage/ndb/include/kernel/signaldata/DictSchemaInfo.hpp: Auto merged storage/ndb/include/kernel/signaldata/DictSizeAltReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/DictStart.hpp: Auto merged storage/ndb/include/kernel/signaldata/DictTabInfo.hpp: Auto merged storage/ndb/include/kernel/signaldata/DihAddFrag.hpp: Auto merged storage/ndb/include/kernel/signaldata/DihContinueB.hpp: Auto merged storage/ndb/include/kernel/signaldata/DihSizeAltReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/DihStartTab.hpp: Auto merged storage/ndb/include/kernel/signaldata/DihSwitchReplica.hpp: Auto merged storage/ndb/include/kernel/signaldata/DisconnectRep.hpp: Auto merged storage/ndb/include/kernel/signaldata/DropIndx.hpp: Auto merged storage/ndb/include/kernel/signaldata/DropTab.hpp: Auto merged storage/ndb/include/kernel/signaldata/DropTabFile.hpp: Auto merged storage/ndb/include/kernel/signaldata/DropTable.hpp: Auto merged storage/ndb/include/kernel/signaldata/DropTrig.hpp: Auto merged storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp: Auto merged storage/ndb/include/kernel/signaldata/EmptyLcp.hpp: Auto merged storage/ndb/include/kernel/signaldata/EndTo.hpp: Auto merged storage/ndb/include/kernel/signaldata/EventReport.hpp: Auto merged storage/ndb/include/kernel/signaldata/EventSubscribeReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/ExecFragReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/FailRep.hpp: Auto merged storage/ndb/include/kernel/signaldata/FireTrigOrd.hpp: Auto merged storage/ndb/include/kernel/signaldata/FsAppendReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/FsCloseReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/FsConf.hpp: Auto merged storage/ndb/include/kernel/signaldata/FsOpenReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/FsReadWriteReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/FsRef.hpp: Auto merged storage/ndb/include/kernel/signaldata/FsRemoveReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/GCPSave.hpp: Auto merged storage/ndb/include/kernel/signaldata/GetTabInfo.hpp: Auto merged storage/ndb/include/kernel/signaldata/GetTableId.hpp: Auto merged storage/ndb/include/kernel/signaldata/GrepImpl.hpp: Auto merged storage/ndb/include/kernel/signaldata/HotSpareRep.hpp: Auto merged storage/ndb/include/kernel/signaldata/IndxAttrInfo.hpp: Auto merged storage/ndb/include/kernel/signaldata/IndxKeyInfo.hpp: Auto merged storage/ndb/include/kernel/signaldata/InvalidateNodeLCPConf.hpp: Auto merged storage/ndb/include/kernel/signaldata/InvalidateNodeLCPReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/KeyInfo.hpp: Auto merged storage/ndb/include/kernel/signaldata/LCP.hpp: Auto merged storage/ndb/include/kernel/signaldata/ListTables.hpp: Auto merged storage/ndb/include/kernel/signaldata/LqhFrag.hpp: Auto merged storage/ndb/include/kernel/signaldata/LqhKey.hpp: Auto merged storage/ndb/include/kernel/signaldata/LqhSizeAltReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/LqhTransConf.hpp: Auto merged storage/ndb/include/kernel/signaldata/ManagementServer.hpp: Auto merged storage/ndb/include/kernel/signaldata/MasterGCP.hpp: Auto merged storage/ndb/include/kernel/signaldata/MasterLCP.hpp: Auto merged storage/ndb/include/kernel/signaldata/NFCompleteRep.hpp: Auto merged storage/ndb/include/kernel/signaldata/NdbSttor.hpp: Auto merged storage/ndb/include/kernel/signaldata/NdbfsContinueB.hpp: Auto merged storage/ndb/include/kernel/signaldata/NextScan.hpp: Auto merged storage/ndb/include/kernel/signaldata/NodeFailRep.hpp: Auto merged storage/ndb/include/kernel/signaldata/NodeStateSignalData.hpp: Auto merged storage/ndb/include/kernel/signaldata/PackedSignal.hpp: Auto merged storage/ndb/include/kernel/signaldata/PrepDropTab.hpp: Auto merged storage/ndb/include/kernel/signaldata/PrepFailReqRef.hpp: Auto merged storage/ndb/include/kernel/signaldata/ReadNodesConf.hpp: Auto merged storage/ndb/include/kernel/signaldata/RelTabMem.hpp: Auto merged storage/ndb/include/kernel/signaldata/RepImpl.hpp: Auto merged storage/ndb/include/kernel/signaldata/ResumeReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/ScanFrag.hpp: Auto merged storage/ndb/include/kernel/signaldata/ScanTab.hpp: Auto merged storage/ndb/include/kernel/signaldata/SetLogLevelOrd.hpp: Auto merged storage/ndb/include/kernel/signaldata/SetVarReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/SignalData.hpp: Auto merged storage/ndb/include/kernel/signaldata/SignalDataPrint.hpp: Auto merged storage/ndb/include/kernel/signaldata/SignalDroppedRep.hpp: Auto merged storage/ndb/include/kernel/signaldata/SrFragidConf.hpp: Auto merged storage/ndb/include/kernel/signaldata/StartFragReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/StartInfo.hpp: Auto merged storage/ndb/include/kernel/signaldata/StartMe.hpp: Auto merged storage/ndb/include/kernel/signaldata/StartOrd.hpp: Auto merged storage/ndb/include/kernel/signaldata/StartPerm.hpp: Auto merged storage/ndb/include/kernel/signaldata/StartRec.hpp: Auto merged storage/ndb/include/kernel/signaldata/StartTo.hpp: Auto merged storage/ndb/include/kernel/signaldata/StopMe.hpp: Auto merged storage/ndb/include/kernel/signaldata/StopPerm.hpp: Auto merged storage/ndb/include/kernel/signaldata/StopReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/SumaImpl.hpp: Auto merged storage/ndb/include/kernel/signaldata/SystemError.hpp: Auto merged storage/ndb/include/kernel/signaldata/TamperOrd.hpp: Auto merged storage/ndb/include/kernel/signaldata/TcCommit.hpp: Auto merged storage/ndb/include/kernel/signaldata/TcContinueB.hpp: Auto merged storage/ndb/include/kernel/signaldata/TcHbRep.hpp: Auto merged storage/ndb/include/kernel/signaldata/TcIndx.hpp: Auto merged storage/ndb/include/kernel/signaldata/TcKeyConf.hpp: Auto merged storage/ndb/include/kernel/signaldata/TcKeyFailConf.hpp: Auto merged storage/ndb/include/kernel/signaldata/TcKeyRef.hpp: Auto merged storage/ndb/include/kernel/signaldata/TcKeyReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/TcRollbackRep.hpp: Auto merged storage/ndb/include/kernel/signaldata/TcSizeAltReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/TestOrd.hpp: Auto merged storage/ndb/include/kernel/signaldata/TransIdAI.hpp: Auto merged storage/ndb/include/kernel/signaldata/TrigAttrInfo.hpp: Auto merged storage/ndb/include/kernel/signaldata/TupCommit.hpp: Auto merged storage/ndb/include/kernel/signaldata/TupFrag.hpp: Auto merged storage/ndb/include/kernel/signaldata/TupKey.hpp: Auto merged storage/ndb/include/kernel/signaldata/TupSizeAltReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/TuxBound.hpp: Auto merged storage/ndb/include/kernel/signaldata/TuxContinueB.hpp: Auto merged storage/ndb/include/kernel/signaldata/TuxMaint.hpp: Auto merged storage/ndb/include/kernel/signaldata/TuxSizeAltReq.hpp: Auto merged storage/ndb/include/kernel/signaldata/UpdateTo.hpp: Auto merged storage/ndb/include/kernel/signaldata/UtilDelete.hpp: Auto merged storage/ndb/include/kernel/signaldata/UtilExecute.hpp: Auto merged storage/ndb/include/kernel/signaldata/UtilLock.hpp: Auto merged storage/ndb/include/kernel/signaldata/UtilPrepare.hpp: Auto merged storage/ndb/include/kernel/signaldata/UtilRelease.hpp: Auto merged storage/ndb/include/kernel/signaldata/UtilSequence.hpp: Auto merged storage/ndb/include/kernel/signaldata/WaitGCP.hpp: Auto merged storage/ndb/include/logger/ConsoleLogHandler.hpp: Auto merged storage/ndb/include/logger/FileLogHandler.hpp: Auto merged storage/ndb/include/logger/LogHandler.hpp: Auto merged storage/ndb/include/logger/Logger.hpp: Auto merged storage/ndb/include/logger/SysLogHandler.hpp: Auto merged storage/ndb/include/mgmapi/mgmapi.h: Auto merged storage/ndb/include/mgmapi/mgmapi_debug.h: Auto merged storage/ndb/include/mgmapi/ndb_logevent.h: Auto merged storage/ndb/include/mgmapi/ndbd_exit_codes.h: Auto merged storage/ndb/include/mgmcommon/ConfigRetriever.hpp: Auto merged storage/ndb/include/mgmcommon/IPCConfig.hpp: Auto merged storage/ndb/include/mgmcommon/MgmtErrorReporter.hpp: Auto merged storage/ndb/include/ndbapi/Ndb.hpp: Auto merged storage/ndb/include/ndbapi/NdbApi.hpp: Auto merged storage/ndb/include/ndbapi/NdbBlob.hpp: Auto merged storage/ndb/include/ndbapi/NdbDictionary.hpp: Auto merged storage/ndb/include/ndbapi/NdbError.hpp: Auto merged storage/ndb/include/ndbapi/NdbEventOperation.hpp: Auto merged storage/ndb/include/ndbapi/NdbIndexOperation.hpp: Auto merged storage/ndb/include/ndbapi/NdbIndexScanOperation.hpp: Auto merged storage/ndb/include/ndbapi/NdbOperation.hpp: Auto merged storage/ndb/include/ndbapi/NdbPool.hpp: Auto merged storage/ndb/include/ndbapi/NdbRecAttr.hpp: Auto merged storage/ndb/include/ndbapi/NdbReceiver.hpp: Auto merged storage/ndb/include/ndbapi/NdbScanFilter.hpp: Auto merged storage/ndb/include/ndbapi/NdbScanOperation.hpp: Auto merged storage/ndb/include/ndbapi/NdbTransaction.hpp: Auto merged storage/ndb/include/ndbapi/ndb_cluster_connection.hpp: Auto merged storage/ndb/include/ndbapi/ndb_opt_defaults.h: Auto merged storage/ndb/include/ndbapi/ndbapi_limits.h: Auto merged storage/ndb/include/ndbapi/ndberror.h: Auto merged storage/ndb/include/newtonapi/dba.h: Auto merged storage/ndb/include/newtonapi/defs/pcn_types.h: Auto merged storage/ndb/include/portlib/NdbCondition.h: Auto merged storage/ndb/include/portlib/NdbConfig.h: Auto merged storage/ndb/include/portlib/NdbDaemon.h: Auto merged storage/ndb/include/portlib/NdbEnv.h: Auto merged storage/ndb/include/portlib/NdbHost.h: Auto merged storage/ndb/include/portlib/NdbMain.h: Auto merged storage/ndb/include/portlib/NdbMem.h: Auto merged storage/ndb/include/portlib/NdbMutex.h: Auto merged storage/ndb/include/portlib/NdbSleep.h: Auto merged storage/ndb/include/portlib/NdbTCP.h: Auto merged storage/ndb/include/portlib/NdbThread.h: Auto merged storage/ndb/include/portlib/NdbTick.h: Auto merged storage/ndb/include/portlib/PortDefs.h: Auto merged storage/ndb/include/portlib/prefetch.h: Auto merged storage/ndb/include/transporter/TransporterCallback.hpp: Auto merged storage/ndb/include/transporter/TransporterDefinitions.hpp: Auto merged storage/ndb/include/transporter/TransporterRegistry.hpp: Auto merged storage/ndb/include/util/BaseString.hpp: Auto merged storage/ndb/include/util/Bitmask.hpp: Auto merged storage/ndb/include/util/File.hpp: Auto merged storage/ndb/include/util/InputStream.hpp: Auto merged storage/ndb/include/util/NdbAutoPtr.hpp: Auto merged storage/ndb/include/util/NdbOut.hpp: Auto merged storage/ndb/include/util/NdbSqlUtil.hpp: Auto merged storage/ndb/include/util/OutputStream.hpp: Auto merged storage/ndb/include/util/Parser.hpp: Auto merged storage/ndb/include/util/Properties.hpp: Auto merged storage/ndb/include/util/SimpleProperties.hpp: Auto merged storage/ndb/include/util/SocketAuthenticator.hpp: Auto merged storage/ndb/include/util/SocketClient.hpp: Auto merged storage/ndb/include/util/SocketServer.hpp: Auto merged storage/ndb/include/util/UtilBuffer.hpp: Auto merged storage/ndb/include/util/Vector.hpp: Auto merged storage/ndb/include/util/basestring_vsnprintf.h: Auto merged storage/ndb/include/util/md5_hash.hpp: Auto merged storage/ndb/include/util/ndb_opts.h: Auto merged storage/ndb/include/util/random.h: Auto merged storage/ndb/include/util/socket_io.h: Auto merged storage/ndb/include/util/uucode.h: Auto merged storage/ndb/include/util/version.h: Auto merged storage/ndb/src/common/debugger/BlockNames.cpp: Auto merged storage/ndb/src/common/debugger/DebuggerNames.cpp: Auto merged storage/ndb/src/common/debugger/EventLogger.cpp: Auto merged storage/ndb/src/common/debugger/GrepError.cpp: Auto merged storage/ndb/src/common/debugger/SignalLoggerManager.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/AccLock.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/AlterIndx.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/AlterTab.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/AlterTable.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/AlterTrig.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/BackupImpl.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/BackupSignalData.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/CloseComReqConf.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/ContinueB.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/CopyGCI.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/CreateEvnt.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/CreateFragmentation.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/CreateIndx.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/CreateTrig.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/DictTabInfo.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/DihContinueB.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/DihSwitchReplicaReq.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/DisconnectRep.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/DropIndx.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/DropTab.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/DropTrig.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/FailRep.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/FireTrigOrd.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/FsAppendReq.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/FsCloseReq.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/FsConf.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/FsOpenReq.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/FsReadWriteReq.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/FsRef.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/GCPSave.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/IndxAttrInfo.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/IndxKeyInfo.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/LCP.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/LqhFrag.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/LqhKey.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/LqhTrans.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/MasterLCP.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/NFCompleteRep.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/NdbSttor.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/NdbfsContinueB.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/PackedSignal.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/PrepDropTab.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/PrepFailReqRef.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/ScanFrag.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/ScanTab.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/SignalDataPrint.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/SignalDroppedRep.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/SignalNames.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/StartRec.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/SumaImpl.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/SystemError.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/TcIndx.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/TcKeyConf.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/TcKeyRef.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/TcKeyReq.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/TcRollbackRep.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/TrigAttrInfo.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/TupCommit.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/TupKey.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/TuxMaint.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/UtilDelete.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/UtilExecute.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/UtilLock.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/UtilPrepare.cpp: Auto merged storage/ndb/src/common/debugger/signaldata/UtilSequence.cpp: Auto merged storage/ndb/src/common/logger/ConsoleLogHandler.cpp: Auto merged storage/ndb/src/common/logger/FileLogHandler.cpp: Auto merged storage/ndb/src/common/logger/LogHandler.cpp: Auto merged storage/ndb/src/common/logger/LogHandlerList.cpp: Auto merged storage/ndb/src/common/logger/LogHandlerList.hpp: Auto merged storage/ndb/src/common/logger/Logger.cpp: Auto merged storage/ndb/src/common/logger/SysLogHandler.cpp: Auto merged storage/ndb/src/common/logger/listtest/LogHandlerListUnitTest.cpp: Auto merged storage/ndb/src/common/logger/listtest/LogHandlerListUnitTest.hpp: Auto merged storage/ndb/src/common/logger/loggertest/LoggerUnitTest.cpp: Auto merged storage/ndb/src/common/logger/loggertest/LoggerUnitTest.hpp: Auto merged storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp: Auto merged storage/ndb/src/common/mgmcommon/IPCConfig.cpp: Auto merged storage/ndb/src/common/mgmcommon/printConfig/printConfig.cpp: Auto merged storage/ndb/src/common/portlib/NdbCondition.c: Auto merged storage/ndb/src/common/portlib/NdbConfig.c: Auto merged storage/ndb/src/common/portlib/NdbDaemon.c: Auto merged storage/ndb/src/common/portlib/NdbEnv.c: Auto merged storage/ndb/src/common/portlib/NdbHost.c: Auto merged storage/ndb/src/common/portlib/NdbMem.c: Auto merged storage/ndb/src/common/portlib/NdbMutex.c: Auto merged storage/ndb/src/common/portlib/NdbPortLibTest.cpp: Auto merged storage/ndb/src/common/portlib/NdbSleep.c: Auto merged storage/ndb/src/common/portlib/NdbTCP.cpp: Auto merged storage/ndb/src/common/portlib/NdbThread.c: Auto merged storage/ndb/src/common/portlib/NdbTick.c: Auto merged storage/ndb/src/common/portlib/memtest.c: Auto merged storage/ndb/src/common/portlib/mmstest.cpp: Auto merged storage/ndb/src/common/portlib/munmaptest.cpp: Auto merged storage/ndb/src/common/portlib/win32/NdbCondition.c: Auto merged storage/ndb/src/common/portlib/win32/NdbDaemon.c: Auto merged storage/ndb/src/common/portlib/win32/NdbEnv.c: Auto merged storage/ndb/src/common/portlib/win32/NdbHost.c: Auto merged storage/ndb/src/common/portlib/win32/NdbMem.c: Auto merged storage/ndb/src/common/portlib/win32/NdbMutex.c: Auto merged storage/ndb/src/common/portlib/win32/NdbSleep.c: Auto merged storage/ndb/src/common/portlib/win32/NdbTCP.c: Auto merged storage/ndb/src/common/portlib/win32/NdbThread.c: Auto merged storage/ndb/src/common/portlib/win32/NdbTick.c: Auto merged storage/ndb/src/common/transporter/Packer.cpp: Auto merged storage/ndb/src/common/transporter/Packer.hpp: Auto merged storage/ndb/src/common/transporter/SCI_Transporter.cpp: Auto merged storage/ndb/src/common/transporter/SCI_Transporter.hpp: Auto merged storage/ndb/src/common/transporter/SHM_Buffer.hpp: Auto merged storage/ndb/src/common/transporter/SHM_Transporter.cpp: Auto merged storage/ndb/src/common/transporter/SHM_Transporter.hpp: Auto merged storage/ndb/src/common/transporter/SHM_Transporter.unix.cpp: Auto merged storage/ndb/src/common/transporter/SHM_Transporter.win32.cpp: Auto merged storage/ndb/src/common/transporter/SendBuffer.cpp: Auto merged storage/ndb/src/common/transporter/SendBuffer.hpp: Auto merged storage/ndb/src/common/transporter/TCP_Transporter.cpp: Auto merged storage/ndb/src/common/transporter/TCP_Transporter.hpp: Auto merged storage/ndb/src/common/transporter/Transporter.cpp: Auto merged storage/ndb/src/common/transporter/Transporter.hpp: Auto merged storage/ndb/src/common/transporter/TransporterInternalDefinitions.hpp: Auto merged storage/ndb/src/common/transporter/TransporterRegistry.cpp: Auto merged storage/ndb/src/common/transporter/basictest/basicTransporterTest.cpp: Auto merged storage/ndb/src/common/transporter/buddy.cpp: Auto merged storage/ndb/src/common/transporter/buddy.hpp: Auto merged storage/ndb/src/common/transporter/failoverSCI/failoverSCI.cpp: Auto merged storage/ndb/src/common/transporter/perftest/perfTransporterTest.cpp: Auto merged storage/ndb/src/common/transporter/priotest/prioSCI/prioSCI.cpp: Auto merged storage/ndb/src/common/transporter/priotest/prioSHM/prioSHM.cpp: Auto merged storage/ndb/src/common/transporter/priotest/prioTCP/prioTCP.cpp: Auto merged storage/ndb/src/common/transporter/priotest/prioTransporterTest.cpp: Auto merged storage/ndb/src/common/transporter/priotest/prioTransporterTest.hpp: Auto merged storage/ndb/src/common/util/BaseString.cpp: Auto merged storage/ndb/src/common/util/File.cpp: Auto merged storage/ndb/src/common/util/InputStream.cpp: Auto merged storage/ndb/src/common/util/NdbOut.cpp: Auto merged storage/ndb/src/common/util/NdbSqlUtil.cpp: Auto merged storage/ndb/src/common/util/OutputStream.cpp: Auto merged storage/ndb/src/common/util/Parser.cpp: Auto merged storage/ndb/src/common/util/Properties.cpp: Auto merged storage/ndb/src/common/util/SimpleProperties.cpp: Auto merged storage/ndb/src/common/util/SocketAuthenticator.cpp: Auto merged storage/ndb/src/common/util/SocketClient.cpp: Auto merged storage/ndb/src/common/util/SocketServer.cpp: Auto merged storage/ndb/src/common/util/basestring_vsnprintf.c: Auto merged storage/ndb/src/common/util/md5_hash.cpp: Auto merged storage/ndb/src/common/util/ndb_init.c: Auto merged storage/ndb/src/common/util/random.c: Auto merged storage/ndb/src/common/util/socket_io.cpp: Auto merged storage/ndb/src/common/util/strdup.c: Auto merged storage/ndb/src/common/util/filetest/FileUnitTest.cpp: Auto merged storage/ndb/src/common/util/filetest/FileUnitTest.hpp: Auto merged storage/ndb/src/common/util/testProperties/testProperties.cpp: Auto merged storage/ndb/src/common/util/testSimpleProperties/sp_test.cpp: Auto merged storage/ndb/src/common/util/uucode.c: Auto merged storage/ndb/src/common/util/version.c: Auto merged storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.cpp: Auto merged storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.h: Auto merged storage/ndb/src/cw/cpcc-win32/C++/NdbControls.cpp: Auto merged storage/ndb/src/cw/cpcc-win32/C++/StdAfx.cpp: Auto merged storage/ndb/src/cw/cpcc-win32/C++/StdAfx.h: Auto merged storage/ndb/src/cw/cpcc-win32/C++/TreeView.cpp: Auto merged storage/ndb/src/cw/cpcc-win32/C++/TreeView.h: Auto merged storage/ndb/src/cw/cpcc-win32/C++/resource.h: Auto merged storage/ndb/src/cw/cpcd/APIService.cpp: Auto merged storage/ndb/src/cw/cpcd/APIService.hpp: Auto merged storage/ndb/src/cw/cpcd/CPCD.cpp: Auto merged storage/ndb/src/cw/cpcd/CPCD.hpp: Auto merged storage/ndb/src/cw/cpcd/Monitor.cpp: Auto merged storage/ndb/src/cw/cpcd/Process.cpp: Auto merged storage/ndb/src/cw/cpcd/common.cpp: Auto merged storage/ndb/src/cw/cpcd/common.hpp: Auto merged storage/ndb/src/cw/cpcd/main.cpp: Auto merged storage/ndb/src/cw/test/socketclient/socketClientTest.cpp: Auto merged storage/ndb/src/cw/util/ClientInterface.cpp: Auto merged storage/ndb/src/cw/util/ClientInterface.hpp: Auto merged storage/ndb/src/cw/util/SocketRegistry.cpp: Auto merged storage/ndb/src/cw/util/SocketRegistry.hpp: Auto merged storage/ndb/src/cw/util/SocketService.cpp: Auto merged storage/ndb/src/cw/util/SocketService.hpp: Auto merged storage/ndb/src/kernel/SimBlockList.cpp: Auto merged storage/ndb/src/kernel/blocks/mutexes.hpp: Auto merged storage/ndb/src/kernel/main.cpp: Auto merged storage/ndb/src/kernel/blocks/backup/Backup.cpp: Auto merged storage/ndb/src/kernel/blocks/backup/Backup.hpp: Auto merged storage/ndb/src/kernel/blocks/backup/BackupFormat.hpp: Auto merged storage/ndb/src/kernel/blocks/backup/BackupInit.cpp: Auto merged storage/ndb/src/kernel/blocks/backup/FsBuffer.hpp: Auto merged storage/ndb/src/kernel/blocks/backup/read.cpp: Auto merged storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp: Auto merged storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp: Auto merged storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp: Auto merged storage/ndb/src/kernel/blocks/dbacc/DbaccInit.cpp: Auto merged storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp: Auto merged storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Auto merged storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp: Auto merged storage/ndb/src/kernel/blocks/dbdict/SchemaFile.hpp: Auto merged storage/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp: Auto merged storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp: Auto merged storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp: Auto merged storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Auto merged storage/ndb/src/kernel/blocks/dbdih/Sysfile.hpp: Auto merged storage/ndb/src/kernel/blocks/dbdih/printSysfile/printSysfile.cpp: Auto merged storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp: Auto merged storage/ndb/src/kernel/blocks/dblqh/DblqhInit.cpp: Auto merged storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp: Auto merged storage/ndb/src/kernel/blocks/dblqh/redoLogReader/records.cpp: Auto merged storage/ndb/src/kernel/blocks/dblqh/redoLogReader/records.hpp: Auto merged storage/ndb/src/kernel/blocks/dblqh/redoLogReader/redoLogFileReader.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp: Auto merged storage/ndb/src/kernel/blocks/dbtc/DbtcInit.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/AttributeOffset.hpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupDebug.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupFixAlloc.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupStoredProcDef.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupTabDesMan.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp: Auto merged storage/ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtux/DbtuxDebug.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtux/DbtuxMaint.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtux/DbtuxMeta.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtux/DbtuxNode.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtux/DbtuxSearch.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtux/DbtuxTree.cpp: Auto merged storage/ndb/src/kernel/blocks/dbutil/DbUtil.cpp: Auto merged storage/ndb/src/kernel/blocks/dbutil/DbUtil.hpp: Auto merged storage/ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp: Auto merged storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrInit.cpp: Auto merged storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp: Auto merged storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrSysTable.cpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/AsyncFileTest/AsyncFileTest.cpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/CircularIndex.cpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/CircularIndex.hpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/Filename.cpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/Filename.hpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.cpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/MemoryChannelTest/MemoryChannelTest.cpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.hpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/OpenFiles.hpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/Pool.hpp: Auto merged storage/ndb/src/kernel/blocks/ndbfs/VoidFs.cpp: Auto merged storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp: Auto merged storage/ndb/src/kernel/blocks/qmgr/QmgrInit.cpp: Auto merged storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp: Auto merged storage/ndb/src/kernel/blocks/qmgr/timer.hpp: Auto merged storage/ndb/src/kernel/blocks/suma/Suma.cpp: Auto merged storage/ndb/src/kernel/blocks/suma/Suma.hpp: Auto merged storage/ndb/src/kernel/blocks/suma/SumaInit.cpp: Auto merged storage/ndb/src/kernel/blocks/trix/Trix.cpp: Auto merged storage/ndb/src/kernel/blocks/trix/Trix.hpp: Auto merged storage/ndb/src/kernel/error/ErrorHandlingMacros.hpp: Auto merged storage/ndb/src/kernel/error/ErrorReporter.cpp: Auto merged storage/ndb/src/kernel/error/ErrorReporter.hpp: Auto merged storage/ndb/src/kernel/error/TimeModule.cpp: Auto merged storage/ndb/src/kernel/error/TimeModule.hpp: Auto merged storage/ndb/src/kernel/error/ndbd_exit_codes.c: Auto merged storage/ndb/src/kernel/vm/Array.hpp: Auto merged storage/ndb/src/kernel/vm/ArrayPool.hpp: Auto merged storage/ndb/src/kernel/vm/CArray.hpp: Auto merged storage/ndb/src/kernel/vm/Callback.hpp: Auto merged storage/ndb/src/kernel/vm/ClusterConfiguration.cpp: Auto merged storage/ndb/src/kernel/vm/ClusterConfiguration.hpp: Auto merged storage/ndb/src/kernel/vm/Configuration.cpp: Auto merged storage/ndb/src/kernel/vm/Configuration.hpp: Auto merged storage/ndb/src/kernel/vm/DLFifoList.hpp: Auto merged storage/ndb/src/kernel/vm/DLHashTable.hpp: Auto merged storage/ndb/src/kernel/vm/DLHashTable2.hpp: Auto merged storage/ndb/src/kernel/vm/DLList.hpp: Auto merged storage/ndb/src/kernel/vm/DataBuffer.hpp: Auto merged storage/ndb/src/kernel/vm/Emulator.cpp: Auto merged storage/ndb/src/kernel/vm/Emulator.hpp: Auto merged storage/ndb/src/kernel/vm/FastScheduler.cpp: Auto merged storage/ndb/src/kernel/vm/FastScheduler.hpp: Auto merged storage/ndb/src/kernel/vm/GlobalData.hpp: Auto merged storage/ndb/src/kernel/vm/KeyDescriptor.hpp: Auto merged storage/ndb/src/kernel/vm/KeyTable.hpp: Auto merged storage/ndb/src/kernel/vm/KeyTable2.hpp: Auto merged storage/ndb/src/kernel/vm/LongSignal.hpp: Auto merged storage/ndb/src/kernel/vm/Mutex.cpp: Auto merged storage/ndb/src/kernel/vm/Mutex.hpp: Auto merged storage/ndb/src/kernel/vm/Prio.hpp: Auto merged storage/ndb/src/kernel/vm/RequestTracker.hpp: Auto merged storage/ndb/src/kernel/vm/SLList.hpp: Auto merged storage/ndb/src/kernel/vm/SafeCounter.cpp: Auto merged storage/ndb/src/kernel/vm/SafeCounter.hpp: Auto merged storage/ndb/src/kernel/vm/SectionReader.cpp: Auto merged storage/ndb/src/kernel/vm/SectionReader.hpp: Auto merged storage/ndb/src/kernel/vm/SignalCounter.hpp: Auto merged storage/ndb/src/kernel/vm/SimBlockList.hpp: Auto merged storage/ndb/src/kernel/vm/SimplePropertiesSection.cpp: Auto merged storage/ndb/src/kernel/vm/SimulatedBlock.cpp: Auto merged storage/ndb/src/kernel/vm/SimulatedBlock.hpp: Auto merged storage/ndb/src/kernel/vm/SuperPool.cpp: Auto merged storage/ndb/src/kernel/vm/SuperPool.hpp: Auto merged storage/ndb/src/kernel/vm/ThreadConfig.cpp: Auto merged storage/ndb/src/kernel/vm/ThreadConfig.hpp: Auto merged storage/ndb/src/kernel/vm/TimeQueue.cpp: Auto merged storage/ndb/src/kernel/vm/TimeQueue.hpp: Auto merged storage/ndb/src/kernel/vm/TransporterCallback.cpp: Auto merged storage/ndb/src/kernel/vm/VMSignal.cpp: Auto merged storage/ndb/src/kernel/vm/VMSignal.hpp: Auto merged storage/ndb/src/kernel/vm/WaitQueue.hpp: Auto merged storage/ndb/src/kernel/vm/WatchDog.cpp: Auto merged storage/ndb/src/kernel/vm/WatchDog.hpp: Auto merged storage/ndb/src/kernel/vm/al_test/arrayListTest.cpp: Auto merged storage/ndb/src/kernel/vm/al_test/arrayPoolTest.cpp: Auto merged storage/ndb/src/kernel/vm/al_test/main.cpp: Auto merged storage/ndb/src/kernel/vm/ndbd_malloc.cpp: Auto merged storage/ndb/src/kernel/vm/ndbd_malloc.hpp: Auto merged storage/ndb/src/kernel/vm/pc.hpp: Auto merged storage/ndb/src/kernel/vm/testCopy/rr.cpp: Auto merged storage/ndb/src/kernel/vm/testCopy/testCopy.cpp: Auto merged storage/ndb/src/kernel/vm/testDataBuffer/testDataBuffer.cpp: Auto merged storage/ndb/src/kernel/vm/testLongSig/testLongSig.cpp: Auto merged storage/ndb/src/kernel/vm/testSimplePropertiesSection/test.cpp: Auto merged storage/ndb/src/kernel/vm/testSuperPool.cpp: Auto merged storage/ndb/src/mgmapi/LocalConfig.cpp: Auto merged storage/ndb/src/mgmapi/LocalConfig.hpp: Auto merged storage/ndb/src/mgmapi/mgmapi.cpp: Auto merged storage/ndb/src/mgmapi/mgmapi_configuration.hpp: Auto merged storage/ndb/src/mgmapi/mgmapi_internal.h: Auto merged storage/ndb/src/mgmapi/ndb_logevent.cpp: Auto merged storage/ndb/src/mgmapi/ndb_logevent.hpp: Auto merged storage/ndb/src/mgmapi/test/keso.c: Auto merged storage/ndb/src/mgmapi/test/mgmSrvApi.cpp: Auto merged storage/ndb/src/mgmclient/CommandInterpreter.cpp: Auto merged storage/ndb/src/mgmclient/main.cpp: Auto merged storage/ndb/src/mgmclient/ndb_mgmclient.hpp: Auto merged storage/ndb/src/mgmclient/ndb_mgmclient.h: Auto merged storage/ndb/src/mgmclient/test_cpcd/test_cpcd.cpp: Auto merged storage/ndb/src/mgmsrv/Config.cpp: Auto merged storage/ndb/src/mgmsrv/Config.hpp: Auto merged storage/ndb/src/mgmsrv/ConfigInfo.cpp: Auto merged storage/ndb/src/mgmsrv/ConfigInfo.hpp: Auto merged storage/ndb/src/mgmsrv/InitConfigFileParser.cpp: Auto merged storage/ndb/src/mgmsrv/InitConfigFileParser.hpp: Auto merged storage/ndb/src/mgmsrv/MgmtSrvr.cpp: Auto merged storage/ndb/src/mgmsrv/MgmtSrvr.hpp: Auto merged storage/ndb/src/mgmsrv/MgmtSrvrConfig.cpp: Auto merged storage/ndb/src/mgmsrv/MgmtSrvrGeneralSignalHandling.cpp: Auto merged storage/ndb/src/mgmsrv/Services.cpp: Auto merged storage/ndb/src/mgmsrv/Services.hpp: Auto merged storage/ndb/src/mgmsrv/SignalQueue.cpp: Auto merged storage/ndb/src/mgmsrv/SignalQueue.hpp: Auto merged storage/ndb/src/mgmsrv/convertStrToInt.cpp: Auto merged storage/ndb/src/mgmsrv/convertStrToInt.hpp: Auto merged storage/ndb/src/mgmsrv/main.cpp: Auto merged storage/ndb/src/mgmsrv/mkconfig/mkconfig.cpp: Auto merged storage/ndb/src/ndbapi/API.hpp: Auto merged storage/ndb/src/ndbapi/ClusterMgr.cpp: Auto merged storage/ndb/src/ndbapi/ClusterMgr.hpp: Auto merged storage/ndb/src/ndbapi/DictCache.cpp: Auto merged storage/ndb/src/ndbapi/DictCache.hpp: Auto merged storage/ndb/src/ndbapi/Ndb.cpp: Auto merged storage/ndb/src/ndbapi/NdbApiSignal.cpp: Auto merged storage/ndb/src/ndbapi/NdbApiSignal.hpp: Auto merged storage/ndb/src/ndbapi/NdbBlob.cpp: Auto merged storage/ndb/src/ndbapi/NdbBlobImpl.hpp: Auto merged storage/ndb/src/ndbapi/NdbDictionary.cpp: Auto merged storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp: Auto merged storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp: Auto merged storage/ndb/src/ndbapi/NdbErrorOut.cpp: Auto merged storage/ndb/src/ndbapi/NdbEventOperation.cpp: Auto merged storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp: Auto merged storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp: Auto merged storage/ndb/src/ndbapi/NdbImpl.hpp: Auto merged storage/ndb/src/ndbapi/NdbIndexOperation.cpp: Auto merged storage/ndb/src/ndbapi/NdbLinHash.hpp: Auto merged storage/ndb/src/ndbapi/NdbOperation.cpp: Auto merged storage/ndb/src/ndbapi/NdbOperationDefine.cpp: Auto merged storage/ndb/src/ndbapi/NdbOperationExec.cpp: Auto merged storage/ndb/src/ndbapi/NdbOperationInt.cpp: Auto merged storage/ndb/src/ndbapi/NdbOperationScan.cpp: Auto merged storage/ndb/src/ndbapi/NdbOperationSearch.cpp: Auto merged storage/ndb/src/ndbapi/NdbPool.cpp: Auto merged storage/ndb/src/ndbapi/NdbPoolImpl.cpp: Auto merged storage/ndb/src/ndbapi/NdbPoolImpl.hpp: Auto merged storage/ndb/src/ndbapi/NdbRecAttr.cpp: Auto merged storage/ndb/src/ndbapi/NdbReceiver.cpp: Auto merged storage/ndb/src/ndbapi/NdbScanFilter.cpp: Auto merged storage/ndb/src/ndbapi/NdbScanOperation.cpp: Auto merged storage/ndb/src/ndbapi/NdbTransaction.cpp: Auto merged storage/ndb/src/ndbapi/NdbTransactionScan.cpp: Auto merged storage/ndb/src/ndbapi/NdbUtil.cpp: Auto merged storage/ndb/src/ndbapi/NdbUtil.hpp: Auto merged storage/ndb/src/ndbapi/NdbWaiter.hpp: Auto merged storage/ndb/src/ndbapi/Ndberr.cpp: Auto merged storage/ndb/src/ndbapi/Ndbif.cpp: Auto merged storage/ndb/src/ndbapi/Ndbinit.cpp: Auto merged storage/ndb/src/ndbapi/Ndblist.cpp: Auto merged storage/ndb/src/ndbapi/ObjectMap.hpp: Auto merged storage/ndb/src/ndbapi/SignalSender.cpp: Auto merged storage/ndb/src/ndbapi/SignalSender.hpp: Auto merged storage/ndb/src/ndbapi/TransporterFacade.cpp: Auto merged storage/ndb/src/ndbapi/TransporterFacade.hpp: Auto merged storage/ndb/src/ndbapi/ndb_cluster_connection.cpp: Auto merged storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp: Auto merged storage/ndb/src/ndbapi/ndberror.c: Auto merged storage/ndb/src/ndbapi/signal-sender/SignalSender.cpp: Auto merged storage/ndb/src/ndbapi/signal-sender/SignalSender.hpp: Auto merged storage/ndb/test/include/CpcClient.hpp: Auto merged storage/ndb/test/include/HugoAsynchTransactions.hpp: Auto merged storage/ndb/test/include/HugoCalculator.hpp: Auto merged storage/ndb/test/include/HugoOperations.hpp: Auto merged storage/ndb/test/include/HugoTransactions.hpp: Auto merged storage/ndb/test/include/NDBT.hpp: Auto merged storage/ndb/test/include/NDBT_DataSet.hpp: Auto merged storage/ndb/test/include/NDBT_DataSetTransaction.hpp: Auto merged storage/ndb/test/include/NDBT_Error.hpp: Auto merged storage/ndb/test/include/NDBT_Output.hpp: Auto merged storage/ndb/test/include/NDBT_ResultRow.hpp: Auto merged storage/ndb/test/include/NDBT_ReturnCodes.h: Auto merged storage/ndb/test/include/NDBT_Stats.hpp: Auto merged storage/ndb/test/include/NDBT_Table.hpp: Auto merged storage/ndb/test/include/NDBT_Tables.hpp: Auto merged storage/ndb/test/include/NDBT_Test.hpp: Auto merged storage/ndb/test/include/NdbBackup.hpp: Auto merged storage/ndb/test/include/NdbConfig.hpp: Auto merged storage/ndb/test/include/NdbGrep.hpp: Auto merged storage/ndb/test/include/NdbRestarter.hpp: Auto merged storage/ndb/test/include/NdbRestarts.hpp: Auto merged storage/ndb/test/include/NdbSchemaCon.hpp: Auto merged storage/ndb/test/include/NdbSchemaOp.hpp: Auto merged storage/ndb/test/include/NdbTest.hpp: Auto merged storage/ndb/test/include/NdbTimer.hpp: Auto merged storage/ndb/test/include/TestNdbEventOperation.hpp: Auto merged storage/ndb/test/include/UtilTransactions.hpp: Auto merged storage/ndb/test/include/getarg.h: Auto merged storage/ndb/test/ndbapi/InsertRecs.cpp: Auto merged storage/ndb/test/ndbapi/ScanFilter.hpp: Auto merged storage/ndb/test/ndbapi/ScanFunctions.hpp: Auto merged storage/ndb/test/ndbapi/ScanInterpretTest.hpp: Auto merged storage/ndb/test/ndbapi/TraceNdbApi.cpp: Auto merged storage/ndb/test/ndbapi/VerifyNdbApi.cpp: Auto merged storage/ndb/test/ndbapi/acid.cpp: Auto merged storage/ndb/test/ndbapi/acid2.cpp: Auto merged storage/ndb/test/ndbapi/adoInsertRecs.cpp: Auto merged storage/ndb/test/ndbapi/asyncGenerator.cpp: Auto merged storage/ndb/test/ndbapi/benchronja.cpp: Auto merged storage/ndb/test/ndbapi/bulk_copy.cpp: Auto merged storage/ndb/test/ndbapi/cdrserver.cpp: Auto merged storage/ndb/test/ndbapi/celloDb.cpp: Auto merged storage/ndb/test/ndbapi/create_all_tabs.cpp: Auto merged storage/ndb/test/ndbapi/create_tab.cpp: Auto merged storage/ndb/test/ndbapi/drop_all_tabs.cpp: Auto merged storage/ndb/test/ndbapi/flexAsynch.cpp: Auto merged storage/ndb/test/ndbapi/flexBench.cpp: Auto merged storage/ndb/test/ndbapi/flexHammer.cpp: Auto merged storage/ndb/test/ndbapi/flexScan.cpp: Auto merged storage/ndb/test/ndbapi/flexTT.cpp: Auto merged storage/ndb/test/ndbapi/flexTimedAsynch.cpp: Auto merged storage/ndb/test/ndbapi/flex_bench_mysql.cpp: Auto merged storage/ndb/test/ndbapi/index.cpp: Auto merged storage/ndb/test/ndbapi/index2.cpp: Auto merged storage/ndb/test/ndbapi/initronja.cpp: Auto merged storage/ndb/test/ndbapi/interpreterInTup.cpp: Auto merged storage/ndb/test/ndbapi/mainAsyncGenerator.cpp: Auto merged storage/ndb/test/ndbapi/msa.cpp: Auto merged storage/ndb/test/ndbapi/ndb_async1.cpp: Auto merged storage/ndb/test/ndbapi/ndb_async2.cpp: Auto merged storage/ndb/test/ndbapi/ndb_user_populate.cpp: Auto merged storage/ndb/test/ndbapi/ndb_user_transaction.cpp: Auto merged storage/ndb/test/ndbapi/ndb_user_transaction2.cpp: Auto merged storage/ndb/test/ndbapi/ndb_user_transaction3.cpp: Auto merged storage/ndb/test/ndbapi/ndb_user_transaction4.cpp: Auto merged storage/ndb/test/ndbapi/ndb_user_transaction5.cpp: Auto merged storage/ndb/test/ndbapi/ndb_user_transaction6.cpp: Auto merged storage/ndb/test/ndbapi/restarter.cpp: Auto merged storage/ndb/test/ndbapi/restarter2.cpp: Auto merged storage/ndb/test/ndbapi/restarts.cpp: Auto merged storage/ndb/test/ndbapi/size.cpp: Auto merged storage/ndb/test/ndbapi/testBackup.cpp: Auto merged storage/ndb/test/ndbapi/testBasic.cpp: Auto merged storage/ndb/test/ndbapi/testBasicAsynch.cpp: Auto merged storage/ndb/test/ndbapi/testBlobs.cpp: Auto merged storage/ndb/test/ndbapi/testDataBuffers.cpp: Auto merged storage/ndb/test/ndbapi/testDeadlock.cpp: Auto merged storage/ndb/test/ndbapi/testDict.cpp: Auto merged storage/ndb/test/ndbapi/testGrepVerify.cpp: Auto merged storage/ndb/test/ndbapi/testIndex.cpp: Auto merged storage/ndb/test/ndbapi/testInterpreter.cpp: Auto merged storage/ndb/test/ndbapi/testMgm.cpp: Auto merged storage/ndb/test/ndbapi/testNdbApi.cpp: Auto merged storage/ndb/test/ndbapi/testNodeRestart.cpp: Auto merged storage/ndb/test/ndbapi/testOIBasic.cpp: Auto merged storage/ndb/test/ndbapi/testOperations.cpp: Auto merged storage/ndb/test/ndbapi/testOrderedIndex.cpp: Auto merged storage/ndb/test/ndbapi/testPartitioning.cpp: Auto merged storage/ndb/test/ndbapi/testReadPerf.cpp: Auto merged storage/ndb/test/ndbapi/bank/Bank.cpp: Auto merged storage/ndb/test/ndbapi/bank/Bank.hpp: Auto merged storage/ndb/test/ndbapi/bank/BankLoad.cpp: Auto merged storage/ndb/test/ndbapi/bank/bankCreator.cpp: Auto merged storage/ndb/test/ndbapi/bank/bankMakeGL.cpp: Auto merged storage/ndb/test/ndbapi/bank/bankSumAccounts.cpp: Auto merged storage/ndb/test/ndbapi/bank/bankTimer.cpp: Auto merged storage/ndb/test/ndbapi/bank/bankTransactionMaker.cpp: Auto merged storage/ndb/test/ndbapi/bank/bankValidateAllGLs.cpp: Auto merged storage/ndb/test/ndbapi/bank/testBank.cpp: Auto merged storage/ndb/test/ndbapi/bench/asyncGenerator.cpp: Auto merged storage/ndb/test/ndbapi/bench/dbGenerator.h: Auto merged storage/ndb/test/ndbapi/bench/dbPopulate.cpp: Auto merged storage/ndb/test/ndbapi/bench/dbPopulate.h: Auto merged storage/ndb/test/ndbapi/bench/macros.h: Auto merged storage/ndb/test/ndbapi/bench/mainAsyncGenerator.cpp: Auto merged storage/ndb/test/ndbapi/bench/mainPopulate.cpp: Auto merged storage/ndb/test/ndbapi/bench/ndb_async1.cpp: Auto merged storage/ndb/test/ndbapi/bench/ndb_async2.cpp: Auto merged storage/ndb/test/ndbapi/testRestartGci.cpp: Auto merged storage/ndb/test/ndbapi/testSRBank.cpp: Auto merged storage/ndb/test/ndbapi/testScan.cpp: Auto merged storage/ndb/test/ndbapi/testScanInterpreter.cpp: Auto merged storage/ndb/test/ndbapi/testScanPerf.cpp: Auto merged storage/ndb/test/ndbapi/testSystemRestart.cpp: Auto merged storage/ndb/test/ndbapi/testTimeout.cpp: Auto merged storage/ndb/test/ndbapi/testTransactions.cpp: Auto merged storage/ndb/test/ndbapi/test_event.cpp: Auto merged storage/ndb/test/ndbapi/test_event_merge.cpp: Auto merged storage/ndb/test/ndbapi/test_event_multi_table.cpp: Auto merged storage/ndb/test/ndbapi/userInterface.cpp: Auto merged storage/ndb/test/ndbapi/bench/ndb_error.hpp: Auto merged storage/ndb/test/ndbapi/bench/ndb_schema.hpp: Auto merged storage/ndb/test/ndbapi/bench/ndb_user_transaction.cpp: Auto merged storage/ndb/test/ndbapi/bench/ndb_user_transaction2.cpp: Auto merged storage/ndb/test/ndbapi/bench/ndb_user_transaction3.cpp: Auto merged storage/ndb/test/ndbapi/bench/ndb_user_transaction4.cpp: Auto merged storage/ndb/test/ndbapi/bench/ndb_user_transaction5.cpp: Auto merged storage/ndb/test/ndbapi/bench/ndb_user_transaction6.cpp: Auto merged storage/ndb/test/ndbapi/bench/testData.h: Auto merged storage/ndb/test/ndbapi/bench/testDefinitions.h: Auto merged storage/ndb/test/ndbapi/bench/userInterface.cpp: Auto merged storage/ndb/test/ndbapi/bench/userInterface.h: Auto merged storage/ndb/test/newtonapi/basic_test/basic/basic.cpp: Auto merged storage/ndb/test/newtonapi/basic_test/bulk_read/br_test.cpp: Auto merged storage/ndb/test/newtonapi/basic_test/common.cpp: Auto merged storage/ndb/test/newtonapi/basic_test/common.hpp: Auto merged storage/ndb/test/newtonapi/basic_test/ptr_binding/ptr_binding_test.cpp: Auto merged storage/ndb/test/newtonapi/basic_test/too_basic.cpp: Auto merged storage/ndb/test/newtonapi/perf_test/perf.cpp: Auto merged storage/ndb/test/odbc/SQL99_test/SQL99_test.cpp: Auto merged storage/ndb/test/odbc/SQL99_test/SQL99_test.h: Auto merged storage/ndb/test/odbc/client/NDBT_ALLOCHANDLE.cpp: Auto merged storage/ndb/test/odbc/client/NDBT_ALLOCHANDLE_HDBC.cpp: Auto merged storage/ndb/test/odbc/client/NDBT_SQLConnect.cpp: Auto merged storage/ndb/test/odbc/client/NDBT_SQLPrepare.cpp: Auto merged storage/ndb/test/odbc/client/SQLAllocEnvTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLAllocHandleTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLAllocHandleTest_bf.cpp: Auto merged storage/ndb/test/odbc/client/SQLBindColTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLBindParameterTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLCancelTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLCloseCursorTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLColAttributeTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLColAttributeTest1.cpp: Auto merged storage/ndb/test/odbc/client/SQLColAttributeTest2.cpp: Auto merged storage/ndb/test/odbc/client/SQLColAttributeTest3.cpp: Auto merged storage/ndb/test/odbc/client/SQLConnectTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLCopyDescTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLDescribeColTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLDisconnectTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLDriverConnectTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLEndTranTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLErrorTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLExecDirectTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLExecuteTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLFetchScrollTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLFetchTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLFreeHandleTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLFreeStmtTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetConnectAttrTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetCursorNameTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetDataTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetDescFieldTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetDescRecTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetDiagFieldTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetDiagRecSimpleTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetDiagRecTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetEnvAttrTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetFunctionsTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetInfoTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetStmtAttrTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLGetTypeInfoTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLMoreResultsTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLNumResultColsTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLParamDataTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLPrepareTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLPutDataTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLRowCountTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLSetConnectAttrTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLSetCursorNameTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLSetDescFieldTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLSetDescRecTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLSetEnvAttrTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLSetStmtAttrTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLTablesTest.cpp: Auto merged storage/ndb/test/odbc/client/SQLTransactTest.cpp: Auto merged storage/ndb/test/odbc/client/common.hpp: Auto merged storage/ndb/test/odbc/client/main.cpp: Auto merged storage/ndb/test/odbc/driver/testOdbcDriver.cpp: Auto merged storage/ndb/test/odbc/test_compiler/test_compiler.cpp: Auto merged storage/ndb/test/run-test/main.cpp: Auto merged storage/ndb/test/run-test/run-test.hpp: Auto merged storage/ndb/test/src/CpcClient.cpp: Auto merged storage/ndb/test/src/HugoAsynchTransactions.cpp: Auto merged storage/ndb/test/src/HugoCalculator.cpp: Auto merged storage/ndb/test/src/HugoOperations.cpp: Auto merged storage/ndb/test/src/HugoTransactions.cpp: Auto merged storage/ndb/test/src/NDBT_Error.cpp: Auto merged storage/ndb/test/src/NDBT_Output.cpp: Auto merged storage/ndb/test/src/NDBT_ResultRow.cpp: Auto merged storage/ndb/test/src/NDBT_ReturnCodes.cpp: Auto merged storage/ndb/test/src/NDBT_Table.cpp: Auto merged storage/ndb/test/src/NDBT_Tables.cpp: Auto merged storage/ndb/test/src/NDBT_Test.cpp: Auto merged storage/ndb/test/src/NdbBackup.cpp: Auto merged storage/ndb/test/src/NdbConfig.cpp: Auto merged storage/ndb/test/src/NdbGrep.cpp: Auto merged storage/ndb/test/src/NdbRestarter.cpp: Auto merged storage/ndb/test/src/NdbRestarts.cpp: Auto merged storage/ndb/test/src/NdbSchemaCon.cpp: Auto merged storage/ndb/test/src/NdbSchemaOp.cpp: Auto merged storage/ndb/test/src/UtilTransactions.cpp: Auto merged storage/ndb/test/tools/copy_tab.cpp: Auto merged storage/ndb/test/tools/cpcc.cpp: Auto merged storage/ndb/test/tools/create_index.cpp: Auto merged storage/ndb/test/tools/hugoCalculator.cpp: Auto merged storage/ndb/test/tools/hugoFill.cpp: Auto merged storage/ndb/test/tools/hugoLoad.cpp: Auto merged storage/ndb/test/tools/hugoLockRecords.cpp: Auto merged storage/ndb/test/tools/hugoPkDelete.cpp: Auto merged storage/ndb/test/tools/hugoPkRead.cpp: Auto merged storage/ndb/test/tools/hugoPkReadRecord.cpp: Auto merged storage/ndb/test/tools/hugoPkUpdate.cpp: Auto merged storage/ndb/test/tools/hugoScanRead.cpp: Auto merged storage/ndb/test/tools/hugoScanUpdate.cpp: Auto merged storage/ndb/test/tools/restart.cpp: Auto merged storage/ndb/test/tools/transproxy.cpp: Auto merged storage/ndb/test/tools/verify_index.cpp: Auto merged storage/ndb/tools/delete_all.cpp: Auto merged storage/ndb/tools/desc.cpp: Auto merged storage/ndb/tools/drop_index.cpp: Auto merged storage/ndb/tools/drop_tab.cpp: Auto merged storage/ndb/tools/listTables.cpp: Auto merged storage/ndb/tools/ndb_condig.cpp: Auto merged storage/ndb/tools/ndb_test_platform.cpp: Auto merged storage/ndb/tools/ndbsql.cpp: Auto merged storage/ndb/tools/restore/Restore.cpp: Auto merged storage/ndb/tools/restore/Restore.hpp: Auto merged storage/ndb/tools/restore/consumer.cpp: Auto merged storage/ndb/tools/restore/consumer.hpp: Auto merged storage/ndb/tools/restore/consumer_printer.cpp: Auto merged storage/ndb/tools/restore/consumer_printer.hpp: Auto merged storage/ndb/tools/restore/consumer_restore.cpp: Auto merged storage/ndb/tools/restore/consumer_restore.hpp: Auto merged storage/ndb/tools/restore/consumer_restorem.cpp: Auto merged storage/ndb/tools/restore/restore_main.cpp: Auto merged storage/ndb/tools/select_all.cpp: Auto merged storage/ndb/tools/select_count.cpp: Auto merged storage/ndb/tools/waiter.cpp: Auto merged strings/Makefile.am: Auto merged strings/ctype-big5.c: Auto merged strings/ctype-bin.c: Auto merged strings/ctype-cp932.c: Auto merged strings/ctype-euc_kr.c: Auto merged strings/ctype-eucjpms.c: Auto merged strings/ctype-gb2312.c: Auto merged strings/ctype-gbk.c: Auto merged strings/ctype-latin1.c: Auto merged strings/ctype-mb.c: Auto merged strings/ctype-simple.c: Auto merged strings/ctype-sjis.c: Auto merged strings/ctype-tis620.c: Auto merged strings/ctype-ucs2.c: Auto merged strings/ctype-ujis.c: Auto merged strings/ctype-utf8.c: Auto merged strings/ctype-win1250ch.c: Auto merged strings/ctype.c: Auto merged strings/decimal.c: Auto merged strings/strxnmov.c: Auto merged strings/xml.c: Auto merged tests/Makefile.am: Auto merged tests/mysql_client_test.c: Auto merged vio/Makefile.am: Auto merged vio/vio.c: Auto merged vio/viosocket.c: Auto merged vio/viossl.c: Auto merged vio/viosslfactories.c: Auto merged zlib/Makefile.am: Auto merged
2194 lines
70 KiB
C++
2194 lines
70 KiB
C++
/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
|
|
|
|
|
#ifndef _log_event_h
|
|
#define _log_event_h
|
|
|
|
#if defined(USE_PRAGMA_INTERFACE) && !defined(MYSQL_CLIENT)
|
|
#pragma interface /* gcc class implementation */
|
|
#endif
|
|
|
|
#include <my_bitmap.h>
|
|
|
|
#define LOG_READ_EOF -1
|
|
#define LOG_READ_BOGUS -2
|
|
#define LOG_READ_IO -3
|
|
#define LOG_READ_MEM -5
|
|
#define LOG_READ_TRUNC -6
|
|
#define LOG_READ_TOO_LARGE -7
|
|
|
|
#define LOG_EVENT_OFFSET 4
|
|
|
|
/*
|
|
3 is MySQL 4.x; 4 is MySQL 5.0.0.
|
|
Compared to version 3, version 4 has:
|
|
- a different Start_log_event, which includes info about the binary log
|
|
(sizes of headers); this info is included for better compatibility if the
|
|
master's MySQL version is different from the slave's.
|
|
- all events have a unique ID (the triplet (server_id, timestamp at server
|
|
start, other) to be sure an event is not executed more than once in a
|
|
multimaster setup, example:
|
|
M1
|
|
/ \
|
|
v v
|
|
M2 M3
|
|
\ /
|
|
v v
|
|
S
|
|
if a query is run on M1, it will arrive twice on S, so we need that S
|
|
remembers the last unique ID it has processed, to compare and know if the
|
|
event should be skipped or not. Example of ID: we already have the server id
|
|
(4 bytes), plus:
|
|
timestamp_when_the_master_started (4 bytes), a counter (a sequence number
|
|
which increments every time we write an event to the binlog) (3 bytes).
|
|
Q: how do we handle when the counter is overflowed and restarts from 0 ?
|
|
|
|
- Query and Load (Create or Execute) events may have a more precise timestamp
|
|
(with microseconds), number of matched/affected/warnings rows
|
|
and fields of session variables: SQL_MODE,
|
|
FOREIGN_KEY_CHECKS, UNIQUE_CHECKS, SQL_AUTO_IS_NULL, the collations and
|
|
charsets, the PASSWORD() version (old/new/...).
|
|
*/
|
|
#define BINLOG_VERSION 4
|
|
|
|
/*
|
|
We could have used SERVER_VERSION_LENGTH, but this introduces an
|
|
obscure dependency - if somebody decided to change SERVER_VERSION_LENGTH
|
|
this would break the replication protocol
|
|
*/
|
|
#define ST_SERVER_VER_LEN 50
|
|
|
|
/*
|
|
These are flags and structs to handle all the LOAD DATA INFILE options (LINES
|
|
TERMINATED etc).
|
|
*/
|
|
|
|
/*
|
|
These are flags and structs to handle all the LOAD DATA INFILE options (LINES
|
|
TERMINATED etc).
|
|
DUMPFILE_FLAG is probably useless (DUMPFILE is a clause of SELECT, not of LOAD
|
|
DATA).
|
|
*/
|
|
#define DUMPFILE_FLAG 0x1
|
|
#define OPT_ENCLOSED_FLAG 0x2
|
|
#define REPLACE_FLAG 0x4
|
|
#define IGNORE_FLAG 0x8
|
|
|
|
#define FIELD_TERM_EMPTY 0x1
|
|
#define ENCLOSED_EMPTY 0x2
|
|
#define LINE_TERM_EMPTY 0x4
|
|
#define LINE_START_EMPTY 0x8
|
|
#define ESCAPED_EMPTY 0x10
|
|
|
|
/*****************************************************************************
|
|
|
|
old_sql_ex struct
|
|
|
|
****************************************************************************/
|
|
struct old_sql_ex
|
|
{
|
|
char field_term;
|
|
char enclosed;
|
|
char line_term;
|
|
char line_start;
|
|
char escaped;
|
|
char opt_flags;
|
|
char empty_flags;
|
|
};
|
|
|
|
#define NUM_LOAD_DELIM_STRS 5
|
|
|
|
/*****************************************************************************
|
|
|
|
sql_ex_info struct
|
|
|
|
****************************************************************************/
|
|
struct sql_ex_info
|
|
{
|
|
sql_ex_info() {} /* Remove gcc warning */
|
|
char* field_term;
|
|
char* enclosed;
|
|
char* line_term;
|
|
char* line_start;
|
|
char* escaped;
|
|
int cached_new_format;
|
|
uint8 field_term_len,enclosed_len,line_term_len,line_start_len, escaped_len;
|
|
char opt_flags;
|
|
char empty_flags;
|
|
|
|
// store in new format even if old is possible
|
|
void force_new_format() { cached_new_format = 1;}
|
|
int data_size()
|
|
{
|
|
return (new_format() ?
|
|
field_term_len + enclosed_len + line_term_len +
|
|
line_start_len + escaped_len + 6 : 7);
|
|
}
|
|
bool write_data(IO_CACHE* file);
|
|
char* init(char* buf,char* buf_end,bool use_new_format);
|
|
bool new_format()
|
|
{
|
|
return ((cached_new_format != -1) ? cached_new_format :
|
|
(cached_new_format=(field_term_len > 1 ||
|
|
enclosed_len > 1 ||
|
|
line_term_len > 1 || line_start_len > 1 ||
|
|
escaped_len > 1)));
|
|
}
|
|
};
|
|
|
|
/*****************************************************************************
|
|
|
|
MySQL Binary Log
|
|
|
|
This log consists of events. Each event has a fixed-length header,
|
|
possibly followed by a variable length data body.
|
|
|
|
The data body consists of an optional fixed length segment (post-header)
|
|
and an optional variable length segment.
|
|
|
|
See the #defines below for the format specifics.
|
|
|
|
The events which really update data are Query_log_event,
|
|
Execute_load_query_log_event and old Load_log_event and
|
|
Execute_load_log_event events (Execute_load_query is used together with
|
|
Begin_load_query and Append_block events to replicate LOAD DATA INFILE.
|
|
Create_file/Append_block/Execute_load (which includes Load_log_event)
|
|
were used to replicate LOAD DATA before the 5.0.3).
|
|
|
|
****************************************************************************/
|
|
|
|
#define LOG_EVENT_HEADER_LEN 19 /* the fixed header length */
|
|
#define OLD_HEADER_LEN 13 /* the fixed header length in 3.23 */
|
|
/*
|
|
Fixed header length, where 4.x and 5.0 agree. That is, 5.0 may have a longer
|
|
header (it will for sure when we have the unique event's ID), but at least
|
|
the first 19 bytes are the same in 4.x and 5.0. So when we have the unique
|
|
event's ID, LOG_EVENT_HEADER_LEN will be something like 26, but
|
|
LOG_EVENT_MINIMAL_HEADER_LEN will remain 19.
|
|
*/
|
|
#define LOG_EVENT_MINIMAL_HEADER_LEN 19
|
|
|
|
/* event-specific post-header sizes */
|
|
// where 3.23, 4.x and 5.0 agree
|
|
#define QUERY_HEADER_MINIMAL_LEN (4 + 4 + 1 + 2)
|
|
// where 5.0 differs: 2 for len of N-bytes vars.
|
|
#define QUERY_HEADER_LEN (QUERY_HEADER_MINIMAL_LEN + 2)
|
|
#define LOAD_HEADER_LEN (4 + 4 + 4 + 1 +1 + 4)
|
|
#define START_V3_HEADER_LEN (2 + ST_SERVER_VER_LEN + 4)
|
|
#define ROTATE_HEADER_LEN 8 // this is FROZEN (the Rotate post-header is frozen)
|
|
#define CREATE_FILE_HEADER_LEN 4
|
|
#define APPEND_BLOCK_HEADER_LEN 4
|
|
#define EXEC_LOAD_HEADER_LEN 4
|
|
#define DELETE_FILE_HEADER_LEN 4
|
|
#define FORMAT_DESCRIPTION_HEADER_LEN (START_V3_HEADER_LEN+1+LOG_EVENT_TYPES)
|
|
#define ROWS_HEADER_LEN 8
|
|
#define TABLE_MAP_HEADER_LEN 8
|
|
#define EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN (4 + 4 + 4 + 1)
|
|
#define EXECUTE_LOAD_QUERY_HEADER_LEN (QUERY_HEADER_LEN + EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN)
|
|
|
|
/*
|
|
Max number of possible extra bytes in a replication event compared to a
|
|
packet (i.e. a query) sent from client to master;
|
|
First, an auxiliary log_event status vars estimation:
|
|
*/
|
|
#define MAX_SIZE_LOG_EVENT_STATUS (4 /* flags2 */ + \
|
|
8 /* sql mode */ + \
|
|
1 + 1 + 255 /* catalog */ + \
|
|
4 /* autoinc */ + \
|
|
6 /* charset */ + \
|
|
MAX_TIME_ZONE_NAME_LENGTH)
|
|
#define MAX_LOG_EVENT_HEADER ( /* in order of Query_log_event::write */ \
|
|
LOG_EVENT_HEADER_LEN + /* write_header */ \
|
|
QUERY_HEADER_LEN + /* write_data */ \
|
|
EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN + /*write_post_header_for_derived */ \
|
|
MAX_SIZE_LOG_EVENT_STATUS + /* status */ \
|
|
NAME_LEN + 1)
|
|
|
|
/*
|
|
Event header offsets;
|
|
these point to places inside the fixed header.
|
|
*/
|
|
|
|
#define EVENT_TYPE_OFFSET 4
|
|
#define SERVER_ID_OFFSET 5
|
|
#define EVENT_LEN_OFFSET 9
|
|
#define LOG_POS_OFFSET 13
|
|
#define FLAGS_OFFSET 17
|
|
|
|
/* start event post-header (for v3 and v4) */
|
|
|
|
#define ST_BINLOG_VER_OFFSET 0
|
|
#define ST_SERVER_VER_OFFSET 2
|
|
#define ST_CREATED_OFFSET (ST_SERVER_VER_OFFSET + ST_SERVER_VER_LEN)
|
|
#define ST_COMMON_HEADER_LEN_OFFSET (ST_CREATED_OFFSET + 4)
|
|
|
|
/* slave event post-header (this event is never written) */
|
|
|
|
#define SL_MASTER_PORT_OFFSET 8
|
|
#define SL_MASTER_POS_OFFSET 0
|
|
#define SL_MASTER_HOST_OFFSET 10
|
|
|
|
/* query event post-header */
|
|
|
|
#define Q_THREAD_ID_OFFSET 0
|
|
#define Q_EXEC_TIME_OFFSET 4
|
|
#define Q_DB_LEN_OFFSET 8
|
|
#define Q_ERR_CODE_OFFSET 9
|
|
#define Q_STATUS_VARS_LEN_OFFSET 11
|
|
#define Q_DATA_OFFSET QUERY_HEADER_LEN
|
|
/* these are codes, not offsets; not more than 256 values (1 byte). */
|
|
#define Q_FLAGS2_CODE 0
|
|
#define Q_SQL_MODE_CODE 1
|
|
/*
|
|
Q_CATALOG_CODE is catalog with end zero stored; it is used only by MySQL
|
|
5.0.x where 0<=x<=3. We have to keep it to be able to replicate these
|
|
old masters.
|
|
*/
|
|
#define Q_CATALOG_CODE 2
|
|
#define Q_AUTO_INCREMENT 3
|
|
#define Q_CHARSET_CODE 4
|
|
#define Q_TIME_ZONE_CODE 5
|
|
/*
|
|
Q_CATALOG_NZ_CODE is catalog withOUT end zero stored; it is used by MySQL
|
|
5.0.x where x>=4. Saves one byte in every Query_log_event in binlog,
|
|
compared to Q_CATALOG_CODE. The reason we didn't simply re-use
|
|
Q_CATALOG_CODE is that then a 5.0.3 slave of this 5.0.x (x>=4) master would
|
|
crash (segfault etc) because it would expect a 0 when there is none.
|
|
*/
|
|
#define Q_CATALOG_NZ_CODE 6
|
|
|
|
/* Intvar event post-header */
|
|
|
|
#define I_TYPE_OFFSET 0
|
|
#define I_VAL_OFFSET 1
|
|
|
|
/* Rand event post-header */
|
|
|
|
#define RAND_SEED1_OFFSET 0
|
|
#define RAND_SEED2_OFFSET 8
|
|
|
|
/* User_var event post-header */
|
|
|
|
#define UV_VAL_LEN_SIZE 4
|
|
#define UV_VAL_IS_NULL 1
|
|
#define UV_VAL_TYPE_SIZE 1
|
|
#define UV_NAME_LEN_SIZE 4
|
|
#define UV_CHARSET_NUMBER_SIZE 4
|
|
|
|
/* Load event post-header */
|
|
|
|
#define L_THREAD_ID_OFFSET 0
|
|
#define L_EXEC_TIME_OFFSET 4
|
|
#define L_SKIP_LINES_OFFSET 8
|
|
#define L_TBL_LEN_OFFSET 12
|
|
#define L_DB_LEN_OFFSET 13
|
|
#define L_NUM_FIELDS_OFFSET 14
|
|
#define L_SQL_EX_OFFSET 18
|
|
#define L_DATA_OFFSET LOAD_HEADER_LEN
|
|
|
|
/* Rotate event post-header */
|
|
|
|
#define R_POS_OFFSET 0
|
|
#define R_IDENT_OFFSET 8
|
|
|
|
/* CF to DF handle LOAD DATA INFILE */
|
|
|
|
/* CF = "Create File" */
|
|
#define CF_FILE_ID_OFFSET 0
|
|
#define CF_DATA_OFFSET CREATE_FILE_HEADER_LEN
|
|
|
|
/* AB = "Append Block" */
|
|
#define AB_FILE_ID_OFFSET 0
|
|
#define AB_DATA_OFFSET APPEND_BLOCK_HEADER_LEN
|
|
|
|
/* EL = "Execute Load" */
|
|
#define EL_FILE_ID_OFFSET 0
|
|
|
|
/* DF = "Delete File" */
|
|
#define DF_FILE_ID_OFFSET 0
|
|
|
|
/* TM = "Table Map" */
|
|
#define TM_MAPID_OFFSET 0
|
|
#define TM_FLAGS_OFFSET 6
|
|
|
|
/* RW = "RoWs" */
|
|
#define RW_MAPID_OFFSET 0
|
|
#define RW_FLAGS_OFFSET 6
|
|
|
|
/* ELQ = "Execute Load Query" */
|
|
#define ELQ_FILE_ID_OFFSET QUERY_HEADER_LEN
|
|
#define ELQ_FN_POS_START_OFFSET ELQ_FILE_ID_OFFSET + 4
|
|
#define ELQ_FN_POS_END_OFFSET ELQ_FILE_ID_OFFSET + 8
|
|
#define ELQ_DUP_HANDLING_OFFSET ELQ_FILE_ID_OFFSET + 12
|
|
|
|
/* 4 bytes which all binlogs should begin with */
|
|
#define BINLOG_MAGIC "\xfe\x62\x69\x6e"
|
|
|
|
/*
|
|
The 2 flags below were useless :
|
|
- the first one was never set
|
|
- the second one was set in all Rotate events on the master, but not used for
|
|
anything useful.
|
|
So they are now removed and their place may later be reused for other
|
|
flags. Then one must remember that Rotate events in 4.x have
|
|
LOG_EVENT_FORCED_ROTATE_F set, so one should not rely on the value of the
|
|
replacing flag when reading a Rotate event.
|
|
I keep the defines here just to remember what they were.
|
|
*/
|
|
#ifdef TO_BE_REMOVED
|
|
#define LOG_EVENT_TIME_F 0x1
|
|
#define LOG_EVENT_FORCED_ROTATE_F 0x2
|
|
#endif
|
|
|
|
/*
|
|
This flag only makes sense for Format_description_log_event. It is set
|
|
when the event is written, and *reset* when a binlog file is
|
|
closed (yes, it's the only case when MySQL modifies already written
|
|
part of binlog). Thus it is a reliable indicator that binlog was
|
|
closed correctly. (Stop_log_event is not enough, there's always a
|
|
small chance that mysqld crashes in the middle of insert and end of
|
|
the binlog would look like a Stop_log_event).
|
|
|
|
This flag is used to detect a restart after a crash, and to provide
|
|
"unbreakable" binlog. The problem is that on a crash storage engines
|
|
rollback automatically, while binlog does not. To solve this we use this
|
|
flag and automatically append ROLLBACK to every non-closed binlog (append
|
|
virtually, on reading, file itself is not changed). If this flag is found,
|
|
mysqlbinlog simply prints "ROLLBACK" Replication master does not abort on
|
|
binlog corruption, but takes it as EOF, and replication slave forces a
|
|
rollback in this case.
|
|
|
|
Note, that old binlogs does not have this flag set, so we get a
|
|
a backward-compatible behaviour.
|
|
*/
|
|
|
|
#define LOG_EVENT_BINLOG_IN_USE_F 0x1
|
|
|
|
/*
|
|
If the query depends on the thread (for example: TEMPORARY TABLE).
|
|
Currently this is used by mysqlbinlog to know it must print
|
|
SET @@PSEUDO_THREAD_ID=xx; before the query (it would not hurt to print it
|
|
for every query but this would be slow).
|
|
*/
|
|
#define LOG_EVENT_THREAD_SPECIFIC_F 0x4
|
|
|
|
/*
|
|
Suppress the generation of 'USE' statements before the actual
|
|
statement. This flag should be set for any events that does not need
|
|
the current database set to function correctly. Most notable cases
|
|
are 'CREATE DATABASE' and 'DROP DATABASE'.
|
|
|
|
This flags should only be used in exceptional circumstances, since
|
|
it introduce a significant change in behaviour regarding the
|
|
replication logic together with the flags --binlog-do-db and
|
|
--replicated-do-db.
|
|
*/
|
|
#define LOG_EVENT_SUPPRESS_USE_F 0x8
|
|
|
|
/*
|
|
The table map version internal to the log should be increased after
|
|
the event has been written to the binary log.
|
|
*/
|
|
#define LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F 0x10
|
|
|
|
/*
|
|
OPTIONS_WRITTEN_TO_BIN_LOG are the bits of thd->options which must be
|
|
written to the binlog. OPTIONS_WRITTEN_TO_BINLOG could be written
|
|
into the Format_description_log_event, so that if later we don't want
|
|
to replicate a variable we did replicate, or the contrary, it's
|
|
doable. But it should not be too hard to decide once for all of what
|
|
we replicate and what we don't, among the fixed 32 bits of
|
|
thd->options.
|
|
I (Guilhem) have read through every option's usage, and it looks like
|
|
OPTION_AUTO_IS_NULL and OPTION_NO_FOREIGN_KEYS are the only ones
|
|
which alter how the query modifies the table. It's good to replicate
|
|
OPTION_RELAXED_UNIQUE_CHECKS too because otherwise, the slave may
|
|
insert data slower than the master, in InnoDB.
|
|
OPTION_BIG_SELECTS is not needed (the slave thread runs with
|
|
max_join_size=HA_POS_ERROR) and OPTION_BIG_TABLES is not needed
|
|
either, as the manual says (because a too big in-memory temp table is
|
|
automatically written to disk).
|
|
*/
|
|
#define OPTIONS_WRITTEN_TO_BIN_LOG (OPTION_AUTO_IS_NULL | \
|
|
OPTION_NO_FOREIGN_KEY_CHECKS | OPTION_RELAXED_UNIQUE_CHECKS)
|
|
|
|
#if OPTIONS_WRITTEN_TO_BIN_LOG != ((1L << 14) | (1L << 26) | (1L << 27))
|
|
#error OPTIONS_WRITTEN_TO_BIN_LOG must NOT change their values!
|
|
#endif
|
|
|
|
enum Log_event_type
|
|
{
|
|
/*
|
|
Every time you update this enum (when you add a type), you have to
|
|
fix Format_description_log_event::Format_description_log_event().
|
|
*/
|
|
UNKNOWN_EVENT= 0,
|
|
START_EVENT_V3= 1,
|
|
QUERY_EVENT= 2,
|
|
STOP_EVENT= 3,
|
|
ROTATE_EVENT= 4,
|
|
INTVAR_EVENT= 5,
|
|
LOAD_EVENT= 6,
|
|
SLAVE_EVENT= 7,
|
|
CREATE_FILE_EVENT= 8,
|
|
APPEND_BLOCK_EVENT= 9,
|
|
EXEC_LOAD_EVENT= 10,
|
|
DELETE_FILE_EVENT= 11,
|
|
/*
|
|
NEW_LOAD_EVENT is like LOAD_EVENT except that it has a longer
|
|
sql_ex, allowing multibyte TERMINATED BY etc; both types share the
|
|
same class (Load_log_event)
|
|
*/
|
|
NEW_LOAD_EVENT= 12,
|
|
RAND_EVENT= 13,
|
|
USER_VAR_EVENT= 14,
|
|
FORMAT_DESCRIPTION_EVENT= 15,
|
|
XID_EVENT= 16,
|
|
BEGIN_LOAD_QUERY_EVENT= 17,
|
|
EXECUTE_LOAD_QUERY_EVENT= 18,
|
|
TABLE_MAP_EVENT = 19,
|
|
WRITE_ROWS_EVENT = 20,
|
|
UPDATE_ROWS_EVENT = 21,
|
|
DELETE_ROWS_EVENT = 22,
|
|
|
|
/*
|
|
Add new events here - right above this comment!
|
|
Existing events (except ENUM_END_EVENT) should never change their numbers
|
|
*/
|
|
|
|
ENUM_END_EVENT /* end marker */
|
|
};
|
|
|
|
/*
|
|
The number of types we handle in Format_description_log_event (UNKNOWN_EVENT
|
|
is not to be handled, it does not exist in binlogs, it does not have a
|
|
format).
|
|
*/
|
|
#define LOG_EVENT_TYPES (ENUM_END_EVENT-1)
|
|
|
|
enum Int_event_type
|
|
{
|
|
INVALID_INT_EVENT = 0, LAST_INSERT_ID_EVENT = 1, INSERT_ID_EVENT = 2
|
|
};
|
|
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
class String;
|
|
class MYSQL_BIN_LOG;
|
|
class THD;
|
|
#endif
|
|
|
|
class Format_description_log_event;
|
|
|
|
struct st_relay_log_info;
|
|
|
|
#ifdef MYSQL_CLIENT
|
|
/*
|
|
A structure for mysqlbinlog to know how to print events
|
|
|
|
This structure is passed to the event's print() methods,
|
|
|
|
There are two types of settings stored here:
|
|
1. Last db, flags2, sql_mode etc comes from the last printed event.
|
|
They are stored so that only the necessary USE and SET commands
|
|
are printed.
|
|
2. Other information on how to print the events, e.g. short_form,
|
|
hexdump_from. These are not dependent on the last event.
|
|
*/
|
|
typedef struct st_print_event_info
|
|
{
|
|
/*
|
|
Settings for database, sql_mode etc that comes from the last event
|
|
that was printed.
|
|
*/
|
|
// TODO: have the last catalog here ??
|
|
char db[FN_REFLEN+1]; // TODO: make this a LEX_STRING when thd->db is
|
|
bool flags2_inited;
|
|
uint32 flags2;
|
|
bool sql_mode_inited;
|
|
ulong sql_mode; /* must be same as THD.variables.sql_mode */
|
|
ulong auto_increment_increment, auto_increment_offset;
|
|
bool charset_inited;
|
|
char charset[6]; // 3 variables, each of them storable in 2 bytes
|
|
char time_zone_str[MAX_TIME_ZONE_NAME_LENGTH];
|
|
st_print_event_info()
|
|
:flags2_inited(0), sql_mode_inited(0),
|
|
auto_increment_increment(1),auto_increment_offset(1), charset_inited(0)
|
|
{
|
|
/*
|
|
Currently we only use static PRINT_EVENT_INFO objects, so zeroed at
|
|
program's startup, but these explicit bzero() is for the day someone
|
|
creates dynamic instances.
|
|
*/
|
|
bzero(db, sizeof(db));
|
|
bzero(charset, sizeof(charset));
|
|
bzero(time_zone_str, sizeof(time_zone_str));
|
|
uint const flags = MYF(MY_WME | MY_NABP);
|
|
init_io_cache(&head_cache, -1, 0, WRITE_CACHE, 0L, FALSE, flags);
|
|
init_io_cache(&body_cache, -1, 0, WRITE_CACHE, 0L, FALSE, flags);
|
|
}
|
|
|
|
~st_print_event_info() {
|
|
end_io_cache(&head_cache);
|
|
end_io_cache(&body_cache);
|
|
}
|
|
|
|
|
|
/* Settings on how to print the events */
|
|
bool short_form;
|
|
bool base64_output;
|
|
my_off_t hexdump_from;
|
|
uint8 common_header_len;
|
|
|
|
/*
|
|
These two caches are used by the row-based replication events to
|
|
collect the header information and the main body of the events
|
|
making up a statement.
|
|
*/
|
|
IO_CACHE head_cache;
|
|
IO_CACHE body_cache;
|
|
} PRINT_EVENT_INFO;
|
|
#endif
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
Log_event class
|
|
|
|
This is the abstract base class for binary log events.
|
|
|
|
****************************************************************************/
|
|
class Log_event
|
|
{
|
|
public:
|
|
/*
|
|
The offset in the log where this event originally appeared (it is
|
|
preserved in relay logs, making SHOW SLAVE STATUS able to print
|
|
coordinates of the event in the master's binlog). Note: when a
|
|
transaction is written by the master to its binlog (wrapped in
|
|
BEGIN/COMMIT) the log_pos of all the queries it contains is the
|
|
one of the BEGIN (this way, when one does SHOW SLAVE STATUS it
|
|
sees the offset of the BEGIN, which is logical as rollback may
|
|
occur), except the COMMIT query which has its real offset.
|
|
*/
|
|
my_off_t log_pos;
|
|
/*
|
|
A temp buffer for read_log_event; it is later analysed according to the
|
|
event's type, and its content is distributed in the event-specific fields.
|
|
*/
|
|
char *temp_buf;
|
|
/*
|
|
Timestamp on the master(for debugging and replication of
|
|
NOW()/TIMESTAMP). It is important for queries and LOAD DATA
|
|
INFILE. This is set at the event's creation time, except for Query
|
|
and Load (et al.) events where this is set at the query's
|
|
execution time, which guarantees good replication (otherwise, we
|
|
could have a query and its event with different timestamps).
|
|
*/
|
|
time_t when;
|
|
/* The number of seconds the query took to run on the master. */
|
|
ulong exec_time;
|
|
/* Number of bytes written by write() function */
|
|
ulong data_written;
|
|
|
|
/*
|
|
The master's server id (is preserved in the relay log; used to
|
|
prevent from infinite loops in circular replication).
|
|
*/
|
|
uint32 server_id;
|
|
|
|
/*
|
|
Some 16 flags. Look above for LOG_EVENT_TIME_F,
|
|
LOG_EVENT_FORCED_ROTATE_F, LOG_EVENT_THREAD_SPECIFIC_F, and
|
|
LOG_EVENT_SUPPRESS_USE_F for notes.
|
|
*/
|
|
uint16 flags;
|
|
|
|
bool cache_stmt;
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
THD* thd;
|
|
|
|
Log_event();
|
|
Log_event(THD* thd_arg, uint16 flags_arg, bool cache_stmt);
|
|
/*
|
|
read_log_event() functions read an event from a binlog or relay
|
|
log; used by SHOW BINLOG EVENTS, the binlog_dump thread on the
|
|
master (reads master's binlog), the slave IO thread (reads the
|
|
event sent by binlog_dump), the slave SQL thread (reads the event
|
|
from the relay log). If mutex is 0, the read will proceed without
|
|
mutex. We need the description_event to be able to parse the
|
|
event (to know the post-header's size); in fact in read_log_event
|
|
we detect the event's type, then call the specific event's
|
|
constructor and pass description_event as an argument.
|
|
*/
|
|
static Log_event* read_log_event(IO_CACHE* file,
|
|
pthread_mutex_t* log_lock,
|
|
const Format_description_log_event *description_event);
|
|
static int read_log_event(IO_CACHE* file, String* packet,
|
|
pthread_mutex_t* log_lock);
|
|
/*
|
|
init_show_field_list() prepares the column names and types for the
|
|
output of SHOW BINLOG EVENTS; it is used only by SHOW BINLOG
|
|
EVENTS.
|
|
*/
|
|
static void init_show_field_list(List<Item>* field_list);
|
|
#ifdef HAVE_REPLICATION
|
|
int net_send(Protocol *protocol, const char* log_name, my_off_t pos);
|
|
/*
|
|
pack_info() is used by SHOW BINLOG EVENTS; as print() it prepares and sends
|
|
a string to display to the user, so it resembles print().
|
|
*/
|
|
virtual void pack_info(Protocol *protocol);
|
|
/*
|
|
The SQL slave thread calls exec_event() to execute the event; this is where
|
|
the slave's data is modified.
|
|
*/
|
|
virtual int exec_event(struct st_relay_log_info* rli);
|
|
#endif /* HAVE_REPLICATION */
|
|
virtual const char* get_db()
|
|
{
|
|
return thd ? thd->db : 0;
|
|
}
|
|
#else
|
|
Log_event() : temp_buf(0) {}
|
|
/* avoid having to link mysqlbinlog against libpthread */
|
|
static Log_event* read_log_event(IO_CACHE* file,
|
|
const Format_description_log_event *description_event);
|
|
/* print*() functions are used by mysqlbinlog */
|
|
virtual void print(FILE* file, PRINT_EVENT_INFO* print_event_info) = 0;
|
|
void print_timestamp(IO_CACHE* file, time_t *ts = 0);
|
|
void print_header(IO_CACHE* file, PRINT_EVENT_INFO* print_event_info,
|
|
bool is_more);
|
|
void print_base64(IO_CACHE* file, PRINT_EVENT_INFO* print_event_info,
|
|
bool is_more);
|
|
#endif
|
|
|
|
static void *operator new(size_t size)
|
|
{
|
|
return (void*) my_malloc((uint)size, MYF(MY_WME|MY_FAE));
|
|
}
|
|
|
|
static void operator delete(void *ptr, size_t size)
|
|
{
|
|
my_free((gptr) ptr, MYF(MY_WME|MY_ALLOW_ZERO_PTR));
|
|
}
|
|
|
|
/* Placement version of the above operators */
|
|
static void *operator new(size_t, void* ptr) { return ptr; }
|
|
static void operator delete(void*, void*) { }
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
bool write_header(IO_CACHE* file, ulong data_length);
|
|
virtual bool write(IO_CACHE* file)
|
|
{
|
|
return (write_header(file, get_data_size()) ||
|
|
write_data_header(file) ||
|
|
write_data_body(file));
|
|
}
|
|
virtual bool write_data_header(IO_CACHE* file)
|
|
{ return 0; }
|
|
virtual bool write_data_body(IO_CACHE* file __attribute__((unused)))
|
|
{ return 0; }
|
|
#endif
|
|
virtual Log_event_type get_type_code() = 0;
|
|
virtual bool is_valid() const = 0;
|
|
virtual bool is_artificial_event() { return 0; }
|
|
inline bool get_cache_stmt() const { return cache_stmt; }
|
|
Log_event(const char* buf, const Format_description_log_event* description_event);
|
|
virtual ~Log_event() { free_temp_buf();}
|
|
void register_temp_buf(char* buf) { temp_buf = buf; }
|
|
void free_temp_buf()
|
|
{
|
|
if (temp_buf)
|
|
{
|
|
my_free(temp_buf, MYF(0));
|
|
temp_buf = 0;
|
|
}
|
|
}
|
|
/*
|
|
Get event length for simple events. For complicated events the length
|
|
is calculated during write()
|
|
*/
|
|
virtual int get_data_size() { return 0;}
|
|
static Log_event* read_log_event(const char* buf, uint event_len,
|
|
const char **error,
|
|
const Format_description_log_event
|
|
*description_event);
|
|
/* returns the human readable name of the event's type */
|
|
const char* get_type_str();
|
|
};
|
|
|
|
/*
|
|
One class for each type of event.
|
|
Two constructors for each class:
|
|
- one to create the event for logging (when the server acts as a master),
|
|
called after an update to the database is done,
|
|
which accepts parameters like the query, the database, the options for LOAD
|
|
DATA INFILE...
|
|
- one to create the event from a packet (when the server acts as a slave),
|
|
called before reproducing the update, which accepts parameters (like a
|
|
buffer). Used to read from the master, from the relay log, and in
|
|
mysqlbinlog. This constructor must be format-tolerant.
|
|
*/
|
|
|
|
/*****************************************************************************
|
|
|
|
Query Log Event class
|
|
|
|
Logs SQL queries
|
|
|
|
****************************************************************************/
|
|
class Query_log_event: public Log_event
|
|
{
|
|
protected:
|
|
char* data_buf;
|
|
public:
|
|
const char* query;
|
|
const char* catalog;
|
|
const char* db;
|
|
/*
|
|
If we already know the length of the query string
|
|
we pass it with q_len, so we would not have to call strlen()
|
|
otherwise, set it to 0, in which case, we compute it with strlen()
|
|
*/
|
|
uint32 q_len;
|
|
uint32 db_len;
|
|
uint16 error_code;
|
|
ulong thread_id;
|
|
/*
|
|
For events created by Query_log_event::exec_event (and
|
|
Load_log_event::exec_event()) we need the *original* thread id, to be able
|
|
to log the event with the original (=master's) thread id (fix for
|
|
BUG#1686).
|
|
*/
|
|
ulong slave_proxy_id;
|
|
|
|
/*
|
|
Binlog format 3 and 4 start to differ (as far as class members are
|
|
concerned) from here.
|
|
*/
|
|
|
|
uint catalog_len; // <= 255 char; 0 means uninited
|
|
|
|
/*
|
|
We want to be able to store a variable number of N-bit status vars:
|
|
(generally N=32; but N=64 for SQL_MODE) a user may want to log the number
|
|
of affected rows (for debugging) while another does not want to lose 4
|
|
bytes in this.
|
|
The storage on disk is the following:
|
|
status_vars_len is part of the post-header,
|
|
status_vars are in the variable-length part, after the post-header, before
|
|
the db & query.
|
|
status_vars on disk is a sequence of pairs (code, value) where 'code' means
|
|
'sql_mode', 'affected' etc. Sometimes 'value' must be a short string, so
|
|
its first byte is its length. For now the order of status vars is:
|
|
flags2 - sql_mode - catalog - autoinc - charset
|
|
We should add the same thing to Load_log_event, but in fact
|
|
LOAD DATA INFILE is going to be logged with a new type of event (logging of
|
|
the plain text query), so Load_log_event would be frozen, so no need. The
|
|
new way of logging LOAD DATA INFILE would use a derived class of
|
|
Query_log_event, so automatically benefit from the work already done for
|
|
status variables in Query_log_event.
|
|
*/
|
|
uint16 status_vars_len;
|
|
|
|
/*
|
|
'flags2' is a second set of flags (on top of those in Log_event), for
|
|
session variables. These are thd->options which is & against a mask
|
|
(OPTIONS_WRITTEN_TO_BINLOG).
|
|
flags2_inited helps make a difference between flags2==0 (3.23 or 4.x
|
|
master, we don't know flags2, so use the slave server's global options) and
|
|
flags2==0 (5.0 master, we know this has a meaning of flags all down which
|
|
must influence the query).
|
|
*/
|
|
bool flags2_inited;
|
|
bool sql_mode_inited;
|
|
bool charset_inited;
|
|
|
|
uint32 flags2;
|
|
/* In connections sql_mode is 32 bits now but will be 64 bits soon */
|
|
ulong sql_mode;
|
|
ulong auto_increment_increment, auto_increment_offset;
|
|
char charset[6];
|
|
uint time_zone_len; /* 0 means uninited */
|
|
const char *time_zone_str;
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
|
|
Query_log_event(THD* thd_arg, const char* query_arg, ulong query_length,
|
|
bool using_trans, bool suppress_use);
|
|
const char* get_db() { return db; }
|
|
#ifdef HAVE_REPLICATION
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
int exec_event(struct st_relay_log_info* rli, const char *query_arg,
|
|
uint32 q_len_arg);
|
|
#endif /* HAVE_REPLICATION */
|
|
#else
|
|
void print_query_header(IO_CACHE* file, PRINT_EVENT_INFO* print_event_info);
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
#endif
|
|
|
|
Query_log_event();
|
|
Query_log_event(const char* buf, uint event_len,
|
|
const Format_description_log_event *description_event,
|
|
Log_event_type event_type);
|
|
~Query_log_event()
|
|
{
|
|
if (data_buf)
|
|
my_free((gptr) data_buf, MYF(0));
|
|
}
|
|
Log_event_type get_type_code() { return QUERY_EVENT; }
|
|
#ifndef MYSQL_CLIENT
|
|
bool write(IO_CACHE* file);
|
|
virtual bool write_post_header_for_derived(IO_CACHE* file) { return FALSE; }
|
|
#endif
|
|
bool is_valid() const { return query != 0; }
|
|
|
|
/*
|
|
Returns number of bytes additionaly written to post header by derived
|
|
events (so far it is only Execute_load_query event).
|
|
*/
|
|
virtual ulong get_post_header_size_for_derived() { return 0; }
|
|
/* Writes derived event-specific part of post header. */
|
|
};
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
Muted Query Log Event class
|
|
|
|
Pretends to Log SQL queries, but doesn't actually do so.
|
|
|
|
****************************************************************************/
|
|
class Muted_query_log_event: public Query_log_event
|
|
{
|
|
public:
|
|
#ifndef MYSQL_CLIENT
|
|
Muted_query_log_event();
|
|
|
|
bool write(IO_CACHE* file) { return(false); };
|
|
virtual bool write_post_header_for_derived(IO_CACHE* file) { return FALSE; }
|
|
#else
|
|
Muted_query_log_event() {}
|
|
#endif
|
|
};
|
|
|
|
|
|
#ifdef HAVE_REPLICATION
|
|
|
|
/*****************************************************************************
|
|
|
|
Slave Log Event class
|
|
Note that this class is currently not used at all; no code writes a
|
|
Slave_log_event (though some code in repl_failsafe.cc reads Slave_log_event).
|
|
So it's not a problem if this code is not maintained.
|
|
|
|
****************************************************************************/
|
|
class Slave_log_event: public Log_event
|
|
{
|
|
protected:
|
|
char* mem_pool;
|
|
void init_from_mem_pool(int data_size);
|
|
public:
|
|
my_off_t master_pos;
|
|
char* master_host;
|
|
char* master_log;
|
|
int master_host_len;
|
|
int master_log_len;
|
|
uint16 master_port;
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Slave_log_event(THD* thd_arg, struct st_relay_log_info* rli);
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
#endif
|
|
|
|
Slave_log_event(const char* buf, uint event_len);
|
|
~Slave_log_event();
|
|
int get_data_size();
|
|
bool is_valid() const { return master_host != 0; }
|
|
Log_event_type get_type_code() { return SLAVE_EVENT; }
|
|
#ifndef MYSQL_CLIENT
|
|
bool write(IO_CACHE* file);
|
|
#endif
|
|
};
|
|
|
|
#endif /* HAVE_REPLICATION */
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
Load Log Event class
|
|
|
|
****************************************************************************/
|
|
class Load_log_event: public Log_event
|
|
{
|
|
private:
|
|
uint get_query_buffer_length();
|
|
void print_query(bool need_db, char *buf, char **end,
|
|
char **fn_start, char **fn_end);
|
|
protected:
|
|
int copy_log_event(const char *buf, ulong event_len,
|
|
int body_offset, const Format_description_log_event* description_event);
|
|
|
|
public:
|
|
ulong thread_id;
|
|
ulong slave_proxy_id;
|
|
uint32 table_name_len;
|
|
/*
|
|
No need to have a catalog, as these events can only come from 4.x.
|
|
TODO: this may become false if Dmitri pushes his new LOAD DATA INFILE in
|
|
5.0 only (not in 4.x).
|
|
*/
|
|
uint32 db_len;
|
|
uint32 fname_len;
|
|
uint32 num_fields;
|
|
const char* fields;
|
|
const uchar* field_lens;
|
|
uint32 field_block_len;
|
|
|
|
const char* table_name;
|
|
const char* db;
|
|
const char* fname;
|
|
uint32 skip_lines;
|
|
sql_ex_info sql_ex;
|
|
bool local_fname;
|
|
|
|
/* fname doesn't point to memory inside Log_event::temp_buf */
|
|
void set_fname_outside_temp_buf(const char *afname, uint alen)
|
|
{
|
|
fname= afname;
|
|
fname_len= alen;
|
|
local_fname= TRUE;
|
|
}
|
|
/* fname doesn't point to memory inside Log_event::temp_buf */
|
|
int check_fname_outside_temp_buf()
|
|
{
|
|
return local_fname;
|
|
}
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
String field_lens_buf;
|
|
String fields_buf;
|
|
|
|
Load_log_event(THD* thd, sql_exchange* ex, const char* db_arg,
|
|
const char* table_name_arg,
|
|
List<Item>& fields_arg, enum enum_duplicates handle_dup, bool ignore,
|
|
bool using_trans);
|
|
void set_fields(const char* db, List<Item> &fields_arg,
|
|
Name_resolution_context *context);
|
|
const char* get_db() { return db; }
|
|
#ifdef HAVE_REPLICATION
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli)
|
|
{
|
|
return exec_event(thd->slave_net,rli,0);
|
|
}
|
|
int exec_event(NET* net, struct st_relay_log_info* rli,
|
|
bool use_rli_only_for_errors);
|
|
#endif /* HAVE_REPLICATION */
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info, bool commented);
|
|
#endif
|
|
|
|
/*
|
|
Note that for all the events related to LOAD DATA (Load_log_event,
|
|
Create_file/Append/Exec/Delete, we pass description_event; however as
|
|
logging of LOAD DATA is going to be changed in 4.1 or 5.0, this is only used
|
|
for the common_header_len (post_header_len will not be changed).
|
|
*/
|
|
Load_log_event(const char* buf, uint event_len,
|
|
const Format_description_log_event* description_event);
|
|
~Load_log_event()
|
|
{}
|
|
Log_event_type get_type_code()
|
|
{
|
|
return sql_ex.new_format() ? NEW_LOAD_EVENT: LOAD_EVENT;
|
|
}
|
|
#ifndef MYSQL_CLIENT
|
|
bool write_data_header(IO_CACHE* file);
|
|
bool write_data_body(IO_CACHE* file);
|
|
#endif
|
|
bool is_valid() const { return table_name != 0; }
|
|
int get_data_size()
|
|
{
|
|
return (table_name_len + db_len + 2 + fname_len
|
|
+ LOAD_HEADER_LEN
|
|
+ sql_ex.data_size() + field_block_len + num_fields);
|
|
}
|
|
};
|
|
|
|
extern char server_version[SERVER_VERSION_LENGTH];
|
|
|
|
/*****************************************************************************
|
|
|
|
Start Log Event_v3 class
|
|
|
|
Start_log_event_v3 is the Start_log_event of binlog format 3 (MySQL 3.23 and
|
|
4.x).
|
|
Format_description_log_event derives from Start_log_event_v3; it is the
|
|
Start_log_event of binlog format 4 (MySQL 5.0), that is, the event that
|
|
describes the other events' header/postheader lengths. This event is sent by
|
|
MySQL 5.0 whenever it starts sending a new binlog if the requested position
|
|
is >4 (otherwise if ==4 the event will be sent naturally).
|
|
|
|
****************************************************************************/
|
|
|
|
class Start_log_event_v3: public Log_event
|
|
{
|
|
public:
|
|
/*
|
|
If this event is at the start of the first binary log since server
|
|
startup 'created' should be the timestamp when the event (and the
|
|
binary log) was created. In the other case (i.e. this event is at
|
|
the start of a binary log created by FLUSH LOGS or automatic
|
|
rotation), 'created' should be 0. This "trick" is used by MySQL
|
|
>=4.0.14 slaves to know whether they must drop stale temporary
|
|
tables and whether they should abort unfinished transaction.
|
|
|
|
Note that when 'created'!=0, it is always equal to the event's
|
|
timestamp; indeed Start_log_event is written only in log.cc where
|
|
the first constructor below is called, in which 'created' is set
|
|
to 'when'. So in fact 'created' is a useless variable. When it is
|
|
0 we can read the actual value from timestamp ('when') and when it
|
|
is non-zero we can read the same value from timestamp
|
|
('when'). Conclusion:
|
|
- we use timestamp to print when the binlog was created.
|
|
- we use 'created' only to know if this is a first binlog or not.
|
|
In 3.23.57 we did not pay attention to this identity, so mysqlbinlog in
|
|
3.23.57 does not print 'created the_date' if created was zero. This is now
|
|
fixed.
|
|
*/
|
|
time_t created;
|
|
uint16 binlog_version;
|
|
char server_version[ST_SERVER_VER_LEN];
|
|
/*
|
|
artifical_event is 1 in the case where this is a generated event that
|
|
should not case any cleanup actions. We handle this in the log by
|
|
setting log_event == 0 (for now).
|
|
*/
|
|
bool artificial_event;
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Start_log_event_v3();
|
|
#ifdef HAVE_REPLICATION
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#endif /* HAVE_REPLICATION */
|
|
#else
|
|
Start_log_event_v3() {}
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
#endif
|
|
|
|
Start_log_event_v3(const char* buf,
|
|
const Format_description_log_event* description_event);
|
|
~Start_log_event_v3() {}
|
|
Log_event_type get_type_code() { return START_EVENT_V3;}
|
|
#ifndef MYSQL_CLIENT
|
|
bool write(IO_CACHE* file);
|
|
#endif
|
|
bool is_valid() const { return 1; }
|
|
int get_data_size()
|
|
{
|
|
return START_V3_HEADER_LEN; //no variable-sized part
|
|
}
|
|
virtual bool is_artificial_event() { return artificial_event; }
|
|
};
|
|
|
|
|
|
/*
|
|
For binlog version 4.
|
|
This event is saved by threads which read it, as they need it for future
|
|
use (to decode the ordinary events).
|
|
*/
|
|
|
|
class Format_description_log_event: public Start_log_event_v3
|
|
{
|
|
public:
|
|
/*
|
|
The size of the fixed header which _all_ events have
|
|
(for binlogs written by this version, this is equal to
|
|
LOG_EVENT_HEADER_LEN), except FORMAT_DESCRIPTION_EVENT and ROTATE_EVENT
|
|
(those have a header of size LOG_EVENT_MINIMAL_HEADER_LEN).
|
|
*/
|
|
uint8 common_header_len;
|
|
uint8 number_of_event_types;
|
|
/* The list of post-headers' lengthes */
|
|
uint8 *post_header_len;
|
|
|
|
Format_description_log_event(uint8 binlog_ver, const char* server_ver=0);
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
#ifdef HAVE_REPLICATION
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#endif /* HAVE_REPLICATION */
|
|
#endif
|
|
|
|
Format_description_log_event(const char* buf, uint event_len,
|
|
const Format_description_log_event* description_event);
|
|
~Format_description_log_event() { my_free((gptr)post_header_len, MYF(0)); }
|
|
Log_event_type get_type_code() { return FORMAT_DESCRIPTION_EVENT;}
|
|
#ifndef MYSQL_CLIENT
|
|
bool write(IO_CACHE* file);
|
|
#endif
|
|
bool is_valid() const
|
|
{
|
|
return ((common_header_len >= ((binlog_version==1) ? OLD_HEADER_LEN :
|
|
LOG_EVENT_MINIMAL_HEADER_LEN)) &&
|
|
(post_header_len != NULL));
|
|
}
|
|
int get_data_size()
|
|
{
|
|
/*
|
|
The vector of post-header lengths is considered as part of the
|
|
post-header, because in a given version it never changes (contrary to the
|
|
query in a Query_log_event).
|
|
*/
|
|
return FORMAT_DESCRIPTION_HEADER_LEN;
|
|
}
|
|
};
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
Intvar Log Event class
|
|
|
|
Logs special variables such as auto_increment values
|
|
|
|
****************************************************************************/
|
|
|
|
class Intvar_log_event: public Log_event
|
|
{
|
|
public:
|
|
ulonglong val;
|
|
uchar type;
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Intvar_log_event(THD* thd_arg,uchar type_arg, ulonglong val_arg)
|
|
:Log_event(thd_arg,0,0),val(val_arg),type(type_arg)
|
|
{}
|
|
#ifdef HAVE_REPLICATION
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#endif /* HAVE_REPLICATION */
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
#endif
|
|
|
|
Intvar_log_event(const char* buf, const Format_description_log_event* description_event);
|
|
~Intvar_log_event() {}
|
|
Log_event_type get_type_code() { return INTVAR_EVENT;}
|
|
const char* get_var_type_name();
|
|
int get_data_size() { return 9; /* sizeof(type) + sizeof(val) */;}
|
|
#ifndef MYSQL_CLIENT
|
|
bool write(IO_CACHE* file);
|
|
#endif
|
|
bool is_valid() const { return 1; }
|
|
};
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
Rand Log Event class
|
|
|
|
Logs random seed used by the next RAND(), and by PASSWORD() in 4.1.0.
|
|
4.1.1 does not need it (it's repeatable again) so this event needn't be
|
|
written in 4.1.1 for PASSWORD() (but the fact that it is written is just a
|
|
waste, it does not cause bugs).
|
|
|
|
****************************************************************************/
|
|
|
|
class Rand_log_event: public Log_event
|
|
{
|
|
public:
|
|
ulonglong seed1;
|
|
ulonglong seed2;
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Rand_log_event(THD* thd_arg, ulonglong seed1_arg, ulonglong seed2_arg)
|
|
:Log_event(thd_arg,0,0),seed1(seed1_arg),seed2(seed2_arg)
|
|
{}
|
|
#ifdef HAVE_REPLICATION
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#endif /* HAVE_REPLICATION */
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
#endif
|
|
|
|
Rand_log_event(const char* buf, const Format_description_log_event* description_event);
|
|
~Rand_log_event() {}
|
|
Log_event_type get_type_code() { return RAND_EVENT;}
|
|
int get_data_size() { return 16; /* sizeof(ulonglong) * 2*/ }
|
|
#ifndef MYSQL_CLIENT
|
|
bool write(IO_CACHE* file);
|
|
#endif
|
|
bool is_valid() const { return 1; }
|
|
};
|
|
|
|
/*****************************************************************************
|
|
|
|
Xid Log Event class
|
|
|
|
Logs xid of the transaction-to-be-committed in the 2pc protocol.
|
|
Has no meaning in replication, slaves ignore it.
|
|
|
|
****************************************************************************/
|
|
#ifdef MYSQL_CLIENT
|
|
typedef ulonglong my_xid; // this line is the same as in handler.h
|
|
#endif
|
|
|
|
class Xid_log_event: public Log_event
|
|
{
|
|
public:
|
|
my_xid xid;
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Xid_log_event(THD* thd_arg, my_xid x): Log_event(thd_arg,0,0), xid(x) {}
|
|
#ifdef HAVE_REPLICATION
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#endif /* HAVE_REPLICATION */
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
#endif
|
|
|
|
Xid_log_event(const char* buf, const Format_description_log_event* description_event);
|
|
~Xid_log_event() {}
|
|
Log_event_type get_type_code() { return XID_EVENT;}
|
|
int get_data_size() { return sizeof(xid); }
|
|
#ifndef MYSQL_CLIENT
|
|
bool write(IO_CACHE* file);
|
|
#endif
|
|
bool is_valid() const { return 1; }
|
|
};
|
|
|
|
/*****************************************************************************
|
|
|
|
User var Log Event class
|
|
|
|
Every time a query uses the value of a user variable, a User_var_log_event is
|
|
written before the Query_log_event, to set the user variable.
|
|
|
|
****************************************************************************/
|
|
|
|
class User_var_log_event: public Log_event
|
|
{
|
|
public:
|
|
char *name;
|
|
uint name_len;
|
|
char *val;
|
|
ulong val_len;
|
|
Item_result type;
|
|
uint charset_number;
|
|
bool is_null;
|
|
#ifndef MYSQL_CLIENT
|
|
User_var_log_event(THD* thd_arg, char *name_arg, uint name_len_arg,
|
|
char *val_arg, ulong val_len_arg, Item_result type_arg,
|
|
uint charset_number_arg)
|
|
:Log_event(), name(name_arg), name_len(name_len_arg), val(val_arg),
|
|
val_len(val_len_arg), type(type_arg), charset_number(charset_number_arg)
|
|
{ is_null= !val; }
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
#endif
|
|
|
|
User_var_log_event(const char* buf, const Format_description_log_event* description_event);
|
|
~User_var_log_event() {}
|
|
Log_event_type get_type_code() { return USER_VAR_EVENT;}
|
|
#ifndef MYSQL_CLIENT
|
|
bool write(IO_CACHE* file);
|
|
#endif
|
|
bool is_valid() const { return 1; }
|
|
};
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
Stop Log Event class
|
|
|
|
****************************************************************************/
|
|
class Stop_log_event: public Log_event
|
|
{
|
|
public:
|
|
#ifndef MYSQL_CLIENT
|
|
Stop_log_event() :Log_event()
|
|
{}
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
#endif
|
|
|
|
Stop_log_event(const char* buf, const Format_description_log_event* description_event):
|
|
Log_event(buf, description_event)
|
|
{}
|
|
~Stop_log_event() {}
|
|
Log_event_type get_type_code() { return STOP_EVENT;}
|
|
bool is_valid() const { return 1; }
|
|
};
|
|
|
|
/*****************************************************************************
|
|
|
|
Rotate Log Event class
|
|
|
|
This will be deprecated when we move to using sequence ids.
|
|
|
|
****************************************************************************/
|
|
|
|
class Rotate_log_event: public Log_event
|
|
{
|
|
public:
|
|
enum {
|
|
DUP_NAME= 2 // if constructor should dup the string argument
|
|
};
|
|
const char* new_log_ident;
|
|
ulonglong pos;
|
|
uint ident_len;
|
|
uint flags;
|
|
#ifndef MYSQL_CLIENT
|
|
Rotate_log_event(const char* new_log_ident_arg,
|
|
uint ident_len_arg,
|
|
ulonglong pos_arg, uint flags);
|
|
#ifdef HAVE_REPLICATION
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#endif /* HAVE_REPLICATION */
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
#endif
|
|
|
|
Rotate_log_event(const char* buf, uint event_len,
|
|
const Format_description_log_event* description_event);
|
|
~Rotate_log_event()
|
|
{
|
|
if (flags & DUP_NAME)
|
|
my_free((gptr) new_log_ident, MYF(MY_ALLOW_ZERO_PTR));
|
|
}
|
|
Log_event_type get_type_code() { return ROTATE_EVENT;}
|
|
int get_data_size() { return ident_len + ROTATE_HEADER_LEN;}
|
|
bool is_valid() const { return new_log_ident != 0; }
|
|
#ifndef MYSQL_CLIENT
|
|
bool write(IO_CACHE* file);
|
|
#endif
|
|
};
|
|
|
|
|
|
/* the classes below are for the new LOAD DATA INFILE logging */
|
|
|
|
/*****************************************************************************
|
|
Create File Log Event class
|
|
****************************************************************************/
|
|
|
|
class Create_file_log_event: public Load_log_event
|
|
{
|
|
protected:
|
|
/*
|
|
Pretend we are Load event, so we can write out just
|
|
our Load part - used on the slave when writing event out to
|
|
SQL_LOAD-*.info file
|
|
*/
|
|
bool fake_base;
|
|
public:
|
|
char* block;
|
|
const char *event_buf;
|
|
uint block_len;
|
|
uint file_id;
|
|
bool inited_from_old;
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Create_file_log_event(THD* thd, sql_exchange* ex, const char* db_arg,
|
|
const char* table_name_arg,
|
|
List<Item>& fields_arg,
|
|
enum enum_duplicates handle_dup, bool ignore,
|
|
char* block_arg, uint block_len_arg,
|
|
bool using_trans);
|
|
#ifdef HAVE_REPLICATION
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#endif /* HAVE_REPLICATION */
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info, bool enable_local);
|
|
#endif
|
|
|
|
Create_file_log_event(const char* buf, uint event_len,
|
|
const Format_description_log_event* description_event);
|
|
~Create_file_log_event()
|
|
{
|
|
my_free((char*) event_buf, MYF(MY_ALLOW_ZERO_PTR));
|
|
}
|
|
|
|
Log_event_type get_type_code()
|
|
{
|
|
return fake_base ? Load_log_event::get_type_code() : CREATE_FILE_EVENT;
|
|
}
|
|
int get_data_size()
|
|
{
|
|
return (fake_base ? Load_log_event::get_data_size() :
|
|
Load_log_event::get_data_size() +
|
|
4 + 1 + block_len);
|
|
}
|
|
bool is_valid() const { return inited_from_old || block != 0; }
|
|
#ifndef MYSQL_CLIENT
|
|
bool write_data_header(IO_CACHE* file);
|
|
bool write_data_body(IO_CACHE* file);
|
|
/*
|
|
Cut out Create_file extentions and
|
|
write it as Load event - used on the slave
|
|
*/
|
|
bool write_base(IO_CACHE* file);
|
|
#endif
|
|
};
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
Append Block Log Event class
|
|
|
|
****************************************************************************/
|
|
|
|
class Append_block_log_event: public Log_event
|
|
{
|
|
public:
|
|
char* block;
|
|
uint block_len;
|
|
uint file_id;
|
|
/*
|
|
'db' is filled when the event is created in mysql_load() (the
|
|
event needs to have a 'db' member to be well filtered by
|
|
binlog-*-db rules). 'db' is not written to the binlog (it's not
|
|
used by Append_block_log_event::write()), so it can't be read in
|
|
the Append_block_log_event(const char* buf, int event_len)
|
|
constructor. In other words, 'db' is used only for filtering by
|
|
binlog-*-db rules. Create_file_log_event is different: it's 'db'
|
|
(which is inherited from Load_log_event) is written to the binlog
|
|
and can be re-read.
|
|
*/
|
|
const char* db;
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Append_block_log_event(THD* thd, const char* db_arg, char* block_arg,
|
|
uint block_len_arg, bool using_trans);
|
|
#ifdef HAVE_REPLICATION
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
void pack_info(Protocol* protocol);
|
|
virtual int get_create_or_append() const;
|
|
#endif /* HAVE_REPLICATION */
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
#endif
|
|
|
|
Append_block_log_event(const char* buf, uint event_len,
|
|
const Format_description_log_event* description_event);
|
|
~Append_block_log_event() {}
|
|
Log_event_type get_type_code() { return APPEND_BLOCK_EVENT;}
|
|
int get_data_size() { return block_len + APPEND_BLOCK_HEADER_LEN ;}
|
|
bool is_valid() const { return block != 0; }
|
|
#ifndef MYSQL_CLIENT
|
|
bool write(IO_CACHE* file);
|
|
const char* get_db() { return db; }
|
|
#endif
|
|
};
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
Delete File Log Event class
|
|
|
|
****************************************************************************/
|
|
|
|
class Delete_file_log_event: public Log_event
|
|
{
|
|
public:
|
|
uint file_id;
|
|
const char* db; /* see comment in Append_block_log_event */
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Delete_file_log_event(THD* thd, const char* db_arg, bool using_trans);
|
|
#ifdef HAVE_REPLICATION
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#endif /* HAVE_REPLICATION */
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info, bool enable_local);
|
|
#endif
|
|
|
|
Delete_file_log_event(const char* buf, uint event_len,
|
|
const Format_description_log_event* description_event);
|
|
~Delete_file_log_event() {}
|
|
Log_event_type get_type_code() { return DELETE_FILE_EVENT;}
|
|
int get_data_size() { return DELETE_FILE_HEADER_LEN ;}
|
|
bool is_valid() const { return file_id != 0; }
|
|
#ifndef MYSQL_CLIENT
|
|
bool write(IO_CACHE* file);
|
|
const char* get_db() { return db; }
|
|
#endif
|
|
};
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
Execute Load Log Event class
|
|
|
|
****************************************************************************/
|
|
|
|
class Execute_load_log_event: public Log_event
|
|
{
|
|
public:
|
|
uint file_id;
|
|
const char* db; /* see comment in Append_block_log_event */
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Execute_load_log_event(THD* thd, const char* db_arg, bool using_trans);
|
|
#ifdef HAVE_REPLICATION
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#endif /* HAVE_REPLICATION */
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
#endif
|
|
|
|
Execute_load_log_event(const char* buf, uint event_len,
|
|
const Format_description_log_event* description_event);
|
|
~Execute_load_log_event() {}
|
|
Log_event_type get_type_code() { return EXEC_LOAD_EVENT;}
|
|
int get_data_size() { return EXEC_LOAD_HEADER_LEN ;}
|
|
bool is_valid() const { return file_id != 0; }
|
|
#ifndef MYSQL_CLIENT
|
|
bool write(IO_CACHE* file);
|
|
const char* get_db() { return db; }
|
|
#endif
|
|
};
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
Begin load query Log Event class
|
|
|
|
Event for the first block of file to be loaded, its only difference from
|
|
Append_block event is that this event creates or truncates existing file
|
|
before writing data.
|
|
|
|
****************************************************************************/
|
|
class Begin_load_query_log_event: public Append_block_log_event
|
|
{
|
|
public:
|
|
#ifndef MYSQL_CLIENT
|
|
Begin_load_query_log_event(THD* thd_arg, const char *db_arg,
|
|
char* block_arg, uint block_len_arg,
|
|
bool using_trans);
|
|
#ifdef HAVE_REPLICATION
|
|
Begin_load_query_log_event(THD* thd);
|
|
int get_create_or_append() const;
|
|
#endif /* HAVE_REPLICATION */
|
|
#endif
|
|
Begin_load_query_log_event(const char* buf, uint event_len,
|
|
const Format_description_log_event* description_event);
|
|
~Begin_load_query_log_event() {}
|
|
Log_event_type get_type_code() { return BEGIN_LOAD_QUERY_EVENT; }
|
|
};
|
|
|
|
|
|
/*
|
|
Elements of this enum describe how LOAD DATA handles duplicates.
|
|
*/
|
|
enum enum_load_dup_handling { LOAD_DUP_ERROR= 0, LOAD_DUP_IGNORE,
|
|
LOAD_DUP_REPLACE };
|
|
|
|
/****************************************************************************
|
|
|
|
Execute load query Log Event class
|
|
|
|
Event responsible for LOAD DATA execution, it similar to Query_log_event
|
|
but before executing the query it substitutes original filename in LOAD DATA
|
|
query with name of temporary file.
|
|
|
|
****************************************************************************/
|
|
class Execute_load_query_log_event: public Query_log_event
|
|
{
|
|
public:
|
|
uint file_id; // file_id of temporary file
|
|
uint fn_pos_start; // pointer to the part of the query that should
|
|
// be substituted
|
|
uint fn_pos_end; // pointer to the end of this part of query
|
|
/*
|
|
We have to store type of duplicate handling explicitly, because
|
|
for LOAD DATA it also depends on LOCAL option. And this part
|
|
of query will be rewritten during replication so this information
|
|
may be lost...
|
|
*/
|
|
enum_load_dup_handling dup_handling;
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Execute_load_query_log_event(THD* thd, const char* query_arg,
|
|
ulong query_length, uint fn_pos_start_arg,
|
|
uint fn_pos_end_arg,
|
|
enum_load_dup_handling dup_handling_arg,
|
|
bool using_trans, bool suppress_use);
|
|
#ifdef HAVE_REPLICATION
|
|
void pack_info(Protocol* protocol);
|
|
int exec_event(struct st_relay_log_info* rli);
|
|
#endif /* HAVE_REPLICATION */
|
|
#else
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
/* Prints the query as LOAD DATA LOCAL and with rewritten filename */
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info,
|
|
const char *local_fname);
|
|
#endif
|
|
Execute_load_query_log_event(const char* buf, uint event_len,
|
|
const Format_description_log_event *description_event);
|
|
~Execute_load_query_log_event() {}
|
|
|
|
Log_event_type get_type_code() { return EXECUTE_LOAD_QUERY_EVENT; }
|
|
bool is_valid() const { return Query_log_event::is_valid() && file_id != 0; }
|
|
|
|
ulong get_post_header_size_for_derived();
|
|
#ifndef MYSQL_CLIENT
|
|
bool write_post_header_for_derived(IO_CACHE* file);
|
|
#endif
|
|
};
|
|
|
|
|
|
#ifdef MYSQL_CLIENT
|
|
class Unknown_log_event: public Log_event
|
|
{
|
|
public:
|
|
/*
|
|
Even if this is an unknown event, we still pass description_event to
|
|
Log_event's ctor, this way we can extract maximum information from the
|
|
event's header (the unique ID for example).
|
|
*/
|
|
Unknown_log_event(const char* buf, const Format_description_log_event* description_event):
|
|
Log_event(buf, description_event)
|
|
{}
|
|
~Unknown_log_event() {}
|
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
|
Log_event_type get_type_code() { return UNKNOWN_EVENT;}
|
|
bool is_valid() const { return 1; }
|
|
};
|
|
#endif
|
|
char *str_to_hex(char *to, const char *from, uint len);
|
|
|
|
#ifdef HAVE_ROW_BASED_REPLICATION
|
|
|
|
/*****************************************************************************
|
|
|
|
Table map log event class
|
|
|
|
Create a mapping from a (database name, table name) couple to a table
|
|
identifier (an integer number).
|
|
|
|
****************************************************************************/
|
|
class Table_map_log_event : public Log_event
|
|
{
|
|
public:
|
|
/* Constants */
|
|
enum
|
|
{
|
|
TYPE_CODE = TABLE_MAP_EVENT
|
|
};
|
|
|
|
enum enum_error
|
|
{
|
|
ERR_OPEN_FAILURE = -1, /* Failure to open table */
|
|
ERR_OK = 0, /* No error */
|
|
ERR_TABLE_LIMIT_EXCEEDED = 1, /* No more room for tables */
|
|
ERR_OUT_OF_MEM = 2, /* Out of memory */
|
|
ERR_BAD_TABLE_DEF = 3, /* Table definition does not match */
|
|
ERR_RBR_TO_SBR = 4 /* daisy-chanining RBR to SBR not allowed */
|
|
};
|
|
|
|
enum enum_flag
|
|
{
|
|
/*
|
|
Nothing here right now, but the flags support is there in
|
|
preparation for changes that are coming. Need to add a
|
|
constant to make it compile under HP-UX: aCC does not like
|
|
empty enumerations.
|
|
*/
|
|
ENUM_FLAG_COUNT
|
|
};
|
|
|
|
typedef uint16 flag_set;
|
|
|
|
/* Special constants representing sets of flags */
|
|
enum
|
|
{
|
|
TM_NO_FLAGS = 0U
|
|
};
|
|
|
|
void set_flags(flag_set flag) { m_flags |= flag; }
|
|
void clear_flags(flag_set flag) { m_flags &= ~flag; }
|
|
flag_set get_flags(flag_set flag) const { return m_flags & flag; }
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Table_map_log_event(THD *thd, TABLE *tbl, ulong tid,
|
|
bool is_transactional, uint16 flags);
|
|
#endif
|
|
#ifdef HAVE_REPLICATION
|
|
Table_map_log_event(const char *buf, uint event_len,
|
|
const Format_description_log_event *description_event);
|
|
#endif
|
|
|
|
~Table_map_log_event();
|
|
|
|
virtual Log_event_type get_type_code() { return TABLE_MAP_EVENT; }
|
|
virtual bool is_valid() const { return m_memory != NULL; /* we check malloc */ }
|
|
|
|
virtual int get_data_size() { return m_data_size; }
|
|
#ifndef MYSQL_CLIENT
|
|
virtual bool write_data_header(IO_CACHE *file);
|
|
virtual bool write_data_body(IO_CACHE *file);
|
|
virtual const char *get_db() { return m_dbnam; }
|
|
#endif
|
|
|
|
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
|
|
virtual int exec_event(struct st_relay_log_info *rli);
|
|
virtual void pack_info(Protocol *protocol);
|
|
#endif
|
|
|
|
#ifdef MYSQL_CLIENT
|
|
virtual void print(FILE *file, PRINT_EVENT_INFO *print_event_info);
|
|
#endif
|
|
|
|
|
|
private:
|
|
#ifndef MYSQL_CLIENT
|
|
TABLE *m_table;
|
|
#endif
|
|
char const *m_dbnam;
|
|
my_size_t m_dblen;
|
|
char const *m_tblnam;
|
|
my_size_t m_tbllen;
|
|
ulong m_colcnt;
|
|
unsigned char *m_coltype;
|
|
|
|
gptr m_memory;
|
|
ulong m_table_id;
|
|
flag_set m_flags;
|
|
|
|
my_size_t m_data_size;
|
|
};
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
Row level log event class.
|
|
|
|
Common base class for all row-level log events.
|
|
|
|
RESPONSIBILITIES
|
|
|
|
Encode the common parts of all events containing rows, which are:
|
|
- Write data header and data body to an IO_CACHE.
|
|
- Provide an interface for adding an individual row to the event.
|
|
|
|
****************************************************************************/
|
|
|
|
|
|
class Rows_log_event : public Log_event
|
|
{
|
|
public:
|
|
/*
|
|
These definitions allow you to combine the flags into an
|
|
appropriate flag set using the normal bitwise operators. The
|
|
implicit conversion from an enum-constant to an integer is
|
|
accepted by the compiler, which is then used to set the real set
|
|
of flags.
|
|
*/
|
|
|
|
enum enum_flag
|
|
{
|
|
/* Last event of a statement */
|
|
STMT_END_F = (1U << 0),
|
|
|
|
/* Value of the OPTION_NO_FOREIGN_KEY_CHECKS flag in thd->options */
|
|
NO_FOREIGN_KEY_CHECKS_F = (1U << 1),
|
|
|
|
/* Value of the OPTION_RELAXED_UNIQUE_CHECKS flag in thd->options */
|
|
RELAXED_UNIQUE_CHECKS_F = (1U << 2)
|
|
};
|
|
|
|
typedef uint16 flag_set;
|
|
|
|
/* Special constants representing sets of flags */
|
|
enum
|
|
{
|
|
RLE_NO_FLAGS = 0U
|
|
};
|
|
|
|
virtual ~Rows_log_event();
|
|
|
|
void set_flags(flag_set flags) { m_flags |= flags; }
|
|
void clear_flags(flag_set flags) { m_flags &= ~flags; }
|
|
flag_set get_flags(flag_set flags) const { return m_flags & flags; }
|
|
|
|
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
|
|
virtual int exec_event(struct st_relay_log_info *rli);
|
|
virtual void pack_info(Protocol *protocol);
|
|
#endif
|
|
|
|
#ifdef MYSQL_CLIENT
|
|
/* not for direct call, each derived has its own ::print() */
|
|
virtual void print(FILE *file, PRINT_EVENT_INFO *print_event_info)= 0;
|
|
#endif
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
int add_row_data(byte *data, my_size_t length)
|
|
{
|
|
return do_add_row_data(data,length);
|
|
}
|
|
#endif
|
|
|
|
/* Member functions to implement superclass interface */
|
|
virtual int get_data_size()
|
|
{
|
|
DBUG_EXECUTE_IF("old_row_based_repl_4_byte_map_id_master",
|
|
return 6 + 1 + no_bytes_in_map(&m_cols) +
|
|
(m_rows_cur - m_rows_buf););
|
|
return ROWS_HEADER_LEN + 1 + no_bytes_in_map(&m_cols) +
|
|
(m_rows_cur - m_rows_buf);
|
|
}
|
|
|
|
MY_BITMAP const *get_cols() const { return &m_cols; }
|
|
my_size_t get_width() const { return m_width; }
|
|
ulong get_table_id() const { return m_table_id; }
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
virtual bool write_data_header(IO_CACHE *file);
|
|
virtual bool write_data_body(IO_CACHE *file);
|
|
virtual const char *get_db() { return m_table->s->db.str; }
|
|
#endif
|
|
virtual bool is_valid() const
|
|
{
|
|
/* that's how we check malloc() succeeded */
|
|
return m_rows_buf && m_cols.bitmap;
|
|
}
|
|
|
|
uint m_row_count; /* The number of rows added to the event */
|
|
|
|
protected:
|
|
/*
|
|
The constructors are protected since you're supposed to inherit
|
|
this class, not create instances of this class.
|
|
*/
|
|
#ifndef MYSQL_CLIENT
|
|
Rows_log_event(THD*, TABLE*, ulong table_id,
|
|
MY_BITMAP const *cols, bool is_transactional);
|
|
#endif
|
|
Rows_log_event(const char *row_data, uint event_len,
|
|
Log_event_type event_type,
|
|
const Format_description_log_event *description_event);
|
|
|
|
#ifdef MYSQL_CLIENT
|
|
void print_helper(FILE *, PRINT_EVENT_INFO *, char const *const name);
|
|
#endif
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
virtual int do_add_row_data(byte *data, my_size_t length);
|
|
#endif
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
TABLE *m_table; /* The table the rows belong to */
|
|
#endif
|
|
ulong m_table_id; /* Table ID */
|
|
MY_BITMAP m_cols; /* Bitmap denoting columns available */
|
|
ulong m_width; /* The width of the columns bitmap */
|
|
ulong m_master_reclength; /* Length of record on master side */
|
|
|
|
/* Bit buffer in the same memory as the class */
|
|
uint32 m_bitbuf[128/(sizeof(uint32)*8)];
|
|
|
|
byte *m_rows_buf; /* The rows in packed format */
|
|
byte *m_rows_cur; /* One-after the end of the data */
|
|
byte *m_rows_end; /* One-after the end of the allocated space */
|
|
|
|
flag_set m_flags; /* Flags for row-level events */
|
|
|
|
private:
|
|
|
|
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
|
|
/*
|
|
Primitive to prepare for a sequence of row executions.
|
|
|
|
DESCRIPTION
|
|
|
|
Before doing a sequence of do_prepare_row() and do_exec_row()
|
|
calls, this member function should be called to prepare for the
|
|
entire sequence. Typically, this member function will allocate
|
|
space for any buffers that are needed for the two member
|
|
functions mentioned above.
|
|
|
|
RETURN VALUE
|
|
|
|
The member function will return 0 if all went OK, or a non-zero
|
|
error code otherwise.
|
|
*/
|
|
virtual int do_before_row_operations(TABLE *table) = 0;
|
|
|
|
/*
|
|
Primitive to clean up after a sequence of row executions.
|
|
|
|
DESCRIPTION
|
|
|
|
After doing a sequence of do_prepare_row() and do_exec_row(),
|
|
this member function should be called to clean up and release
|
|
any allocated buffers.
|
|
*/
|
|
virtual int do_after_row_operations(TABLE *table, int error) = 0;
|
|
|
|
/*
|
|
Primitive to prepare for handling one row in a row-level event.
|
|
|
|
DESCRIPTION
|
|
|
|
The member function prepares for execution of operations needed for one
|
|
row in a row-level event by reading up data from the buffer containing
|
|
the row. No specific interpretation of the data is normally done here,
|
|
since SQL thread specific data is not available: that data is made
|
|
available for the do_exec function.
|
|
|
|
A pointer to the start of the next row, or NULL if the preparation
|
|
failed. Currently, preparation cannot fail, but don't rely on this
|
|
behavior.
|
|
|
|
RETURN VALUE
|
|
Error code, if something went wrong, 0 otherwise.
|
|
*/
|
|
virtual int do_prepare_row(THD*, RELAY_LOG_INFO*, TABLE*,
|
|
char const *row_start, char const **row_end) = 0;
|
|
|
|
/*
|
|
Primitive to do the actual execution necessary for a row.
|
|
|
|
DESCRIPTION
|
|
The member function will do the actual execution needed to handle a row.
|
|
|
|
RETURN VALUE
|
|
0 if execution succeeded, 1 if execution failed.
|
|
|
|
*/
|
|
virtual int do_exec_row(TABLE *table) = 0;
|
|
#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */
|
|
};
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
Write row log event class
|
|
|
|
Log row insertions and updates. The event contain several
|
|
insert/update rows for a table. Note that each event contains only
|
|
rows for one table.
|
|
|
|
****************************************************************************/
|
|
class Write_rows_log_event : public Rows_log_event
|
|
{
|
|
public:
|
|
enum
|
|
{
|
|
/* Support interface to THD::binlog_prepare_pending_rows_event */
|
|
TYPE_CODE = WRITE_ROWS_EVENT
|
|
};
|
|
|
|
#if !defined(MYSQL_CLIENT)
|
|
Write_rows_log_event(THD*, TABLE*, ulong table_id,
|
|
MY_BITMAP const *cols, bool is_transactional);
|
|
#endif
|
|
#ifdef HAVE_REPLICATION
|
|
Write_rows_log_event(const char *buf, uint event_len,
|
|
const Format_description_log_event *description_event);
|
|
#endif
|
|
#if !defined(MYSQL_CLIENT) && defined(HAVE_ROW_BASED_REPLICATION)
|
|
static bool binlog_row_logging_function(THD *thd, TABLE *table,
|
|
bool is_transactional,
|
|
MY_BITMAP *cols,
|
|
uint fields,
|
|
const byte *before_record
|
|
__attribute__((unused)),
|
|
const byte *after_record)
|
|
{
|
|
return thd->binlog_write_row(table, is_transactional,
|
|
cols, fields, after_record);
|
|
}
|
|
#endif
|
|
|
|
private:
|
|
virtual Log_event_type get_type_code() { return (Log_event_type)TYPE_CODE; }
|
|
|
|
#ifdef MYSQL_CLIENT
|
|
void print(FILE *file, PRINT_EVENT_INFO *print_event_info);
|
|
#endif
|
|
|
|
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
|
|
gptr m_memory;
|
|
byte *m_after_image;
|
|
|
|
virtual int do_before_row_operations(TABLE *table);
|
|
virtual int do_after_row_operations(TABLE *table, int error);
|
|
virtual int do_prepare_row(THD*, RELAY_LOG_INFO*, TABLE*,
|
|
char const *row_start, char const **row_end);
|
|
virtual int do_exec_row(TABLE *table);
|
|
#endif
|
|
};
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
Update rows log event class
|
|
|
|
Log row updates with a before image. The event contain several
|
|
update rows for a table. Note that each event contains only rows for
|
|
one table.
|
|
|
|
Also note that the row data consists of pairs of row data: one row
|
|
for the old data and one row for the new data.
|
|
|
|
****************************************************************************/
|
|
class Update_rows_log_event : public Rows_log_event
|
|
{
|
|
public:
|
|
enum
|
|
{
|
|
/* Support interface to THD::binlog_prepare_pending_rows_event */
|
|
TYPE_CODE = UPDATE_ROWS_EVENT
|
|
};
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Update_rows_log_event(THD*, TABLE*, ulong table_id,
|
|
MY_BITMAP const *cols, bool is_transactional);
|
|
#endif
|
|
|
|
#ifdef HAVE_REPLICATION
|
|
Update_rows_log_event(const char *buf, uint event_len,
|
|
const Format_description_log_event *description_event);
|
|
#endif
|
|
|
|
#if !defined(MYSQL_CLIENT) && defined(HAVE_ROW_BASED_REPLICATION)
|
|
static bool binlog_row_logging_function(THD *thd, TABLE *table,
|
|
bool is_transactional,
|
|
MY_BITMAP *cols,
|
|
uint fields,
|
|
const byte *before_record,
|
|
const byte *after_record)
|
|
{
|
|
return thd->binlog_update_row(table, is_transactional,
|
|
cols, fields, before_record, after_record);
|
|
}
|
|
#endif
|
|
|
|
private:
|
|
virtual Log_event_type get_type_code() { return (Log_event_type)TYPE_CODE; }
|
|
|
|
#ifdef MYSQL_CLIENT
|
|
void print(FILE *file, PRINT_EVENT_INFO *print_event_info);
|
|
#endif
|
|
|
|
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
|
|
gptr m_memory;
|
|
byte *m_key;
|
|
byte *m_after_image;
|
|
|
|
virtual int do_before_row_operations(TABLE *table);
|
|
virtual int do_after_row_operations(TABLE *table, int error);
|
|
virtual int do_prepare_row(THD*, RELAY_LOG_INFO*, TABLE*,
|
|
char const *row_start, char const **row_end);
|
|
virtual int do_exec_row(TABLE *table);
|
|
#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */
|
|
};
|
|
|
|
/*****************************************************************************
|
|
|
|
Delete rows log event class.
|
|
|
|
Log row deletions. The event contain several delete rows for a
|
|
table. Note that each event contains only rows for one table.
|
|
|
|
RESPONSIBILITIES
|
|
|
|
- Act as a container for rows that has been deleted on the master
|
|
and should be deleted on the slave.
|
|
|
|
COLLABORATION
|
|
|
|
Row_writer
|
|
Create the event and add rows to the event.
|
|
Row_reader
|
|
Extract the rows from the event.
|
|
|
|
****************************************************************************/
|
|
class Delete_rows_log_event : public Rows_log_event
|
|
{
|
|
public:
|
|
enum
|
|
{
|
|
/* Support interface to THD::binlog_prepare_pending_rows_event */
|
|
TYPE_CODE = DELETE_ROWS_EVENT
|
|
};
|
|
|
|
#ifndef MYSQL_CLIENT
|
|
Delete_rows_log_event(THD*, TABLE*, ulong,
|
|
MY_BITMAP const *cols, bool is_transactional);
|
|
#endif
|
|
#ifdef HAVE_REPLICATION
|
|
Delete_rows_log_event(const char *buf, uint event_len,
|
|
const Format_description_log_event *description_event);
|
|
#endif
|
|
#if !defined(MYSQL_CLIENT) && defined(HAVE_ROW_BASED_REPLICATION)
|
|
static bool binlog_row_logging_function(THD *thd, TABLE *table,
|
|
bool is_transactional,
|
|
MY_BITMAP *cols,
|
|
uint fields,
|
|
const byte *before_record,
|
|
const byte *after_record
|
|
__attribute__((unused)))
|
|
{
|
|
return thd->binlog_delete_row(table, is_transactional,
|
|
cols, fields, before_record);
|
|
}
|
|
#endif
|
|
|
|
private:
|
|
virtual Log_event_type get_type_code() { return (Log_event_type)TYPE_CODE; }
|
|
|
|
#ifdef MYSQL_CLIENT
|
|
void print(FILE *file, PRINT_EVENT_INFO *print_event_info);
|
|
#endif
|
|
|
|
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
|
|
gptr m_memory;
|
|
byte *m_key;
|
|
byte *m_after_image;
|
|
|
|
virtual int do_before_row_operations(TABLE *table);
|
|
virtual int do_after_row_operations(TABLE *table, int error);
|
|
virtual int do_prepare_row(THD*, RELAY_LOG_INFO*, TABLE*,
|
|
char const *row_start, char const **row_end);
|
|
virtual int do_exec_row(TABLE *table);
|
|
#endif
|
|
};
|
|
|
|
#endif /* HAVE_ROW_BASED_REPLICATION */
|
|
|
|
#endif /* _log_event_h */
|