summaryrefslogtreecommitdiff
path: root/ndb/tools
diff options
context:
space:
mode:
authorunknown <brian@zim.(none)>2005-04-26 18:19:54 -0700
committerunknown <brian@zim.(none)>2005-04-26 18:19:54 -0700
commitb7e422be1b7a8ca3f4e761e67db5e8febc701dfd (patch)
treedf9016f3d70b4657f89dcddca2ec4e188fc7fbdf /ndb/tools
parentc0333ecee42a4de499b3377cfa21d7b5af1ddd2b (diff)
downloadmariadb-git-b7e422be1b7a8ca3f4e761e67db5e8febc701dfd.tar.gz
Changes to create storage directory for storage engines.
storage/heap/.cvsignore: mvdir storage/heap/ChangeLog: mvdir storage/heap/Makefile.am: mvdir storage/heap/_check.c: mvdir storage/heap/_rectest.c: mvdir storage/heap/heapdef.h: mvdir storage/heap/hp_block.c: mvdir storage/heap/hp_clear.c: mvdir storage/heap/hp_close.c: mvdir storage/heap/hp_create.c: mvdir storage/heap/hp_delete.c: mvdir storage/heap/hp_extra.c: mvdir storage/heap/hp_hash.c: mvdir storage/heap/hp_info.c: mvdir storage/heap/hp_open.c: mvdir storage/heap/hp_panic.c: mvdir storage/heap/hp_rename.c: mvdir storage/heap/hp_rfirst.c: mvdir storage/heap/hp_rkey.c: mvdir storage/heap/hp_rlast.c: mvdir storage/heap/hp_rnext.c: mvdir storage/heap/hp_rprev.c: mvdir storage/heap/hp_rrnd.c: mvdir storage/heap/hp_rsame.c: mvdir storage/heap/hp_scan.c: mvdir storage/heap/hp_static.c: mvdir storage/heap/hp_test1.c: mvdir storage/heap/hp_test2.c: mvdir storage/heap/hp_update.c: mvdir storage/heap/hp_write.c: mvdir storage/heap/make-ccc: mvdir storage/myisam/.cvsignore: mvdir storage/myisam/ChangeLog: mvdir storage/myisam/Makefile.am: mvdir storage/myisam/NEWS: mvdir storage/myisam/TODO: mvdir storage/myisam/ft_boolean_search.c: mvdir storage/myisam/ft_eval.c: mvdir storage/myisam/ft_eval.h: mvdir storage/myisam/ft_nlq_search.c: mvdir storage/myisam/ft_parser.c: mvdir storage/myisam/ft_static.c: mvdir storage/myisam/ft_stem.c: mvdir storage/myisam/ft_stopwords.c: mvdir storage/myisam/ft_test1.c: mvdir storage/myisam/ft_test1.h: mvdir storage/myisam/ft_update.c: mvdir storage/myisam/ftdefs.h: mvdir storage/myisam/fulltext.h: mvdir storage/myisam/make-ccc: mvdir storage/myisam/mi_cache.c: mvdir storage/myisam/mi_changed.c: mvdir storage/myisam/mi_check.c: mvdir storage/myisam/mi_checksum.c: mvdir storage/myisam/mi_close.c: mvdir storage/myisam/mi_create.c: mvdir storage/myisam/mi_dbug.c: mvdir storage/myisam/mi_delete.c: mvdir storage/myisam/mi_delete_all.c: mvdir storage/myisam/mi_delete_table.c: mvdir storage/myisam/mi_dynrec.c: mvdir storage/myisam/mi_extra.c: mvdir storage/myisam/mi_info.c: mvdir storage/myisam/mi_key.c: mvdir storage/myisam/mi_keycache.c: mvdir storage/myisam/mi_locking.c: mvdir storage/myisam/mi_log.c: mvdir storage/myisam/mi_open.c: mvdir storage/myisam/mi_packrec.c: mvdir storage/myisam/mi_page.c: mvdir storage/myisam/mi_panic.c: mvdir storage/myisam/mi_preload.c: mvdir storage/myisam/mi_range.c: mvdir storage/myisam/mi_rename.c: mvdir storage/myisam/mi_rfirst.c: mvdir storage/myisam/mi_rkey.c: mvdir storage/myisam/mi_rlast.c: mvdir storage/myisam/mi_rnext.c: mvdir storage/myisam/mi_rnext_same.c: mvdir storage/myisam/mi_rprev.c: mvdir storage/myisam/mi_rrnd.c: mvdir storage/myisam/mi_rsame.c: mvdir storage/myisam/ftbench/Ecompare.pl: mvdir storage/myisam/ftbench/Ecreate.pl: mvdir storage/myisam/ftbench/Ereport.pl: mvdir storage/myisam/ftbench/README: mvdir storage/myisam/ftbench/ft-test-run.sh: mvdir storage/myisam/mi_rsamepos.c: mvdir storage/myisam/mi_scan.c: mvdir storage/myisam/mi_search.c: mvdir storage/myisam/mi_static.c: mvdir storage/myisam/mi_statrec.c: mvdir storage/myisam/mi_test1.c: mvdir storage/myisam/mi_test2.c: mvdir storage/myisam/mi_test3.c: mvdir storage/myisam/mi_test_all.res: mvdir storage/myisam/mi_test_all.sh: mvdir storage/myisam/mi_unique.c: mvdir storage/myisam/mi_update.c: mvdir storage/myisam/mi_write.c: mvdir storage/myisam/myisam_ftdump.c: mvdir storage/myisam/myisamchk.c: mvdir storage/myisam/myisamdef.h: mvdir storage/myisam/myisamlog.c: mvdir storage/myisam/myisampack.c: mvdir storage/myisam/rt_index.c: mvdir storage/myisam/rt_index.h: mvdir storage/myisam/rt_key.c: mvdir storage/myisam/rt_key.h: mvdir storage/myisam/rt_mbr.c: mvdir storage/myisam/rt_mbr.h: mvdir storage/myisam/rt_split.c: mvdir storage/myisam/rt_test.c: mvdir storage/myisam/sort.c: mvdir storage/myisam/sp_defs.h: mvdir storage/myisam/sp_key.c: mvdir storage/myisam/sp_test.c: mvdir storage/myisam/test_pack: mvdir storage/myisammrg/.cvsignore: mvdir storage/myisammrg/Makefile.am: mvdir storage/myisammrg/make-ccc: mvdir storage/myisammrg/myrg_close.c: mvdir storage/myisammrg/myrg_create.c: mvdir storage/myisammrg/myrg_def.h: mvdir storage/myisammrg/myrg_delete.c: mvdir storage/myisammrg/myrg_extra.c: mvdir storage/myisammrg/myrg_info.c: mvdir storage/myisammrg/myrg_locking.c: mvdir storage/myisammrg/myrg_open.c: mvdir storage/myisammrg/myrg_panic.c: mvdir storage/myisammrg/myrg_queue.c: mvdir storage/myisammrg/myrg_range.c: mvdir storage/myisammrg/myrg_rfirst.c: mvdir storage/myisammrg/myrg_rkey.c: mvdir storage/myisammrg/myrg_rlast.c: mvdir storage/myisammrg/myrg_rnext.c: mvdir storage/myisammrg/myrg_rnext_same.c: mvdir storage/myisammrg/myrg_rprev.c: mvdir storage/myisammrg/myrg_rrnd.c: mvdir storage/myisammrg/myrg_rsame.c: mvdir storage/myisammrg/myrg_static.c: mvdir storage/myisammrg/myrg_update.c: mvdir storage/myisammrg/myrg_write.c: mvdir storage/innobase/Makefile.am: mvdir storage/innobase/btr/Makefile.am: mvdir storage/innobase/btr/btr0btr.c: mvdir storage/innobase/btr/btr0cur.c: mvdir storage/innobase/btr/btr0pcur.c: mvdir storage/innobase/btr/btr0sea.c: mvdir storage/innobase/btr/makefilewin: mvdir storage/innobase/buf/Makefile.am: mvdir storage/innobase/buf/buf0buf.c: mvdir storage/innobase/buf/buf0flu.c: mvdir storage/innobase/buf/buf0lru.c: mvdir storage/innobase/buf/buf0rea.c: mvdir storage/innobase/buf/makefilewin: mvdir storage/innobase/configure.in: mvdir storage/innobase/data/Makefile.am: mvdir storage/innobase/data/data0data.c: mvdir storage/innobase/data/data0type.c: mvdir storage/innobase/data/makefilewin: mvdir storage/innobase/db/db0err.h: mvdir storage/innobase/dict/Makefile.am: mvdir storage/innobase/dict/dict0boot.c: mvdir storage/innobase/dict/dict0crea.c: mvdir storage/innobase/dict/dict0dict.c: mvdir storage/innobase/dict/dict0load.c: mvdir storage/innobase/makefilewin: mvdir storage/innobase/my_cnf: mvdir storage/innobase/dict/dict0mem.c: mvdir storage/innobase/dict/makefilewin: mvdir storage/innobase/dyn/Makefile.am: mvdir storage/innobase/dyn/dyn0dyn.c: mvdir storage/innobase/dyn/makefilewin: mvdir storage/innobase/eval/Makefile.am: mvdir storage/innobase/eval/eval0eval.c: mvdir storage/innobase/eval/eval0proc.c: mvdir storage/innobase/eval/makefilewin: mvdir storage/innobase/fil/Makefile.am: mvdir storage/innobase/fil/fil0fil.c: mvdir storage/innobase/fil/makefilewin: mvdir storage/innobase/fsp/Makefile.am: mvdir storage/innobase/fsp/fsp0fsp.c: mvdir storage/innobase/fsp/makefilewin: mvdir storage/innobase/fut/Makefile.am: mvdir storage/innobase/fut/fut0fut.c: mvdir storage/innobase/fut/fut0lst.c: mvdir storage/innobase/fut/makefilewin: mvdir storage/innobase/ha/Makefile.am: mvdir storage/innobase/ha/ha0ha.c: mvdir storage/innobase/ha/hash0hash.c: mvdir storage/innobase/ha/makefilewin: mvdir storage/innobase/ibuf/Makefile.am: mvdir storage/innobase/ibuf/ibuf0ibuf.c: mvdir storage/innobase/ibuf/makefilewin: mvdir storage/innobase/include/Makefile.am: mvdir storage/innobase/include/Makefile.i: mvdir storage/innobase/include/btr0btr.h: mvdir storage/innobase/include/btr0btr.ic: mvdir storage/innobase/include/btr0cur.h: mvdir storage/innobase/include/btr0cur.ic: mvdir storage/innobase/include/btr0pcur.h: mvdir storage/innobase/include/btr0pcur.ic: mvdir storage/innobase/include/btr0sea.h: mvdir storage/innobase/include/btr0sea.ic: mvdir storage/innobase/include/btr0types.h: mvdir storage/innobase/include/buf0buf.h: mvdir storage/innobase/include/buf0buf.ic: mvdir storage/innobase/include/buf0flu.h: mvdir storage/innobase/include/buf0flu.ic: mvdir storage/innobase/include/buf0lru.h: mvdir storage/innobase/include/buf0lru.ic: mvdir storage/innobase/include/buf0rea.h: mvdir storage/innobase/include/buf0types.h: mvdir storage/innobase/include/data0data.h: mvdir storage/innobase/include/data0data.ic: mvdir storage/innobase/include/data0type.h: mvdir storage/innobase/include/data0type.ic: mvdir storage/innobase/include/data0types.h: mvdir storage/innobase/include/db0err.h: mvdir storage/innobase/include/dict0boot.h: mvdir storage/innobase/include/dict0boot.ic: mvdir storage/innobase/include/dict0crea.h: mvdir storage/innobase/include/dict0crea.ic: mvdir storage/innobase/include/dict0dict.h: mvdir storage/innobase/include/dict0dict.ic: mvdir storage/innobase/include/dict0load.h: mvdir storage/innobase/include/dict0load.ic: mvdir storage/innobase/include/dict0mem.h: mvdir storage/innobase/include/dict0mem.ic: mvdir storage/innobase/include/dict0types.h: mvdir storage/innobase/include/dyn0dyn.h: mvdir storage/innobase/include/dyn0dyn.ic: mvdir storage/innobase/include/eval0eval.h: mvdir storage/innobase/include/eval0eval.ic: mvdir storage/innobase/include/eval0proc.h: mvdir storage/innobase/include/eval0proc.ic: mvdir storage/innobase/include/fil0fil.h: mvdir storage/innobase/include/fsp0fsp.h: mvdir storage/innobase/include/fsp0fsp.ic: mvdir storage/innobase/include/fut0fut.h: mvdir storage/innobase/include/fut0fut.ic: mvdir storage/innobase/include/fut0lst.h: mvdir storage/innobase/include/fut0lst.ic: mvdir storage/innobase/include/ha0ha.h: mvdir storage/innobase/include/ha0ha.ic: mvdir storage/innobase/include/hash0hash.h: mvdir storage/innobase/include/hash0hash.ic: mvdir storage/innobase/include/ibuf0ibuf.h: mvdir storage/innobase/include/ibuf0ibuf.ic: mvdir storage/innobase/include/ibuf0types.h: mvdir storage/innobase/include/lock0lock.h: mvdir storage/innobase/include/lock0lock.ic: mvdir storage/innobase/include/lock0types.h: mvdir storage/innobase/include/log0log.h: mvdir storage/innobase/include/log0log.ic: mvdir storage/innobase/include/log0recv.h: mvdir storage/innobase/include/log0recv.ic: mvdir storage/innobase/include/mach0data.h: mvdir storage/innobase/include/mach0data.ic: mvdir storage/innobase/include/makefilewin.i: mvdir storage/innobase/include/mem0dbg.h: mvdir storage/innobase/include/mem0dbg.ic: mvdir storage/innobase/include/mem0mem.h: mvdir storage/innobase/include/mem0mem.ic: mvdir storage/innobase/include/mem0pool.h: mvdir storage/innobase/include/mem0pool.ic: mvdir storage/innobase/include/mtr0log.h: mvdir storage/innobase/include/mtr0log.ic: mvdir storage/innobase/include/mtr0mtr.h: mvdir storage/innobase/include/mtr0mtr.ic: mvdir storage/innobase/include/mtr0types.h: mvdir storage/innobase/include/os0file.h: mvdir storage/innobase/include/os0proc.h: mvdir storage/innobase/include/os0proc.ic: mvdir storage/innobase/include/os0sync.h: mvdir storage/innobase/include/os0sync.ic: mvdir storage/innobase/include/os0thread.h: mvdir storage/innobase/include/os0thread.ic: mvdir storage/innobase/include/page0cur.h: mvdir storage/innobase/include/page0cur.ic: mvdir storage/innobase/include/page0page.h: mvdir storage/innobase/include/page0page.ic: mvdir storage/innobase/include/page0types.h: mvdir storage/innobase/include/pars0grm.h: mvdir storage/innobase/include/pars0opt.h: mvdir storage/innobase/include/pars0opt.ic: mvdir storage/innobase/include/pars0pars.h: mvdir storage/innobase/include/pars0pars.ic: mvdir storage/innobase/include/pars0sym.h: mvdir storage/innobase/include/pars0sym.ic: mvdir storage/innobase/include/pars0types.h: mvdir storage/innobase/include/que0que.h: mvdir storage/innobase/include/que0que.ic: mvdir storage/innobase/include/que0types.h: mvdir storage/innobase/include/read0read.h: mvdir storage/innobase/include/read0read.ic: mvdir storage/innobase/include/read0types.h: mvdir storage/innobase/include/rem0cmp.h: mvdir storage/innobase/include/rem0cmp.ic: mvdir storage/innobase/include/rem0rec.h: mvdir storage/innobase/include/rem0rec.ic: mvdir storage/innobase/include/rem0types.h: mvdir storage/innobase/include/row0ins.h: mvdir storage/innobase/include/row0ins.ic: mvdir storage/innobase/include/row0mysql.h: mvdir storage/innobase/include/row0mysql.ic: mvdir storage/innobase/include/row0purge.h: mvdir storage/innobase/include/row0purge.ic: mvdir storage/innobase/include/row0row.h: mvdir storage/innobase/include/row0row.ic: mvdir storage/innobase/include/row0sel.h: mvdir storage/innobase/include/row0sel.ic: mvdir storage/innobase/include/row0types.h: mvdir storage/innobase/include/row0uins.h: mvdir storage/innobase/include/row0uins.ic: mvdir storage/innobase/include/row0umod.h: mvdir storage/innobase/include/row0umod.ic: mvdir storage/innobase/include/row0undo.h: mvdir storage/innobase/include/row0undo.ic: mvdir storage/innobase/include/row0upd.h: mvdir storage/innobase/include/row0upd.ic: mvdir storage/innobase/include/row0vers.h: mvdir storage/innobase/include/row0vers.ic: mvdir storage/innobase/include/srv0que.h: mvdir storage/innobase/include/srv0srv.h: mvdir storage/innobase/include/srv0srv.ic: mvdir storage/innobase/include/srv0start.h: mvdir storage/innobase/include/sync0arr.h: mvdir storage/innobase/include/sync0arr.ic: mvdir storage/innobase/include/sync0rw.h: mvdir storage/innobase/include/sync0rw.ic: mvdir storage/innobase/include/sync0sync.h: mvdir storage/innobase/include/sync0sync.ic: mvdir storage/innobase/include/sync0types.h: mvdir storage/innobase/include/thr0loc.h: mvdir storage/innobase/include/thr0loc.ic: mvdir storage/innobase/include/trx0purge.h: mvdir storage/innobase/include/trx0purge.ic: mvdir storage/innobase/include/trx0rec.h: mvdir storage/innobase/include/trx0rec.ic: mvdir storage/innobase/include/trx0roll.h: mvdir storage/innobase/include/trx0roll.ic: mvdir storage/innobase/include/trx0rseg.h: mvdir storage/innobase/include/trx0rseg.ic: mvdir storage/innobase/include/trx0sys.h: mvdir storage/innobase/include/trx0sys.ic: mvdir storage/innobase/include/trx0trx.h: mvdir storage/innobase/include/trx0trx.ic: mvdir storage/innobase/include/trx0types.h: mvdir storage/innobase/include/trx0undo.h: mvdir storage/innobase/include/trx0undo.ic: mvdir storage/innobase/include/trx0xa.h: mvdir storage/innobase/include/univ.i: mvdir storage/innobase/include/usr0sess.h: mvdir storage/innobase/include/usr0sess.ic: mvdir storage/innobase/include/usr0types.h: mvdir storage/innobase/include/ut0byte.h: mvdir storage/innobase/include/ut0byte.ic: mvdir storage/innobase/include/ut0dbg.h: mvdir storage/innobase/include/ut0lst.h: mvdir storage/innobase/include/ut0mem.h: mvdir storage/innobase/include/ut0mem.ic: mvdir storage/innobase/include/ut0rnd.h: mvdir storage/innobase/include/ut0rnd.ic: mvdir storage/innobase/include/ut0sort.h: mvdir storage/innobase/include/ut0ut.h: mvdir storage/innobase/include/ut0ut.ic: mvdir storage/innobase/lock/Makefile.am: mvdir storage/innobase/lock/lock0lock.c: mvdir storage/innobase/lock/makefilewin: mvdir storage/innobase/log/Makefile.am: mvdir storage/innobase/log/log0log.c: mvdir storage/innobase/log/log0recv.c: mvdir storage/innobase/log/makefilewin: mvdir storage/innobase/mach/Makefile.am: mvdir storage/innobase/mach/mach0data.c: mvdir storage/innobase/mach/makefilewin: mvdir storage/innobase/mem/Makefile.am: mvdir storage/innobase/mem/makefilewin: mvdir storage/innobase/mem/mem0dbg.c: mvdir storage/innobase/mem/mem0mem.c: mvdir storage/innobase/mem/mem0pool.c: mvdir storage/innobase/mtr/Makefile.am: mvdir storage/innobase/mtr/makefilewin: mvdir storage/innobase/mtr/mtr0log.c: mvdir storage/innobase/mtr/mtr0mtr.c: mvdir storage/innobase/os/Makefile.am: mvdir storage/innobase/os/makefilewin: mvdir storage/innobase/os/os0file.c: mvdir storage/innobase/os/os0proc.c: mvdir storage/innobase/os/os0sync.c: mvdir storage/innobase/os/os0thread.c: mvdir storage/innobase/page/Makefile.am: mvdir storage/innobase/page/makefilewin: mvdir storage/innobase/page/page0cur.c: mvdir storage/innobase/page/page0page.c: mvdir storage/innobase/pars/Makefile.am: mvdir storage/innobase/pars/lexyy.c: mvdir storage/innobase/pars/makefilewin: mvdir storage/innobase/pars/pars0grm.c: mvdir storage/innobase/pars/pars0grm.h: mvdir storage/innobase/pars/pars0grm.y: mvdir storage/innobase/pars/pars0lex.l: mvdir storage/innobase/pars/pars0opt.c: mvdir storage/innobase/pars/pars0pars.c: mvdir storage/innobase/pars/pars0sym.c: mvdir storage/innobase/que/Makefile.am: mvdir storage/innobase/que/makefilewin: mvdir storage/innobase/que/que0que.c: mvdir storage/innobase/read/Makefile.am: mvdir storage/innobase/read/makefilewin: mvdir storage/innobase/read/read0read.c: mvdir storage/innobase/rem/Makefile.am: mvdir storage/innobase/rem/makefilewin: mvdir storage/innobase/rem/rem0cmp.c: mvdir storage/innobase/rem/rem0rec.c: mvdir storage/innobase/row/Makefile.am: mvdir storage/innobase/row/makefilewin: mvdir storage/innobase/row/row0ins.c: mvdir storage/innobase/row/row0mysql.c: mvdir storage/innobase/row/row0purge.c: mvdir storage/innobase/row/row0row.c: mvdir storage/innobase/row/row0sel.c: mvdir storage/innobase/row/row0uins.c: mvdir storage/innobase/row/row0umod.c: mvdir storage/innobase/row/row0undo.c: mvdir storage/innobase/row/row0upd.c: mvdir storage/innobase/row/row0vers.c: mvdir storage/innobase/srv/Makefile.am: mvdir storage/innobase/srv/makefilewin: mvdir storage/innobase/srv/srv0que.c: mvdir storage/innobase/srv/srv0srv.c: mvdir storage/innobase/srv/srv0start.c: mvdir storage/innobase/sync/Makefile.am: mvdir storage/innobase/sync/makefilewin: mvdir storage/innobase/sync/sync0arr.c: mvdir storage/innobase/sync/sync0rw.c: mvdir storage/innobase/sync/sync0sync.c: mvdir storage/innobase/thr/Makefile.am: mvdir storage/innobase/thr/makefilewin: mvdir storage/innobase/thr/thr0loc.c: mvdir storage/innobase/trx/Makefile.am: mvdir storage/innobase/trx/makefilewin: mvdir storage/innobase/trx/trx0purge.c: mvdir storage/innobase/trx/trx0rec.c: mvdir storage/innobase/trx/trx0roll.c: mvdir storage/innobase/trx/trx0rseg.c: mvdir storage/innobase/trx/trx0sys.c: mvdir storage/innobase/trx/trx0trx.c: mvdir storage/innobase/trx/trx0undo.c: mvdir storage/innobase/usr/Makefile.am: mvdir storage/innobase/usr/makefilewin: mvdir storage/innobase/usr/usr0sess.c: mvdir storage/innobase/ut/Makefile.am: mvdir storage/innobase/ut/makefilewin: mvdir storage/innobase/ut/ut0byte.c: mvdir storage/innobase/ut/ut0dbg.c: mvdir storage/innobase/ut/ut0mem.c: mvdir storage/innobase/ut/ut0rnd.c: mvdir storage/innobase/ut/ut0ut.c: mvdir storage/ndb/Makefile.am: mvdir storage/ndb/bin/.empty: mvdir storage/ndb/bin/check-regression.sh: mvdir storage/ndb/bin/makeTestPrograms_html.sh: mvdir storage/ndb/config/common.mk.am: mvdir storage/ndb/config/make-win-dsw.sh: mvdir storage/ndb/config/type_kernel.mk.am: mvdir storage/ndb/config/type_mgmapiclient.mk.am: mvdir storage/ndb/config/type_ndbapi.mk.am: mvdir storage/ndb/config/type_ndbapiclient.mk.am: mvdir storage/ndb/config/type_ndbapitest.mk.am: mvdir storage/ndb/config/type_ndbapitools.mk.am: mvdir storage/ndb/config/type_util.mk.am: mvdir storage/ndb/config/win-includes: mvdir storage/ndb/config/win-lib.am: mvdir storage/ndb/config/win-libraries: mvdir storage/ndb/config/win-name: mvdir storage/ndb/config/win-prg.am: mvdir storage/ndb/config/win-sources: mvdir storage/ndb/demos/1-node/1-api-3/Ndb.cfg: mvdir storage/ndb/demos/1-node/1-db-2/Ndb.cfg: mvdir storage/ndb/demos/1-node/1-mgm-1/Ndb.cfg: mvdir storage/ndb/demos/1-node/1-mgm-1/template_config.ini: mvdir storage/ndb/demos/2-node/2-api-4/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-api-5/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-api-6/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-api-7/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-db-2/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-db-3/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-mgm-1/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-mgm-1/template_config.ini: mvdir storage/ndb/demos/config-templates/config_template-1-REP.ini: mvdir storage/ndb/demos/config-templates/config_template-4.ini: mvdir storage/ndb/demos/config-templates/config_template-install.ini: mvdir storage/ndb/demos/run_demo1-PS-SS_common.sh: mvdir storage/ndb/demos/run_demo1-PS.sh: mvdir storage/ndb/demos/run_demo1-SS.sh: mvdir storage/ndb/demos/run_demo1.sh: mvdir storage/ndb/demos/run_demo2.sh: mvdir storage/ndb/docs/Makefile.am: mvdir storage/ndb/docs/README: mvdir storage/ndb/docs/doxygen/Doxyfile.mgmapi: mvdir storage/ndb/docs/doxygen/Doxyfile.ndbapi: mvdir storage/ndb/docs/doxygen/Doxyfile.ndb: mvdir storage/ndb/docs/doxygen/Doxyfile.odbc: mvdir storage/ndb/docs/doxygen/Doxyfile.test: mvdir storage/ndb/docs/doxygen/header.mgmapi.tex: mvdir storage/ndb/docs/doxygen/header.ndbapi.tex: mvdir storage/ndb/docs/doxygen/postdoxy.pl: mvdir storage/ndb/docs/doxygen/predoxy.pl: mvdir storage/ndb/docs/wl2077.txt: mvdir storage/ndb/home/bin/Linuxmkisofs: mvdir storage/ndb/home/bin/Solarismkisofs: mvdir storage/ndb/home/bin/cvs2cl.pl: mvdir storage/ndb/home/bin/fix-cvs-root: mvdir storage/ndb/home/bin/import-from-bk.sh: mvdir storage/ndb/home/bin/ndb_deploy: mvdir storage/ndb/home/bin/ndbdoxy.pl: mvdir storage/ndb/home/bin/ngcalc: mvdir storage/ndb/home/bin/parseConfigFile.awk: mvdir storage/ndb/home/bin/setup-test.sh: mvdir storage/ndb/home/bin/signallog2html.lib/signallog2list.awk: mvdir storage/ndb/home/bin/signallog2html.lib/uniq_blocks.awk: mvdir storage/ndb/home/bin/signallog2html.sh: mvdir storage/ndb/home/bin/stripcr: mvdir storage/ndb/home/lib/funcs.sh: mvdir storage/ndb/include/Makefile.am: mvdir storage/ndb/include/debugger/DebuggerNames.hpp: mvdir storage/ndb/include/debugger/EventLogger.hpp: mvdir storage/ndb/include/debugger/GrepError.hpp: mvdir storage/ndb/include/debugger/SignalLoggerManager.hpp: mvdir storage/ndb/include/editline/editline.h: mvdir storage/ndb/include/kernel/AttributeDescriptor.hpp: mvdir storage/ndb/include/kernel/AttributeHeader.hpp: mvdir storage/ndb/include/kernel/AttributeList.hpp: mvdir storage/ndb/include/kernel/BlockNumbers.h: mvdir storage/ndb/include/kernel/GlobalSignalNumbers.h: mvdir storage/ndb/include/kernel/GrepEvent.hpp: mvdir storage/ndb/include/kernel/Interpreter.hpp: mvdir storage/ndb/include/kernel/LogLevel.hpp: mvdir storage/ndb/include/kernel/NodeBitmask.hpp: mvdir storage/ndb/include/kernel/NodeInfo.hpp: mvdir storage/ndb/include/kernel/NodeState.hpp: mvdir storage/ndb/include/kernel/RefConvert.hpp: mvdir storage/ndb/include/kernel/kernel_config_parameters.h: mvdir storage/ndb/include/kernel/kernel_types.h: mvdir storage/ndb/include/kernel/ndb_limits.h: mvdir storage/ndb/include/kernel/signaldata/AbortAll.hpp: mvdir storage/ndb/include/kernel/signaldata/AccFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/AccLock.hpp: mvdir storage/ndb/include/kernel/signaldata/AccScan.hpp: mvdir storage/ndb/include/kernel/signaldata/AccSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/AlterIndx.hpp: mvdir storage/ndb/include/kernel/signaldata/AlterTab.hpp: mvdir storage/ndb/include/kernel/signaldata/AlterTable.hpp: mvdir storage/ndb/include/kernel/signaldata/AlterTrig.hpp: mvdir storage/ndb/include/kernel/signaldata/ApiRegSignalData.hpp: mvdir storage/ndb/include/kernel/signaldata/ApiVersion.hpp: mvdir storage/ndb/include/kernel/signaldata/ArbitSignalData.hpp: mvdir storage/ndb/include/kernel/signaldata/AttrInfo.hpp: mvdir storage/ndb/include/kernel/trigger_definitions.h: mvdir storage/ndb/include/ndb_constants.h: mvdir storage/ndb/include/ndb_global.h.in: mvdir storage/ndb/include/ndb_init.h: mvdir storage/ndb/include/ndb_net.h: mvdir storage/ndb/include/ndb_types.h.in: mvdir storage/ndb/include/ndb_version.h.in: mvdir storage/ndb/include/kernel/signaldata/BackupContinueB.hpp: mvdir storage/ndb/include/kernel/signaldata/BackupImpl.hpp: mvdir storage/ndb/include/kernel/signaldata/BackupSignalData.hpp: mvdir storage/ndb/include/kernel/signaldata/BlockCommitOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/BuildIndx.hpp: mvdir storage/ndb/include/kernel/signaldata/CheckNodeGroups.hpp: mvdir storage/ndb/include/kernel/signaldata/CloseComReqConf.hpp: mvdir storage/ndb/include/kernel/signaldata/CmInit.hpp: mvdir storage/ndb/include/kernel/signaldata/CmRegSignalData.hpp: mvdir storage/ndb/include/kernel/signaldata/CmvmiCfgConf.hpp: mvdir storage/ndb/include/kernel/signaldata/CntrMasterConf.hpp: mvdir storage/ndb/include/kernel/signaldata/CntrMasterReq.hpp: mvdir storage/ndb/include/kernel/signaldata/CntrStart.hpp: mvdir storage/ndb/include/kernel/signaldata/ConfigParamId.hpp: mvdir storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp: mvdir storage/ndb/include/kernel/signaldata/CopyActive.hpp: mvdir storage/ndb/include/kernel/signaldata/CopyFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/CopyGCIReq.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateEvnt.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateFragmentation.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateIndx.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateTab.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateTable.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateTrig.hpp: mvdir storage/ndb/include/kernel/signaldata/DiAddTab.hpp: mvdir storage/ndb/include/kernel/signaldata/DiGetNodes.hpp: mvdir storage/ndb/include/kernel/signaldata/DictSchemaInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/DictSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/DictStart.hpp: mvdir storage/ndb/include/kernel/signaldata/DictTabInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/DihAddFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/DihContinueB.hpp: mvdir storage/ndb/include/kernel/signaldata/DihSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/DihStartTab.hpp: mvdir storage/ndb/include/kernel/signaldata/DihSwitchReplica.hpp: mvdir storage/ndb/include/kernel/signaldata/DisconnectRep.hpp: mvdir storage/ndb/include/kernel/signaldata/DropIndx.hpp: mvdir storage/ndb/include/kernel/signaldata/DropTab.hpp: mvdir storage/ndb/include/kernel/signaldata/DropTabFile.hpp: mvdir storage/ndb/include/kernel/signaldata/DropTable.hpp: mvdir storage/ndb/include/kernel/signaldata/DropTrig.hpp: mvdir storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/EmptyLcp.hpp: mvdir storage/ndb/include/kernel/signaldata/EndTo.hpp: mvdir storage/ndb/include/kernel/signaldata/EventReport.hpp: mvdir storage/ndb/include/kernel/signaldata/EventSubscribeReq.hpp: mvdir storage/ndb/include/kernel/signaldata/ExecFragReq.hpp: mvdir storage/ndb/include/kernel/signaldata/FailRep.hpp: mvdir storage/ndb/include/kernel/signaldata/FireTrigOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/FsAppendReq.hpp: mvdir storage/ndb/include/kernel/signaldata/FsCloseReq.hpp: mvdir storage/ndb/include/kernel/signaldata/FsConf.hpp: mvdir storage/ndb/include/kernel/signaldata/FsOpenReq.hpp: mvdir storage/ndb/include/kernel/signaldata/FsReadWriteReq.hpp: mvdir storage/ndb/include/kernel/signaldata/FsRef.hpp: mvdir storage/ndb/include/kernel/signaldata/FsRemoveReq.hpp: mvdir storage/ndb/include/kernel/signaldata/GCPSave.hpp: mvdir storage/ndb/include/kernel/signaldata/GetTabInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/GetTableId.hpp: mvdir storage/ndb/include/kernel/signaldata/GrepImpl.hpp: mvdir storage/ndb/include/kernel/signaldata/HotSpareRep.hpp: mvdir storage/ndb/include/kernel/signaldata/IndxAttrInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/IndxKeyInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/InvalidateNodeLCPConf.hpp: mvdir storage/ndb/include/kernel/signaldata/InvalidateNodeLCPReq.hpp: mvdir storage/ndb/include/kernel/signaldata/KeyInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/LCP.hpp: mvdir storage/ndb/include/kernel/signaldata/ListTables.hpp: mvdir storage/ndb/include/kernel/signaldata/LqhFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/LqhKey.hpp: mvdir storage/ndb/include/kernel/signaldata/LqhSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/LqhTransConf.hpp: mvdir storage/ndb/include/kernel/signaldata/ManagementServer.hpp: mvdir storage/ndb/include/kernel/signaldata/MasterGCP.hpp: mvdir storage/ndb/include/kernel/signaldata/MasterLCP.hpp: mvdir storage/ndb/include/kernel/signaldata/NFCompleteRep.hpp: mvdir storage/ndb/include/kernel/signaldata/NdbSttor.hpp: mvdir storage/ndb/include/kernel/signaldata/NdbfsContinueB.hpp: mvdir storage/ndb/include/kernel/signaldata/NextScan.hpp: mvdir storage/ndb/include/kernel/signaldata/NodeFailRep.hpp: mvdir storage/ndb/include/kernel/signaldata/NodeStateSignalData.hpp: mvdir storage/ndb/include/kernel/signaldata/PackedSignal.hpp: mvdir storage/ndb/include/kernel/signaldata/PrepDropTab.hpp: mvdir storage/ndb/include/kernel/signaldata/PrepFailReqRef.hpp: mvdir storage/ndb/include/kernel/signaldata/ReadConfig.hpp: mvdir storage/ndb/include/kernel/signaldata/ReadNodesConf.hpp: mvdir storage/ndb/include/kernel/signaldata/RelTabMem.hpp: mvdir storage/ndb/include/kernel/signaldata/RepImpl.hpp: mvdir storage/ndb/include/kernel/signaldata/ResumeReq.hpp: mvdir storage/ndb/include/kernel/signaldata/ScanFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/ScanTab.hpp: mvdir storage/ndb/include/kernel/signaldata/SetLogLevelOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/SetVarReq.hpp: mvdir storage/ndb/include/kernel/signaldata/SignalData.hpp: mvdir storage/ndb/include/kernel/signaldata/SignalDataPrint.hpp: mvdir storage/ndb/include/kernel/signaldata/SignalDroppedRep.hpp: mvdir storage/ndb/include/kernel/signaldata/SrFragidConf.hpp: mvdir storage/ndb/include/kernel/signaldata/StartFragReq.hpp: mvdir storage/ndb/include/kernel/signaldata/StartInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/StartMe.hpp: mvdir storage/ndb/include/kernel/signaldata/StartOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/StartPerm.hpp: mvdir storage/ndb/include/kernel/signaldata/StartRec.hpp: mvdir storage/ndb/include/kernel/signaldata/StartTo.hpp: mvdir storage/ndb/include/kernel/signaldata/StopMe.hpp: mvdir storage/ndb/include/kernel/signaldata/StopPerm.hpp: mvdir storage/ndb/include/kernel/signaldata/StopReq.hpp: mvdir storage/ndb/include/kernel/signaldata/SumaImpl.hpp: mvdir storage/ndb/include/kernel/signaldata/SystemError.hpp: mvdir storage/ndb/include/kernel/signaldata/TamperOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/TcCommit.hpp: mvdir storage/ndb/include/kernel/signaldata/TcContinueB.hpp: mvdir storage/ndb/include/kernel/signaldata/TcHbRep.hpp: mvdir storage/ndb/include/kernel/signaldata/TcIndx.hpp: mvdir storage/ndb/include/kernel/signaldata/TcKeyConf.hpp: mvdir storage/ndb/include/kernel/signaldata/TcKeyFailConf.hpp: mvdir storage/ndb/include/kernel/signaldata/TcKeyRef.hpp: mvdir storage/ndb/include/kernel/signaldata/TcKeyReq.hpp: mvdir storage/ndb/include/kernel/signaldata/TcRollbackRep.hpp: mvdir storage/ndb/include/kernel/signaldata/TcSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/TestOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/TransIdAI.hpp: mvdir storage/ndb/include/kernel/signaldata/TrigAttrInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/TupCommit.hpp: mvdir storage/ndb/include/kernel/signaldata/TupFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/TupKey.hpp: mvdir storage/ndb/include/kernel/signaldata/TupSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/TuxBound.hpp: mvdir storage/ndb/include/kernel/signaldata/TuxContinueB.hpp: mvdir storage/ndb/include/kernel/signaldata/TuxMaint.hpp: mvdir storage/ndb/include/kernel/signaldata/TuxSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/UpdateTo.hpp: mvdir storage/ndb/include/kernel/signaldata/UpgradeStartup.hpp: mvdir storage/ndb/include/kernel/signaldata/UtilDelete.hpp: mvdir storage/ndb/include/kernel/signaldata/UtilExecute.hpp: mvdir storage/ndb/include/kernel/signaldata/UtilLock.hpp: mvdir storage/ndb/include/kernel/signaldata/UtilPrepare.hpp: mvdir storage/ndb/include/kernel/signaldata/UtilRelease.hpp: mvdir storage/ndb/include/kernel/signaldata/UtilSequence.hpp: mvdir storage/ndb/include/kernel/signaldata/WaitGCP.hpp: mvdir storage/ndb/include/logger/ConsoleLogHandler.hpp: mvdir storage/ndb/include/logger/FileLogHandler.hpp: mvdir storage/ndb/include/logger/LogHandler.hpp: mvdir storage/ndb/include/logger/Logger.hpp: mvdir storage/ndb/include/logger/SysLogHandler.hpp: mvdir storage/ndb/include/mgmapi/mgmapi.h: mvdir storage/ndb/include/mgmapi/mgmapi_config_parameters.h: mvdir storage/ndb/include/mgmapi/mgmapi_config_parameters_debug.h: mvdir storage/ndb/include/mgmapi/mgmapi_debug.h: mvdir storage/ndb/include/mgmapi/ndb_logevent.h: mvdir storage/ndb/include/mgmcommon/ConfigRetriever.hpp: mvdir storage/ndb/include/mgmcommon/IPCConfig.hpp: mvdir storage/ndb/include/mgmcommon/MgmtErrorReporter.hpp: mvdir storage/ndb/include/ndbapi/Ndb.hpp: mvdir storage/ndb/include/ndbapi/NdbApi.hpp: mvdir storage/ndb/include/ndbapi/NdbBlob.hpp: mvdir storage/ndb/include/ndbapi/NdbDictionary.hpp: mvdir storage/ndb/include/ndbapi/NdbError.hpp: mvdir storage/ndb/include/ndbapi/NdbEventOperation.hpp: mvdir storage/ndb/include/ndbapi/NdbIndexOperation.hpp: mvdir storage/ndb/include/ndbapi/NdbIndexScanOperation.hpp: mvdir storage/ndb/include/ndbapi/NdbOperation.hpp: mvdir storage/ndb/include/ndbapi/NdbPool.hpp: mvdir storage/ndb/include/ndbapi/NdbRecAttr.hpp: mvdir storage/ndb/include/ndbapi/NdbReceiver.hpp: mvdir storage/ndb/include/ndbapi/NdbScanFilter.hpp: mvdir storage/ndb/include/ndbapi/NdbScanOperation.hpp: mvdir storage/ndb/include/ndbapi/NdbTransaction.hpp: mvdir storage/ndb/include/ndbapi/ndb_cluster_connection.hpp: mvdir storage/ndb/include/ndbapi/ndb_opt_defaults.h: mvdir storage/ndb/include/ndbapi/ndbapi_limits.h: mvdir storage/ndb/include/ndbapi/ndberror.h: mvdir storage/ndb/include/newtonapi/dba.h: mvdir storage/ndb/include/newtonapi/defs/pcn_types.h: mvdir storage/ndb/include/portlib/NdbCondition.h: mvdir storage/ndb/include/portlib/NdbConfig.h: mvdir storage/ndb/include/portlib/NdbDaemon.h: mvdir storage/ndb/include/portlib/NdbEnv.h: mvdir storage/ndb/include/portlib/NdbHost.h: mvdir storage/ndb/include/portlib/NdbMain.h: mvdir storage/ndb/include/portlib/NdbMem.h: mvdir storage/ndb/include/portlib/NdbMutex.h: mvdir storage/ndb/include/portlib/NdbSleep.h: mvdir storage/ndb/include/portlib/NdbTCP.h: mvdir storage/ndb/include/portlib/NdbThread.h: mvdir storage/ndb/include/portlib/NdbTick.h: mvdir storage/ndb/include/portlib/PortDefs.h: mvdir storage/ndb/include/portlib/prefetch.h: mvdir storage/ndb/include/transporter/TransporterCallback.hpp: mvdir storage/ndb/include/transporter/TransporterDefinitions.hpp: mvdir storage/ndb/include/transporter/TransporterRegistry.hpp: mvdir storage/ndb/include/util/Base64.hpp: mvdir storage/ndb/include/util/BaseString.hpp: mvdir storage/ndb/include/util/Bitmask.hpp: mvdir storage/ndb/include/util/ConfigValues.hpp: mvdir storage/ndb/include/util/File.hpp: mvdir storage/ndb/include/util/InputStream.hpp: mvdir storage/ndb/include/util/NdbAutoPtr.hpp: mvdir storage/ndb/include/util/NdbOut.hpp: mvdir storage/ndb/include/util/NdbSqlUtil.hpp: mvdir storage/ndb/include/util/OutputStream.hpp: mvdir storage/ndb/include/util/Parser.hpp: mvdir storage/ndb/include/util/Properties.hpp: mvdir storage/ndb/include/util/SimpleProperties.hpp: mvdir storage/ndb/include/util/SocketAuthenticator.hpp: mvdir storage/ndb/include/util/SocketClient.hpp: mvdir storage/ndb/include/util/SocketServer.hpp: mvdir storage/ndb/include/util/UtilBuffer.hpp: mvdir storage/ndb/include/util/Vector.hpp: mvdir storage/ndb/include/util/basestring_vsnprintf.h: mvdir storage/ndb/include/util/md5_hash.hpp: mvdir storage/ndb/include/util/ndb_opts.h: mvdir storage/ndb/include/util/random.h: mvdir storage/ndb/include/util/socket_io.h: mvdir storage/ndb/include/util/uucode.h: mvdir storage/ndb/include/util/version.h: mvdir storage/ndb/lib/.empty: mvdir storage/ndb/ndbapi-examples/Makefile: mvdir storage/ndb/ndbapi-examples/mgmapi_logevent_example/Makefile: mvdir storage/ndb/ndbapi-examples/mgmapi_logevent_example/mgmapi_logevent.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_async_example/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_async_example/ndbapi_async.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_async_example/readme.txt: mvdir storage/ndb/ndbapi-examples/ndbapi_async_example1/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_async_example1/ndbapi_async1.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_event_example/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_event_example/ndbapi_event.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_retries_example/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_retries_example/ndbapi_retries.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_scan_example/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_scan_example/ndbapi_scan.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_scan_example/readme.txt: mvdir storage/ndb/ndbapi-examples/ndbapi_simple_example/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_simple_example/ndbapi_simple.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_simple_index_example/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_simple_index_example/ndbapi_simple_index.cpp: mvdir storage/ndb/src/Makefile.am: mvdir storage/ndb/src/common/Makefile.am: mvdir storage/ndb/src/common/debugger/BlockNames.cpp: mvdir storage/ndb/src/common/debugger/DebuggerNames.cpp: mvdir storage/ndb/src/common/debugger/EventLogger.cpp: mvdir storage/ndb/src/common/debugger/GrepError.cpp: mvdir storage/ndb/src/common/debugger/Makefile.am: mvdir storage/ndb/src/common/debugger/SignalLoggerManager.cpp: mvdir storage/ndb/src/common/debugger/signaldata/AccLock.cpp: mvdir storage/ndb/src/common/debugger/signaldata/AlterIndx.cpp: mvdir storage/ndb/src/common/debugger/signaldata/AlterTab.cpp: mvdir storage/ndb/src/common/debugger/signaldata/AlterTable.cpp: mvdir storage/ndb/src/common/debugger/signaldata/AlterTrig.cpp: mvdir storage/ndb/src/common/debugger/signaldata/BackupImpl.cpp: mvdir storage/ndb/src/common/debugger/signaldata/BackupSignalData.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CloseComReqConf.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CntrStart.cpp: mvdir storage/ndb/src/common/debugger/signaldata/ContinueB.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CopyGCI.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CreateEvnt.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CreateFragmentation.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CreateIndx.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CreateTrig.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DictTabInfo.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DihContinueB.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DihSwitchReplicaReq.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DisconnectRep.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DropIndx.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DropTab.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DropTrig.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FailRep.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FireTrigOrd.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FsAppendReq.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FsCloseReq.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FsConf.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FsOpenReq.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FsReadWriteReq.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FsRef.cpp: mvdir storage/ndb/src/common/debugger/signaldata/GCPSave.cpp: mvdir storage/ndb/src/common/debugger/signaldata/IndxAttrInfo.cpp: mvdir storage/ndb/src/common/debugger/signaldata/IndxKeyInfo.cpp: mvdir storage/ndb/src/common/debugger/signaldata/LCP.cpp: mvdir storage/ndb/src/common/debugger/signaldata/LqhFrag.cpp: mvdir storage/ndb/src/common/debugger/signaldata/LqhKey.cpp: mvdir storage/ndb/src/common/debugger/signaldata/LqhTrans.cpp: mvdir storage/ndb/src/common/debugger/signaldata/Makefile.am: mvdir storage/ndb/src/common/debugger/signaldata/MasterLCP.cpp: mvdir storage/ndb/src/common/debugger/signaldata/NFCompleteRep.cpp: mvdir storage/ndb/src/common/debugger/signaldata/NdbSttor.cpp: mvdir storage/ndb/src/common/debugger/signaldata/NdbfsContinueB.cpp: mvdir storage/ndb/src/common/debugger/signaldata/PackedSignal.cpp: mvdir storage/ndb/src/common/debugger/signaldata/PrepDropTab.cpp: mvdir storage/ndb/src/common/debugger/signaldata/PrepFailReqRef.cpp: mvdir storage/ndb/src/common/debugger/signaldata/ReadNodesConf.cpp: mvdir storage/ndb/src/common/debugger/signaldata/ScanFrag.cpp: mvdir storage/ndb/src/common/debugger/signaldata/ScanTab.cpp: mvdir storage/ndb/src/common/debugger/signaldata/SignalDataPrint.cpp: mvdir storage/ndb/src/common/debugger/signaldata/SignalDroppedRep.cpp: mvdir storage/ndb/src/common/debugger/signaldata/SignalNames.cpp: mvdir storage/ndb/src/common/debugger/signaldata/StartRec.cpp: mvdir storage/ndb/src/common/debugger/signaldata/SumaImpl.cpp: mvdir storage/ndb/src/common/debugger/signaldata/SystemError.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TcIndx.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TcKeyConf.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TcKeyRef.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TcKeyReq.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TcRollbackRep.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TrigAttrInfo.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TupCommit.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TupKey.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TuxMaint.cpp: mvdir storage/ndb/src/common/debugger/signaldata/UtilDelete.cpp: mvdir storage/ndb/src/common/debugger/signaldata/UtilExecute.cpp: mvdir storage/ndb/src/common/debugger/signaldata/UtilLock.cpp: mvdir storage/ndb/src/common/debugger/signaldata/UtilPrepare.cpp: mvdir storage/ndb/src/common/debugger/signaldata/UtilSequence.cpp: mvdir storage/ndb/src/common/debugger/signaldata/print.awk: mvdir storage/ndb/src/common/logger/ConsoleLogHandler.cpp: mvdir storage/ndb/src/common/logger/FileLogHandler.cpp: mvdir storage/ndb/src/common/logger/LogHandler.cpp: mvdir storage/ndb/src/common/logger/LogHandlerList.cpp: mvdir storage/ndb/src/common/logger/LogHandlerList.hpp: mvdir storage/ndb/src/common/logger/Logger.cpp: mvdir storage/ndb/src/common/logger/Makefile.am: mvdir storage/ndb/src/common/logger/SysLogHandler.cpp: mvdir storage/ndb/src/common/logger/listtest/LogHandlerListUnitTest.cpp: mvdir storage/ndb/src/common/logger/listtest/LogHandlerListUnitTest.hpp: mvdir storage/ndb/src/common/logger/listtest/Makefile: mvdir storage/ndb/src/common/logger/loggertest/LoggerUnitTest.cpp: mvdir storage/ndb/src/common/logger/loggertest/LoggerUnitTest.hpp: mvdir storage/ndb/src/common/logger/loggertest/Makefile: mvdir storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp: mvdir storage/ndb/src/common/mgmcommon/IPCConfig.cpp: mvdir storage/ndb/src/common/mgmcommon/Makefile.am: mvdir storage/ndb/src/common/mgmcommon/printConfig/Makefile: mvdir storage/ndb/src/common/mgmcommon/printConfig/printConfig.cpp: mvdir storage/ndb/src/common/portlib/Makefile.am: mvdir storage/ndb/src/common/portlib/NdbCondition.c: mvdir storage/ndb/src/common/portlib/NdbConfig.c: mvdir storage/ndb/src/common/portlib/NdbDaemon.c: mvdir storage/ndb/src/common/portlib/NdbEnv.c: mvdir storage/ndb/src/common/portlib/NdbHost.c: mvdir storage/ndb/src/common/portlib/NdbMem.c: mvdir storage/ndb/src/common/portlib/NdbMutex.c: mvdir storage/ndb/src/common/portlib/NdbPortLibTest.cpp: mvdir storage/ndb/src/common/portlib/NdbSleep.c: mvdir storage/ndb/src/common/portlib/NdbTCP.cpp: mvdir storage/ndb/src/common/portlib/NdbThread.c: mvdir storage/ndb/src/common/portlib/NdbTick.c: mvdir storage/ndb/src/common/portlib/gcc.cpp: mvdir storage/ndb/src/common/portlib/memtest.c: mvdir storage/ndb/src/common/portlib/mmslist.cpp: mvdir storage/ndb/src/common/portlib/mmstest.cpp: mvdir storage/ndb/src/common/portlib/munmaptest.cpp: mvdir storage/ndb/src/common/portlib/old_dirs/memtest/Makefile: mvdir storage/ndb/src/common/portlib/old_dirs/memtest/munmaptest/Makefile: mvdir storage/ndb/src/common/portlib/old_dirs/ose/Makefile: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbCondition.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbConditionOSE.h: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbEnv.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbHost.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbMem.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbMem_SoftOse.cpp: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbMutex.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbOut.cpp: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbSleep.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbTCP.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbThread.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbTick.c: mvdir storage/ndb/src/common/portlib/old_dirs/test/Makefile: mvdir storage/ndb/src/common/portlib/old_dirs/win32/Makefile: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbCondition.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbDaemon.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbEnv.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbHost.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbMem.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbMutex.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbSleep.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbTCP.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbThread.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbTick.c: mvdir storage/ndb/src/common/portlib/win32/NdbCondition.c: mvdir storage/ndb/src/common/portlib/win32/NdbDaemon.c: mvdir storage/ndb/src/common/portlib/win32/NdbEnv.c: mvdir storage/ndb/src/common/portlib/win32/NdbHost.c: mvdir storage/ndb/src/common/portlib/win32/NdbMem.c: mvdir storage/ndb/src/common/portlib/win32/NdbMutex.c: mvdir storage/ndb/src/common/portlib/win32/NdbSleep.c: mvdir storage/ndb/src/common/portlib/win32/NdbTCP.c: mvdir storage/ndb/src/common/portlib/win32/NdbThread.c: mvdir storage/ndb/src/common/portlib/win32/NdbTick.c: mvdir storage/ndb/src/common/transporter/Makefile.am: mvdir storage/ndb/src/common/transporter/OSE_Receiver.cpp: mvdir storage/ndb/src/common/transporter/OSE_Receiver.hpp: mvdir storage/ndb/src/common/transporter/OSE_Signals.hpp: mvdir storage/ndb/src/common/transporter/OSE_Transporter.cpp: mvdir storage/ndb/src/common/transporter/OSE_Transporter.hpp: mvdir storage/ndb/src/common/transporter/Packer.cpp: mvdir storage/ndb/src/common/transporter/Packer.hpp: mvdir storage/ndb/src/common/transporter/SCI_Transporter.cpp: mvdir storage/ndb/src/common/transporter/SCI_Transporter.hpp: mvdir storage/ndb/src/common/transporter/SHM_Buffer.hpp: mvdir storage/ndb/src/common/transporter/SHM_Transporter.cpp: mvdir storage/ndb/src/common/transporter/SHM_Transporter.hpp: mvdir storage/ndb/src/common/transporter/SHM_Transporter.unix.cpp: mvdir storage/ndb/src/common/transporter/SHM_Transporter.win32.cpp: mvdir storage/ndb/src/common/transporter/SendBuffer.cpp: mvdir storage/ndb/src/common/transporter/SendBuffer.hpp: mvdir storage/ndb/src/common/transporter/TCP_Transporter.cpp: mvdir storage/ndb/src/common/transporter/TCP_Transporter.hpp: mvdir storage/ndb/src/common/transporter/Transporter.cpp: mvdir storage/ndb/src/common/transporter/Transporter.hpp: mvdir storage/ndb/src/common/transporter/TransporterInternalDefinitions.hpp: mvdir storage/ndb/src/common/transporter/TransporterRegistry.cpp: mvdir storage/ndb/src/common/transporter/basictest/Makefile: mvdir storage/ndb/src/common/transporter/basictest/basicTransporterTest.cpp: mvdir storage/ndb/src/common/transporter/buddy.cpp: mvdir storage/ndb/src/common/transporter/buddy.hpp: mvdir storage/ndb/src/common/transporter/failoverSCI/Makefile: mvdir storage/ndb/src/common/transporter/failoverSCI/failoverSCI.cpp: mvdir storage/ndb/src/common/transporter/perftest/Makefile: mvdir storage/ndb/src/common/transporter/perftest/perfTransporterTest.cpp: mvdir storage/ndb/src/common/transporter/priotest/Makefile: mvdir storage/ndb/src/common/transporter/priotest/prioOSE/Makefile: mvdir storage/ndb/src/common/transporter/priotest/prioSCI/Makefile: mvdir storage/ndb/src/common/transporter/priotest/prioSCI/prioSCI.cpp: mvdir storage/ndb/src/common/transporter/priotest/prioSHM/Makefile: mvdir storage/ndb/src/common/transporter/priotest/prioSHM/prioSHM.cpp: mvdir storage/ndb/src/common/transporter/priotest/prioTCP/Makefile: mvdir storage/ndb/src/common/transporter/priotest/prioTCP/prioTCP.cpp: mvdir storage/ndb/src/common/transporter/priotest/prioTransporterTest.cpp: mvdir storage/ndb/src/common/transporter/priotest/prioTransporterTest.hpp: mvdir storage/ndb/src/common/util/Base64.cpp: mvdir storage/ndb/src/common/util/BaseString.cpp: mvdir storage/ndb/src/common/util/Bitmask.cpp: mvdir storage/ndb/src/common/util/ConfigValues.cpp: mvdir storage/ndb/src/common/util/File.cpp: mvdir storage/ndb/src/common/util/InputStream.cpp: mvdir storage/ndb/src/common/util/Makefile.am: mvdir storage/ndb/src/common/util/NdbErrHnd.cpp: mvdir storage/ndb/src/common/util/NdbOut.cpp: mvdir storage/ndb/src/common/util/NdbSqlUtil.cpp: mvdir storage/ndb/src/common/util/OutputStream.cpp: mvdir storage/ndb/src/common/util/Parser.cpp: mvdir storage/ndb/src/common/util/Properties.cpp: mvdir storage/ndb/src/common/util/SimpleProperties.cpp: mvdir storage/ndb/src/common/util/SocketAuthenticator.cpp: mvdir storage/ndb/src/common/util/SocketClient.cpp: mvdir storage/ndb/src/common/util/SocketServer.cpp: mvdir storage/ndb/src/common/util/basestring_vsnprintf.c: mvdir storage/ndb/src/common/util/filetest/FileUnitTest.cpp: mvdir storage/ndb/src/common/util/filetest/FileUnitTest.hpp: mvdir storage/ndb/src/common/util/filetest/Makefile: mvdir storage/ndb/src/common/util/getarg.cat3: mvdir storage/ndb/src/common/util/md5_hash.cpp: mvdir storage/ndb/src/common/util/ndb_init.c: mvdir storage/ndb/src/common/util/new.cpp: mvdir storage/ndb/src/common/util/random.c: mvdir storage/ndb/src/common/util/socket_io.cpp: mvdir storage/ndb/src/common/util/strdup.c: mvdir storage/ndb/src/common/util/testConfigValues/Makefile: mvdir storage/ndb/src/common/util/testConfigValues/testConfigValues.cpp: mvdir storage/ndb/src/common/util/uucode.c: mvdir storage/ndb/src/common/util/version.c: mvdir storage/ndb/src/common/util/testProperties/Makefile: mvdir storage/ndb/src/common/util/testProperties/testProperties.cpp: mvdir storage/ndb/src/common/util/testSimpleProperties/Makefile: mvdir storage/ndb/src/common/util/testSimpleProperties/sp_test.cpp: mvdir storage/ndb/src/cw/Makefile.am: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.cpp: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.dsp: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.dsw: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.h: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.ico: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.rc: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.sln: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.suo: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.vcproj: mvdir storage/ndb/src/cw/cpcc-win32/C++/Closed.ICO: mvdir storage/ndb/src/cw/cpcc-win32/C++/NdbControls.cpp: mvdir storage/ndb/src/cw/cpcc-win32/C++/Open.ICO: mvdir storage/ndb/src/cw/cpcc-win32/C++/StdAfx.cpp: mvdir storage/ndb/src/cw/cpcc-win32/C++/StdAfx.h: mvdir storage/ndb/src/cw/cpcc-win32/C++/TreeView.cpp: mvdir storage/ndb/src/cw/cpcc-win32/C++/TreeView.h: mvdir storage/ndb/src/cw/cpcc-win32/C++/bmp00001.bmp: mvdir storage/ndb/src/cw/cpcc-win32/C++/resource.h: mvdir storage/ndb/src/cw/cpcc-win32/C++/small.ico: mvdir storage/ndb/src/cw/cpcc-win32/C++/toolbar.bmp: mvdir storage/ndb/src/cw/cpcc-win32/csharp/App.ico: mvdir storage/ndb/src/cw/cpcc-win32/csharp/CPC_Form.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/Computer.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/ComputerAddDialog.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/ComputerRemoveDialog.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/DATABASE.ICO: mvdir storage/ndb/src/cw/cpcc-win32/csharp/Database.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/NDB_CPC.csproj.user: mvdir storage/ndb/src/cw/cpcc-win32/csharp/NDB_CPC.csproj: mvdir storage/ndb/src/cw/cpcc-win32/csharp/NDB_CPC.ncb: mvdir storage/ndb/src/cw/cpcc-win32/csharp/NDB_CPC.sln: mvdir storage/ndb/src/cw/cpcc-win32/csharp/PanelWizard.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/Process.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/ProcessDefineDialog.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/fileaccess/FileMgmt.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/simpleparser/SimpleCPCParser.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/socketcomm/SocketComm.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/socketcomm/myTcpClient.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/startDatabaseDlg.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/telnetclient/telnetClient.cs: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Computer.cls: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Database.cls: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 110.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 231.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 237.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 241.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 242.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 270.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 271.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 273.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 31.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 337.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 338.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 339.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/MSSCCPRJ.SCC: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Module1.bas: mvdir storage/ndb/src/cw/cpcc-win32/vb6/NdbCPC.vbp: mvdir storage/ndb/src/cw/cpcc-win32/vb6/NdbCPC.vbw: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Process.cls: mvdir storage/ndb/src/cw/cpcc-win32/vb6/closed folder.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/computer.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmAbout.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmLogin.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmMain.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewComputer.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewComputer.frx: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewDatabase.frx: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewDatabase1.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewDatabase2.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewDatabase2.log: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewDatabase3.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmOptions.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmSplash.frx: mvdir storage/ndb/src/cw/cpcc-win32/vb6/networking.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/open folder.ico: mvdir storage/ndb/src/cw/cpcd/APIService.cpp: mvdir storage/ndb/src/cw/cpcd/APIService.hpp: mvdir storage/ndb/src/cw/cpcd/CPCD.cpp: mvdir storage/ndb/src/cw/cpcd/CPCD.hpp: mvdir storage/ndb/src/cw/cpcd/Makefile.am: mvdir storage/ndb/src/cw/cpcd/Monitor.cpp: mvdir storage/ndb/src/cw/cpcd/Process.cpp: mvdir storage/ndb/src/cw/cpcd/common.cpp: mvdir storage/ndb/src/cw/cpcd/common.hpp: mvdir storage/ndb/src/cw/cpcd/main.cpp: mvdir storage/ndb/src/cw/test/socketclient/Makefile: mvdir storage/ndb/src/cw/test/socketclient/socketClientTest.cpp: mvdir storage/ndb/src/cw/util/ClientInterface.cpp: mvdir storage/ndb/src/cw/util/ClientInterface.hpp: mvdir storage/ndb/src/cw/util/Makefile: mvdir storage/ndb/src/cw/util/SocketRegistry.cpp: mvdir storage/ndb/src/cw/util/SocketRegistry.hpp: mvdir storage/ndb/src/cw/util/SocketService.cpp: mvdir storage/ndb/src/cw/util/SocketService.hpp: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/SISCI_LIBRARY_WIN32.TXT: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/scilib.lib: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/scilib_md.lib: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/scilib_mt.lib: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/sisci_api.lib: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/sisci_api_md.lib: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/sisci_api_mt.lib: mvdir storage/ndb/src/kernel/Makefile.am: mvdir storage/ndb/src/kernel/SimBlockList.cpp: mvdir storage/ndb/src/kernel/blocks/ERROR_codes.txt: mvdir storage/ndb/src/kernel/blocks/Makefile.am: mvdir storage/ndb/src/kernel/blocks/NodeRestart.new.txt: mvdir storage/ndb/src/kernel/blocks/NodeRestart.txt: mvdir storage/ndb/src/kernel/blocks/Start.txt: mvdir storage/ndb/src/kernel/blocks/SystemRestart.new.txt: mvdir storage/ndb/src/kernel/blocks/SystemRestart.txt: mvdir storage/ndb/src/kernel/blocks/backup/Backup.cpp: mvdir storage/ndb/src/kernel/blocks/backup/Backup.hpp: mvdir storage/ndb/src/kernel/blocks/backup/Backup.txt: mvdir storage/ndb/src/kernel/blocks/backup/BackupFormat.hpp: mvdir storage/ndb/src/kernel/blocks/backup/BackupInit.cpp: mvdir storage/ndb/src/kernel/blocks/backup/FsBuffer.hpp: mvdir storage/ndb/src/kernel/blocks/backup/Makefile.am: mvdir storage/ndb/src/kernel/blocks/backup/read.cpp: mvdir storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp: mvdir storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp: mvdir storage/ndb/src/kernel/blocks/cmvmi/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp: mvdir storage/ndb/src/kernel/blocks/dbacc/DbaccInit.cpp: mvdir storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp: mvdir storage/ndb/src/kernel/blocks/dbacc/Makefile.am: mvdir storage/ndb/src/kernel/blocks/mutexes.hpp: mvdir storage/ndb/src/kernel/blocks/new-block.tar.gz: mvdir storage/ndb/src/kernel/main.cpp: mvdir storage/ndb/src/kernel/blocks/dbdict/CreateIndex.txt: mvdir storage/ndb/src/kernel/blocks/dbdict/CreateTable.new.txt: mvdir storage/ndb/src/kernel/blocks/dbdict/CreateTable.txt: mvdir storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp: mvdir storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp: mvdir storage/ndb/src/kernel/blocks/dbdict/Dbdict.txt: mvdir storage/ndb/src/kernel/blocks/dbdict/DropTable.txt: mvdir storage/ndb/src/kernel/blocks/dbdict/Event.txt: mvdir storage/ndb/src/kernel/blocks/dbdict/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dbdict/Master_AddTable.sfl: mvdir storage/ndb/src/kernel/blocks/dbdict/SchemaFile.hpp: mvdir storage/ndb/src/kernel/blocks/dbdict/Slave_AddTable.sfl: mvdir storage/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp: mvdir storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp: mvdir storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp: mvdir storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: mvdir storage/ndb/src/kernel/blocks/dbdih/LCP.txt: mvdir storage/ndb/src/kernel/blocks/dbdih/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dbdih/Sysfile.hpp: mvdir storage/ndb/src/kernel/blocks/dbdih/printSysfile/Makefile: mvdir storage/ndb/src/kernel/blocks/dbdih/printSysfile/printSysfile.cpp: mvdir storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp: mvdir storage/ndb/src/kernel/blocks/dblqh/DblqhInit.cpp: mvdir storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp: mvdir storage/ndb/src/kernel/blocks/dblqh/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dblqh/redoLogReader/Makefile: mvdir storage/ndb/src/kernel/blocks/dblqh/redoLogReader/records.cpp: mvdir storage/ndb/src/kernel/blocks/dblqh/redoLogReader/records.hpp: mvdir storage/ndb/src/kernel/blocks/dblqh/redoLogReader/redoLogFileReader.cpp: mvdir storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp: mvdir storage/ndb/src/kernel/blocks/dbtc/DbtcInit.cpp: mvdir storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: mvdir storage/ndb/src/kernel/blocks/dbtc/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dbtup/AttributeOffset.hpp: mvdir storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupDebug.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupFixAlloc.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupLCP.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupStoredProcDef.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupSystemRestart.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupTabDesMan.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupUndoLog.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dbtup/Notes.txt: mvdir storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxDebug.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxMaint.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxMeta.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxNode.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxSearch.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxTree.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dbtux/Times.txt: mvdir storage/ndb/src/kernel/blocks/dbtux/tuxstatus.html: mvdir storage/ndb/src/kernel/blocks/dbutil/DbUtil.cpp: mvdir storage/ndb/src/kernel/blocks/dbutil/DbUtil.hpp: mvdir storage/ndb/src/kernel/blocks/dbutil/DbUtil.txt: mvdir storage/ndb/src/kernel/blocks/dbutil/Makefile.am: mvdir storage/ndb/src/kernel/blocks/grep/Grep.cpp: mvdir storage/ndb/src/kernel/blocks/grep/Grep.hpp: mvdir storage/ndb/src/kernel/blocks/grep/GrepInit.cpp: mvdir storage/ndb/src/kernel/blocks/grep/Makefile.am: mvdir storage/ndb/src/kernel/blocks/grep/systab_test/Makefile: mvdir storage/ndb/src/kernel/blocks/grep/systab_test/grep_systab_test.cpp: mvdir storage/ndb/src/kernel/blocks/ndbcntr/Makefile.am: mvdir storage/ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp: mvdir storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrInit.cpp: mvdir storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp: mvdir storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrSysTable.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/CircularIndex.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/CircularIndex.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/Filename.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/Filename.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/Makefile.am: mvdir storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/AsyncFileTest/AsyncFileTest.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/AsyncFileTest/Makefile: mvdir storage/ndb/src/kernel/blocks/ndbfs/MemoryChannelOSE.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/MemoryChannelTest/Makefile: mvdir storage/ndb/src/kernel/blocks/ndbfs/MemoryChannelTest/MemoryChannelTest.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/OpenFiles.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/Pool.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/VoidFs.cpp: mvdir storage/ndb/src/kernel/blocks/qmgr/Makefile.am: mvdir storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp: mvdir storage/ndb/src/kernel/blocks/qmgr/QmgrInit.cpp: mvdir storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp: mvdir storage/ndb/src/kernel/blocks/qmgr/timer.hpp: mvdir storage/ndb/src/kernel/blocks/suma/Makefile.am: mvdir storage/ndb/src/kernel/blocks/suma/Suma.cpp: mvdir storage/ndb/src/kernel/blocks/suma/Suma.hpp: mvdir storage/ndb/src/kernel/blocks/suma/Suma.txt: mvdir storage/ndb/src/kernel/blocks/suma/SumaInit.cpp: mvdir storage/ndb/src/kernel/blocks/trix/Makefile.am: mvdir storage/ndb/src/kernel/blocks/trix/Trix.cpp: mvdir storage/ndb/src/kernel/blocks/trix/Trix.hpp: mvdir storage/ndb/src/kernel/error/Error.hpp: mvdir storage/ndb/src/kernel/error/ErrorHandlingMacros.hpp: mvdir storage/ndb/src/kernel/error/ErrorMessages.cpp: mvdir storage/ndb/src/kernel/error/ErrorMessages.hpp: mvdir storage/ndb/src/kernel/error/ErrorReporter.cpp: mvdir storage/ndb/src/kernel/error/ErrorReporter.hpp: mvdir storage/ndb/src/kernel/error/Makefile.am: mvdir storage/ndb/src/kernel/error/TimeModule.cpp: mvdir storage/ndb/src/kernel/error/TimeModule.hpp: mvdir storage/ndb/src/kernel/vm/Array.hpp: mvdir storage/ndb/src/kernel/vm/ArrayFifoList.hpp: mvdir storage/ndb/src/kernel/vm/ArrayList.hpp: mvdir storage/ndb/src/kernel/vm/ArrayPool.hpp: mvdir storage/ndb/src/kernel/vm/CArray.hpp: mvdir storage/ndb/src/kernel/vm/Callback.hpp: mvdir storage/ndb/src/kernel/vm/ClusterConfiguration.cpp: mvdir storage/ndb/src/kernel/vm/ClusterConfiguration.hpp: mvdir storage/ndb/src/kernel/vm/Configuration.cpp: mvdir storage/ndb/src/kernel/vm/Configuration.hpp: mvdir storage/ndb/src/kernel/vm/DLFifoList.hpp: mvdir storage/ndb/src/kernel/vm/DLHashTable.hpp: mvdir storage/ndb/src/kernel/vm/DLHashTable2.hpp: mvdir storage/ndb/src/kernel/vm/DLList.hpp: mvdir storage/ndb/src/kernel/vm/DataBuffer.hpp: mvdir storage/ndb/src/kernel/vm/Emulator.cpp: mvdir storage/ndb/src/kernel/vm/Emulator.hpp: mvdir storage/ndb/src/kernel/vm/FastScheduler.cpp: mvdir storage/ndb/src/kernel/vm/FastScheduler.hpp: mvdir storage/ndb/src/kernel/vm/GlobalData.hpp: mvdir storage/ndb/src/kernel/vm/KeyTable.hpp: mvdir storage/ndb/src/kernel/vm/KeyTable2.hpp: mvdir storage/ndb/src/kernel/vm/LongSignal.hpp: mvdir storage/ndb/src/kernel/vm/Makefile.am: mvdir storage/ndb/src/kernel/vm/MetaData.cpp: mvdir storage/ndb/src/kernel/vm/MetaData.hpp: mvdir storage/ndb/src/kernel/vm/Mutex.cpp: mvdir storage/ndb/src/kernel/vm/Mutex.hpp: mvdir storage/ndb/src/kernel/vm/Prio.hpp: mvdir storage/ndb/src/kernel/vm/RequestTracker.hpp: mvdir storage/ndb/src/kernel/vm/SLList.hpp: mvdir storage/ndb/src/kernel/vm/SafeCounter.cpp: mvdir storage/ndb/src/kernel/vm/SafeCounter.hpp: mvdir storage/ndb/src/kernel/vm/SectionReader.cpp: mvdir storage/ndb/src/kernel/vm/SectionReader.hpp: mvdir storage/ndb/src/kernel/vm/SignalCounter.hpp: mvdir storage/ndb/src/kernel/vm/SimBlockList.hpp: mvdir storage/ndb/src/kernel/vm/SimplePropertiesSection.cpp: mvdir storage/ndb/src/kernel/vm/SimulatedBlock.cpp: mvdir storage/ndb/src/kernel/vm/SimulatedBlock.hpp: mvdir storage/ndb/src/kernel/vm/ThreadConfig.cpp: mvdir storage/ndb/src/kernel/vm/ThreadConfig.hpp: mvdir storage/ndb/src/kernel/vm/TimeQueue.cpp: mvdir storage/ndb/src/kernel/vm/TimeQueue.hpp: mvdir storage/ndb/src/kernel/vm/TransporterCallback.cpp: mvdir storage/ndb/src/kernel/vm/VMSignal.cpp: mvdir storage/ndb/src/kernel/vm/VMSignal.hpp: mvdir storage/ndb/src/kernel/vm/WaitQueue.hpp: mvdir storage/ndb/src/kernel/vm/WatchDog.cpp: mvdir storage/ndb/src/kernel/vm/WatchDog.hpp: mvdir storage/ndb/src/kernel/vm/al_test/Makefile: mvdir storage/ndb/src/kernel/vm/al_test/arrayListTest.cpp: mvdir storage/ndb/src/kernel/vm/al_test/arrayPoolTest.cpp: mvdir storage/ndb/src/kernel/vm/al_test/main.cpp: mvdir storage/ndb/src/kernel/vm/pc.hpp: mvdir storage/ndb/src/kernel/vm/testCopy/Makefile: mvdir storage/ndb/src/kernel/vm/testCopy/rr.cpp: mvdir storage/ndb/src/kernel/vm/testCopy/testCopy.cpp: mvdir storage/ndb/src/kernel/vm/testDataBuffer/Makefile: mvdir storage/ndb/src/kernel/vm/testDataBuffer/testDataBuffer.cpp: mvdir storage/ndb/src/kernel/vm/testLongSig/Makefile: mvdir storage/ndb/src/kernel/vm/testLongSig/testLongSig.cpp: mvdir storage/ndb/src/kernel/vm/testSimplePropertiesSection/Makefile: mvdir storage/ndb/src/kernel/vm/testSimplePropertiesSection/test.cpp: mvdir storage/ndb/src/mgmapi/LocalConfig.cpp: mvdir storage/ndb/src/mgmapi/LocalConfig.hpp: mvdir storage/ndb/src/mgmapi/Makefile.am: mvdir storage/ndb/src/mgmapi/mgmapi.cpp: mvdir storage/ndb/src/mgmapi/mgmapi_configuration.cpp: mvdir storage/ndb/src/mgmapi/mgmapi_configuration.hpp: mvdir storage/ndb/src/mgmapi/mgmapi_internal.h: mvdir storage/ndb/src/mgmapi/ndb_logevent.cpp: mvdir storage/ndb/src/mgmapi/ndb_logevent.hpp: mvdir storage/ndb/src/mgmapi/test/Makefile: mvdir storage/ndb/src/mgmapi/test/keso.c: mvdir storage/ndb/src/mgmapi/test/mgmSrvApi.cpp: mvdir storage/ndb/src/mgmclient/CommandInterpreter.cpp: mvdir storage/ndb/src/mgmclient/Makefile.am: mvdir storage/ndb/src/mgmclient/main.cpp: mvdir storage/ndb/src/mgmclient/ndb_mgmclient.hpp: mvdir storage/ndb/src/mgmclient/ndb_mgmclient.h: mvdir storage/ndb/src/mgmclient/test_cpcd/Makefile: mvdir storage/ndb/src/mgmclient/test_cpcd/test_cpcd.cpp: mvdir storage/ndb/src/mgmsrv/Config.cpp: mvdir storage/ndb/src/mgmsrv/Config.hpp: mvdir storage/ndb/src/mgmsrv/ConfigInfo.cpp: mvdir storage/ndb/src/mgmsrv/ConfigInfo.hpp: mvdir storage/ndb/src/mgmsrv/InitConfigFileParser.cpp: mvdir storage/ndb/src/mgmsrv/InitConfigFileParser.hpp: mvdir storage/ndb/src/mgmsrv/Makefile.am: mvdir storage/ndb/src/mgmsrv/MgmtSrvr.cpp: mvdir storage/ndb/src/mgmsrv/MgmtSrvr.hpp: mvdir storage/ndb/src/mgmsrv/MgmtSrvrConfig.cpp: mvdir storage/ndb/src/mgmsrv/MgmtSrvrGeneralSignalHandling.cpp: mvdir storage/ndb/src/mgmsrv/Services.cpp: mvdir storage/ndb/src/mgmsrv/Services.hpp: mvdir storage/ndb/src/mgmsrv/SignalQueue.cpp: mvdir storage/ndb/src/mgmsrv/SignalQueue.hpp: mvdir storage/ndb/src/mgmsrv/convertStrToInt.cpp: mvdir storage/ndb/src/mgmsrv/convertStrToInt.hpp: mvdir storage/ndb/src/mgmsrv/main.cpp: mvdir storage/ndb/src/mgmsrv/mkconfig/Makefile: mvdir storage/ndb/src/mgmsrv/mkconfig/mkconfig.cpp: mvdir storage/ndb/src/ndbapi/API.hpp: mvdir storage/ndb/src/ndbapi/ClusterMgr.cpp: mvdir storage/ndb/src/ndbapi/ClusterMgr.hpp: mvdir storage/ndb/src/ndbapi/DictCache.cpp: mvdir storage/ndb/src/ndbapi/DictCache.hpp: mvdir storage/ndb/src/ndbapi/Makefile.am: mvdir storage/ndb/src/ndbapi/Ndb.cpp: mvdir storage/ndb/src/ndbapi/NdbApiSignal.cpp: mvdir storage/ndb/src/ndbapi/NdbApiSignal.hpp: mvdir storage/ndb/src/ndbapi/NdbBlob.cpp: mvdir storage/ndb/src/ndbapi/NdbBlobImpl.hpp: mvdir storage/ndb/src/ndbapi/NdbDictionary.cpp: mvdir storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp: mvdir storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp: mvdir storage/ndb/src/ndbapi/NdbErrorOut.cpp: mvdir storage/ndb/src/ndbapi/NdbEventOperation.cpp: mvdir storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp: mvdir storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp: mvdir storage/ndb/src/ndbapi/NdbImpl.hpp: mvdir storage/ndb/src/ndbapi/NdbIndexOperation.cpp: mvdir storage/ndb/src/ndbapi/NdbLinHash.hpp: mvdir storage/ndb/src/ndbapi/NdbOperation.cpp: mvdir storage/ndb/src/ndbapi/NdbOperationDefine.cpp: mvdir storage/ndb/src/ndbapi/NdbOperationExec.cpp: mvdir storage/ndb/src/ndbapi/NdbOperationInt.cpp: mvdir storage/ndb/src/ndbapi/NdbOperationScan.cpp: mvdir storage/ndb/src/ndbapi/NdbOperationSearch.cpp: mvdir storage/ndb/src/ndbapi/NdbPool.cpp: mvdir storage/ndb/src/ndbapi/NdbPoolImpl.cpp: mvdir storage/ndb/src/ndbapi/NdbPoolImpl.hpp: mvdir storage/ndb/src/ndbapi/NdbRecAttr.cpp: mvdir storage/ndb/src/ndbapi/NdbReceiver.cpp: mvdir storage/ndb/src/ndbapi/NdbScanFilter.cpp: mvdir storage/ndb/src/ndbapi/NdbScanOperation.cpp: mvdir storage/ndb/src/ndbapi/NdbTransaction.cpp: mvdir storage/ndb/src/ndbapi/NdbTransactionScan.cpp: mvdir storage/ndb/src/ndbapi/NdbUtil.cpp: mvdir storage/ndb/src/ndbapi/NdbUtil.hpp: mvdir storage/ndb/src/ndbapi/NdbWaiter.hpp: mvdir storage/ndb/src/ndbapi/Ndberr.cpp: mvdir storage/ndb/src/ndbapi/Ndbif.cpp: mvdir storage/ndb/src/ndbapi/Ndbinit.cpp: mvdir storage/ndb/src/ndbapi/Ndblist.cpp: mvdir storage/ndb/src/ndbapi/ObjectMap.hpp: mvdir storage/ndb/src/ndbapi/ScanOperation.txt: mvdir storage/ndb/src/ndbapi/TransporterFacade.cpp: mvdir storage/ndb/src/ndbapi/TransporterFacade.hpp: mvdir storage/ndb/src/ndbapi/ndb_cluster_connection.cpp: mvdir storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp: mvdir storage/ndb/src/ndbapi/ndberror.c: mvdir storage/ndb/src/ndbapi/signal-sender/Makefile: mvdir storage/ndb/src/ndbapi/signal-sender/SignalSender.cpp: mvdir storage/ndb/src/ndbapi/signal-sender/SignalSender.hpp: mvdir storage/ndb/src/old_files/client/Makefile: mvdir storage/ndb/src/old_files/client/odbc/Extra.mk: mvdir storage/ndb/src/old_files/client/odbc/Makefile: mvdir storage/ndb/src/old_files/client/odbc/NdbOdbc.cpp: mvdir storage/ndb/src/old_files/client/odbc/NdbOdbc.def: mvdir storage/ndb/src/old_files/client/odbc/codegen/CodeGen.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/CodeGen.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_base.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_base.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_column.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_column.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_comp_op.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_comp_op.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_create_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_create_index.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_create_row.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_create_row.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_create_table.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_create_table.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_data_type.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_data_type.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl_column.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl_column.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl_constr.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl_constr.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl_row.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl_row.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete_index.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete_lookup.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete_lookup.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete_scan.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete_scan.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_dml.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_dml.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_dml_column.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_dml_column.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_dml_row.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_dml_row.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_drop_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_drop_index.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_drop_table.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_drop_table.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_column.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_column.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_const.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_const.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_conv.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_conv.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_func.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_func.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_op.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_op.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_param.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_param.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_row.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_row.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_idx_column.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_idx_column.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_insert.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_insert.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_pred.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_pred.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_pred_op.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_pred_op.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_count.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_count.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_distinct.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_distinct.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_filter.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_filter.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_group.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_group.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_index.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_join.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_join.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_lookup.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_lookup.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_project.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_project.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_range.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_range.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_repeat.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_repeat.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_scan.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_scan.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_sort.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_sort.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_sys.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_sys.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_root.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_root.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_select.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_select.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_set_row.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_set_row.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_stmt.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_stmt.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_table.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_table.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_table_list.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_table_list.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update_index.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update_lookup.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update_lookup.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update_scan.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update_scan.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Makefile: mvdir storage/ndb/src/old_files/client/odbc/codegen/SimpleGram.ypp: mvdir storage/ndb/src/old_files/client/odbc/codegen/SimpleParser.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/SimpleParser.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/SimpleScan.lpp: mvdir storage/ndb/src/old_files/client/odbc/common/AttrArea.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/AttrArea.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/CodeTree.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/CodeTree.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/ConnArea.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/ConnArea.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/Ctx.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/Ctx.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/DataField.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/DataField.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/DataRow.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/DataRow.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/DataType.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/DataType.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/DescArea.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/DescArea.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/DiagArea.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/DiagArea.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/Makefile: mvdir storage/ndb/src/old_files/client/odbc/common/OdbcData.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/OdbcData.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/ResultArea.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/ResultArea.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/Sqlstate.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/Sqlstate.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/StmtArea.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/StmtArea.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/StmtInfo.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/StmtInfo.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/common.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/common.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictCatalog.cpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictCatalog.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictColumn.cpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictColumn.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictIndex.cpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictIndex.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictSchema.cpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictSchema.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictSys.cpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictSys.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictTable.cpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictTable.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/Makefile: mvdir storage/ndb/src/old_files/client/odbc/docs/class.fig: mvdir storage/ndb/src/old_files/client/odbc/docs/descfield.pl: mvdir storage/ndb/src/old_files/client/odbc/docs/diag.txt: mvdir storage/ndb/src/old_files/client/odbc/docs/getinfo.pl: mvdir storage/ndb/src/old_files/client/odbc/docs/gettypeinfo.pl: mvdir storage/ndb/src/old_files/client/odbc/docs/handleattr.pl: mvdir storage/ndb/src/old_files/client/odbc/docs/main.hpp: mvdir storage/ndb/src/old_files/client/odbc/docs/ndbodbc.html: mvdir storage/ndb/src/old_files/client/odbc/docs/select.fig: mvdir storage/ndb/src/old_files/client/odbc/docs/systables.pl: mvdir storage/ndb/src/old_files/client/odbc/docs/type.txt: mvdir storage/ndb/src/old_files/client/odbc/driver/Func.data: mvdir storage/ndb/src/old_files/client/odbc/driver/Func.pl: mvdir storage/ndb/src/old_files/client/odbc/driver/Makefile: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLAllocConnect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLAllocEnv.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLAllocHandle.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLAllocHandleStd.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLAllocStmt.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLBindCol.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLBindParam.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLBindParameter.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLBrowseConnect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLBulkOperations.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLCancel.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLCloseCursor.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLColAttribute.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLColAttributes.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLColumnPrivileges.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLColumns.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLConnect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLCopyDesc.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLDataSources.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLDescribeCol.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLDescribeParam.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLDisconnect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLDriverConnect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLDrivers.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLEndTran.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLError.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLExecDirect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLExecute.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLExtendedFetch.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLFetch.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLFetchScroll.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLForeignKeys.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLFreeConnect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLFreeEnv.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLFreeHandle.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLFreeStmt.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetConnectAttr.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetConnectOption.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetCursorName.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetData.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetDescField.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetDescRec.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetDiagField.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetDiagRec.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetEnvAttr.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetFunctions.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetInfo.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetStmtAttr.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetStmtOption.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetTypeInfo.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLMoreResults.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLNativeSql.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLNumParams.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLNumResultCols.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLParamData.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLParamOptions.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLPrepare.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLPrimaryKeys.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLProcedureColumns.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLProcedures.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLPutData.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLRowCount.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetConnectAttr.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetConnectOption.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetCursorName.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetDescField.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetDescRec.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetEnvAttr.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetParam.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetPos.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetScrollOptions.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetStmtAttr.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetStmtOption.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSpecialColumns.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLStatistics.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLTablePrivileges.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLTables.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLTransact.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/driver.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/driver.hpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_comp_op.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_create_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_create_table.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_delete_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_delete_lookup.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_delete_scan.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_drop_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_drop_table.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_expr_conv.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_expr_func.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_expr_op.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_insert.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_pred_op.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_query_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_query_lookup.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_query_range.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_query_scan.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_query_sys.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_update_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_update_lookup.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_update_scan.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Executor.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Executor.hpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Makefile: mvdir storage/ndb/src/old_files/client/odbc/handles/AttrDbc.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/AttrEnv.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/AttrRoot.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/AttrStmt.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/DescSpec.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/FuncTab.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleBase.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleBase.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleDbc.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleDbc.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleDesc.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleDesc.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleEnv.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleEnv.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleRoot.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleRoot.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleStmt.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleStmt.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/InfoTab.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/Makefile: mvdir storage/ndb/src/old_files/client/odbc/handles/PoolNdb.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/PoolNdb.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/handles.hpp: mvdir storage/ndb/src/old_files/ndbbaseclient/Makefile: mvdir storage/ndb/src/old_files/ndbbaseclient/ndbbaseclient_dummy.cpp: mvdir storage/ndb/src/old_files/ndbclient/Makefile: mvdir storage/ndb/src/old_files/ndbclient/ndbclient_dummy.cpp: mvdir storage/ndb/src/old_files/newtonapi/Makefile: mvdir storage/ndb/src/old_files/newtonapi/dba_binding.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_bulkread.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_config.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_dac.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_error.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_init.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_internal.hpp: mvdir storage/ndb/src/old_files/newtonapi/dba_process.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_process.hpp: mvdir storage/ndb/src/old_files/newtonapi/dba_schema.cpp: mvdir storage/ndb/src/old_files/rep/ExtSender.cpp: mvdir storage/ndb/src/old_files/rep/ExtSender.hpp: mvdir storage/ndb/src/old_files/rep/Makefile: mvdir storage/ndb/src/old_files/rep/NodeConnectInfo.hpp: mvdir storage/ndb/src/old_files/rep/README: mvdir storage/ndb/src/old_files/rep/RepApiInterpreter.cpp: mvdir storage/ndb/src/old_files/rep/RepApiInterpreter.hpp: mvdir storage/ndb/src/old_files/rep/RepApiService.cpp: mvdir storage/ndb/src/old_files/rep/RepApiService.hpp: mvdir storage/ndb/src/old_files/rep/RepCommandInterpreter.cpp: mvdir storage/ndb/src/old_files/rep/RepCommandInterpreter.hpp: mvdir storage/ndb/src/old_files/rep/RepComponents.cpp: mvdir storage/ndb/src/old_files/rep/RepComponents.hpp: mvdir storage/ndb/src/old_files/rep/RepMain.cpp: mvdir storage/ndb/src/old_files/rep/Requestor.cpp: mvdir storage/ndb/src/old_files/rep/Requestor.hpp: mvdir storage/ndb/src/old_files/rep/RequestorSubscriptions.cpp: mvdir storage/ndb/src/old_files/rep/SignalQueue.cpp: mvdir storage/ndb/src/old_files/rep/SignalQueue.hpp: mvdir storage/ndb/src/old_files/rep/TODO: mvdir storage/ndb/src/old_files/rep/adapters/AppNDB.cpp: mvdir storage/ndb/src/old_files/rep/adapters/AppNDB.hpp: mvdir storage/ndb/src/old_files/rep/adapters/ExtAPI.cpp: mvdir storage/ndb/src/old_files/rep/adapters/ExtAPI.hpp: mvdir storage/ndb/src/old_files/rep/adapters/ExtNDB.cpp: mvdir storage/ndb/src/old_files/rep/adapters/ExtNDB.hpp: mvdir storage/ndb/src/old_files/rep/adapters/Makefile: mvdir storage/ndb/src/old_files/rep/adapters/TableInfoPs.hpp: mvdir storage/ndb/src/old_files/rep/dbug_hack.cpp: mvdir storage/ndb/src/old_files/rep/rep_version.hpp: mvdir storage/ndb/src/old_files/rep/repapi/Makefile: mvdir storage/ndb/src/old_files/rep/repapi/repapi.cpp: mvdir storage/ndb/src/old_files/rep/repapi/repapi.h: mvdir storage/ndb/src/old_files/rep/state/Channel.cpp: mvdir storage/ndb/src/old_files/rep/state/Channel.hpp: mvdir storage/ndb/src/old_files/rep/state/Interval.cpp: mvdir storage/ndb/src/old_files/rep/state/Interval.hpp: mvdir storage/ndb/src/old_files/rep/state/Makefile: mvdir storage/ndb/src/old_files/rep/state/RepState.cpp: mvdir storage/ndb/src/old_files/rep/state/RepState.hpp: mvdir storage/ndb/src/old_files/rep/state/RepStateEvent.cpp: mvdir storage/ndb/src/old_files/rep/state/RepStateRequests.cpp: mvdir storage/ndb/src/old_files/rep/state/testInterval/Makefile: mvdir storage/ndb/src/old_files/rep/state/testInterval/testInterval.cpp: mvdir storage/ndb/src/old_files/rep/state/testRepState/Makefile: mvdir storage/ndb/src/old_files/rep/state/testRepState/testRequestor.cpp: mvdir storage/ndb/src/old_files/rep/state/testRepState/testRequestor.hpp: mvdir storage/ndb/src/old_files/rep/storage/GCIBuffer.cpp: mvdir storage/ndb/src/old_files/rep/storage/GCIBuffer.hpp: mvdir storage/ndb/src/old_files/rep/storage/GCIContainer.cpp: mvdir storage/ndb/src/old_files/rep/storage/GCIContainer.hpp: mvdir storage/ndb/src/old_files/rep/storage/GCIContainerPS.cpp: mvdir storage/ndb/src/old_files/rep/storage/GCIContainerPS.hpp: mvdir storage/ndb/src/old_files/rep/storage/GCIPage.cpp: mvdir storage/ndb/src/old_files/rep/storage/GCIPage.hpp: mvdir storage/ndb/src/old_files/rep/storage/LogRecord.hpp: mvdir storage/ndb/src/old_files/rep/storage/Makefile: mvdir storage/ndb/src/old_files/rep/storage/NodeConnectInfo.hpp: mvdir storage/ndb/src/old_files/rep/storage/NodeGroup.cpp: mvdir storage/ndb/src/old_files/rep/storage/NodeGroup.hpp: mvdir storage/ndb/src/old_files/rep/storage/NodeGroupInfo.cpp: mvdir storage/ndb/src/old_files/rep/storage/NodeGroupInfo.hpp: mvdir storage/ndb/src/old_files/rep/transfer/Makefile: mvdir storage/ndb/src/old_files/rep/transfer/TransPS.cpp: mvdir storage/ndb/src/old_files/rep/transfer/TransPS.hpp: mvdir storage/ndb/src/old_files/rep/transfer/TransSS.cpp: mvdir storage/ndb/src/old_files/rep/transfer/TransSS.hpp: mvdir storage/ndb/src/old_files/rep/transfer/TransSSSubscriptions.cpp: mvdir storage/ndb/test/Makefile.am: mvdir storage/ndb/test/include/CpcClient.hpp: mvdir storage/ndb/test/include/HugoAsynchTransactions.hpp: mvdir storage/ndb/test/include/HugoCalculator.hpp: mvdir storage/ndb/test/include/HugoOperations.hpp: mvdir storage/ndb/test/include/HugoTransactions.hpp: mvdir storage/ndb/test/include/NDBT.hpp: mvdir storage/ndb/test/include/NDBT_DataSet.hpp: mvdir storage/ndb/test/include/NDBT_DataSetTransaction.hpp: mvdir storage/ndb/test/include/NDBT_Error.hpp: mvdir storage/ndb/test/include/NDBT_Output.hpp: mvdir storage/ndb/test/include/NDBT_ResultRow.hpp: mvdir storage/ndb/test/include/NDBT_ReturnCodes.h: mvdir storage/ndb/test/include/NDBT_Stats.hpp: mvdir storage/ndb/test/include/NDBT_Table.hpp: mvdir storage/ndb/test/include/NDBT_Tables.hpp: mvdir storage/ndb/test/include/NDBT_Test.hpp: mvdir storage/ndb/test/include/NdbBackup.hpp: mvdir storage/ndb/test/include/NdbConfig.hpp: mvdir storage/ndb/test/include/NdbGrep.hpp: mvdir storage/ndb/test/include/NdbRestarter.hpp: mvdir storage/ndb/test/include/NdbRestarts.hpp: mvdir storage/ndb/test/include/NdbSchemaCon.hpp: mvdir storage/ndb/test/include/NdbSchemaOp.hpp: mvdir storage/ndb/test/include/NdbTest.hpp: mvdir storage/ndb/test/include/NdbTimer.hpp: mvdir storage/ndb/test/include/TestNdbEventOperation.hpp: mvdir storage/ndb/test/include/UtilTransactions.hpp: mvdir storage/ndb/test/include/getarg.h: mvdir storage/ndb/test/ndbapi/InsertRecs.cpp: mvdir storage/ndb/test/ndbapi/Makefile.am: mvdir storage/ndb/test/ndbapi/ScanFilter.hpp: mvdir storage/ndb/test/ndbapi/ScanFunctions.hpp: mvdir storage/ndb/test/ndbapi/ScanInterpretTest.hpp: mvdir storage/ndb/test/ndbapi/TraceNdbApi.cpp: mvdir storage/ndb/test/ndbapi/VerifyNdbApi.cpp: mvdir storage/ndb/test/ndbapi/acid.cpp: mvdir storage/ndb/test/ndbapi/acid2.cpp: mvdir storage/ndb/test/ndbapi/adoInsertRecs.cpp: mvdir storage/ndb/test/ndbapi/asyncGenerator.cpp: mvdir storage/ndb/test/ndbapi/benchronja.cpp: mvdir storage/ndb/test/ndbapi/bulk_copy.cpp: mvdir storage/ndb/test/ndbapi/cdrserver.cpp: mvdir storage/ndb/test/ndbapi/celloDb.cpp: mvdir storage/ndb/test/ndbapi/create_all_tabs.cpp: mvdir storage/ndb/test/ndbapi/create_tab.cpp: mvdir storage/ndb/test/ndbapi/drop_all_tabs.cpp: mvdir storage/ndb/test/ndbapi/flexAsynch.cpp: mvdir storage/ndb/test/ndbapi/flexBench.cpp: mvdir storage/ndb/test/ndbapi/flexHammer.cpp: mvdir storage/ndb/test/ndbapi/flexScan.cpp: mvdir storage/ndb/test/ndbapi/flexTT.cpp: mvdir storage/ndb/test/ndbapi/flexTimedAsynch.cpp: mvdir storage/ndb/test/ndbapi/flex_bench_mysql.cpp: mvdir storage/ndb/test/ndbapi/index.cpp: mvdir storage/ndb/test/ndbapi/index2.cpp: mvdir storage/ndb/test/ndbapi/initronja.cpp: mvdir storage/ndb/test/ndbapi/interpreterInTup.cpp: mvdir storage/ndb/test/ndbapi/mainAsyncGenerator.cpp: mvdir storage/ndb/test/ndbapi/msa.cpp: mvdir storage/ndb/test/ndbapi/ndb_async1.cpp: mvdir storage/ndb/test/ndbapi/ndb_async2.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_populate.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_transaction.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_transaction2.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_transaction3.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_transaction4.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_transaction5.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_transaction6.cpp: mvdir storage/ndb/test/ndbapi/restarter.cpp: mvdir storage/ndb/test/ndbapi/restarter2.cpp: mvdir storage/ndb/test/ndbapi/restarts.cpp: mvdir storage/ndb/test/ndbapi/size.cpp: mvdir storage/ndb/test/ndbapi/slow_select.cpp: mvdir storage/ndb/test/ndbapi/testBackup.cpp: mvdir storage/ndb/test/ndbapi/testBasic.cpp: mvdir storage/ndb/test/ndbapi/testBasicAsynch.cpp: mvdir storage/ndb/test/ndbapi/testBitfield.cpp: mvdir storage/ndb/test/ndbapi/testBlobs.cpp: mvdir storage/ndb/test/ndbapi/testDataBuffers.cpp: mvdir storage/ndb/test/ndbapi/testDeadlock.cpp: mvdir storage/ndb/test/ndbapi/testDict.cpp: mvdir storage/ndb/test/ndbapi/testGrep.cpp: mvdir storage/ndb/test/ndbapi/testGrepVerify.cpp: mvdir storage/ndb/test/ndbapi/testIndex.cpp: mvdir storage/ndb/test/ndbapi/testInterpreter.cpp: mvdir storage/ndb/test/ndbapi/testLcp.cpp: mvdir storage/ndb/test/ndbapi/testMgm.cpp: mvdir storage/ndb/test/ndbapi/testNdbApi.cpp: mvdir storage/ndb/test/ndbapi/testNodeRestart.cpp: mvdir storage/ndb/test/ndbapi/testOIBasic.cpp: mvdir storage/ndb/test/ndbapi/testOperations.cpp: mvdir storage/ndb/test/ndbapi/testOrderedIndex.cpp: mvdir storage/ndb/test/ndbapi/testPartitioning.cpp: mvdir storage/ndb/test/ndbapi/testReadPerf.cpp: mvdir storage/ndb/test/ndbapi/testRestartGci.cpp: mvdir storage/ndb/test/ndbapi/bank/Bank.cpp: mvdir storage/ndb/test/ndbapi/bank/Bank.hpp: mvdir storage/ndb/test/ndbapi/bank/BankLoad.cpp: mvdir storage/ndb/test/ndbapi/bank/Makefile.am: mvdir storage/ndb/test/ndbapi/bank/bankCreator.cpp: mvdir storage/ndb/test/ndbapi/bank/bankMakeGL.cpp: mvdir storage/ndb/test/ndbapi/bank/bankSumAccounts.cpp: mvdir storage/ndb/test/ndbapi/bank/bankTimer.cpp: mvdir storage/ndb/test/ndbapi/bank/bankTransactionMaker.cpp: mvdir storage/ndb/test/ndbapi/bank/bankValidateAllGLs.cpp: mvdir storage/ndb/test/ndbapi/bank/testBank.cpp: mvdir storage/ndb/test/ndbapi/bench/asyncGenerator.cpp: mvdir storage/ndb/test/ndbapi/bench/dbGenerator.h: mvdir storage/ndb/test/ndbapi/bench/dbPopulate.cpp: mvdir storage/ndb/test/ndbapi/bench/dbPopulate.h: mvdir storage/ndb/test/ndbapi/bench/macros.h: mvdir storage/ndb/test/ndbapi/bench/mainAsyncGenerator.cpp: mvdir storage/ndb/test/ndbapi/bench/mainPopulate.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_async1.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_async2.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_error.hpp: mvdir storage/ndb/test/ndbapi/bench/ndb_schema.hpp: mvdir storage/ndb/test/ndbapi/bench/ndb_user_transaction.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_user_transaction2.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_user_transaction3.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_user_transaction4.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_user_transaction5.cpp: mvdir storage/ndb/test/ndbapi/testScan.cpp: mvdir storage/ndb/test/ndbapi/testScanInterpreter.cpp: mvdir storage/ndb/test/ndbapi/testScanPerf.cpp: mvdir storage/ndb/test/ndbapi/testSystemRestart.cpp: mvdir storage/ndb/test/ndbapi/testTimeout.cpp: mvdir storage/ndb/test/ndbapi/testTransactions.cpp: mvdir storage/ndb/test/ndbapi/test_event.cpp: mvdir storage/ndb/test/ndbapi/test_event_multi_table.cpp: mvdir storage/ndb/test/ndbapi/userInterface.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_user_transaction6.cpp: mvdir storage/ndb/test/ndbapi/bench/testData.h: mvdir storage/ndb/test/ndbapi/bench/testDefinitions.h: mvdir storage/ndb/test/ndbapi/bench/userInterface.cpp: mvdir storage/ndb/test/ndbapi/bench/userInterface.h: mvdir storage/ndb/test/ndbapi/old_dirs/acid/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/acid2/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/acid2/TraceNdbApi.hpp: mvdir storage/ndb/test/ndbapi/old_dirs/acid2/VerifyNdbApi.hpp: mvdir storage/ndb/test/ndbapi/old_dirs/basicAsynch/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/bulk_copy/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/create_all_tabs/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/create_tab/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/drop_all_tabs/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/flexAsynch/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/flexBench/Makefile.am: mvdir storage/ndb/test/ndbapi/old_dirs/flexBench/ndbplot.pl: mvdir storage/ndb/test/ndbapi/old_dirs/flexHammer/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/flexHammer/README: mvdir storage/ndb/test/ndbapi/old_dirs/flexScan/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/flexScan/README: mvdir storage/ndb/test/ndbapi/old_dirs/flexTT/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/flexTimedAsynch/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/flex_bench_mysql/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/indexTest/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/indexTest2/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/interpreterInTup/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/generator/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/dbGenerator.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/testData.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/userInterface.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/macros.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/ndb_error.hpp: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/bin/.empty: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/include/ndb_schema.hpp: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/include/testDefinitions.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/lib/.empty: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/script/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/script/async-lmc-bench-l-p10.sh: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/script/async-lmc-bench-l.sh: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/script/async-lmc-bench-p10.sh: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/script/async-lmc-bench.sh: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/README: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/dbGenerator.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/dbGenerator.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/mainGenerator.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/include/testData.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/include/userInterface.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/makevars.linux: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/makevars.sparc: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/dbPopulate.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/dbPopulate.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/mainPopulate.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/localDbPrepare.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/macros.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/ndb_error.hpp: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userHandle.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userInterface.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userHandle.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userInterface.cpp: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userTransaction.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userTransaction.c: mvdir storage/ndb/test/ndbapi/old_dirs/restarter/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/restarter2/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/restarts/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/ronja/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/ronja/benchronja/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/ronja/initronja/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/telco/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/telco/readme: mvdir storage/ndb/test/ndbapi/old_dirs/testBackup/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testBasic/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testBlobs/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testDataBuffers/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testDict/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testGrep/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testGrep/verify/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testIndex/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testInterpreter/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testMgm/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testNdbApi/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testNodeRestart/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testOIBasic/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testOIBasic/times.txt: mvdir storage/ndb/test/ndbapi/old_dirs/testOperations/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testOrderedIndex/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testRestartGci/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testScan/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testScanInterpreter/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testSystemRestart/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testTimeout/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testTransactions/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/test_event/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/vw_test/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/vw_test/bcd.h: mvdir storage/ndb/test/ndbapi/old_dirs/vw_test/script/client_start: mvdir storage/ndb/test/ndbapi/old_dirs/vw_test/utv.h: mvdir storage/ndb/test/ndbapi/old_dirs/vw_test/vcdrfunc.h: mvdir storage/ndb/test/ndbnet/test.run: mvdir storage/ndb/test/ndbnet/testError.run: mvdir storage/ndb/test/ndbnet/testMNF.run: mvdir storage/ndb/test/ndbnet/testNR.run: mvdir storage/ndb/test/ndbnet/testNR1.run: mvdir storage/ndb/test/ndbnet/testNR4.run: mvdir storage/ndb/test/ndbnet/testSRhang.run: mvdir storage/ndb/test/ndbnet/testTR295.run: mvdir storage/ndb/test/newtonapi/basic_test/Makefile: mvdir storage/ndb/test/newtonapi/basic_test/basic/Makefile: mvdir storage/ndb/test/newtonapi/basic_test/basic/basic.cpp: mvdir storage/ndb/test/newtonapi/basic_test/bulk_read/Makefile: mvdir storage/ndb/test/newtonapi/basic_test/bulk_read/br_test.cpp: mvdir storage/ndb/test/newtonapi/basic_test/common.cpp: mvdir storage/ndb/test/newtonapi/basic_test/common.hpp: mvdir storage/ndb/test/newtonapi/basic_test/ptr_binding/Makefile: mvdir storage/ndb/test/newtonapi/basic_test/ptr_binding/ptr_binding_test.cpp: mvdir storage/ndb/test/newtonapi/basic_test/too_basic.cpp: mvdir storage/ndb/test/newtonapi/perf_test/Makefile: mvdir storage/ndb/test/newtonapi/perf_test/perf.cpp: mvdir storage/ndb/test/odbc/SQL99_test/Makefile: mvdir storage/ndb/test/odbc/SQL99_test/SQL99_test.cpp: mvdir storage/ndb/test/odbc/SQL99_test/SQL99_test.h: mvdir storage/ndb/test/odbc/client/Makefile: mvdir storage/ndb/test/odbc/client/NDBT_ALLOCHANDLE.cpp: mvdir storage/ndb/test/odbc/client/NDBT_ALLOCHANDLE_HDBC.cpp: mvdir storage/ndb/test/odbc/client/NDBT_SQLConnect.cpp: mvdir storage/ndb/test/odbc/client/NDBT_SQLPrepare.cpp: mvdir storage/ndb/test/odbc/client/SQLAllocEnvTest.cpp: mvdir storage/ndb/test/odbc/client/SQLAllocHandleTest.cpp: mvdir storage/ndb/test/odbc/client/SQLAllocHandleTest_bf.cpp: mvdir storage/ndb/test/odbc/client/SQLBindColTest.cpp: mvdir storage/ndb/test/odbc/client/SQLBindParameterTest.cpp: mvdir storage/ndb/test/odbc/client/SQLCancelTest.cpp: mvdir storage/ndb/test/odbc/client/SQLCloseCursorTest.cpp: mvdir storage/ndb/test/odbc/client/SQLColAttributeTest.cpp: mvdir storage/ndb/test/odbc/client/SQLColAttributeTest1.cpp: mvdir storage/ndb/test/odbc/client/SQLColAttributeTest2.cpp: mvdir storage/ndb/test/odbc/client/SQLColAttributeTest3.cpp: mvdir storage/ndb/test/odbc/client/SQLConnectTest.cpp: mvdir storage/ndb/test/odbc/client/SQLCopyDescTest.cpp: mvdir storage/ndb/test/odbc/client/SQLDescribeColTest.cpp: mvdir storage/ndb/test/odbc/client/SQLDisconnectTest.cpp: mvdir storage/ndb/test/odbc/client/SQLDriverConnectTest.cpp: mvdir storage/ndb/test/odbc/client/SQLEndTranTest.cpp: mvdir storage/ndb/test/odbc/client/SQLErrorTest.cpp: mvdir storage/ndb/test/odbc/client/SQLExecDirectTest.cpp: mvdir storage/ndb/test/odbc/client/SQLExecuteTest.cpp: mvdir storage/ndb/test/odbc/client/SQLFetchScrollTest.cpp: mvdir storage/ndb/test/odbc/client/SQLFetchTest.cpp: mvdir storage/ndb/test/odbc/client/SQLFreeHandleTest.cpp: mvdir storage/ndb/test/odbc/client/SQLFreeStmtTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetConnectAttrTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetCursorNameTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetDataTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetDescFieldTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetDescRecTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetDiagFieldTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetDiagRecSimpleTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetDiagRecTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetEnvAttrTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetFunctionsTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetInfoTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetStmtAttrTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetTypeInfoTest.cpp: mvdir storage/ndb/test/odbc/client/SQLMoreResultsTest.cpp: mvdir storage/ndb/test/odbc/client/SQLNumResultColsTest.cpp: mvdir storage/ndb/test/odbc/client/SQLParamDataTest.cpp: mvdir storage/ndb/test/odbc/client/SQLPrepareTest.cpp: mvdir storage/ndb/test/odbc/client/SQLPutDataTest.cpp: mvdir storage/ndb/test/odbc/client/SQLRowCountTest.cpp: mvdir storage/ndb/test/odbc/client/SQLSetConnectAttrTest.cpp: mvdir storage/ndb/test/odbc/client/SQLSetCursorNameTest.cpp: mvdir storage/ndb/test/odbc/client/SQLSetDescFieldTest.cpp: mvdir storage/ndb/test/odbc/client/SQLSetDescRecTest.cpp: mvdir storage/ndb/test/odbc/client/SQLSetEnvAttrTest.cpp: mvdir storage/ndb/test/odbc/client/SQLSetStmtAttrTest.cpp: mvdir storage/ndb/test/odbc/client/SQLTablesTest.cpp: mvdir storage/ndb/test/odbc/client/SQLTransactTest.cpp: mvdir storage/ndb/test/odbc/client/common.hpp: mvdir storage/ndb/test/odbc/client/main.cpp: mvdir storage/ndb/test/odbc/dm-iodbc/Makefile: mvdir storage/ndb/test/odbc/dm-unixodbc/Makefile: mvdir storage/ndb/test/odbc/driver/Makefile: mvdir storage/ndb/test/odbc/driver/testOdbcDriver.cpp: mvdir storage/ndb/test/odbc/test_compiler/Makefile: mvdir storage/ndb/test/odbc/test_compiler/test_compiler.cpp: mvdir storage/ndb/test/run-test/16node-tests.txt: mvdir storage/ndb/test/run-test/Makefile.am: mvdir storage/ndb/test/run-test/README.ATRT: mvdir storage/ndb/test/run-test/README: mvdir storage/ndb/test/run-test/atrt-analyze-result.sh: mvdir storage/ndb/test/run-test/atrt-clear-result.sh: mvdir storage/ndb/test/run-test/atrt-example.tgz: mvdir storage/ndb/test/run-test/atrt-gather-result.sh: mvdir storage/ndb/test/run-test/atrt-mysql-test-run: mvdir storage/ndb/test/run-test/atrt-setup.sh: mvdir storage/ndb/test/run-test/atrt-testBackup: mvdir storage/ndb/test/run-test/basic.txt: mvdir storage/ndb/test/run-test/daily-basic-tests.txt: mvdir storage/ndb/test/run-test/daily-devel-tests.txt: mvdir storage/ndb/test/run-test/example.conf: mvdir storage/ndb/test/run-test/main.cpp: mvdir storage/ndb/test/run-test/make-config.sh: mvdir storage/ndb/test/run-test/make-html-reports.sh: mvdir storage/ndb/test/run-test/make-index.sh: mvdir storage/ndb/test/run-test/ndb-autotest.sh: mvdir storage/ndb/test/run-test/run-test.hpp: mvdir storage/ndb/test/src/CpcClient.cpp: mvdir storage/ndb/test/src/HugoAsynchTransactions.cpp: mvdir storage/ndb/test/src/HugoCalculator.cpp: mvdir storage/ndb/test/src/HugoOperations.cpp: mvdir storage/ndb/test/src/HugoTransactions.cpp: mvdir storage/ndb/test/src/Makefile.am: mvdir storage/ndb/test/src/NDBT_Error.cpp: mvdir storage/ndb/test/src/NDBT_Output.cpp: mvdir storage/ndb/test/src/NDBT_ResultRow.cpp: mvdir storage/ndb/test/src/NDBT_ReturnCodes.cpp: mvdir storage/ndb/test/src/NDBT_Table.cpp: mvdir storage/ndb/test/src/NDBT_Tables.cpp: mvdir storage/ndb/test/src/NDBT_Test.cpp: mvdir storage/ndb/test/src/NdbBackup.cpp: mvdir storage/ndb/test/src/NdbConfig.cpp: mvdir storage/ndb/test/src/NdbGrep.cpp: mvdir storage/ndb/test/src/NdbRestarter.cpp: mvdir storage/ndb/test/src/NdbRestarts.cpp: mvdir storage/ndb/test/src/NdbSchemaCon.cpp: mvdir storage/ndb/test/src/NdbSchemaOp.cpp: mvdir storage/ndb/test/src/UtilTransactions.cpp: mvdir storage/ndb/test/src/getarg.c: mvdir storage/ndb/test/tools/Makefile.am: mvdir storage/ndb/test/tools/copy_tab.cpp: mvdir storage/ndb/test/tools/cpcc.cpp: mvdir storage/ndb/test/tools/create_index.cpp: mvdir storage/ndb/test/tools/hugoCalculator.cpp: mvdir storage/ndb/test/tools/hugoFill.cpp: mvdir storage/ndb/test/tools/hugoLoad.cpp: mvdir storage/ndb/test/tools/hugoLockRecords.cpp: mvdir storage/ndb/test/tools/hugoPkDelete.cpp: mvdir storage/ndb/test/tools/hugoPkRead.cpp: mvdir storage/ndb/test/tools/hugoPkReadRecord.cpp: mvdir storage/ndb/test/tools/hugoPkUpdate.cpp: mvdir storage/ndb/test/tools/hugoScanRead.cpp: mvdir storage/ndb/test/tools/hugoScanUpdate.cpp: mvdir storage/ndb/test/tools/old_dirs/hugoCalculator/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoFill/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoLoad/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoLockRecords/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoPkDelete/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoPkRead/Makefile: mvdir storage/ndb/test/tools/restart.cpp: mvdir storage/ndb/test/tools/transproxy.cpp: mvdir storage/ndb/test/tools/verify_index.cpp: mvdir storage/ndb/test/tools/old_dirs/hugoPkReadRecord/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoPkUpdate/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoScanRead/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoScanUpdate/Makefile: mvdir storage/ndb/test/tools/old_dirs/restart/Makefile: mvdir storage/ndb/test/tools/old_dirs/transproxy/Makefile: mvdir storage/ndb/test/tools/old_dirs/verify_index/Makefile: mvdir storage/ndb/test/tools/old_dirs/waiter/waiter.cpp: mvdir storage/ndb/tools/Makefile.am: mvdir storage/ndb/tools/clean-links.sh: mvdir storage/ndb/tools/delete_all.cpp: mvdir storage/ndb/tools/desc.cpp: mvdir storage/ndb/tools/drop_index.cpp: mvdir storage/ndb/tools/drop_tab.cpp: mvdir storage/ndb/tools/listTables.cpp: mvdir storage/ndb/tools/make-errors.pl: mvdir storage/ndb/tools/make-links.sh: mvdir storage/ndb/tools/ndb_test_platform.cpp: mvdir storage/ndb/tools/ndbsql.cpp: mvdir storage/ndb/tools/old_dirs/copy_tab/Makefile: mvdir storage/ndb/tools/old_dirs/cpcc/Makefile: mvdir storage/ndb/tools/old_dirs/create_index/Makefile: mvdir storage/ndb/tools/old_dirs/delete_all/Makefile: mvdir storage/ndb/tools/old_dirs/desc/Makefile: mvdir storage/ndb/tools/old_dirs/drop_index/Makefile: mvdir storage/ndb/tools/old_dirs/drop_tab/Makefile: mvdir storage/ndb/tools/old_dirs/list_tables/Makefile: mvdir storage/ndb/tools/old_dirs/ndbnet/Makefile.PL: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Run.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/ndbnet.pl: mvdir storage/ndb/tools/old_dirs/ndbnet/ndbnetd.pl: mvdir storage/ndb/tools/old_dirs/ndbnet/ndbrun: mvdir storage/ndb/tools/rgrep: mvdir storage/ndb/tools/select_all.cpp: mvdir storage/ndb/tools/select_count.cpp: mvdir storage/ndb/tools/waiter.cpp: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Base.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Client.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Command.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Config.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Database.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Env.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Node.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeApi.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeDb.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeMgmt.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Server.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerINET.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerUNIX.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Base.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Database.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Env.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Node.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Base.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Dir.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Event.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/File.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/IO.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Lock.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Log.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Socket.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketINET.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketUNIX.pm: mvdir storage/ndb/tools/old_dirs/ndbsql/Makefile: mvdir storage/ndb/tools/old_dirs/select_all/Makefile: mvdir storage/ndb/tools/old_dirs/select_count/Makefile: mvdir storage/ndb/tools/old_dirs/src/counterviewer/CounterViewer.java: mvdir storage/ndb/tools/restore/Restore.cpp: mvdir storage/ndb/tools/restore/Restore.hpp: mvdir storage/ndb/tools/restore/consumer.cpp: mvdir storage/ndb/tools/restore/consumer.hpp: mvdir storage/ndb/tools/restore/consumer_printer.cpp: mvdir storage/ndb/tools/restore/consumer_printer.hpp: mvdir storage/ndb/tools/restore/consumer_restore.cpp: mvdir storage/ndb/tools/restore/consumer_restore.hpp: mvdir storage/ndb/tools/restore/consumer_restorem.cpp: mvdir storage/ndb/tools/restore/restore_main.cpp: mvdir storage/bdb/LICENSE: mvdir storage/bdb/Makefile.in: mvdir storage/bdb/btree/bt_compare.c: mvdir storage/bdb/btree/bt_conv.c: mvdir storage/bdb/btree/bt_curadj.c: mvdir storage/bdb/btree/bt_cursor.c: mvdir storage/bdb/btree/bt_delete.c: mvdir storage/bdb/btree/bt_method.c: mvdir storage/bdb/btree/bt_open.c: mvdir storage/bdb/btree/bt_put.c: mvdir storage/bdb/btree/bt_rec.c: mvdir storage/bdb/btree/bt_reclaim.c: mvdir storage/bdb/btree/bt_recno.c: mvdir storage/bdb/btree/bt_rsearch.c: mvdir storage/bdb/btree/bt_search.c: mvdir storage/bdb/btree/bt_split.c: mvdir storage/bdb/btree/bt_stat.c: mvdir storage/bdb/btree/bt_upgrade.c: mvdir storage/bdb/btree/bt_verify.c: mvdir storage/bdb/btree/btree.src: mvdir storage/bdb/build_unix/.IGNORE_ME: mvdir storage/bdb/build_vxworks/BerkeleyDB.wsp: mvdir storage/bdb/build_vxworks/dbdemo/README: mvdir storage/bdb/build_win32/Berkeley_DB.dsw: mvdir storage/bdb/build_win32/app_dsp.src: mvdir storage/bdb/build_win32/build_all.dsp: mvdir storage/bdb/build_win32/db_java_xa.dsp: mvdir storage/bdb/build_win32/db_java_xaj.mak: mvdir storage/bdb/build_win32/db_lib.dsp: mvdir storage/bdb/build_win32/db_test.src: mvdir storage/bdb/build_win32/dbkill.cpp: mvdir storage/bdb/build_win32/dllmain.c: mvdir storage/bdb/build_win32/dynamic_dsp.src: mvdir storage/bdb/build_win32/java_dsp.src: mvdir storage/bdb/build_win32/libdb_tcl.def: mvdir storage/bdb/build_win32/libdbrc.src: mvdir storage/bdb/build_win32/srcfile_dsp.src: mvdir storage/bdb/build_win32/static_dsp.src: mvdir storage/bdb/build_win32/tcl_dsp.src: mvdir storage/bdb/clib/getcwd.c: mvdir storage/bdb/clib/getopt.c: mvdir storage/bdb/clib/memcmp.c: mvdir storage/bdb/clib/memmove.c: mvdir storage/bdb/clib/raise.c: mvdir storage/bdb/clib/snprintf.c: mvdir storage/bdb/clib/strcasecmp.c: mvdir storage/bdb/clib/strdup.c: mvdir storage/bdb/clib/strerror.c: mvdir storage/bdb/clib/vsnprintf.c: mvdir storage/bdb/common/db_byteorder.c: mvdir storage/bdb/common/db_err.c: mvdir storage/bdb/common/db_getlong.c: mvdir storage/bdb/common/db_idspace.c: mvdir storage/bdb/common/db_log2.c: mvdir storage/bdb/common/util_arg.c: mvdir storage/bdb/common/util_cache.c: mvdir storage/bdb/common/util_log.c: mvdir storage/bdb/common/util_sig.c: mvdir storage/bdb/cxx/cxx_db.cpp: mvdir storage/bdb/cxx/cxx_dbc.cpp: mvdir storage/bdb/cxx/cxx_dbt.cpp: mvdir storage/bdb/cxx/cxx_env.cpp: mvdir storage/bdb/cxx/cxx_except.cpp: mvdir storage/bdb/cxx/cxx_lock.cpp: mvdir storage/bdb/cxx/cxx_logc.cpp: mvdir storage/bdb/cxx/cxx_mpool.cpp: mvdir storage/bdb/cxx/cxx_txn.cpp: mvdir storage/bdb/db/crdel.src: mvdir storage/bdb/db/crdel_rec.c: mvdir storage/bdb/db/db.c: mvdir storage/bdb/db/db.src: mvdir storage/bdb/db/db_am.c: mvdir storage/bdb/db/db_cam.c: mvdir storage/bdb/db/db_conv.c: mvdir storage/bdb/db/db_dispatch.c: mvdir storage/bdb/db/db_dup.c: mvdir storage/bdb/db/db_iface.c: mvdir storage/bdb/db/db_join.c: mvdir storage/bdb/db/db_meta.c: mvdir storage/bdb/db/db_method.c: mvdir storage/bdb/db/db_open.c: mvdir storage/bdb/db/db_overflow.c: mvdir storage/bdb/db/db_pr.c: mvdir storage/bdb/db/db_rec.c: mvdir storage/bdb/db/db_reclaim.c: mvdir storage/bdb/db/db_remove.c: mvdir storage/bdb/db/db_rename.c: mvdir storage/bdb/db/db_ret.c: mvdir storage/bdb/db/db_truncate.c: mvdir storage/bdb/db/db_upg.c: mvdir storage/bdb/db/db_upg_opd.c: mvdir storage/bdb/db/db_vrfy.c: mvdir storage/bdb/db/db_vrfyutil.c: mvdir storage/bdb/db185/db185.c: mvdir storage/bdb/db185/db185_int.in: mvdir storage/bdb/db_archive/db_archive.c: mvdir storage/bdb/db_checkpoint/db_checkpoint.c: mvdir storage/bdb/db_deadlock/db_deadlock.c: mvdir storage/bdb/db_dump/db_dump.c: mvdir storage/bdb/db_dump185/db_dump185.c: mvdir storage/bdb/db_load/db_load.c: mvdir storage/bdb/db_printlog/README: mvdir storage/bdb/db_printlog/commit.awk: mvdir storage/bdb/db_printlog/count.awk: mvdir storage/bdb/db_printlog/db_printlog.c: mvdir storage/bdb/db_printlog/dbname.awk: mvdir storage/bdb/db_printlog/fileid.awk: mvdir storage/bdb/db_printlog/logstat.awk: mvdir storage/bdb/db_printlog/pgno.awk: mvdir storage/bdb/db_printlog/range.awk: mvdir storage/bdb/db_printlog/rectype.awk: mvdir storage/bdb/db_printlog/status.awk: mvdir storage/bdb/db_printlog/txn.awk: mvdir storage/bdb/db_recover/db_recover.c: mvdir storage/bdb/db_stat/db_stat.c: mvdir storage/bdb/db_upgrade/db_upgrade.c: mvdir storage/bdb/db_verify/db_verify.c: mvdir storage/bdb/dbinc/btree.h: mvdir storage/bdb/dbinc/crypto.h: mvdir storage/bdb/dbinc/cxx_common.h: mvdir storage/bdb/dbinc/cxx_except.h: mvdir storage/bdb/dbinc/cxx_int.h: mvdir storage/bdb/dbinc/db.in: mvdir storage/bdb/dbinc/db_185.in: mvdir storage/bdb/dbinc/db_am.h: mvdir storage/bdb/dbinc/db_cxx.in: mvdir storage/bdb/dbinc/db_dispatch.h: mvdir storage/bdb/dbinc/db_int.in: mvdir storage/bdb/dbinc/db_join.h: mvdir storage/bdb/dbinc/db_page.h: mvdir storage/bdb/dbinc/db_server_int.h: mvdir storage/bdb/dbinc/db_shash.h: mvdir storage/bdb/dbinc/db_swap.h: mvdir storage/bdb/dbinc/db_upgrade.h: mvdir storage/bdb/dbinc/db_verify.h: mvdir storage/bdb/dbinc/debug.h: mvdir storage/bdb/dbinc/fop.h: mvdir storage/bdb/dbinc/globals.h: mvdir storage/bdb/dbinc/hash.h: mvdir storage/bdb/dbinc/hmac.h: mvdir storage/bdb/dbinc/lock.h: mvdir storage/bdb/dbinc/log.h: mvdir storage/bdb/dbinc/mp.h: mvdir storage/bdb/dbinc/mutex.h: mvdir storage/bdb/dbinc/os.h: mvdir storage/bdb/dbinc/qam.h: mvdir storage/bdb/dbinc/queue.h: mvdir storage/bdb/dbinc/region.h: mvdir storage/bdb/dbinc/rep.h: mvdir storage/bdb/dbinc/shqueue.h: mvdir storage/bdb/dbinc/tcl_db.h: mvdir storage/bdb/dbinc/txn.h: mvdir storage/bdb/dbinc/xa.h: mvdir storage/bdb/dbm/dbm.c: mvdir storage/bdb/dbreg/dbreg.c: mvdir storage/bdb/dbreg/dbreg.src: mvdir storage/bdb/dbreg/dbreg_rec.c: mvdir storage/bdb/dbreg/dbreg_util.c: mvdir storage/bdb/dist/Makefile.in: mvdir storage/bdb/dist/RELEASE: mvdir storage/bdb/dist/buildrel: mvdir storage/bdb/dist/config.guess: mvdir storage/bdb/dist/config.sub: mvdir storage/bdb/dist/configure.ac: mvdir storage/bdb/dist/db.ecd.in: mvdir storage/bdb/dist/db.spec.in: mvdir storage/bdb/dist/gen_inc.awk: mvdir storage/bdb/dist/gen_rec.awk: mvdir storage/bdb/dist/gen_rpc.awk: mvdir storage/bdb/dist/install-sh: mvdir storage/bdb/dist/ltmain.sh: mvdir storage/bdb/dist/pubdef.in: mvdir storage/bdb/dist/s_all: mvdir storage/bdb/dist/s_config: mvdir storage/bdb/dist/aclocal/config.ac: mvdir storage/bdb/dist/aclocal/cxx.ac: mvdir storage/bdb/dist/aclocal/gcc.ac: mvdir storage/bdb/dist/aclocal/libtool.ac: mvdir storage/bdb/dist/s_crypto: mvdir storage/bdb/dist/s_dir: mvdir storage/bdb/dist/s_include: mvdir storage/bdb/dist/s_javah: mvdir storage/bdb/dist/s_java: mvdir storage/bdb/dist/s_perm: mvdir storage/bdb/dist/s_readme: mvdir storage/bdb/dist/s_recover: mvdir storage/bdb/dist/s_rpc: mvdir storage/bdb/dist/s_symlink: mvdir storage/bdb/dist/s_tags: mvdir storage/bdb/dist/s_test: mvdir storage/bdb/dist/s_vxworks: mvdir storage/bdb/dist/s_win32_dsp: mvdir storage/bdb/dist/s_win32: mvdir storage/bdb/dist/srcfiles.in: mvdir storage/bdb/dist/vx_buildcd: mvdir storage/bdb/dist/vx_config.in: mvdir storage/bdb/dist/win_config.in: mvdir storage/bdb/dist/win_exports.in: mvdir storage/bdb/dist/aclocal/mutex.ac: mvdir storage/bdb/dist/aclocal/options.ac: mvdir storage/bdb/dist/aclocal/programs.ac: mvdir storage/bdb/dist/aclocal/sosuffix.ac: mvdir storage/bdb/dist/aclocal/tcl.ac: mvdir storage/bdb/dist/aclocal/types.ac: mvdir storage/bdb/dist/aclocal_java/ac_check_class.ac: mvdir storage/bdb/dist/aclocal_java/ac_check_classpath.ac: mvdir storage/bdb/dist/aclocal_java/ac_check_junit.ac: mvdir storage/bdb/dist/aclocal_java/ac_check_rqrd_class.ac: mvdir storage/bdb/dist/aclocal_java/ac_java_options.ac: mvdir storage/bdb/dist/aclocal_java/ac_jni_include_dirs.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_jar.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_java.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_java_works.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_javac.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_javac_works.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_javadoc.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_javah.ac: mvdir storage/bdb/dist/aclocal_java/ac_try_compile_java.ac: mvdir storage/bdb/dist/aclocal_java/ac_try_run_javac.ac: mvdir storage/bdb/dist/template/rec_ctemp: mvdir storage/bdb/dist/vx_2.0/BerkeleyDB.wpj: mvdir storage/bdb/dist/vx_2.0/wpj.in: mvdir storage/bdb/dist/vx_3.1/Makefile.custom: mvdir storage/bdb/dist/vx_3.1/cdf.1: mvdir storage/bdb/dist/vx_3.1/cdf.2: mvdir storage/bdb/dist/vx_3.1/cdf.3: mvdir storage/bdb/dist/vx_3.1/component.cdf: mvdir storage/bdb/dist/vx_3.1/component.wpj: mvdir storage/bdb/dist/vx_3.1/wpj.1: mvdir storage/bdb/dist/vx_3.1/wpj.2: mvdir storage/bdb/dist/vx_3.1/wpj.3: mvdir storage/bdb/dist/vx_3.1/wpj.4: mvdir storage/bdb/dist/vx_3.1/wpj.5: mvdir storage/bdb/dist/vx_setup/CONFIG.in: mvdir storage/bdb/dist/vx_setup/LICENSE.TXT: mvdir storage/bdb/dist/vx_setup/MESSAGES.TCL: mvdir storage/bdb/dist/vx_setup/README.in: mvdir storage/bdb/dist/vx_setup/SETUP.BMP: mvdir storage/bdb/dist/vx_setup/vx_allfile.in: mvdir storage/bdb/dist/vx_setup/vx_demofile.in: mvdir storage/bdb/dist/vx_setup/vx_setup.in: mvdir storage/bdb/env/db_salloc.c: mvdir storage/bdb/env/db_shash.c: mvdir storage/bdb/env/env_file.c: mvdir storage/bdb/env/env_method.c.b: mvdir storage/bdb/env/env_method.c: mvdir storage/bdb/env/env_open.c: mvdir storage/bdb/env/env_recover.c: mvdir storage/bdb/env/env_region.c: mvdir storage/bdb/fileops/fileops.src: mvdir storage/bdb/fileops/fop_basic.c: mvdir storage/bdb/fileops/fop_rec.c: mvdir storage/bdb/fileops/fop_util.c: mvdir storage/bdb/hash/hash.c: mvdir storage/bdb/hash/hash.src: mvdir storage/bdb/hash/hash_conv.c: mvdir storage/bdb/hash/hash_dup.c: mvdir storage/bdb/hash/hash_func.c: mvdir storage/bdb/hash/hash_meta.c: mvdir storage/bdb/hash/hash_method.c: mvdir storage/bdb/hash/hash_open.c: mvdir storage/bdb/hash/hash_page.c: mvdir storage/bdb/hash/hash_rec.c: mvdir storage/bdb/hash/hash_reclaim.c: mvdir storage/bdb/hash/hash_stat.c: mvdir storage/bdb/hash/hash_upgrade.c: mvdir storage/bdb/hash/hash_verify.c: mvdir storage/bdb/hmac/hmac.c: mvdir storage/bdb/hmac/sha1.c: mvdir storage/bdb/hsearch/hsearch.c: mvdir storage/bdb/libdb_java/checkapi.prl: mvdir storage/bdb/libdb_java/com_sleepycat_db_Db.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_DbEnv.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_DbLock.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_DbLogc.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_DbLsn.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_DbTxn.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_DbUtil.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_Dbc.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_Dbt.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_xa_DbXAResource.h: mvdir storage/bdb/libdb_java/java_Db.c: mvdir storage/bdb/libdb_java/java_DbEnv.c: mvdir storage/bdb/libdb_java/java_DbLock.c: mvdir storage/bdb/libdb_java/java_DbLogc.c: mvdir storage/bdb/libdb_java/java_DbLsn.c: mvdir storage/bdb/libdb_java/java_DbTxn.c: mvdir storage/bdb/libdb_java/java_DbUtil.c: mvdir storage/bdb/libdb_java/java_DbXAResource.c: mvdir storage/bdb/libdb_java/java_Dbc.c: mvdir storage/bdb/libdb_java/java_Dbt.c: mvdir storage/bdb/libdb_java/java_info.c: mvdir storage/bdb/libdb_java/java_info.h: mvdir storage/bdb/libdb_java/java_locked.c: mvdir storage/bdb/libdb_java/java_locked.h: mvdir storage/bdb/libdb_java/java_util.c: mvdir storage/bdb/libdb_java/java_util.h: mvdir storage/bdb/lock/Design: mvdir storage/bdb/lock/lock.c: mvdir storage/bdb/lock/lock_deadlock.c: mvdir storage/bdb/lock/lock_method.c: mvdir storage/bdb/lock/lock_region.c: mvdir storage/bdb/lock/lock_stat.c: mvdir storage/bdb/lock/lock_util.c: mvdir storage/bdb/log/log.c: mvdir storage/bdb/log/log_archive.c: mvdir storage/bdb/log/log_compare.c: mvdir storage/bdb/log/log_get.c: mvdir storage/bdb/log/log_method.c: mvdir storage/bdb/log/log_put.c: mvdir storage/bdb/mp/mp_alloc.c: mvdir storage/bdb/mp/mp_bh.c: mvdir storage/bdb/mp/mp_fget.c: mvdir storage/bdb/mp/mp_fopen.c: mvdir storage/bdb/mp/mp_fput.c: mvdir storage/bdb/mp/mp_fset.c: mvdir storage/bdb/mp/mp_method.c: mvdir storage/bdb/mp/mp_region.c: mvdir storage/bdb/mp/mp_register.c: mvdir storage/bdb/mp/mp_stat.c: mvdir storage/bdb/mp/mp_sync.c: mvdir storage/bdb/mp/mp_trickle.c: mvdir storage/bdb/mutex/README: mvdir storage/bdb/mutex/mut_fcntl.c: mvdir storage/bdb/mutex/mut_pthread.c: mvdir storage/bdb/mutex/mut_tas.c: mvdir storage/bdb/mutex/mut_win32.c: mvdir storage/bdb/mutex/mutex.c: mvdir storage/bdb/mutex/tm.c: mvdir storage/bdb/mutex/uts4_cc.s: mvdir storage/bdb/os/os_abs.c: mvdir storage/bdb/os/os_alloc.c: mvdir storage/bdb/os/os_clock.c: mvdir storage/bdb/os/os_config.c: mvdir storage/bdb/os/os_dir.c: mvdir storage/bdb/os/os_errno.c: mvdir storage/bdb/os/os_fid.c: mvdir storage/bdb/os/os_fsync.c: mvdir storage/bdb/os/os_handle.c: mvdir storage/bdb/os/os_id.c: mvdir storage/bdb/os/os_map.c: mvdir storage/bdb/os/os_method.c: mvdir storage/bdb/os/os_oflags.c: mvdir storage/bdb/os/os_open.c: mvdir storage/bdb/os/os_region.c: mvdir storage/bdb/os/os_rename.c: mvdir storage/bdb/os/os_root.c: mvdir storage/bdb/os/os_rpath.c: mvdir storage/bdb/os/os_rw.c: mvdir storage/bdb/os/os_seek.c: mvdir storage/bdb/os/os_sleep.c: mvdir storage/bdb/os/os_spin.c: mvdir storage/bdb/os/os_stat.c: mvdir storage/bdb/os/os_tmpdir.c: mvdir storage/bdb/os/os_unlink.c: mvdir storage/bdb/os_vxworks/os_vx_abs.c: mvdir storage/bdb/os_vxworks/os_vx_config.c: mvdir storage/bdb/os_vxworks/os_vx_map.c: mvdir storage/bdb/os_win32/os_abs.c: mvdir storage/bdb/os_win32/os_clock.c: mvdir storage/bdb/os_win32/os_config.c: mvdir storage/bdb/os_win32/os_dir.c: mvdir storage/bdb/os_win32/os_errno.c: mvdir storage/bdb/os_win32/os_fid.c: mvdir storage/bdb/os_win32/os_fsync.c: mvdir storage/bdb/os_win32/os_handle.c: mvdir storage/bdb/os_win32/os_map.c: mvdir storage/bdb/os_win32/os_open.c: mvdir storage/bdb/os_win32/os_rename.c: mvdir storage/bdb/os_win32/os_rw.c: mvdir storage/bdb/os_win32/os_seek.c: mvdir storage/bdb/os_win32/os_sleep.c: mvdir storage/bdb/os_win32/os_spin.c: mvdir storage/bdb/os_win32/os_stat.c: mvdir storage/bdb/os_win32/os_type.c: mvdir storage/bdb/perl/BerkeleyDB/BerkeleyDB.pm: mvdir storage/bdb/perl/BerkeleyDB/BerkeleyDB.pod.P: mvdir storage/bdb/perl/BerkeleyDB/BerkeleyDB.pod: mvdir storage/bdb/perl/BerkeleyDB/BerkeleyDB.xs: mvdir storage/bdb/perl/BerkeleyDB/Changes: mvdir storage/bdb/perl/BerkeleyDB/MANIFEST: mvdir storage/bdb/perl/BerkeleyDB/Makefile.PL: mvdir storage/bdb/perl/BerkeleyDB/README: mvdir storage/bdb/perl/BerkeleyDB/Todo: mvdir storage/bdb/perl/BerkeleyDB/config.in: mvdir storage/bdb/perl/BerkeleyDB/constants.h: mvdir storage/bdb/perl/BerkeleyDB/constants.xs: mvdir storage/bdb/perl/BerkeleyDB/dbinfo: mvdir storage/bdb/perl/BerkeleyDB/mkconsts: mvdir storage/bdb/perl/BerkeleyDB/mkpod: mvdir storage/bdb/perl/BerkeleyDB/BerkeleyDB/Btree.pm: mvdir storage/bdb/perl/BerkeleyDB/BerkeleyDB/Hash.pm: mvdir storage/bdb/perl/BerkeleyDB/hints/dec_osf.pl: mvdir storage/bdb/perl/BerkeleyDB/hints/irix_6_5.pl: mvdir storage/bdb/perl/BerkeleyDB/hints/solaris.pl: mvdir storage/bdb/perl/BerkeleyDB/patches/5.004_01: mvdir storage/bdb/perl/BerkeleyDB/patches/5.004_02: mvdir storage/bdb/perl/BerkeleyDB/patches/5.004_03: mvdir storage/bdb/perl/BerkeleyDB/patches/5.004_04: mvdir storage/bdb/perl/BerkeleyDB/patches/5.004_05: mvdir storage/bdb/perl/BerkeleyDB/patches/5.004: mvdir storage/bdb/perl/BerkeleyDB/patches/5.005_01: mvdir storage/bdb/perl/BerkeleyDB/patches/5.005_02: mvdir storage/bdb/perl/BerkeleyDB/patches/5.005_03: mvdir storage/bdb/perl/BerkeleyDB/patches/5.005: mvdir storage/bdb/perl/BerkeleyDB/patches/5.6.0: mvdir storage/bdb/perl/BerkeleyDB/ppport.h: mvdir storage/bdb/perl/BerkeleyDB/scan: mvdir storage/bdb/perl/BerkeleyDB/t/btree.t: mvdir storage/bdb/perl/BerkeleyDB/t/destroy.t: mvdir storage/bdb/perl/BerkeleyDB/t/env.t: mvdir storage/bdb/perl/BerkeleyDB/t/examples.t.T: mvdir storage/bdb/perl/BerkeleyDB/t/examples.t: mvdir storage/bdb/perl/BerkeleyDB/t/examples3.t.T: mvdir storage/bdb/perl/BerkeleyDB/t/examples3.t: mvdir storage/bdb/perl/BerkeleyDB/t/filter.t: mvdir storage/bdb/perl/BerkeleyDB/t/hash.t: mvdir storage/bdb/perl/BerkeleyDB/t/join.t: mvdir storage/bdb/perl/BerkeleyDB/t/mldbm.t: mvdir storage/bdb/perl/BerkeleyDB/t/queue.t: mvdir storage/bdb/perl/BerkeleyDB/t/recno.t: mvdir storage/bdb/perl/BerkeleyDB/t/strict.t: mvdir storage/bdb/perl/BerkeleyDB/t/subdb.t: mvdir storage/bdb/perl/BerkeleyDB/t/txn.t: mvdir storage/bdb/perl/BerkeleyDB/typemap: mvdir storage/bdb/perl/BerkeleyDB/t/unknown.t: mvdir storage/bdb/perl/BerkeleyDB/t/util.pm: mvdir storage/bdb/perl/DB_File/Changes: mvdir storage/bdb/perl/DB_File/DB_File.pm: mvdir storage/bdb/perl/DB_File/DB_File.xs: mvdir storage/bdb/perl/DB_File/DB_File_BS: mvdir storage/bdb/perl/DB_File/MANIFEST: mvdir storage/bdb/perl/DB_File/Makefile.PL: mvdir storage/bdb/perl/DB_File/README: mvdir storage/bdb/perl/DB_File/config.in: mvdir storage/bdb/perl/DB_File/dbinfo: mvdir storage/bdb/perl/DB_File/fallback.h: mvdir storage/bdb/perl/DB_File/fallback.xs: mvdir storage/bdb/perl/DB_File/hints/dynixptx.pl: mvdir storage/bdb/perl/DB_File/hints/sco.pl: mvdir storage/bdb/perl/DB_File/patches/5.004_01: mvdir storage/bdb/perl/DB_File/patches/5.004_02: mvdir storage/bdb/perl/DB_File/patches/5.004_03: mvdir storage/bdb/perl/DB_File/patches/5.004_04: mvdir storage/bdb/perl/DB_File/patches/5.004_05: mvdir storage/bdb/perl/DB_File/patches/5.004: mvdir storage/bdb/perl/DB_File/patches/5.005_01: mvdir storage/bdb/perl/DB_File/patches/5.005_02: mvdir storage/bdb/perl/DB_File/patches/5.005_03: mvdir storage/bdb/perl/DB_File/patches/5.005: mvdir storage/bdb/perl/DB_File/patches/5.6.0: mvdir storage/bdb/perl/DB_File/ppport.h: mvdir storage/bdb/perl/DB_File/t/db-btree.t: mvdir storage/bdb/perl/DB_File/t/db-hash.t: mvdir storage/bdb/perl/DB_File/t/db-recno.t: mvdir storage/bdb/perl/DB_File/typemap: mvdir storage/bdb/perl/DB_File/version.c: mvdir storage/bdb/qam/qam.c: mvdir storage/bdb/qam/qam.src: mvdir storage/bdb/qam/qam_conv.c: mvdir storage/bdb/qam/qam_files.c: mvdir storage/bdb/qam/qam_method.c: mvdir storage/bdb/qam/qam_open.c: mvdir storage/bdb/qam/qam_rec.c: mvdir storage/bdb/qam/qam_stat.c: mvdir storage/bdb/qam/qam_upgrade.c: mvdir storage/bdb/qam/qam_verify.c: mvdir storage/bdb/rep/rep_method.c: mvdir storage/bdb/rep/rep_record.c: mvdir storage/bdb/rep/rep_region.c: mvdir storage/bdb/rep/rep_util.c: mvdir storage/bdb/rpc_client/client.c: mvdir storage/bdb/rpc_client/gen_client_ret.c: mvdir storage/bdb/rpc_server/c/db_server_proc.c.in: mvdir storage/bdb/rpc_server/c/db_server_util.c: mvdir storage/bdb/rpc_server/clsrv.html: mvdir storage/bdb/rpc_server/cxx/db_server_cxxproc.cpp: mvdir storage/bdb/rpc_server/cxx/db_server_cxxutil.cpp: mvdir storage/bdb/rpc_server/java/DbDispatcher.java: mvdir storage/bdb/rpc_server/java/DbServer.java: mvdir storage/bdb/rpc_server/java/FreeList.java: mvdir storage/bdb/rpc_server/java/LocalIterator.java: mvdir storage/bdb/rpc_server/java/README: mvdir storage/bdb/rpc_server/java/RpcDb.java: mvdir storage/bdb/rpc_server/java/RpcDbEnv.java: mvdir storage/bdb/rpc_server/java/RpcDbTxn.java: mvdir storage/bdb/rpc_server/java/RpcDbc.java: mvdir storage/bdb/rpc_server/java/Timer.java: mvdir storage/bdb/rpc_server/java/jrpcgen.jar: mvdir storage/bdb/rpc_server/java/oncrpc.jar: mvdir storage/bdb/rpc_server/rpc.src: mvdir storage/bdb/rpc_server/java/gen/DbServerStub.java: mvdir storage/bdb/rpc_server/java/gen/__db_associate_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_associate_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_bt_maxkey_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_bt_maxkey_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_bt_minkey_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_bt_minkey_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_close_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_close_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_create_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_create_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_cursor_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_cursor_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_del_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_del_reply.java: mvdir storage/bdb/rpc_server/java/s_jrpcgen: mvdir storage/bdb/rpc_server/java/gen/__db_encrypt_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_encrypt_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_extentsize_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_extentsize_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_flags_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_flags_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_get_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_get_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_h_ffactor_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_h_ffactor_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_h_nelem_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_h_nelem_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_join_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_join_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_key_range_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_key_range_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_lorder_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_lorder_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_open_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_open_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_pagesize_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_pagesize_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_pget_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_pget_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_put_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_put_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_re_delim_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_re_delim_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_re_len_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_re_len_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_re_pad_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_re_pad_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_remove_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_remove_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_rename_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_rename_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_stat_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_stat_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_sync_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_sync_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_truncate_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_truncate_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_close_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_close_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_count_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_count_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_del_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_del_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_dup_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_dup_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_get_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_get_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_pget_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_pget_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_put_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_put_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_cachesize_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_cachesize_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_close_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_close_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_create_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_create_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_dbremove_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_dbremove_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_dbrename_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_dbrename_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_encrypt_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_encrypt_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_flags_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_flags_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_open_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_open_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_remove_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_remove_reply.java: mvdir storage/bdb/rpc_server/java/gen/__txn_abort_msg.java: mvdir storage/bdb/rpc_server/java/gen/__txn_abort_reply.java: mvdir storage/bdb/rpc_server/java/gen/__txn_begin_msg.java: mvdir storage/bdb/rpc_server/java/gen/__txn_begin_reply.java: mvdir storage/bdb/rpc_server/java/gen/__txn_commit_msg.java: mvdir storage/bdb/rpc_server/java/gen/__txn_commit_reply.java: mvdir storage/bdb/rpc_server/java/gen/__txn_discard_msg.java: mvdir storage/bdb/rpc_server/java/gen/__txn_discard_reply.java: mvdir storage/bdb/rpc_server/java/gen/__txn_prepare_msg.java: mvdir storage/bdb/rpc_server/java/gen/__txn_prepare_reply.java: mvdir storage/bdb/rpc_server/java/gen/__txn_recover_msg.java: mvdir storage/bdb/rpc_server/java/gen/__txn_recover_reply.java: mvdir storage/bdb/rpc_server/java/gen/db_server.java: mvdir storage/bdb/tcl/tcl_compat.c: mvdir storage/bdb/tcl/tcl_db.c: mvdir storage/bdb/tcl/tcl_db_pkg.c: mvdir storage/bdb/tcl/docs/db.html: mvdir storage/bdb/tcl/docs/env.html: mvdir storage/bdb/tcl/docs/historic.html: mvdir storage/bdb/tcl/docs/index.html: mvdir storage/bdb/tcl/docs/library.html: mvdir storage/bdb/tcl/docs/lock.html: mvdir storage/bdb/tcl/docs/log.html: mvdir storage/bdb/tcl/docs/mpool.html: mvdir storage/bdb/tcl/docs/rep.html: mvdir storage/bdb/tcl/docs/test.html: mvdir storage/bdb/tcl/docs/txn.html: mvdir storage/bdb/tcl/tcl_dbcursor.c: mvdir storage/bdb/tcl/tcl_env.c: mvdir storage/bdb/tcl/tcl_internal.c: mvdir storage/bdb/tcl/tcl_lock.c: mvdir storage/bdb/tcl/tcl_log.c: mvdir storage/bdb/tcl/tcl_mp.c: mvdir storage/bdb/tcl/tcl_rep.c: mvdir storage/bdb/tcl/tcl_txn.c: mvdir storage/bdb/tcl/tcl_util.c: mvdir storage/bdb/test/archive.tcl: mvdir storage/bdb/test/bigfile001.tcl: mvdir storage/bdb/test/bigfile002.tcl: mvdir storage/bdb/test/byteorder.tcl: mvdir storage/bdb/test/conscript.tcl: mvdir storage/bdb/test/dbm.tcl: mvdir storage/bdb/test/dbscript.tcl: mvdir storage/bdb/test/ddoyscript.tcl: mvdir storage/bdb/test/ddscript.tcl: mvdir storage/bdb/test/dead001.tcl: mvdir storage/bdb/test/dead002.tcl: mvdir storage/bdb/test/dead003.tcl: mvdir storage/bdb/test/dead004.tcl: mvdir storage/bdb/test/dead005.tcl: mvdir storage/bdb/test/dead006.tcl: mvdir storage/bdb/test/dead007.tcl: mvdir storage/bdb/test/env001.tcl: mvdir storage/bdb/test/env002.tcl: mvdir storage/bdb/test/env003.tcl: mvdir storage/bdb/test/env004.tcl: mvdir storage/bdb/test/env005.tcl: mvdir storage/bdb/test/env006.tcl: mvdir storage/bdb/test/env007.tcl: mvdir storage/bdb/test/env008.tcl: mvdir storage/bdb/test/env009.tcl: mvdir storage/bdb/test/env010.tcl: mvdir storage/bdb/test/env011.tcl: mvdir storage/bdb/test/hsearch.tcl: mvdir storage/bdb/test/join.tcl: mvdir storage/bdb/test/lock001.tcl: mvdir storage/bdb/test/lock002.tcl: mvdir storage/bdb/test/lock003.tcl: mvdir storage/bdb/test/lock004.tcl: mvdir storage/bdb/test/lock005.tcl: mvdir storage/bdb/test/lockscript.tcl: mvdir storage/bdb/test/log001.tcl: mvdir storage/bdb/test/log002.tcl: mvdir storage/bdb/test/log003.tcl: mvdir storage/bdb/test/log004.tcl: mvdir storage/bdb/test/log005.tcl: mvdir storage/bdb/test/logtrack.tcl: mvdir storage/bdb/test/mdbscript.tcl: mvdir storage/bdb/test/memp001.tcl: mvdir storage/bdb/test/memp002.tcl: mvdir storage/bdb/test/memp003.tcl: mvdir storage/bdb/test/mpoolscript.tcl: mvdir storage/bdb/test/mutex001.tcl: mvdir storage/bdb/test/mutex002.tcl: mvdir storage/bdb/test/mutex003.tcl: mvdir storage/bdb/test/mutexscript.tcl: mvdir storage/bdb/test/ndbm.tcl: mvdir storage/bdb/test/parallel.tcl: mvdir storage/bdb/test/recd001.tcl: mvdir storage/bdb/test/recd002.tcl: mvdir storage/bdb/test/recd003.tcl: mvdir storage/bdb/test/recd004.tcl: mvdir storage/bdb/test/recd005.tcl: mvdir storage/bdb/test/recd006.tcl: mvdir storage/bdb/test/recd007.tcl: mvdir storage/bdb/test/recd008.tcl: mvdir storage/bdb/test/recd009.tcl: mvdir storage/bdb/test/recd010.tcl: mvdir storage/bdb/test/recd011.tcl: mvdir storage/bdb/test/recd012.tcl: mvdir storage/bdb/test/recd013.tcl: mvdir storage/bdb/test/recd014.tcl: mvdir storage/bdb/test/recd015.tcl: mvdir storage/bdb/test/recd016.tcl: mvdir storage/bdb/test/recd017.tcl: mvdir storage/bdb/test/recd018.tcl: mvdir storage/bdb/test/recd019.tcl: mvdir storage/bdb/test/recd020.tcl: mvdir storage/bdb/test/recd15scr.tcl: mvdir storage/bdb/test/recdscript.tcl: mvdir storage/bdb/test/rep001.tcl: mvdir storage/bdb/test/rep002.tcl: mvdir storage/bdb/test/rep003.tcl: mvdir storage/bdb/test/rep004.tcl: mvdir storage/bdb/test/rep005.tcl: mvdir storage/bdb/test/reputils.tcl: mvdir storage/bdb/test/rpc001.tcl: mvdir storage/bdb/test/rpc002.tcl: mvdir storage/bdb/test/rpc003.tcl: mvdir storage/bdb/test/rpc004.tcl: mvdir storage/bdb/test/rpc005.tcl: mvdir storage/bdb/test/rsrc001.tcl: mvdir storage/bdb/test/rsrc002.tcl: mvdir storage/bdb/test/rsrc003.tcl: mvdir storage/bdb/test/rsrc004.tcl: mvdir storage/bdb/test/sdb001.tcl: mvdir storage/bdb/test/sdb002.tcl: mvdir storage/bdb/test/sdb003.tcl: mvdir storage/bdb/test/sdb004.tcl: mvdir storage/bdb/test/sdb005.tcl: mvdir storage/bdb/test/sdb006.tcl: mvdir storage/bdb/test/sdb007.tcl: mvdir storage/bdb/test/sdb008.tcl: mvdir storage/bdb/test/sdb009.tcl: mvdir storage/bdb/test/sdb010.tcl: mvdir storage/bdb/test/sdb011.tcl: mvdir storage/bdb/test/sdb012.tcl: mvdir storage/bdb/test/sdbscript.tcl: mvdir storage/bdb/test/sdbtest001.tcl: mvdir storage/bdb/test/sdbtest002.tcl: mvdir storage/bdb/test/sdbutils.tcl: mvdir storage/bdb/test/sec001.tcl: mvdir storage/bdb/test/sec002.tcl: mvdir storage/bdb/test/shelltest.tcl: mvdir storage/bdb/test/si001.tcl: mvdir storage/bdb/test/si002.tcl: mvdir storage/bdb/test/si003.tcl: mvdir storage/bdb/test/si004.tcl: mvdir storage/bdb/test/si005.tcl: mvdir storage/bdb/test/si006.tcl: mvdir storage/bdb/test/sindex.tcl: mvdir storage/bdb/test/sysscript.tcl: mvdir storage/bdb/test/test.tcl: mvdir storage/bdb/test/test001.tcl: mvdir storage/bdb/test/test002.tcl: mvdir storage/bdb/test/test003.tcl: mvdir storage/bdb/test/test004.tcl: mvdir storage/bdb/test/test005.tcl: mvdir storage/bdb/test/test006.tcl: mvdir storage/bdb/test/test007.tcl: mvdir storage/bdb/test/test008.tcl: mvdir storage/bdb/test/test009.tcl: mvdir storage/bdb/test/test010.tcl: mvdir storage/bdb/test/test011.tcl: mvdir storage/bdb/test/test012.tcl: mvdir storage/bdb/test/test013.tcl: mvdir storage/bdb/test/test014.tcl: mvdir storage/bdb/test/test015.tcl: mvdir storage/bdb/test/test016.tcl: mvdir storage/bdb/test/test017.tcl: mvdir storage/bdb/test/test018.tcl: mvdir storage/bdb/test/test019.tcl: mvdir storage/bdb/test/test020.tcl: mvdir storage/bdb/test/test021.tcl: mvdir storage/bdb/test/test022.tcl: mvdir storage/bdb/test/test023.tcl: mvdir storage/bdb/test/test024.tcl: mvdir storage/bdb/test/test025.tcl: mvdir storage/bdb/test/test026.tcl: mvdir storage/bdb/test/test027.tcl: mvdir storage/bdb/test/test028.tcl: mvdir storage/bdb/test/test029.tcl: mvdir storage/bdb/test/test030.tcl: mvdir storage/bdb/test/test031.tcl: mvdir storage/bdb/test/test032.tcl: mvdir storage/bdb/test/test033.tcl: mvdir storage/bdb/test/test034.tcl: mvdir storage/bdb/test/test035.tcl: mvdir storage/bdb/test/test036.tcl: mvdir storage/bdb/test/test037.tcl: mvdir storage/bdb/test/test038.tcl: mvdir storage/bdb/test/test039.tcl: mvdir storage/bdb/test/test040.tcl: mvdir storage/bdb/test/test041.tcl: mvdir storage/bdb/test/test042.tcl: mvdir storage/bdb/test/test043.tcl: mvdir storage/bdb/test/test044.tcl: mvdir storage/bdb/test/test045.tcl: mvdir storage/bdb/test/test046.tcl: mvdir storage/bdb/test/test047.tcl: mvdir storage/bdb/test/test048.tcl: mvdir storage/bdb/test/test049.tcl: mvdir storage/bdb/test/test050.tcl: mvdir storage/bdb/test/test051.tcl: mvdir storage/bdb/test/test052.tcl: mvdir storage/bdb/test/test053.tcl: mvdir storage/bdb/test/test054.tcl: mvdir storage/bdb/test/test055.tcl: mvdir storage/bdb/test/test056.tcl: mvdir storage/bdb/test/test057.tcl: mvdir storage/bdb/test/test058.tcl: mvdir storage/bdb/test/test059.tcl: mvdir storage/bdb/test/test060.tcl: mvdir storage/bdb/test/test061.tcl: mvdir storage/bdb/test/test062.tcl: mvdir storage/bdb/test/test063.tcl: mvdir storage/bdb/test/test064.tcl: mvdir storage/bdb/test/test065.tcl: mvdir storage/bdb/test/test066.tcl: mvdir storage/bdb/test/test067.tcl: mvdir storage/bdb/test/test068.tcl: mvdir storage/bdb/test/test069.tcl: mvdir storage/bdb/test/test070.tcl: mvdir storage/bdb/test/test071.tcl: mvdir storage/bdb/test/test072.tcl: mvdir storage/bdb/test/test073.tcl: mvdir storage/bdb/test/test074.tcl: mvdir storage/bdb/test/test075.tcl: mvdir storage/bdb/test/test076.tcl: mvdir storage/bdb/test/test077.tcl: mvdir storage/bdb/test/test078.tcl: mvdir storage/bdb/test/test079.tcl: mvdir storage/bdb/test/test080.tcl: mvdir storage/bdb/test/test081.tcl: mvdir storage/bdb/test/test082.tcl: mvdir storage/bdb/test/test083.tcl: mvdir storage/bdb/test/test084.tcl: mvdir storage/bdb/test/test085.tcl: mvdir storage/bdb/test/test086.tcl: mvdir storage/bdb/test/test087.tcl: mvdir storage/bdb/test/test088.tcl: mvdir storage/bdb/test/test089.tcl: mvdir storage/bdb/test/test090.tcl: mvdir storage/bdb/test/test091.tcl: mvdir storage/bdb/test/test092.tcl: mvdir storage/bdb/test/test093.tcl: mvdir storage/bdb/test/test094.tcl: mvdir storage/bdb/test/test095.tcl: mvdir storage/bdb/test/test096.tcl: mvdir storage/bdb/test/test097.tcl: mvdir storage/bdb/test/test098.tcl: mvdir storage/bdb/test/test099.tcl: mvdir storage/bdb/test/test100.tcl: mvdir storage/bdb/test/test101.tcl: mvdir storage/bdb/test/testparams.tcl: mvdir storage/bdb/test/testutils.tcl: mvdir storage/bdb/test/txn001.tcl: mvdir storage/bdb/test/txn002.tcl: mvdir storage/bdb/test/txn003.tcl: mvdir storage/bdb/test/txn004.tcl: mvdir storage/bdb/test/txn005.tcl: mvdir storage/bdb/test/txn006.tcl: mvdir storage/bdb/test/txn007.tcl: mvdir storage/bdb/test/txn008.tcl: mvdir storage/bdb/test/txn009.tcl: mvdir storage/bdb/test/txnscript.tcl: mvdir storage/bdb/test/update.tcl: mvdir storage/bdb/test/scr001/chk.code: mvdir storage/bdb/test/scr002/chk.def: mvdir storage/bdb/test/scr003/chk.define: mvdir storage/bdb/test/scr004/chk.javafiles: mvdir storage/bdb/test/scr005/chk.nl: mvdir storage/bdb/test/scr006/chk.offt: mvdir storage/bdb/test/scr007/chk.proto: mvdir storage/bdb/test/scr008/chk.pubdef: mvdir storage/bdb/test/scr009/chk.srcfiles: mvdir storage/bdb/test/scr010/chk.str: mvdir storage/bdb/test/scr010/spell.ok: mvdir storage/bdb/test/scr011/chk.tags: mvdir storage/bdb/test/scr012/chk.vx_code: mvdir storage/bdb/test/scr013/chk.stats: mvdir storage/bdb/test/scr014/chk.err: mvdir storage/bdb/test/scr015/README: mvdir storage/bdb/test/scr015/TestConstruct01.cpp: mvdir storage/bdb/test/scr015/TestConstruct01.testerr: mvdir storage/bdb/test/scr015/TestConstruct01.testout: mvdir storage/bdb/test/scr015/TestExceptInclude.cpp: mvdir storage/bdb/test/scr015/TestGetSetMethods.cpp: mvdir storage/bdb/test/scr015/TestKeyRange.cpp: mvdir storage/bdb/test/scr015/TestKeyRange.testin: mvdir storage/bdb/test/scr015/TestKeyRange.testout: mvdir storage/bdb/test/upgrade.tcl: mvdir storage/bdb/test/wordlist: mvdir storage/bdb/test/wrap.tcl: mvdir storage/bdb/test/scr015/TestLogc.cpp: mvdir storage/bdb/test/scr015/TestLogc.testout: mvdir storage/bdb/test/scr015/TestSimpleAccess.cpp: mvdir storage/bdb/test/scr015/TestSimpleAccess.testout: mvdir storage/bdb/test/scr015/TestTruncate.cpp: mvdir storage/bdb/test/scr015/TestTruncate.testout: mvdir storage/bdb/test/scr015/chk.cxxtests: mvdir storage/bdb/test/scr015/ignore: mvdir storage/bdb/test/scr015/testall: mvdir storage/bdb/test/scr015/testone: mvdir storage/bdb/test/scr016/CallbackTest.java: mvdir storage/bdb/test/scr016/CallbackTest.testout: mvdir storage/bdb/test/scr016/README: mvdir storage/bdb/test/scr016/TestAppendRecno.java: mvdir storage/bdb/test/scr016/TestAppendRecno.testout: mvdir storage/bdb/test/scr016/TestAssociate.java: mvdir storage/bdb/test/scr016/TestAssociate.testout: mvdir storage/bdb/test/scr016/TestClosedDb.java: mvdir storage/bdb/test/scr016/TestClosedDb.testout: mvdir storage/bdb/test/scr016/TestConstruct01.java: mvdir storage/bdb/test/scr016/TestConstruct01.testerr: mvdir storage/bdb/test/scr016/TestConstruct01.testout: mvdir storage/bdb/test/scr016/TestConstruct02.java: mvdir storage/bdb/test/scr016/TestConstruct02.testout: mvdir storage/bdb/test/scr016/TestDbtFlags.java: mvdir storage/bdb/test/scr016/TestDbtFlags.testerr: mvdir storage/bdb/test/scr016/TestDbtFlags.testout: mvdir storage/bdb/test/scr016/TestGetSetMethods.java: mvdir storage/bdb/test/scr016/TestKeyRange.java: mvdir storage/bdb/test/scr016/TestKeyRange.testout: mvdir storage/bdb/test/scr016/TestLockVec.java: mvdir storage/bdb/test/scr016/TestLockVec.testout: mvdir storage/bdb/test/scr016/TestLogc.java: mvdir storage/bdb/test/scr016/TestLogc.testout: mvdir storage/bdb/test/scr016/TestOpenEmpty.java: mvdir storage/bdb/test/scr016/TestOpenEmpty.testerr: mvdir storage/bdb/test/scr016/TestReplication.java: mvdir storage/bdb/test/scr016/TestRpcServer.java: mvdir storage/bdb/test/scr016/TestSameDbt.java: mvdir storage/bdb/test/scr016/TestSameDbt.testout: mvdir storage/bdb/test/scr016/TestSimpleAccess.java: mvdir storage/bdb/test/scr016/TestSimpleAccess.testout: mvdir storage/bdb/test/scr016/TestStat.java: mvdir storage/bdb/test/scr016/TestStat.testout: mvdir storage/bdb/test/scr016/TestTruncate.java: mvdir storage/bdb/test/scr016/TestTruncate.testout: mvdir storage/bdb/test/scr016/TestUtil.java: mvdir storage/bdb/test/scr016/TestXAServlet.java: mvdir storage/bdb/test/scr016/chk.javatests: mvdir storage/bdb/test/scr016/ignore: mvdir storage/bdb/test/scr016/testall: mvdir storage/bdb/test/scr016/testone: mvdir storage/bdb/test/scr017/O.BH: mvdir storage/bdb/test/scr017/O.R: mvdir storage/bdb/test/scr017/chk.db185: mvdir storage/bdb/test/scr017/t.c: mvdir storage/bdb/test/scr018/chk.comma: mvdir storage/bdb/test/scr018/t.c: mvdir storage/bdb/test/scr019/chk.include: mvdir storage/bdb/test/scr020/chk.inc: mvdir storage/bdb/test/scr021/chk.flags: mvdir storage/bdb/test/scr022/chk.rr: mvdir storage/bdb/txn/txn.c: mvdir storage/bdb/txn/txn.src: mvdir storage/bdb/txn/txn_method.c: mvdir storage/bdb/txn/txn_rec.c: mvdir storage/bdb/txn/txn_recover.c: mvdir storage/bdb/txn/txn_region.c: mvdir storage/bdb/txn/txn_stat.c: mvdir storage/bdb/txn/txn_util.c: mvdir storage/bdb/xa/xa.c: mvdir storage/bdb/xa/xa_db.c: mvdir storage/bdb/xa/xa_map.c: mvdir
Diffstat (limited to 'ndb/tools')
-rw-r--r--ndb/tools/Makefile.am156
-rwxr-xr-xndb/tools/clean-links.sh21
-rw-r--r--ndb/tools/delete_all.cpp193
-rw-r--r--ndb/tools/desc.cpp119
-rw-r--r--ndb/tools/drop_index.cpp95
-rw-r--r--ndb/tools/drop_tab.cpp96
-rw-r--r--ndb/tools/listTables.cpp232
-rw-r--r--ndb/tools/make-errors.pl181
-rwxr-xr-xndb/tools/make-links.sh20
-rw-r--r--ndb/tools/ndb_test_platform.cpp95
-rw-r--r--ndb/tools/ndbsql.cpp957
-rw-r--r--ndb/tools/old_dirs/copy_tab/Makefile9
-rw-r--r--ndb/tools/old_dirs/cpcc/Makefile12
-rw-r--r--ndb/tools/old_dirs/create_index/Makefile11
-rw-r--r--ndb/tools/old_dirs/delete_all/Makefile9
-rw-r--r--ndb/tools/old_dirs/desc/Makefile9
-rw-r--r--ndb/tools/old_dirs/drop_index/Makefile11
-rw-r--r--ndb/tools/old_dirs/drop_tab/Makefile11
-rw-r--r--ndb/tools/old_dirs/list_tables/Makefile9
-rw-r--r--ndb/tools/old_dirs/ndbnet/Makefile.PL158
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net.pm42
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Base.pm12
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Client.pm252
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Command.pm641
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Config.pm235
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Database.pm321
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Env.pm94
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Node.pm747
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeApi.pm84
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeDb.pm116
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeMgmt.pm318
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Server.pm149
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerINET.pm116
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerUNIX.pm54
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Run.pm40
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Base.pm12
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Database.pm89
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Env.pm84
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Node.pm114
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Util.pm37
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Base.pm113
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Dir.pm170
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Event.pm103
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Util/File.pm163
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Util/IO.pm213
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Lock.pm136
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Log.pm367
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Socket.pm158
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketINET.pm86
-rw-r--r--ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketUNIX.pm76
-rw-r--r--ndb/tools/old_dirs/ndbnet/ndbnet.pl339
-rw-r--r--ndb/tools/old_dirs/ndbnet/ndbnetd.pl400
-rw-r--r--ndb/tools/old_dirs/ndbnet/ndbrun33
-rw-r--r--ndb/tools/old_dirs/ndbsql/Makefile44
-rw-r--r--ndb/tools/old_dirs/select_all/Makefile9
-rw-r--r--ndb/tools/old_dirs/select_count/Makefile9
-rw-r--r--ndb/tools/old_dirs/src/counterviewer/CounterViewer.java725
-rw-r--r--ndb/tools/restore/Restore.cpp947
-rw-r--r--ndb/tools/restore/Restore.hpp379
-rw-r--r--ndb/tools/restore/consumer.cpp115
-rw-r--r--ndb/tools/restore/consumer.hpp36
-rw-r--r--ndb/tools/restore/consumer_printer.cpp55
-rw-r--r--ndb/tools/restore/consumer_printer.hpp50
-rw-r--r--ndb/tools/restore/consumer_restore.cpp674
-rw-r--r--ndb/tools/restore/consumer_restore.hpp93
-rw-r--r--ndb/tools/restore/consumer_restorem.cpp653
-rw-r--r--ndb/tools/restore/restore_main.cpp411
-rwxr-xr-xndb/tools/rgrep194
-rw-r--r--ndb/tools/select_all.cpp358
-rw-r--r--ndb/tools/select_count.cpp212
-rw-r--r--ndb/tools/waiter.cpp314
71 files changed, 0 insertions, 13596 deletions
diff --git a/ndb/tools/Makefile.am b/ndb/tools/Makefile.am
deleted file mode 100644
index c350fb0a141..00000000000
--- a/ndb/tools/Makefile.am
+++ /dev/null
@@ -1,156 +0,0 @@
-
-ndbtools_PROGRAMS = \
- ndb_test_platform \
- ndb_waiter \
- ndb_drop_table \
- ndb_delete_all \
- ndb_desc \
- ndb_drop_index \
- ndb_show_tables \
- ndb_select_all \
- ndb_select_count \
- ndb_restore
-
-tools_common_sources = ../test/src/NDBT_ReturnCodes.cpp \
- ../test/src/NDBT_Table.cpp \
- ../test/src/NDBT_Output.cpp
-
-ndb_test_platform_SOURCES = ndb_test_platform.cpp
-ndb_waiter_SOURCES = waiter.cpp $(tools_common_sources)
-ndb_delete_all_SOURCES = delete_all.cpp $(tools_common_sources)
-ndb_desc_SOURCES = desc.cpp $(tools_common_sources)
-ndb_drop_index_SOURCES = drop_index.cpp $(tools_common_sources)
-ndb_drop_table_SOURCES = drop_tab.cpp $(tools_common_sources)
-ndb_show_tables_SOURCES = listTables.cpp $(tools_common_sources)
-ndb_select_all_SOURCES = select_all.cpp \
- ../test/src/NDBT_ResultRow.cpp \
- $(tools_common_sources)
-ndb_select_count_SOURCES = select_count.cpp $(tools_common_sources)
-ndb_restore_SOURCES = restore/restore_main.cpp \
- restore/consumer.cpp \
- restore/consumer_restore.cpp \
- restore/consumer_printer.cpp \
- restore/Restore.cpp
-
-include $(top_srcdir)/ndb/config/common.mk.am
-include $(top_srcdir)/ndb/config/type_ndbapitools.mk.am
-
-ndb_test_platform_LDFLAGS = @ndb_bin_am_ldflags@
-ndb_waiter_LDFLAGS = @ndb_bin_am_ldflags@
-ndb_drop_table_LDFLAGS = @ndb_bin_am_ldflags@
-ndb_delete_all_LDFLAGS = @ndb_bin_am_ldflags@
-ndb_desc_LDFLAGS = @ndb_bin_am_ldflags@
-ndb_drop_index_LDFLAGS = @ndb_bin_am_ldflags@
-ndb_show_tables_LDFLAGS = @ndb_bin_am_ldflags@
-ndb_select_all_LDFLAGS = @ndb_bin_am_ldflags@
-ndb_select_count_LDFLAGS = @ndb_bin_am_ldflags@
-ndb_restore_LDFLAGS = @ndb_bin_am_ldflags@
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
-
-windoze-dsp: \
- ndb_waiter.dsp \
- ndb_drop_table.dsp \
- ndb_delete_all.dsp \
- ndb_desc.dsp \
- ndb_drop_index.dsp \
- ndb_show_tables.dsp \
- ndb_select_all.dsp \
- ndb_select_count.dsp
-
-ndb_waiter.dsp: Makefile \
- $(top_srcdir)/ndb/config/win-prg.am \
- $(top_srcdir)/ndb/config/win-name \
- $(top_srcdir)/ndb/config/win-includes \
- $(top_srcdir)/ndb/config/win-sources \
- $(top_srcdir)/ndb/config/win-libraries
- cat $(top_srcdir)/ndb/config/win-prg.am > $@
- @$(top_srcdir)/ndb/config/win-name $@ ndb_waiter
- @$(top_srcdir)/ndb/config/win-includes $@ $(INCLUDES)
- @$(top_srcdir)/ndb/config/win-sources $@ $(ndb_waiter_SOURCES)
- @$(top_srcdir)/ndb/config/win-libraries $@ LINK $(LDADD)
-
-ndb_drop_table.dsp: Makefile \
- $(top_srcdir)/ndb/config/win-prg.am \
- $(top_srcdir)/ndb/config/win-name \
- $(top_srcdir)/ndb/config/win-includes \
- $(top_srcdir)/ndb/config/win-sources \
- $(top_srcdir)/ndb/config/win-libraries
- cat $(top_srcdir)/ndb/config/win-prg.am > $@
- @$(top_srcdir)/ndb/config/win-name $@ ndb_drop_table
- @$(top_srcdir)/ndb/config/win-includes $@ $(INCLUDES)
- @$(top_srcdir)/ndb/config/win-sources $@ $(ndb_drop_table_SOURCES)
- @$(top_srcdir)/ndb/config/win-libraries $@ LINK $(LDADD)
-
-ndb_delete_all.dsp: Makefile \
- $(top_srcdir)/ndb/config/win-prg.am \
- $(top_srcdir)/ndb/config/win-name \
- $(top_srcdir)/ndb/config/win-includes \
- $(top_srcdir)/ndb/config/win-sources \
- $(top_srcdir)/ndb/config/win-libraries
- cat $(top_srcdir)/ndb/config/win-prg.am > $@
- @$(top_srcdir)/ndb/config/win-name $@ ndb_delete_all
- @$(top_srcdir)/ndb/config/win-includes $@ $(INCLUDES)
- @$(top_srcdir)/ndb/config/win-sources $@ $(ndb_delete_all_SOURCES)
- @$(top_srcdir)/ndb/config/win-libraries $@ LINK $(LDADD)
-
-ndb_desc.dsp: Makefile \
- $(top_srcdir)/ndb/config/win-prg.am \
- $(top_srcdir)/ndb/config/win-name \
- $(top_srcdir)/ndb/config/win-includes \
- $(top_srcdir)/ndb/config/win-sources \
- $(top_srcdir)/ndb/config/win-libraries
- cat $(top_srcdir)/ndb/config/win-prg.am > $@
- @$(top_srcdir)/ndb/config/win-name $@ ndb_desc
- @$(top_srcdir)/ndb/config/win-includes $@ $(INCLUDES)
- @$(top_srcdir)/ndb/config/win-sources $@ $(ndb_desc_SOURCES)
- @$(top_srcdir)/ndb/config/win-libraries $@ LINK $(LDADD)
-
-ndb_drop_index.dsp: Makefile \
- $(top_srcdir)/ndb/config/win-prg.am \
- $(top_srcdir)/ndb/config/win-name \
- $(top_srcdir)/ndb/config/win-includes \
- $(top_srcdir)/ndb/config/win-sources \
- $(top_srcdir)/ndb/config/win-libraries
- cat $(top_srcdir)/ndb/config/win-prg.am > $@
- @$(top_srcdir)/ndb/config/win-name $@ ndb_drop_index
- @$(top_srcdir)/ndb/config/win-includes $@ $(INCLUDES)
- @$(top_srcdir)/ndb/config/win-sources $@ $(ndb_drop_index_SOURCES)
- @$(top_srcdir)/ndb/config/win-libraries $@ LINK $(LDADD)
-
-ndb_show_tables.dsp: Makefile \
- $(top_srcdir)/ndb/config/win-prg.am \
- $(top_srcdir)/ndb/config/win-name \
- $(top_srcdir)/ndb/config/win-includes \
- $(top_srcdir)/ndb/config/win-sources \
- $(top_srcdir)/ndb/config/win-libraries
- cat $(top_srcdir)/ndb/config/win-prg.am > $@
- @$(top_srcdir)/ndb/config/win-name $@ ndb_show_tables
- @$(top_srcdir)/ndb/config/win-includes $@ $(INCLUDES)
- @$(top_srcdir)/ndb/config/win-sources $@ $(ndb_show_tables_SOURCES)
- @$(top_srcdir)/ndb/config/win-libraries $@ LINK $(LDADD)
-
-ndb_select_all.dsp: Makefile \
- $(top_srcdir)/ndb/config/win-prg.am \
- $(top_srcdir)/ndb/config/win-name \
- $(top_srcdir)/ndb/config/win-includes \
- $(top_srcdir)/ndb/config/win-sources \
- $(top_srcdir)/ndb/config/win-libraries
- cat $(top_srcdir)/ndb/config/win-prg.am > $@
- @$(top_srcdir)/ndb/config/win-name $@ ndb_select_all
- @$(top_srcdir)/ndb/config/win-includes $@ $(INCLUDES)
- @$(top_srcdir)/ndb/config/win-sources $@ $(ndb_select_all_SOURCES)
- @$(top_srcdir)/ndb/config/win-libraries $@ LINK $(LDADD)
-
-ndb_select_count.dsp: Makefile \
- $(top_srcdir)/ndb/config/win-prg.am \
- $(top_srcdir)/ndb/config/win-name \
- $(top_srcdir)/ndb/config/win-includes \
- $(top_srcdir)/ndb/config/win-sources \
- $(top_srcdir)/ndb/config/win-libraries
- cat $(top_srcdir)/ndb/config/win-prg.am > $@
- @$(top_srcdir)/ndb/config/win-name $@ ndb_select_count
- @$(top_srcdir)/ndb/config/win-includes $@ $(INCLUDES)
- @$(top_srcdir)/ndb/config/win-sources $@ $(ndb_select_count_SOURCES)
- @$(top_srcdir)/ndb/config/win-libraries $@ LINK $(LDADD)
diff --git a/ndb/tools/clean-links.sh b/ndb/tools/clean-links.sh
deleted file mode 100755
index 01820f30616..00000000000
--- a/ndb/tools/clean-links.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#! /bin/sh
-
-# 1 - Dir
-# 2 - Link dst
-
-if [ $# -lt 1 ]
-then
- exit 0
-fi
-
-files=`find $1 -type l -maxdepth 1`
-res=$?
-if [ $res -ne 0 ] || [ "$files" = "" ]
-then
- exit 0
-fi
-
-rm -f $files
-
-
-
diff --git a/ndb/tools/delete_all.cpp b/ndb/tools/delete_all.cpp
deleted file mode 100644
index 2c395a67900..00000000000
--- a/ndb/tools/delete_all.cpp
+++ /dev/null
@@ -1,193 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-#include <ndb_global.h>
-#include <ndb_opts.h>
-
-#include <NdbOut.hpp>
-#include <NdbApi.hpp>
-#include <NdbSleep.h>
-#include <NDBT.hpp>
-
-static int clear_table(Ndb* pNdb, const NdbDictionary::Table* pTab, int parallelism=240);
-
-NDB_STD_OPTS_VARS;
-
-static const char* _dbname = "TEST_DB";
-static struct my_option my_long_options[] =
-{
- NDB_STD_OPTS("ndb_desc"),
- { "database", 'd', "Name of database table is in",
- (gptr*) &_dbname, (gptr*) &_dbname, 0,
- GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-static void usage()
-{
- char desc[] =
- "tabname\n"\
- "This program will delete all records in the specified table using scan delete.\n";
- ndb_std_print_version();
- my_print_help(my_long_options);
- my_print_variables(my_long_options);
-}
-
-int main(int argc, char** argv){
- NDB_INIT(argv[0]);
- const char *load_default_groups[]= { "mysql_cluster",0 };
- load_defaults("my",load_default_groups,&argc,&argv);
- int ho_error;
-#ifndef DBUG_OFF
- opt_debug= "d:t:O,/tmp/ndb_delete_all.trace";
-#endif
- if ((ho_error=handle_options(&argc, &argv, my_long_options,
- ndb_std_get_one_option)))
- return NDBT_ProgramExit(NDBT_WRONGARGS);
-
- Ndb_cluster_connection con(opt_connect_str);
- if(con.connect(12, 5, 1) != 0)
- {
- ndbout << "Unable to connect to management server." << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
- if (con.wait_until_ready(30,0) < 0)
- {
- ndbout << "Cluster nodes not ready in 30 seconds." << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- Ndb MyNdb(&con, _dbname );
- if(MyNdb.init() != 0){
- ERR(MyNdb.getNdbError());
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- // Check if table exists in db
- int res = NDBT_OK;
- for(int i = 0; i<argc; i++){
- const NdbDictionary::Table * pTab = NDBT_Table::discoverTableFromDb(&MyNdb, argv[i]);
- if(pTab == NULL){
- ndbout << " Table " << argv[i] << " does not exist!" << endl;
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- }
- ndbout << "Deleting all from " << argv[i] << "...";
- if(clear_table(&MyNdb, pTab) == NDBT_FAILED){
- res = NDBT_FAILED;
- ndbout << "FAILED" << endl;
- }
- }
- return NDBT_ProgramExit(res);
-}
-
-
-int clear_table(Ndb* pNdb, const NdbDictionary::Table* pTab, int parallelism)
-{
- // Scan all records exclusive and delete
- // them one by one
- int retryAttempt = 0;
- const int retryMax = 10;
- int deletedRows = 0;
- int check;
- NdbTransaction *pTrans;
- NdbScanOperation *pOp;
- NdbError err;
-
- int par = parallelism;
- while (true){
- restart:
- if (retryAttempt++ >= retryMax){
- g_info << "ERROR: has retried this operation " << retryAttempt
- << " times, failing!" << endl;
- return NDBT_FAILED;
- }
-
- pTrans = pNdb->startTransaction();
- if (pTrans == NULL) {
- err = pNdb->getNdbError();
- if (err.status == NdbError::TemporaryError){
- ERR(err);
- NdbSleep_MilliSleep(50);
- continue;
- }
- goto failed;
- }
-
- pOp = pTrans->getNdbScanOperation(pTab->getName());
- if (pOp == NULL) {
- goto failed;
- }
-
- if( pOp->readTuples(NdbOperation::LM_Exclusive,par) ) {
- goto failed;
- }
-
- if(pTrans->execute(NdbTransaction::NoCommit) != 0){
- err = pTrans->getNdbError();
- if(err.status == NdbError::TemporaryError){
- ERR(err);
- pNdb->closeTransaction(pTrans);
- NdbSleep_MilliSleep(50);
- continue;
- }
- goto failed;
- }
-
- while((check = pOp->nextResult(true)) == 0){
- do {
- if (pOp->deleteCurrentTuple() != 0){
- goto failed;
- }
- deletedRows++;
- } while((check = pOp->nextResult(false)) == 0);
-
- if(check != -1){
- check = pTrans->execute(NdbTransaction::Commit);
- pTrans->restart();
- }
-
- err = pTrans->getNdbError();
- if(check == -1){
- if(err.status == NdbError::TemporaryError){
- ERR(err);
- pNdb->closeTransaction(pTrans);
- NdbSleep_MilliSleep(50);
- par = 1;
- goto restart;
- }
- goto failed;
- }
- }
- if(check == -1){
- err = pTrans->getNdbError();
- if(err.status == NdbError::TemporaryError){
- ERR(err);
- pNdb->closeTransaction(pTrans);
- NdbSleep_MilliSleep(50);
- par = 1;
- goto restart;
- }
- goto failed;
- }
- pNdb->closeTransaction(pTrans);
- return NDBT_OK;
- }
- return NDBT_FAILED;
-
- failed:
- if(pTrans != 0) pNdb->closeTransaction(pTrans);
- ERR(err);
- return (err.code != 0 ? err.code : NDBT_FAILED);
-}
diff --git a/ndb/tools/desc.cpp b/ndb/tools/desc.cpp
deleted file mode 100644
index be0f6942db5..00000000000
--- a/ndb/tools/desc.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-#include <ndb_global.h>
-#include <ndb_opts.h>
-#include <NDBT.hpp>
-#include <NdbApi.hpp>
-
-NDB_STD_OPTS_VARS;
-
-static const char* _dbname = "TEST_DB";
-static int _unqualified = 0;
-static struct my_option my_long_options[] =
-{
- NDB_STD_OPTS("ndb_desc"),
- { "database", 'd', "Name of database table is in",
- (gptr*) &_dbname, (gptr*) &_dbname, 0,
- GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { "unqualified", 'u', "Use unqualified table names",
- (gptr*) &_unqualified, (gptr*) &_unqualified, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-static void usage()
-{
- char desc[] =
- "tabname\n"\
- "This program list all properties of table(s) in NDB Cluster.\n"\
- " ex: desc T1 T2 T4\n";
- ndb_std_print_version();
- my_print_help(my_long_options);
- my_print_variables(my_long_options);
-}
-
-int main(int argc, char** argv){
- NDB_INIT(argv[0]);
- const char *load_default_groups[]= { "mysql_cluster",0 };
- load_defaults("my",load_default_groups,&argc,&argv);
- int ho_error;
-#ifndef DBUG_OFF
- opt_debug= "d:t:O,/tmp/ndb_desc.trace";
-#endif
- if ((ho_error=handle_options(&argc, &argv, my_long_options,
- ndb_std_get_one_option)))
- return NDBT_ProgramExit(NDBT_WRONGARGS);
-
- Ndb_cluster_connection con(opt_connect_str);
- if(con.connect(12, 5, 1) != 0)
- {
- ndbout << "Unable to connect to management server." << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
- if (con.wait_until_ready(30,0) < 0)
- {
- ndbout << "Cluster nodes not ready in 30 seconds." << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- Ndb MyNdb(&con, _dbname);
- if(MyNdb.init() != 0){
- ERR(MyNdb.getNdbError());
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- const NdbDictionary::Dictionary * dict= MyNdb.getDictionary();
- for (int i = 0; i < argc; i++) {
- NDBT_Table* pTab = (NDBT_Table*)dict->getTable(argv[i]);
- if (pTab != 0){
- ndbout << (* pTab) << endl;
-
- NdbDictionary::Dictionary::List list;
- if (dict->listIndexes(list, argv[i]) != 0){
- ndbout << argv[i] << ": " << dict->getNdbError() << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- ndbout << "-- Indexes -- " << endl;
- ndbout << "PRIMARY KEY(";
- unsigned j;
- for (j= 0; (int)j < pTab->getNoOfPrimaryKeys(); j++)
- {
- const NdbDictionary::Column * col = pTab->getColumn(pTab->getPrimaryKey(j));
- ndbout << col->getName();
- if ((int)j < pTab->getNoOfPrimaryKeys()-1)
- ndbout << ", ";
- }
- ndbout << ") - UniqueHashIndex" << endl;
-
- for (j= 0; j < list.count; j++) {
- NdbDictionary::Dictionary::List::Element& elt = list.elements[j];
- const NdbDictionary::Index *pIdx = dict->getIndex(elt.name, argv[i]);
- if (!pIdx){
- ndbout << argv[i] << ": " << dict->getNdbError() << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- ndbout << (*pIdx) << endl;
- }
- ndbout << endl;
- }
- else
- ndbout << argv[i] << ": " << dict->getNdbError() << endl;
- }
-
- return NDBT_ProgramExit(NDBT_OK);
-}
diff --git a/ndb/tools/drop_index.cpp b/ndb/tools/drop_index.cpp
deleted file mode 100644
index e2bf7f0bfae..00000000000
--- a/ndb/tools/drop_index.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-#include <ndb_global.h>
-#include <ndb_opts.h>
-
-#include <NdbOut.hpp>
-#include <NdbApi.hpp>
-#include <NDBT.hpp>
-
-NDB_STD_OPTS_VARS;
-
-static const char* _dbname = "TEST_DB";
-static struct my_option my_long_options[] =
-{
- NDB_STD_OPTS("ndb_desc"),
- { "database", 'd', "Name of database table is in",
- (gptr*) &_dbname, (gptr*) &_dbname, 0,
- GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-static void usage()
-{
- char desc[] =
- "<indexname>+\n"\
- "This program will drop index(es) in Ndb\n";
- ndb_std_print_version();
- my_print_help(my_long_options);
- my_print_variables(my_long_options);
-}
-
-int main(int argc, char** argv){
- NDB_INIT(argv[0]);
- const char *load_default_groups[]= { "mysql_cluster",0 };
- load_defaults("my",load_default_groups,&argc,&argv);
- int ho_error;
-#ifndef DBUG_OFF
- "d:t:O,/tmp/ndb_drop_index.trace";
-#endif
- if ((ho_error=handle_options(&argc, &argv, my_long_options,
- ndb_std_get_one_option)))
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- if (argc < 1) {
- usage();
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- }
-
- Ndb_cluster_connection con(opt_connect_str);
- if(con.connect(12, 5, 1) != 0)
- {
- return NDBT_ProgramExit(NDBT_FAILED);
- }
- if (con.wait_until_ready(30,3) < 0)
- {
- ndbout << "Cluster nodes not ready in 30 seconds." << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- Ndb MyNdb(&con, _dbname );
- if(MyNdb.init() != 0){
- ERR(MyNdb.getNdbError());
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- int res = 0;
- for(int i = 0; i<argc; i++){
- ndbout << "Dropping index " << argv[i] << "...";
- int tmp;
- if((tmp = MyNdb.getDictionary()->dropIndex(argv[i], 0)) != 0){
- ndbout << endl << MyNdb.getDictionary()->getNdbError() << endl;
- res = tmp;
- } else {
- ndbout << "OK" << endl;
- }
- }
-
- if(res != 0){
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- return NDBT_ProgramExit(NDBT_OK);
-}
diff --git a/ndb/tools/drop_tab.cpp b/ndb/tools/drop_tab.cpp
deleted file mode 100644
index 991e1505486..00000000000
--- a/ndb/tools/drop_tab.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-#include <ndb_global.h>
-#include <ndb_opts.h>
-
-#include <NdbOut.hpp>
-#include <NdbApi.hpp>
-#include <NDBT.hpp>
-
-NDB_STD_OPTS_VARS;
-
-static const char* _dbname = "TEST_DB";
-static struct my_option my_long_options[] =
-{
- NDB_STD_OPTS("ndb_desc"),
- { "database", 'd', "Name of database table is in",
- (gptr*) &_dbname, (gptr*) &_dbname, 0,
- GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-static void usage()
-{
- char desc[] =
- "tabname\n"\
- "This program will drop one table in Ndb\n";
- ndb_std_print_version();
- my_print_help(my_long_options);
- my_print_variables(my_long_options);
-}
-
-int main(int argc, char** argv){
- NDB_INIT(argv[0]);
- const char *load_default_groups[]= { "mysql_cluster",0 };
- load_defaults("my",load_default_groups,&argc,&argv);
- int ho_error;
-#ifndef DBUG_OFF
- "d:t:O,/tmp/ndb_drop_table.trace";
-#endif
- if ((ho_error=handle_options(&argc, &argv, my_long_options,
- ndb_std_get_one_option)))
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- if (argc < 1) {
- usage();
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- }
-
- Ndb_cluster_connection con(opt_connect_str);
- if(con.connect(12, 5, 1) != 0)
- {
- ndbout << "Unable to connect to management server." << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
- if (con.wait_until_ready(30,3) < 0)
- {
- ndbout << "Cluster nodes not ready in 30 seconds." << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- Ndb MyNdb(&con, _dbname );
- if(MyNdb.init() != 0){
- ERR(MyNdb.getNdbError());
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- int res = 0;
- for(int i = 0; i<argc; i++){
- ndbout << "Dropping table " << argv[i] << "...";
- int tmp;
- if((tmp = MyNdb.getDictionary()->dropTable(argv[i])) != 0){
- ndbout << endl << MyNdb.getDictionary()->getNdbError() << endl;
- res = tmp;
- } else {
- ndbout << "OK" << endl;
- }
- }
-
- if(res != 0){
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- return NDBT_ProgramExit(NDBT_OK);
-}
diff --git a/ndb/tools/listTables.cpp b/ndb/tools/listTables.cpp
deleted file mode 100644
index b4a2235f73b..00000000000
--- a/ndb/tools/listTables.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-/*
- * list_tables
- *
- * List objects(tables, triggers, etc.) in NDB Cluster
- *
- */
-
-#include <ndb_global.h>
-#include <ndb_opts.h>
-
-#include <NdbApi.hpp>
-#include <NDBT.hpp>
-
-static Ndb_cluster_connection *ndb_cluster_connection= 0;
-static Ndb* ndb = 0;
-static const NdbDictionary::Dictionary * dic = 0;
-static int _unqualified = 0;
-
-static void
-fatal(char const* fmt, ...)
-{
- va_list ap;
- char buf[500];
- va_start(ap, fmt);
- BaseString::vsnprintf(buf, sizeof(buf), fmt, ap);
- va_end(ap);
- ndbout << buf;
- if (ndb)
- ndbout << " - " << ndb->getNdbError();
- ndbout << endl;
- NDBT_ProgramExit(NDBT_FAILED);
- exit(1);
-}
-
-static void
-fatal_dict(char const* fmt, ...)
-{
- va_list ap;
- char buf[500];
- va_start(ap, fmt);
- BaseString::vsnprintf(buf, sizeof(buf), fmt, ap);
- va_end(ap);
- ndbout << buf;
- if (dic)
- ndbout << " - " << dic->getNdbError();
- ndbout << endl;
- NDBT_ProgramExit(NDBT_FAILED);
- exit(1);
-}
-
-static void
-list(const char * tabname,
- NdbDictionary::Object::Type type)
-{
- NdbDictionary::Dictionary::List list;
- if (tabname == 0) {
- if (dic->listObjects(list, type) == -1)
- fatal_dict("listObjects");
- } else {
- if (dic->listIndexes(list, tabname) == -1)
- fatal_dict("listIndexes");
- }
- if (ndb->usingFullyQualifiedNames())
- ndbout_c("%-5s %-20s %-8s %-7s %-12s %-8s %s", "id", "type", "state", "logging", "database", "schema", "name");
- else
- ndbout_c("%-5s %-20s %-8s %-7s %s", "id", "type", "state", "logging", "name");
- for (unsigned i = 0; i < list.count; i++) {
- NdbDictionary::Dictionary::List::Element& elt = list.elements[i];
- char type[100];
- bool isTable = false;
- switch (elt.type) {
- case NdbDictionary::Object::SystemTable:
- strcpy(type, "SystemTable");
- isTable = true;
- break;
- case NdbDictionary::Object::UserTable:
- strcpy(type, "UserTable");
- isTable = true;
- break;
- case NdbDictionary::Object::UniqueHashIndex:
- strcpy(type, "UniqueHashIndex");
- isTable = true;
- break;
- case NdbDictionary::Object::OrderedIndex:
- strcpy(type, "OrderedIndex");
- isTable = true;
- break;
- case NdbDictionary::Object::HashIndexTrigger:
- strcpy(type, "HashIndexTrigger");
- break;
- case NdbDictionary::Object::IndexTrigger:
- strcpy(type, "IndexTrigger");
- break;
- case NdbDictionary::Object::SubscriptionTrigger:
- strcpy(type, "SubscriptionTrigger");
- break;
- case NdbDictionary::Object::ReadOnlyConstraint:
- strcpy(type, "ReadOnlyConstraint");
- break;
- default:
- sprintf(type, "%d", (int)elt.type);
- break;
- }
- char state[100];
- switch (elt.state) {
- case NdbDictionary::Object::StateOffline:
- strcpy(state, "Offline");
- break;
- case NdbDictionary::Object::StateBuilding:
- strcpy(state, "Building");
- break;
- case NdbDictionary::Object::StateDropping:
- strcpy(state, "Dropping");
- break;
- case NdbDictionary::Object::StateOnline:
- strcpy(state, "Online");
- break;
- case NdbDictionary::Object::StateBroken:
- strcpy(state, "Broken");
- break;
- default:
- sprintf(state, "%d", (int)elt.state);
- break;
- }
- char store[100];
- if (! isTable)
- strcpy(store, "-");
- else {
- switch (elt.store) {
- case NdbDictionary::Object::StoreTemporary:
- strcpy(store, "No");
- break;
- case NdbDictionary::Object::StorePermanent:
- strcpy(store, "Yes");
- break;
- default:
- sprintf(state, "%d", (int)elt.store);
- break;
- }
- }
- if (ndb->usingFullyQualifiedNames())
- ndbout_c("%-5d %-20s %-8s %-7s %-12s %-8s %s", elt.id, type, state, store, (elt.database)?elt.database:"", (elt.schema)?elt.schema:"", elt.name);
- else
- ndbout_c("%-5d %-20s %-8s %-7s %s", elt.id, type, state, store, elt.name);
- }
-}
-
-NDB_STD_OPTS_VARS;
-
-static const char* _dbname = "TEST_DB";
-static int _loops;
-static int _type;
-static struct my_option my_long_options[] =
-{
- NDB_STD_OPTS("ndb_show_tables"),
- { "database", 'd', "Name of database table is in",
- (gptr*) &_dbname, (gptr*) &_dbname, 0,
- GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { "loops", 'l', "loops",
- (gptr*) &_loops, (gptr*) &_loops, 0,
- GET_INT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0 },
- { "type", 't', "type",
- (gptr*) &_type, (gptr*) &_type, 0,
- GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { "unqualified", 'u', "Use unqualified table names",
- (gptr*) &_unqualified, (gptr*) &_unqualified, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-static void usage()
-{
- char desc[] =
- "tabname\n"\
- "This program list all system objects in NDB Cluster.\n"\
- "Type of objects to display can be limited with -t option\n"\
- " ex: ndb_show_tables -t 2 would show all UserTables\n"\
- "To show all indexes for a table write table name as final argument\n"\
- " ex: ndb_show_tables T1\n";
- ndb_std_print_version();
- my_print_help(my_long_options);
- my_print_variables(my_long_options);
-}
-
-int main(int argc, char** argv){
- NDB_INIT(argv[0]);
- const char* _tabname;
- const char *load_default_groups[]= { "mysql_cluster",0 };
- load_defaults("my",load_default_groups,&argc,&argv);
- int ho_error;
-#ifndef DBUG_OFF
- opt_debug= "d:t:O,/tmp/ndb_show_tables.trace";
-#endif
- if ((ho_error=handle_options(&argc, &argv, my_long_options,
- ndb_std_get_one_option)))
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- _tabname = argv[0];
-
- ndb_cluster_connection = new Ndb_cluster_connection(opt_connect_str);
- if (ndb_cluster_connection->connect(12,5,1))
- fatal("Unable to connect to management server.");
- if (ndb_cluster_connection->wait_until_ready(30,0) < 0)
- fatal("Cluster nodes not ready in 30 seconds.");
-
- ndb = new Ndb(ndb_cluster_connection, _dbname);
- if (ndb->init() != 0)
- fatal("init");
- dic = ndb->getDictionary();
- for (int i = 0; _loops == 0 || i < _loops; i++) {
- list(_tabname, (NdbDictionary::Object::Type)_type);
- }
- delete ndb;
- delete ndb_cluster_connection;
- return NDBT_ProgramExit(NDBT_OK);
-}
-
-// vim: set sw=4:
diff --git a/ndb/tools/make-errors.pl b/ndb/tools/make-errors.pl
deleted file mode 100644
index 65819209a89..00000000000
--- a/ndb/tools/make-errors.pl
+++ /dev/null
@@ -1,181 +0,0 @@
-#! /usr/local/bin/perl
-
-use strict;
-use Getopt::Long;
-use XML::Parser;
-
-(my $progname = $0) =~ s!^.*/!!;
-
-sub usage {
- my $errstr = "@_";
- while (chomp($errstr)) {}
- print <<END;
-$progname: $errstr
-$progname -- read codes.xml and write codes.hpp and codes.cpp
-usage: $progname [options] codes.xml
--c check xml file only
--d check xml file and show diff against old hpp and cpp
-END
- exit(1);
-}
-
-my $opts = {};
-opts: {
- local $SIG{__WARN__} = \&usage;
- GetOptions($opts, qw(c d));
-}
-@ARGV == 1 or usage("one filename argument expected");
-my $filexml = shift;
-$filexml =~ /^(.*)\.xml$/ or usage("$filexml does not end in .xml");
-my $filehpp = "$1.hpp";
-my $filecpp = "$1.cpp";
-
-my $temphpp = "$filehpp-new";
-my $tempcpp = "$filecpp-new";
-unlink $temphpp, $tempcpp;
-open(HPP, ">$temphpp") or die "$temphpp: $!\n";
-open(CPP, ">$tempcpp") or die "$tempcpp: $!\n";
-
-my $i2 = " " x 2;
-my $i4 = " " x 4;
-my $lb = "{";
-my $rb = "}";
-
-sub disclaimer {
- my $filename = shift;
- return <<END;
-/*
- * $filename -- DO NOT EDIT !!
- *
- * To create a new version (both *.hpp and *.cpp):
- *
- * 1) edit $filexml
- * 2) perl tools/$progname $filexml
- * 3) check all files (*.xml *.hpp *.cpp) into CVS
- *
- * On RedHat linux requires perl-XML-Parser package.
- */
-END
-}
-
-my $classname = $filehpp;
-$classname =~ s!^.*/!!;
-$classname =~ s/\.hpp$//;
-
-sub handle_init {
- my($parser) = @_;
- my $guard = $filehpp;
- $guard =~ s!^.*/!!;
- $guard =~ s!([a-z])([A-Z])!${1}_${2}!g;
- $guard =~ s!\.!_!g;
- $guard = uc($guard);
- print HPP "#ifndef $guard\n#define $guard\n\n";
- print HPP disclaimer($filehpp), "\n";
- print HPP "class $classname $lb\n";
- print HPP "${i2}enum Value $lb\n";
- print CPP disclaimer($filecpp), "\n";
- print CPP "/* included in Ndberror.cpp */\n\n";
-}
-
-my %classhash = (
- ApplicationError => 1,
- NoDataFound => 1,
- ConstraintViolation => 1,
- SchemaError => 1,
- UserDefinedError => 1,
- InsufficientSpace => 1,
- TemporaryResourceError => 1,
- NodeRecoveryError => 1,
- OverloadError => 1,
- TimeoutExpired => 1,
- UnknownResultError => 1,
- InternalError => 1,
- FunctionNotImplemented => 1,
- UnknownErrorCode => 1,
- NodeShutdown => 1,
-);
-
-my $section = undef;
-my %codehash = ();
-my %namehash = ();
-
-sub handle_start {
- my($parser, $tag, %attr) = @_;
- if ($tag eq 'Error') {
- return;
- }
- if ($tag eq 'Section') {
- $section = $attr{name};
- $section =~ /^\w+$/ or
- $parser->xpcroak("invalid or missing section name");
- return;
- }
- if ($tag eq 'Code') {
- print HPP ",\n" if %codehash;
- print CPP ",\n" if %codehash;
- my $name = $attr{name};
- my $class = $attr{class};
- my $code = $attr{code};
- my $message = $attr{message};
- $name =~ /^\w+$/ or
- $parser->xpcroak("invalid or missing error name '$name'");
- $namehash{$name}++ and
- $parser->xpcroak("duplicate error name '$name'");
- $classhash{$class} or
- $parser->xpcroak("invalid or missing error class '$class'");
- $code =~ /^\d+$/ or
- $parser->xpcroak("invalid or missing error code '$code'");
- $codehash{$code}++ and
- $parser->xpcroak("duplicate error code '$code'");
- $message =~ /\S/ or
- $parser->xpcroak("invalid or missing error message '$message'");
- $message =~ s/^\s+|\s+$//g;
- my $enum = "${section}_${name}";
- print HPP "${i4}$enum = $code";
- print CPP "${i2}$lb ${classname}::$enum,\n";
- print CPP "${i4}NdbError::$class,\n";
- print CPP "${i4}\"$message\"\n";
- print CPP "${i2}$rb";
- return;
- }
- $parser->xpcroak("unknown tag $tag");
-}
-
-sub handle_end {
- my($parser, $tag) = @_;
-}
-
-sub handle_final {
- print HPP "\n" if %codehash;
- print HPP "${i2}$rb;\n";
- print HPP "$rb;\n\n#endif\n";
- print CPP ",\n" if 1;
- return 1;
-}
-
-my $parser = new XML::Parser(
- ParseParamEnt => 1,
- Handlers => {
- Init => \&handle_init,
- Start => \&handle_start,
- End => \&handle_end,
- Final => \&handle_final,
- },
- ErrorContext => 0,
-);
-eval {
- $parser->parsefile($filexml);
-};
-if ($@) {
- my $errstr = join("\n", grep(m!\S! && ! m!^\s*at\s!, split(/\n/, $@)));
- die "$filexml:\n$errstr\n";
-}
-
-close(HPP);
-close(CPP);
-rename($temphpp, $filehpp);
-rename($tempcpp, $filecpp);
-
-1;
-
-# vim:set sw=4:
diff --git a/ndb/tools/make-links.sh b/ndb/tools/make-links.sh
deleted file mode 100755
index e0c4f55986e..00000000000
--- a/ndb/tools/make-links.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#! /bin/sh
-
-# 1 - Link top src
-# 2 - Link dst
-
-if [ $# -lt 2 ]
-then
- exit 0
-fi
-
-name=`basename $2`
-files=`find $1/$name -type f -name '*.h*'`
-
-for i in $files
-do
- ln -s $i $2/`basename $i`
-done
-
-
-
diff --git a/ndb/tools/ndb_test_platform.cpp b/ndb/tools/ndb_test_platform.cpp
deleted file mode 100644
index 88f21b31d58..00000000000
--- a/ndb/tools/ndb_test_platform.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-
-#include <ndb_global.h>
-#include <my_sys.h>
-#include <BaseString.hpp>
-
-/*
- * Test BaseString::snprintf
- */
-
-static
-int test_snprintf(const char * fmt, int buf_sz, int result)
-{
- int ret;
- char buf[100];
- ret = BaseString::snprintf(buf, buf_sz, fmt);
-
- if(ret < 0)
- {
- printf("BaseString::snprint returns %d with size=%d and strlen(fmt)=%d\n",
- ret, buf_sz, (int) strlen(fmt));
- return -1;
- }
-
- if(ret+1 == buf_sz)
- {
- printf("BaseString::snprint truncates returns %d with size=%d and strlen(fmt)=%d\n",
- ret, buf_sz, (int) strlen(fmt));
- return -1;
- }
-
- if(ret != result)
- {
- printf("BaseString::snprint returns incorrect value: returned=%d != expected=%d\n",
- ret, result);
- return -1;
- }
-
- for(ret = 0; ret+1 < buf_sz && ret < result; ret++)
- {
- if(buf[ret] != fmt[ret])
- {
- printf("BaseString::snprint Incorrect value in output buffer: "
- "size=%d returned=expected=%d at pos=%d result=%d != expected=%d\n",
- buf_sz, result, ret, buf[ret], fmt[ret]);
- return -1;
- }
- }
- return 0;
-}
-
-int
-main(void)
-{
- /*
- * Test BaseString::snprintf
- */
-
- if(test_snprintf("test", 1, 4))
- return -1;
-
- if(test_snprintf("test", 0, 4))
- return -1;
-
- if(test_snprintf("test", 100, 4))
- return -1;
-
- /*
- * Test UintPtr
- */
-
- if (sizeof(UintPtr) != sizeof(Uint32*))
- {
- printf("sizeof(UintPtr)=%d != sizeof(Uint32*)=%d\n",
- (int) sizeof(UintPtr), (int) sizeof(Uint32*));
- return -1;
- }
-
- return 0;
-}
diff --git a/ndb/tools/ndbsql.cpp b/ndb/tools/ndbsql.cpp
deleted file mode 100644
index 1997e4abebd..00000000000
--- a/ndb/tools/ndbsql.cpp
+++ /dev/null
@@ -1,957 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-/*******************************************************************************
- * NDB Cluster NDB SQL -- A simple SQL Command-line Interface
- *
- ******************************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#ifdef NDB_MACOSX
-#include <stdlib.h>
-#else
-#include <malloc.h>
-#endif
-#include <errno.h>
-#include <editline/editline.h>
-#include <NdbOut.hpp>
-#include <ctype.h>
-#include <wctype.h>
-
-#ifndef SQL_BLOB
-#define SQL_BLOB 30
-#endif
-#ifndef SQL_CLOB
-#define SQL_CLOB 40
-#endif
-
-/**************************************************************************
- * ------------------------------------------------------------------------
- * MODULE: Readline and string handling
- * ------------------------------------------------------------------------
- **************************************************************************/
-#define MAXBUF 2048
-static char* s_readBuf;
-static int s_bufSize = MAXBUF;
-
-static char*
-readSQL_File(FILE* inputFile)
-{
- int c;
- int i = 0;
- if (feof(inputFile))
- return 0;
- while ((c = getc(inputFile)) != EOF) {
- if (i == s_bufSize-1) {
- s_bufSize *= 2;
- s_readBuf = (char*)realloc(s_readBuf, s_bufSize);
- }
- s_readBuf[i] = c;
- if (c == '\n')
- break;
- i++;
- }
- s_readBuf[i] = 0;
- return s_readBuf;
-}
-
-static char*
-readline_gets(const char* prompt, bool batchMode, FILE* inputFile)
-{
- static char *line_read = (char *)NULL;
-
- // Disable the default file-name completion action of TAB
- // rl_bind_key ('\t', rl_insert);
-
- if (batchMode)
- /* Read one line from a file. */
- line_read = readSQL_File(inputFile);
- else
- /* Get a line from the user. */
- line_read = readline(prompt);
-
- /* If the line has any text in it, save it in the history. */
- if (!batchMode)
- if (line_read && *line_read) add_history(line_read);
-
- return (line_read);
-}
-
-#ifdef NDB_WIN32
-extern "C"
-{
- char* readline(const char* prompt)
- {
- fputs(prompt, stdout);
- return fgets(s_readBuf, MAXBUF, stdin);
- }
- void add_history(char*)
- {
- }
-}
-#endif
-
-bool emptyString(const char* s) {
- if (s == NULL) {
- return true;
- }
-
- for (unsigned int i = 0; i < strlen(s); ++i) {
- if (! isspace(s[i])) {
- return false;
- }
- }
-
- return true;
-}
-
-/**************************************************************************
- * ------------------------------------------------------------------------
- * MODULE: ODBC Handling
- * ------------------------------------------------------------------------
- **************************************************************************/
-
-#include <sqlext.h>
-#include <stdio.h>
-#include <string.h>
-#ifdef NDB_MACOSX
-#include <stdlib.h>
-#else
-#include <malloc.h>
-#endif
-/**
- * In the case where the user types a SELECT statement,
- * the function fetches and displays all rows of the result set.
- *
- * This example illustrates the use of GetDiagField to identify the
- * type of SQL statement executed and, for SQL statements where the
- * row count is defined on all implementations, the use of GetDiagField
- * to obtain the row count.
- */
-#define MAXCOLS 100
-#undef max
-#define max(a,b) ((a)>(b)?(a):(b))
-
-#define MAX_MESSAGE 500
-
-void getDiag(SQLSMALLINT type, SQLHANDLE handle, unsigned k, unsigned count)
-{
- char message[MAX_MESSAGE];
- char state[6];
- SQLINTEGER native;
-
- SQLSMALLINT length = -1;
- memset(message, 0, MAX_MESSAGE);
- int ret = SQLGetDiagRec(type, handle, k, (SQLCHAR*)state,
- &native, (SQLCHAR*)message, MAX_MESSAGE, &length);
- if (ret == SQL_NO_DATA) {
- ndbout << "No error diagnostics available" << endl;
- return;
- }
- ndbout << message << endl;
-
- if (k <= count && ret != SQL_SUCCESS)
- ndbout_c("SQLGetDiagRec %d of %d: return %d != SQL_SUCCESS",
- k, count, (int)ret);
- if (k <= count && (SQLSMALLINT) strlen(message) != length)
- ndbout_c("SQLGetDiagRec %d of %d: message length %d != %d",
- k, count, strlen(message), length);
- if (k > count && ret != SQL_NO_DATA)
- ndbout_c("SQLGetDiagRec %d of %d: return %d != SQL_NO_DATA",
- k, count, (int)ret);
-}
-
-int print_err(SQLSMALLINT handletype, SQLHDBC hdbc) {
- getDiag(handletype, hdbc, 1, 1);
-
- return -1;
-}
-
-
-/***************************************************************
- * The following functions are given for completeness, but are
- * not relevant for understanding the database processing
- * nature of CLI
- ***************************************************************/
-#define MAX_NUM_PRECISION 15
-/*#define max length of char string representation of no. as:
-= max(precision) + leading sign +E +expsign + max exp length
-= 15 +1 +1 +1 +2
-= 15 +5
-*/
-#define MAX_NUM_STRING_SIZE (MAX_NUM_PRECISION + 5)
-
-int build_indicator_message(SQLCHAR *errmsg, SQLPOINTER *data,
- SQLINTEGER collen, SQLINTEGER *outlen,
- SQLSMALLINT colnum) {
- if (*outlen == SQL_NULL_DATA) {
- (void)strcpy((char *)data, "NULL");
- *outlen=4;
- } else {
- sprintf((char *)errmsg+strlen((char *)errmsg),
- "%ld chars truncated, col %d\n", *outlen-collen+1,
- colnum);
- *outlen=255;
- }
- return 0;
-}
-
-
-SQLINTEGER display_length(SQLSMALLINT coltype, SQLINTEGER collen,
- SQLCHAR *colname) {
- switch (coltype) {
- case SQL_VARCHAR:
- case SQL_CHAR:
- case SQL_VARBINARY:
- case SQL_BINARY:
- case SQL_BLOB:
- case SQL_CLOB:
- case SQL_BIT:
- //case SQL_REF:
- //case SQL_BIT_VARYING:
- return(max(collen,(SQLINTEGER) strlen((char *)colname))+1);
- case SQL_FLOAT:
- case SQL_DOUBLE:
- case SQL_NUMERIC:
- case SQL_REAL:
- case SQL_DECIMAL:
- return(max(MAX_NUM_STRING_SIZE,strlen((char *)colname))+1);
- case SQL_TYPE_DATE:
- case SQL_TYPE_TIME:
- //case SQL_TYPE_TIME_WITH_TIMEZONE:
- case SQL_TYPE_TIMESTAMP:
- //case SQL_TYPE_TIMESTAMP_WITH_TIMEZONE:
- case SQL_INTERVAL_YEAR:
- case SQL_INTERVAL_MONTH:
- case SQL_INTERVAL_DAY:
- case SQL_INTERVAL_HOUR:
- case SQL_INTERVAL_MINUTE:
- case SQL_INTERVAL_SECOND:
- case SQL_INTERVAL_YEAR_TO_MONTH:
- case SQL_INTERVAL_DAY_TO_HOUR:
- case SQL_INTERVAL_DAY_TO_MINUTE:
- case SQL_INTERVAL_DAY_TO_SECOND:
- case SQL_INTERVAL_HOUR_TO_MINUTE:
- case SQL_INTERVAL_HOUR_TO_SECOND:
- case SQL_INTERVAL_MINUTE_TO_SECOND:
- return(max(collen,(SQLINTEGER) strlen((char *)colname))+1);
- case SQL_INTEGER:
- //case SQL_BLOB_LOCATOR:
- //case SQL_CLOB_LOCATOR:
- //case SQL_UDT_LOCATOR:
- //case SQL_ARRAY_LOCATOR:
- return(max(11,strlen((char *)colname))+1);
- case SQL_BIGINT:
- return(max(21,strlen((char *)colname))+1);
- case SQL_SMALLINT:
- return(max(5,strlen((char *)colname))+1);
- default:
- (void)printf("Unknown datatype, %d\n", coltype);
- return(0);
- }
-}
-
-struct Con {
- const char* dsn;
- SQLHENV henv;
- SQLHDBC hdbc;
- Con(const char* _dsn) :
- dsn(_dsn), henv(SQL_NULL_HANDLE), hdbc(SQL_NULL_HANDLE) {}
-};
-
-static int
-do_connect(Con& con)
-{
- int ret;
-
- // allocate an environment handle
- ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &con.henv);
- if (ret != SQL_SUCCESS)
- return -1;
-
- // set odbc version (required)
- ret = SQLSetEnvAttr(con.henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
- if (ret != SQL_SUCCESS)
- return -1;
-
- // allocate a connection handle
- ret = SQLAllocHandle(SQL_HANDLE_DBC, con.henv, &con.hdbc);
- if (ret != SQL_SUCCESS)
- return -1;
-
- // connect to database
- SQLCHAR szConnStrOut[256];
- SQLSMALLINT cbConnStrOut;
- ret = SQLDriverConnect(con.hdbc, 0, (SQLCHAR*)con.dsn, SQL_NTS,
- szConnStrOut, sizeof(szConnStrOut), &cbConnStrOut, SQL_DRIVER_COMPLETE);
- if (ret != SQL_SUCCESS) {
- ndbout << "Connection failure: Could not connect to database" << endl;
- print_err(SQL_HANDLE_DBC, con.hdbc);
- return -1;
- }
-
- return 0;
-}
-
-static int
-do_disconnect(Con& con)
-{
- // disconnect from database
- SQLDisconnect(con.hdbc);
-
- // free connection handle
- SQLFreeHandle(SQL_HANDLE_DBC, con.hdbc);
- con.hdbc = SQL_NULL_HANDLE;
-
- // free environment handle
- SQLFreeHandle(SQL_HANDLE_ENV, con.henv);
- con.henv = SQL_NULL_HANDLE;
-
- return 0;
-}
-
-static int
-get_autocommit(Con& con)
-{
- int ret;
- SQLUINTEGER v;
- ret = SQLGetConnectAttr(con.hdbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)&v, SQL_IS_UINTEGER, 0);
- if (ret != SQL_SUCCESS) {
- ndbout << "Get autocommit failed" << endl;
- print_err(SQL_HANDLE_DBC, con.hdbc);
- return -1;
- }
- return v;
-}
-
-static int
-set_autocommit(Con& con, SQLUINTEGER v)
-{
- int ret;
- ret = SQLSetConnectAttr(con.hdbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)v, SQL_IS_UINTEGER);
- if (ret != SQL_SUCCESS) {
- ndbout << "Set autocommit failed" << endl;
- print_err(SQL_HANDLE_DBC, con.hdbc);
- return -1;
- }
- return 0;
-}
-
-static int
-do_commit(Con& con)
-{
- int ret = SQLEndTran(SQL_HANDLE_DBC, con.hdbc, SQL_COMMIT);
- if (ret != SQL_SUCCESS) {
- ndbout << "Commit failed" << endl;
- print_err(SQL_HANDLE_DBC, con.hdbc);
- return -1;
- }
- return 0;
-}
-
-static int
-do_rollback(Con& con)
-{
- int ret = SQLEndTran(SQL_HANDLE_DBC, con.hdbc, SQL_ROLLBACK);
- if (ret != SQL_SUCCESS) {
- ndbout << "Rollback failed" << endl;
- print_err(SQL_HANDLE_DBC, con.hdbc);
- return -1;
- }
- return 0;
-}
-
-static int
-do_stmt(Con& con, const char *sqlstr)
-{
- SQLHSTMT hstmt;
- SQLCHAR errmsg[256];
- SQLCHAR colname[32];
- SQLSMALLINT coltype;
- SQLSMALLINT colnamelen;
- SQLSMALLINT nullable;
- SQLUINTEGER collen[MAXCOLS];
- SQLSMALLINT scale;
- SQLINTEGER outlen[MAXCOLS];
- SQLCHAR *data[MAXCOLS];
- SQLSMALLINT nresultcols = 0;
- SQLINTEGER rowcount;
- SQLINTEGER stmttype;
- SQLRETURN rc;
-
- /* allocate a statement handle */
- SQLAllocHandle(SQL_HANDLE_STMT, con.hdbc, &hstmt);
-
- /* execute the SQL statement */
- rc = SQLExecDirect(hstmt, (SQLCHAR*)sqlstr, SQL_NTS);
- if (rc == SQL_ERROR) {
- ndbout << "Operation failed" << endl;
- print_err(SQL_HANDLE_STMT, hstmt);
- return -1;
- }
- if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO && rc != SQL_NO_DATA_FOUND) {
- ndbout << "Operation returned unknown code " << rc << endl;
- return -1;
- }
-
- /* see what kind of statement it was */
- SQLGetDiagField(SQL_HANDLE_STMT, hstmt, 0,
- SQL_DIAG_DYNAMIC_FUNCTION_CODE,
- (SQLPOINTER)&stmttype, SQL_IS_INTEGER, (SQLSMALLINT *)NULL);
-
- switch (stmttype) {
- /* SELECT statement */
- case SQL_DIAG_SELECT_CURSOR:
- /* determine number of result columns */
- SQLNumResultCols(hstmt, &nresultcols);
-
- /***********************
- * Display column names
- ***********************/
- /* Print vertical divider */
- printf("|");
- for (int i=0; i<nresultcols; i++) {
- SQLDescribeCol(hstmt, i+1, colname, sizeof(colname),
- &colnamelen, &coltype, &collen[i], &scale, &nullable);
- collen[i] = display_length(coltype, collen[i], colname);
- for (SQLUINTEGER j=0; j<collen[i]; j++) printf("-");
- printf("--+");
- }
- printf("\n");
-
- printf("|");
- for (int i=0; i<nresultcols; i++) {
- SQLDescribeCol(hstmt, i+1, colname, sizeof(colname),
- &colnamelen, &coltype, &collen[i], &scale, &nullable);
-
- /* assume there is a display_length function which
- computes correct length given the data type */
- collen[i] = display_length(coltype, collen[i], colname);
- (void)printf(" %*.*s |", (int)collen[i], (int)collen[i], (char *)colname);
-
- /* allocate memory to bind column */
- data[i] = (SQLCHAR *) malloc(collen[i]);
- if (data[i] == NULL) {
- ndbout << "Failed to allocate malloc memory in NDB SQL program"
- << endl;
- exit(-1);
- }
-
- /* bind columns to program vars, converting all types to CHAR */
- SQLBindCol(hstmt, i+1, SQL_C_CHAR, data[i], collen[i], &outlen[i]);
- }
- printf("\n");
-
- /* Print vertical divider */
- printf("|");
- for (int i=0; i<nresultcols; i++) {
- SQLDescribeCol(hstmt, i+1, colname, sizeof(colname),
- &colnamelen, &coltype, &collen[i], &scale, &nullable);
- collen[i] = display_length(coltype, collen[i], colname);
- for (SQLUINTEGER j=0; j<collen[i]; j++) printf("-");
- printf("--+");
- }
- printf("\n");
-
- /**********************
- * Display result rows
- **********************/
- {
- int no_of_rows_fetched=0;
- while (1) {
- rc=SQLFetch(hstmt);
- errmsg[0] = '\0';
- if (rc == SQL_ERROR) {
- print_err(SQL_HANDLE_STMT, hstmt);
- break;
- }
- if (rc == SQL_NO_DATA) break;
- if (rc == SQL_SUCCESS) {
- printf("|");
- for (int i=0; i<nresultcols; i++) {
- if (outlen[i] == SQL_NULL_DATA
- || outlen[i] >= (SQLINTEGER) collen[i])
- build_indicator_message(errmsg,
- (SQLPOINTER *)data[i], collen[i],
- &outlen[i], i);
- (void)printf(" %*.*s |", (int)collen[i], (int)collen[i],
- (char *)data[i]);
- }
- /* print any truncation messages */
- (void)printf("\n%s", (char *)errmsg);
- } else if (rc == SQL_SUCCESS_WITH_INFO) {
- printf("|");
- for (int i=0; i<nresultcols; i++) {
- if (outlen[i] == SQL_NULL_DATA
- || outlen[i] >= (SQLINTEGER) collen[i])
- build_indicator_message(errmsg,
- (SQLPOINTER *)data[i], collen[i],
- &outlen[i], i);
- (void)printf(" %*.*s |", (int)collen[i], (int)collen[i],
- (char *)data[i]);
- } /* for all columns in this row */
- /* print any truncation messages */
- (void)printf("\n%s", (char *)errmsg);
- }
- no_of_rows_fetched++;
- } /* while rows to fetch */
- /* Print vertical divider */
- printf("|");
- for (int i=0; i<nresultcols; i++) {
- SQLDescribeCol(hstmt, i+1, colname, sizeof(colname),
- &colnamelen, &coltype, &collen[i], &scale, &nullable);
- collen[i] = display_length(coltype, collen[i], colname);
- for (SQLUINTEGER j=0; j<collen[i]; j++) printf("-");
- printf("--+");
- }
- printf("\n");
- ndbout << no_of_rows_fetched << " rows fetched" << endl;
- }
- SQLCloseCursor(hstmt);
- break;
- /* searched DELETE, INSERT or searched UPDATE statement */
- case SQL_DIAG_DELETE_WHERE:
- case SQL_DIAG_INSERT:
- case SQL_DIAG_UPDATE_WHERE:
- /* check rowcount */
- SQLRowCount(hstmt, (SQLINTEGER*)&rowcount);
- ndbout << (int)rowcount << " rows affected" << endl;
- break;
- /* other statements */
- case SQL_DIAG_ALTER_TABLE:
- case SQL_DIAG_CREATE_TABLE:
- case SQL_DIAG_CREATE_VIEW:
- case SQL_DIAG_DROP_TABLE:
- case SQL_DIAG_DROP_VIEW:
- case SQL_DIAG_CREATE_INDEX:
- case SQL_DIAG_DROP_INDEX:
- case SQL_DIAG_DYNAMIC_DELETE_CURSOR:
- case SQL_DIAG_DYNAMIC_UPDATE_CURSOR:
- case SQL_DIAG_GRANT:
- case SQL_DIAG_REVOKE:
- ndbout << "Operation successful" << endl;
- break;
- /* implementation-defined statement */
- default:
- (void)printf("Unknown Statement type=%ld\n", stmttype);
- break;
- }
-
- /* free data buffers */
- for (int i=0; i<nresultcols; i++) {
- (void)free(data[i]);
- }
-
- SQLFreeHandle(SQL_HANDLE_STMT, hstmt); // free statement handle
- return(0);
-}
-
-/**************************************************************************
- * ------------------------------------------------------------------------
- * MODULE: Help
- * ------------------------------------------------------------------------
- **************************************************************************/
-
-void print_help() {
- ndbout << "Commands:" << endl
- << "set Print currect settings" << endl
- << "set trace N Set NDB ODBC trace level to N (0-5)" << endl
- << "set autocommit on Commit each statement (default)" << endl
- << "set autocommit off Use explicit commit/rollback - may time out!" << endl
- << "commit Commit changes to database" << endl
- << "rollback Rollback (undo) any changes" << endl
- << "whenever sqlerror Define action: exit or continue (default)" << endl
- << endl
- << "help Print this help" << endl
- << "help create Print create table examples" << endl
- << "help insert Print insert examples" << endl
- << "help select Print select examples" << endl
- << "help delete Print delete examples" << endl
- << "help update Print update examples" << endl
- << "help virtual Print help on NDB ODBC virtual tables" << endl
- << "list tables Lists all table names" << endl
- << endl
- << "All other commands are sent to the NDB ODBC SQL executor"
- << endl << endl;
-}
-
-void print_help_create() {
- ndbout << "Create Table Examples" << endl << endl
- << "create table t ( a integer not null, b char(20) not null," << endl
- << " c float, primary key(a, b) )" << endl
- << "create table t ( ndb$tid bigint unsigned primary key," << endl
- << " b char(20) not null, c float )" << endl
- << "create table t ( a int auto_increment primary key," << endl
- << " b char(20) not null, c float )" << endl
- << "create table t ( a int primary key," << endl
- << " b int default 100 )" << endl
- << endl
- << "For more information read NDB Cluster ODBC Manual."
- << endl;
-}
-
-void print_help_insert() {
- ndbout << "Insert Examples" << endl << endl
- << "insert into t(a, c) values (123, 'abc')" << endl
- << "insert into t1(a, c) select a + 10 * b, c from t2" << endl
- << "insert into t values(null, 'abc', 1.23)" << endl
- << "insert into t(b, c) values('abc', 1.23)" << endl
- << endl
- << "For more information read NDB Cluster ODBC Manual."
- << endl;
-}
-
-void print_help_select() {
- ndbout << "Select Examples" << endl << endl
- << "select a + b * c from t where a <= b + c and (b > c or c > 10)"
- << endl
- << "select a.x, b.y, c.z from t1 a, t2 b, t2 c where a.x + b.y < c.z"
- << endl
- << "select * from t1, t2 where a1 > 5 order by b1 + b2, c1 desc"
- << endl
- << "select count(*), max(a), 1 + sum(b) + avg(c * d) from t" << endl
- << "select * from t where a < 10 or b > 10" << endl
- << "select * from t where pk = 5 and b > 10" << endl
- << "select * from t1, t2, t3 where t1.pk = t2.x and t2.pk = t3.y"
- << endl << endl
- << "For more information read NDB Cluster ODBC Manual."
- << endl;
-}
-
-void print_help_update() {
- ndbout << "Update and Delete Examples" << endl << endl
- << "update t set a = b + 5, c = d where c > 10" << endl
- << "update t set a = b + 5, c = d where pk = 5 and c > 10" << endl
- << "update t set a = 5, c = 7 where pk = 5" << endl
- << "delete from t where c > 10" << endl
- << "delete from t where pk = 5 and c > 10" << endl
- << "delete from t where pk = 5" << endl
- << endl
- << "For more information read NDB Cluster ODBC Manual."
- << endl;
-}
-
-void print_help_virtual() {
- ndbout << "Virtual tables" << endl << endl
- << "* DUAL"
- << " a 1-row table - example: select SYSDATE from DUAL" << endl
- << "* ODBC$TYPEINFO" << endl
- << " corresponds to SQLGetTypeInfo" << endl
- << "* ODBC$TABLES" << endl
- << " corresponds to SQLTables (ordered by NDB table id)" << endl
- << "* ODBC$COLUMNS" << endl
- << " corresponds to SQLColumns (ordered by NDB table id)" << endl
- << "* ODBC$PRIMARYKEYS" << endl
- << " corresponds to SQLPrimaryKeys (ordered by NDB table id)" << endl
- << endl
- << "For more information read NDB Cluster ODBC Manual."
- << endl;
-}
-
-/**************************************************************************
- * ------------------------------------------------------------------------
- * MODULE: Main
- * ------------------------------------------------------------------------
- **************************************************************************/
-
-int main(int argc, const char** argv)
-{
- ndb_init();
- const char* usage = "Usage: ndbsql [-h] [-d dsn] [-f file] [stmt]\n-h help\n-d <database name or connect string>\n-f <file name> batch mode\nstmt single SQL statement\n";
- const char* dsn = "TEST_DB";
- bool helpFlg = false, batchMode = false;
- const char* fileName = 0;
- FILE* inputFile = stdin;
- const char* singleStmt = 0;
-
- s_readBuf = (char*)malloc(s_bufSize);
- while (++argv, --argc > 0) {
- const char* arg = argv[0];
- if (arg[0] != '-')
- break;
- if (strcmp(arg, "-d") == 0) {
- if (++argv, --argc > 0) {
- dsn = argv[0];
- continue;
- }
- }
- if (strcmp(arg, "-h") == 0) {
- helpFlg = true;
- continue;
- }
- if (strcmp(arg, "-f") == 0) {
- if (++argv, --argc > 0) {
- fileName = argv[0];
- continue;
- }
- }
- ndbout << usage;
- return 1;
- }
- if (helpFlg) {
- ndbout << usage << "\n";
- print_help();
- return 0;
- }
- if (fileName != 0) {
- if (argc > 0) {
- ndbout << usage;
- return 1;
- }
- if ((inputFile = fopen(fileName, "r")) == 0) {
- ndbout << "Could not read file " << fileName << ": " << strerror(errno) << endl;
- return 1;
- }
- batchMode = true;
- }
- if (argc > 0) {
- singleStmt = argv[0];
- batchMode = true;
- }
- if (! batchMode)
- ndbout << "NDB Cluster NDB SQL -- A simple SQL Command-line Interface\n\n";
-
- Con con(dsn);
- if (do_connect(con) < 0)
- return 1;
- if (! batchMode)
- ndbout << "Terminate SQL statements with a semi-colon ';'\n";
-
- char* line = 0;
- char* line2 = 0;
- char* line3 = 0;
- unsigned lineno = 0;
- bool has_semi;
- bool exit_on_error = false;
- int exit_code = 0;
- while (1) {
- free(line);
- line = 0;
- lineno = 0;
-
-more_lines:
- free(line2);
- free(line3);
- line2 = line3 = 0;
- lineno++;
- has_semi = false;
- char prompt[20];
- if (lineno == 1)
- strcpy(prompt, "SQL> ");
- else
- sprintf(prompt, "%4d ", lineno);
- if (singleStmt != 0) {
- line = strdup(singleStmt);
- int n = strlen(line);
- while (n > 0 && isspace(line[n - 1])) {
- line[--n] = 0;
- }
- if (n > 0 && line[n - 1] == ';')
- line[n - 1] = 0;
- has_semi = true; // regardless
- } else {
- const char *line1 = readline_gets(prompt, batchMode, inputFile);
- if (line1 != 0) {
- if (line == 0)
- line = strdup(line1);
- else {
- line = (char*)realloc(line, strlen(line) + 1 + strlen(line1) + 1);
- strcat(line, "\n");
- strcat(line, line1);
- }
- if (batchMode)
- ndbout << prompt << line1 << endl;
- } else {
- if (! batchMode)
- ndbout << endl;
- if (line != 0)
- ndbout << "Ignored unterminated SQL statement" << endl;
- break;
- }
- }
-
- line2 = (char*)malloc(strlen(line) + 1);
- {
- char* p = line2;
- char* q = line;
- bool str = false;
- while (*q != 0) {
- if (*q == '\'') {
- str = !str;
- *p++ = *q++;
- } else if (!str && *q == '-' && *(q + 1) == '-') {
- while (*q != 0 && *q != '\n')
- q++;
- } else
- *p++ = *q++;
- }
- *p = 0;
- int n = strlen(line2);
- while (n > 0 && isspace(line2[n - 1]))
- line2[--n] = 0;
- if (n > 0 && line2[n - 1] == ';') {
- line2[--n] = 0;
- has_semi = true;
- }
- }
- line3 = strdup(line2);
- char* tok[10];
- int ntok = 0;
- tok[ntok] = strtok(line3, " ");
- while (tok[ntok] != 0) {
- ntok++;
- if (ntok == 10)
- break;
- tok[ntok] = strtok(0, " ");
- }
- if (ntok == 0)
- continue;
-
- if (!strcasecmp(tok[0], "help") || !strcmp(tok[0], "?")) {
- if (ntok != 2)
- print_help();
- else if (!strcasecmp(tok[1], "create"))
- print_help_create();
- else if (!strcasecmp(tok[1], "insert"))
- print_help_insert();
- else if (strcasecmp(tok[1], "select"))
- print_help_select();
- else if (!strcasecmp(tok[1], "delete"))
- print_help_update();
- else if (!strcasecmp(tok[1], "update"))
- print_help_update();
- else if (!strcasecmp(tok[1], "virtual"))
- print_help_virtual();
- else
- print_help();
- continue;
- }
-
- if (!strcasecmp(tok[0], "list")) {
- if (ntok == 2 && !strcasecmp(tok[1], "tables")) {
- free(line2);
- line2 = strdup("SELECT TABLE_NAME FROM ODBC$TABLES");
- has_semi = true;
- } else {
- ndbout << "Invalid list option - try help" << endl;
- continue;
- }
- }
-
- if (ntok == 1 && !strcasecmp(tok[0], "quit"))
- break;
- if (ntok == 1 && !strcasecmp(tok[0], "exit"))
- break;
- if (ntok == 1 && !strcasecmp(tok[0], "bye"))
- break;
-
- if (!strcasecmp(tok[0], "set")) {
- if (ntok == 1) {
- char* p;
- p = getenv("NDB_ODBC_TRACE");
- ndbout << "Trace level is " << (p ? atoi(p) : 0) << endl;
- int ret = get_autocommit(con);
- if (ret != -1)
- ndbout << "Autocommit is " << (ret == SQL_AUTOCOMMIT_ON ? "on" : "off") << endl;
- } else if (ntok == 3 && !strcasecmp(tok[1], "trace")) {
- static char env[40];
- int n = tok[2] ? atoi(tok[2]) : 0;
- sprintf(env, "NDB_ODBC_TRACE=%d", n);
- putenv(env);
- ndbout << "Trace level set to " << n << endl;
- } else if (ntok == 3 && !strcasecmp(tok[1], "autocommit")) {
- if (tok[2] && !strcasecmp(tok[2], "on")) {
- int ret = set_autocommit(con, SQL_AUTOCOMMIT_ON);
- if (ret != -1)
- ndbout << "Autocommit set to ON" << endl;
- } else if (tok[2] && !strcasecmp(tok[2], "off")) {
- int ret = set_autocommit(con, SQL_AUTOCOMMIT_OFF);
- if (ret != -1)
- ndbout << "Autocommit set to OFF - transaction may time out" << endl;
- } else {
- ndbout << "Invalid autocommit option - try help" << endl;
- }
- } else {
- ndbout << "Invalid set command - try help" << endl;
- }
- continue;
- }
-
- if (ntok >= 2 &&
- !strcasecmp(tok[0], "whenever") && !strcasecmp(tok[1], "sqlerror")) {
- if (ntok == 3 && !strcasecmp(tok[2], "exit"))
- exit_on_error = true;
- else if (ntok == 3 && !strcasecmp(tok[2], "continue"))
- exit_on_error = false;
- else {
- ndbout << "Invalid whenever clause - try help" << endl;
- }
- continue;
- }
-
- if (!strcasecmp(tok[0], "commit")) {
- if (ntok == 1) {
- if (do_commit(con) != -1)
- ndbout << "Commit done" << endl;
- else {
- exit_code = 1;
- if (exit_on_error) {
- ndbout << "Exit on error" << endl;
- break;
- }
- }
- } else {
- ndbout << "Invalid commit command - try help" << endl;
- }
- continue;
- }
-
- if (!strcasecmp(tok[0], "rollback")) {
- if (ntok == 1) {
- if (do_rollback(con) != -1)
- ndbout << "Rollback done" << endl;
- else {
- exit_code = 1;
- if (exit_on_error) {
- ndbout << "Exit on error" << endl;
- break;
- }
- }
- } else {
- ndbout << "Invalid commit command - try help" << endl;
- }
- continue;
- }
-
- if (! has_semi)
- goto more_lines;
- if (do_stmt(con, line2) != 0) {
- exit_code = 1;
- if (exit_on_error) {
- ndbout << "Exit on error" << endl;
- break;
- }
- }
- if (singleStmt)
- break;
- }
- do_disconnect(con);
- return exit_code;
-}
-
-// vim: set sw=2 et:
diff --git a/ndb/tools/old_dirs/copy_tab/Makefile b/ndb/tools/old_dirs/copy_tab/Makefile
deleted file mode 100644
index 4ad33a26652..00000000000
--- a/ndb/tools/old_dirs/copy_tab/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-include .defs.mk
-
-TYPE := ndbapitest
-
-BIN_TARGET := copy_tab
-
-SOURCES := copy_tab.cpp
-
-include $(NDB_TOP)/Epilogue.mk
diff --git a/ndb/tools/old_dirs/cpcc/Makefile b/ndb/tools/old_dirs/cpcc/Makefile
deleted file mode 100644
index 78f8c61e464..00000000000
--- a/ndb/tools/old_dirs/cpcc/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-include .defs.mk
-
-TYPE = util
-
-BIN_TARGET = ndb_cpcc
-
-SOURCES = cpcc.cpp
-OBJECTS_LOC = $(call fixpath,$(NDB_TOP)/src/mgmclient/CpcClient.o)
-
-CFLAGS_cpcc.cpp := -I$(call fixpath,$(NDB_TOP)/src/mgmclient)
-
-include $(NDB_TOP)/Epilogue.mk
diff --git a/ndb/tools/old_dirs/create_index/Makefile b/ndb/tools/old_dirs/create_index/Makefile
deleted file mode 100644
index 38f2df970c4..00000000000
--- a/ndb/tools/old_dirs/create_index/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-include .defs.mk
-
-TYPE := ndbapitest
-
-BIN_TARGET := create_index
-
-# Source files of non-templated classes (.C files)
-SOURCES = create_index.cpp
-
-include $(NDB_TOP)/Epilogue.mk
-
diff --git a/ndb/tools/old_dirs/delete_all/Makefile b/ndb/tools/old_dirs/delete_all/Makefile
deleted file mode 100644
index 1cae240eb8f..00000000000
--- a/ndb/tools/old_dirs/delete_all/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-include .defs.mk
-
-TYPE := ndbapitest
-
-BIN_TARGET := delete_all
-
-SOURCES := delete_all.cpp
-
-include $(NDB_TOP)/Epilogue.mk
diff --git a/ndb/tools/old_dirs/desc/Makefile b/ndb/tools/old_dirs/desc/Makefile
deleted file mode 100644
index 614984cfd35..00000000000
--- a/ndb/tools/old_dirs/desc/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-include .defs.mk
-
-TYPE := ndbapitest
-
-BIN_TARGET := desc
-
-SOURCES := desc.C
-
-include $(NDB_TOP)/Epilogue.mk
diff --git a/ndb/tools/old_dirs/drop_index/Makefile b/ndb/tools/old_dirs/drop_index/Makefile
deleted file mode 100644
index 969bee51064..00000000000
--- a/ndb/tools/old_dirs/drop_index/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-include .defs.mk
-
-TYPE := ndbapitest
-
-BIN_TARGET := drop_index
-
-# Source files of non-templated classes (.C files)
-SOURCES = drop_index.cpp
-
-include $(NDB_TOP)/Epilogue.mk
-
diff --git a/ndb/tools/old_dirs/drop_tab/Makefile b/ndb/tools/old_dirs/drop_tab/Makefile
deleted file mode 100644
index d7b21fe982c..00000000000
--- a/ndb/tools/old_dirs/drop_tab/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-include .defs.mk
-
-TYPE := ndbapitest
-
-BIN_TARGET := drop_tab
-
-# Source files of non-templated classes (.C files)
-SOURCES = drop_tab.cpp
-
-include $(NDB_TOP)/Epilogue.mk
-
diff --git a/ndb/tools/old_dirs/list_tables/Makefile b/ndb/tools/old_dirs/list_tables/Makefile
deleted file mode 100644
index b60f161ee68..00000000000
--- a/ndb/tools/old_dirs/list_tables/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-include .defs.mk
-
-TYPE = ndbapitest
-
-BIN_TARGET = list_tables
-
-SOURCES = listTables.cpp
-
-include $(NDB_TOP)/Epilogue.mk
diff --git a/ndb/tools/old_dirs/ndbnet/Makefile.PL b/ndb/tools/old_dirs/ndbnet/Makefile.PL
deleted file mode 100644
index 4b27a17de15..00000000000
--- a/ndb/tools/old_dirs/ndbnet/Makefile.PL
+++ /dev/null
@@ -1,158 +0,0 @@
-# -*- perl -*-
-
-use strict;
-use Config;
-use ExtUtils::MakeMaker qw(WriteMakefile);
-use Test::Harness;
-
-require 5.005;
-
-my $base;
-if ($base ||= $ENV{NDB_BASE}) {
- warn "Using NDB_BASE=$base\n";
-}
-$base or die "FATAL: need env.variable NDB_BASE\n";
-
-my $top;
-if ($top ||= $ENV{NDB_TOP}) {
- warn "Using NDB_TOP=$top\n";
-}
-$top or die "FATAL: need env.variable NDB_TOP\n";
-
-my @scripts = qw(ndbnet.pl ndbnetd.pl);
-
-for my $f (@scripts) {
- my $p = $f;
- $p =~ s/\.pl$//;
- unlink("$p.sh");
- open(G, ">$p.sh") or die "$p.sh: $!";
- if ($Config{osname} ne 'MSWin32') {
- print G <<END;
-#! /bin/sh
-
-# installed in \$NDB_BASE
-# selects which $p to run (normally from latest release)
-# created in source directory by "make install-base"
-
-NDB_BASE=$base
-export NDB_BASE
-
-PATH=\$NDB_BASE/bin:\$PATH
-export PATH
-
-LD_LIBRARY_PATH=\$NDB_BASE/lib:\$LD_LIBRARY_PATH
-export LD_LIBRARY_PATH
-
-PERL5LIB=\$NDB_BASE/lib/perl5:\$PERL5LIB
-export PERL5LIB
-
-NDB_TOP=$top
-export NDB_TOP
-
-PATH=\$NDB_TOP/bin:\$PATH
-export PATH
-
-LD_LIBRARY_PATH=\$NDB_TOP/lib:\$LD_LIBRARY_PATH
-export LD_LIBRARY_PATH
-
-PERL5LIB=\$NDB_TOP/lib/perl5:\$PERL5LIB
-export PERL5LIB
-
-exec perl \$NDB_TOP/lib/perl5/$p.pl "\$@"
-END
- } else {
- print G <<END;
-rem installed in \$NDB_BASE
-rem selects which $p to run (normally from latest release)
-rem created in source directory by "make install-base"
-
-set NDB_BASE=$base
-set PATH=%NDB_BASE%\\bin;%PATH%
-set PERL5LIB=%NDB_BASE%\\lib\\perl5;%PERL5LIB%
-set NDB_TOP=$top
-set PATH=%NDB_TOP%\\bin;%PATH%
-set PERL5LIB=%NDB_TOP%\\lib\\perl5;%PERL5LIB%
-perl %NDB_TOP%\\lib\\perl5\\$p.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
-END
- }
- close G;
-}
-
-unshift(@INC, 'lib');
-$main::onlymodules = 1;
-require lib::NDB::Util;
-require lib::NDB::Net;
-require lib::NDB::Run;
-
-my @modules = (
- q(NDB::Util),
- @NDB::Util::modules,
- q(NDB::Net),
- @NDB::Net::modules,
- q(NDB::Run),
- @NDB::Run::modules,
-);
-
-my @modulepaths = map { s!::!/!g; s!$!.pm!; $_ } @modules;
-
-my %pm = ();
-for my $pl (@scripts) {
- $pm{"$pl"} = "\$(INST_LIBDIR)/$pl";
-}
-for my $pm (@modulepaths) {
- $pm{"lib/$pm"} = "\$(INST_LIBDIR)/$pm";
-}
-
-WriteMakefile(
- NAME=> 'NDB',
- PM=> \%pm,
- EXE_FILES=> [ qw(ndbrun) ],
-# install
- PREFIX=> $top,
- LIB=> "$top/lib/perl5",
-);
-
-sub MY::postamble {
- my $mk = "";
- $mk .= "\n" . <<END;
-# NDB make targets
-libs: all install
-bins:
-links:
-depend:
-clean_dep:
-#clean:
-cleanall:
-tidy:
-#distclean:
-check:
- perl -Ilib -cw -e "use NDB::Util"
- perl -Ilib -cw -e "use NDB::Net"
- perl -Ilib -cw -e "use NDB::Run"
- perl -Ilib -cw ndbnetd.pl
- perl -Ilib -cw ndbnet.pl
-END
- if ($Config{osname} ne 'MSWin32') {
- $mk .= "\n" . <<END;
-# install startup scripts to \$NDB_BASE
-install-base:
- test "\$\$NDB_BASE"
- mkdir -p \$\$NDB_BASE/bin
- rm -f \$\$NDB_BASE/bin/ndbnet
- cp -p ndbnet.sh \$\$NDB_BASE/bin/ndbnet
- chmod +x \$\$NDB_BASE/bin/ndbnet
- rm -f \$\$NDB_BASE/bin/ndbnetd
- cp -p ndbnetd.sh \$\$NDB_BASE/bin/ndbnetd
- chmod +x \$\$NDB_BASE/bin/ndbnetd
-END
- } else {
- $mk .= "\n" . <<END;
-install-base:
- copy ndbnet.sh $base\\bin\\ndbnet.bat
- copy ndbnetd.sh $base\\bin\\ndbnetd.bat
-END
- }
- return $mk;
-}
-
-1;
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net.pm
deleted file mode 100644
index 3b7b16bb3cf..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net.pm
+++ /dev/null
@@ -1,42 +0,0 @@
-package NDB::Net;
-
-use strict;
-use Carp;
-require Exporter;
-
-use NDB::Util;
-
-use vars qw(@ISA @EXPORT @EXPORT_OK);
-@ISA = qw(Exporter);
-
-use vars qw(@modules);
-@modules = qw(
- NDB::Net::Base
- NDB::Net::Client
- NDB::Net::Command
- NDB::Net::Config
- NDB::Net::Database
- NDB::Net::Env
- NDB::Net::Node
- NDB::Net::NodeApi
- NDB::Net::NodeDb
- NDB::Net::NodeMgmt
- NDB::Net::Server
- NDB::Net::ServerINET
- NDB::Net::ServerUNIX
-);
-
-return 1 if $main::onlymodules;
-
-for my $module (@modules) {
- eval "require $module";
- $@ and confess "$module $@";
-}
-
-for my $module (@modules) {
- eval "$module->initmodule";
- $@ and confess "$module $@";
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Base.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Base.pm
deleted file mode 100644
index 900446138e8..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Base.pm
+++ /dev/null
@@ -1,12 +0,0 @@
-package NDB::Net::Base;
-
-use strict;
-use Carp;
-
-require NDB::Util::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Util::Base);
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Client.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Client.pm
deleted file mode 100644
index d34a18d63af..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Client.pm
+++ /dev/null
@@ -1,252 +0,0 @@
-package NDB::Net::Client;
-
-use strict;
-use Carp;
-use POSIX();
-use Socket;
-
-require NDB::Net::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Net::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-my %clientcache = ();
-my $clientid = 0;
-
-NDB::Net::Client->attributes(
- id => sub { /^\d+$/ },
- addtime => sub { /^\d+$/ },
- state => sub { /^(new|input|cmd)$/ },
- socket => sub { ref && $_->isa('NDB::Util::Socket') },
- serversocket => sub { ref && $_->isa('NDB::Util::Socket') },
- serverlock => sub { ref && $_->isa('NDB::Util::Lock') },
- event => sub { ref && $_->isa('NDB::Util::Event') },
- context => sub { defined },
- cmd => sub { ref && $_->isa('NDB::Net::Command') },
-);
-
-sub desc {
- my $client = shift;
- my $id = $client->getid;
- my $fileno = fileno($client->getsocket->getfh);
- return "client $id fd=$fileno";
-}
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $client = $class->SUPER::new(%attr);
- $client->setid(++$clientid)
- or $log->push, return undef;
- $client->setaddtime(time)
- or $log->push, return undef;
- $client->setstate(q(new))
- or $log->push, return undef;
- $client->setsocket($attr{socket})
- or $log->push, return undef;
- $client->setserversocket($attr{serversocket})
- or $log->push, return undef;
- $client->setserverlock($attr{serverlock})
- or $log->push, return undef;
- $client->setevent($attr{event})
- or $log->push, return undef;
- $client->setcontext($attr{context})
- or $log->push, return undef;
- $log->put("add")->push($client)->info;
- $clientcache{$client->getid} = $client;
- return $client;
-}
-
-sub listall {
- my $class = shift;
- my $list = [];
- for my $id (sort { $a <=> $b } keys %clientcache) {
- my $client = $clientcache{$id};
- push(@$list, $client);
- }
- return $list;
-}
-
-sub exists {
- my $client = shift;
- return exists($clientcache{$client->getid});
-}
-
-sub delete {
- my $client = shift;
- $log->put("delete")->push($client)->info;
- $client->getevent->clear($client->getsocket, 'r');
- $client->getsocket->close;
- delete $clientcache{$client->getid} or confess 'oops';
-}
-
-sub deleteother {
- my $thisclient = shift;
- for my $id (sort { $a <=> $b } keys %clientcache) {
- my $client = $clientcache{$id};
- if ($client ne $thisclient) {
- $client->delete;
- }
- }
-}
-
-sub deleteall {
- my $class = shift;
- for my $id (sort { $a <=> $b } keys %clientcache) {
- my $client = $clientcache{$id};
- $client->delete;
- }
-}
-
-# processing
-
-sub processnew {
- my $client = shift;
- @_ == 0 or confess 0+@_;
- $log->put("process new")->push($client)->debug;
- $client->getevent->set($client->getsocket, 'r');
- $log->attachuser(io => $client->getsocket);
- $client->setstate(q(input))
- or $log->push, return undef;
- return 1;
-}
-
-sub processinput {
- my $client = shift;
- @_ == 0 or confess 0+@_;
- $log->put("process input")->push($client)->debug;
- my $line = $client->getsocket->readline;
- if (! defined($line)) {
- $log->push;
- return undef;
- }
- if (length($line) == 0) {
- if ($client->getsocket->getreadend) {
- $log->put("no command")->push($client);
- return undef;
- }
- $log->put("wait for input")->push($client)->debug;
- return 1;
- }
- $log->put("got line: $line")->push($client)->info;
- $client->getevent->clear($client->getsocket, 'r');
- my $cmd = NDB::Net::Command->new(line => $line)
- or $log->push, return undef;
- $log->put("command received")->push($cmd)->push($client)->debug;
- $client->setcmd($cmd)
- or $log->push, return undef;
- $client->setstate(q(cmd))
- or $log->push, return undef;
- return 1;
-}
-
-sub processcmd {
- my $client = shift;
- @_ == 0 or confess 0+@_;
- $log->put("process cmd")->push($client)->debug;
- my $cmd = $client->getcmd;
- my $context = $client->getcontext;
- my $name_fg = "cmd_" . $cmd->getname . "_fg";
- my $name_bg = "cmd_" . $cmd->getname . "_bg";
- my $fg = $context->can($name_fg);
- my $bg = $context->can($name_bg);
- unless ($fg || $bg) {
- $log->put("%s: unimplemented", $cmd->getname);
- return undef;
- }
- my $ret;
- if ($fg) {
- $log->put($name_fg)->push($cmd)->push($client)->info;
- if (! ref($context)) {
- $ret = &$fg($cmd);
- }
- else {
- $ret = &$fg($context, $cmd);
- }
- defined($ret)
- or $log->push, return undef;
- if (! $bg) {
- $log->push($name_fg)->putvalue($ret)->user;
- return 1;
- }
- }
- if ($bg) {
- $log->put($name_bg)->push($cmd)->push($client)->info;
- my $pid = fork;
- if (! defined($pid)) {
- $log->put("fork failed: $!");
- return undef;
- }
- if ($pid == 0) {
- $client->getserversocket->close;
- $client->getserverlock->close;
- $client->deleteother;
- if (! ref($context)) {
- $ret = &$bg($cmd);
- }
- else {
- $ret = &$bg($context, $cmd);
- }
- if (! $ret) {
- $log->push($client)->error;
- $log->push($name_bg)->putvalue(undef)->user;
- exit(1);
- }
- $log->push($name_bg)->putvalue($ret)->user;
- exit(0);
- }
- }
- return 1;
-}
-
-sub process {
- my $client = shift;
- @_ == 0 or confess 0+@_;
- try: {
- if ($client->getstate eq q(new)) {
- $client->processnew
- or $log->push, last try;
- }
- if ($client->getstate eq q(input)) {
- $client->processinput
- or $log->push, last try;
- }
- if ($client->getstate eq q(cmd)) {
- $client->processcmd
- or $log->push, last try;
- $log->detachuser;
- $client->delete;
- return 1;
- }
- return 1;
- }
- $log->push($client)->error;
- $log->putvalue(undef)->user;
- $log->detachuser;
- $client->delete;
- return undef;
-}
-
-sub processall {
- my $class = shift;
- @_ == 0 or confess 0+@_;
- my $list = $class->listall;
- for my $client (@$list) {
- $client->process;
- }
- while ((my $pid = waitpid(-1, &POSIX::WNOHANG)) > 0) {
- $log->put("harvested pid=$pid")->info;
- }
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Command.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Command.pm
deleted file mode 100644
index 30145d09fa9..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Command.pm
+++ /dev/null
@@ -1,641 +0,0 @@
-package NDB::Net::Command;
-
-use strict;
-use Carp;
-use Getopt::Long;
-use Text::ParseWords ();
-use Text::Tabs ();
-
-require NDB::Net::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Net::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-my($cmdtab, $aliastab);
-
-NDB::Net::Command->attributes(
- name => sub { /^\s*\w+\b/ },
- argv => sub { ref eq 'ARRAY' },
- optspec => sub { ref eq 'ARRAY' },
- argspec => sub { /^\d+$/ || ref eq 'CODE' },
- short => sub { defined && ! ref },
- help => sub { defined && ! ref },
- opts => sub { ref eq 'HASH' },
- args => sub { ref eq 'ARRAY' },
-);
-
-sub desc {
- my $cmd = shift;
- return "command " . $cmd->getname("?");
-};
-
-sub processname {
- my $cmd = shift;
- @_ == 0 or confess 0+@_;
- my $cmdargv = $cmd->getargv;
- my $name = shift(@$cmdargv);
- my %seen = ();
- while ((my $entry) = grep($name eq $_->{name}, @$aliastab)) {
- $seen{$name}++ && last;
- unshift(@$cmdargv, split(' ', $entry->{value}));
- $name = shift(@$cmdargv);
- }
- if ((my $entry) = grep($_->{name} eq $name, @$cmdtab)) {
- $cmd->setname($entry->{name})
- or $log->push, return undef;
- $cmd->setoptspec($entry->{optspec})
- or $log->push, return undef;
- $cmd->setargspec($entry->{argspec})
- or $log->push, return undef;
- }
- else {
- $log->put("$name: undefined")->push($cmd);
- return undef;
- }
- return 1;
-}
-
-sub getopttype {
- my $cmd = shift;
- my($key) = @_;
- if (grep(/^$key$/, @{$cmd->getoptspec})) {
- return 1;
- }
- if (grep(/^$key=/, @{$cmd->getoptspec})) {
- return 2;
- }
- return undef;
-}
-
-sub processargv {
- my $cmd = shift;
- @_ == 0 or confess 0+@_;
- my $cmdargv = $cmd->getargv;
- my @newargv = ();
- while (@$cmdargv) {
- my $v = shift(@$cmdargv);
- if (! defined($v)) {
- next;
- }
- if (ref($v) eq 'ARRAY') {
- unshift(@$cmdargv, @$v); # push back
- next;
- }
- if (ref($v) eq 'HASH') {
- for my $k (sort keys %$v) {
- if ($cmd->getopttype($k) == 1) {
- push(@newargv, "--$k");
- next;
- }
- if ($cmd->getopttype($k) == 2) {
- push(@newargv, "--$k", $v->{$k});
- next;
- }
- $log->put("$k: undefined option")->push($cmd);
- return undef;
- }
- next;
- }
- if (ref($v)) {
- confess 'oops';
- }
- push(@newargv, $v);
- }
- push(@$cmdargv, @newargv);
- return 1;
-}
-
-sub processopts {
- my $cmd = shift;
- @_ == 0 or confess 0+@_;
- my $cmdargv = $cmd->getargv;
- local(@ARGV) = @$cmdargv;
- try: {
- local $SIG{__WARN__} = sub {
- my $errstr = "@_";
- while (chomp($errstr)) {}
- $log->put($errstr)->push($cmd);
- };
- $cmd->setopts({})
- or $log->push, return undef;
- Getopt::Long::Configure(qw(
- default no_getopt_compat no_ignore_case
- ));
- GetOptions($cmd->getopts, @{$cmd->getoptspec})
- or return undef;
- }
- $cmd->setargs([ @ARGV ])
- or $log->push, return undef;
- return 1;
-}
-
-sub processargs {
- my $cmd = shift;
- @_ == 0 or confess 0+@_;
- my $cmdargs = $cmd->getargs;
- if ($cmd->getargspec =~ /^\d+$/) {
- if (@$cmdargs != $cmd->getargspec) {
- $log->put("invalid arg count %d != %d",
- scalar(@$cmdargs), $cmd->getargspec)->push($cmd);
- return undef;
- }
- }
- if (ref($cmd->getargspec) eq 'CODE') {
- local $_ = scalar(@$cmdargs);
- if (! &{$cmd->getargspec}()) {
- $log->put("invalid arg count %d",
- scalar(@$cmdargs))->push($cmd);
- return undef;
- }
- }
- return 1;
-}
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my %attr = @_;
- my $cmd = $class->SUPER::new(%attr);
- my $cmdargv = [];
- $cmd->setargv($cmdargv)
- or $log->push, return undef;
- my $line = $attr{line};
- my $argv = $attr{argv};
- defined($line) != defined($argv) # exactly one
- or confess 'oops';
- if (defined($line)) {
- ! ref($line) or confess 'oops';
- push(@$cmdargv, Text::ParseWords::shellwords($line));
- }
- if (defined($argv)) {
- ref($argv) eq 'ARRAY' or confess 'oops';
- push(@$cmdargv, @$argv);
- }
- if (! @$cmdargv) {
- $log->put("empty command");
- return undef;
- }
- $cmd->processname
- or $log->push, return undef;
- $cmd->processargv
- or $log->push, return undef;
- $cmd->processopts
- or $log->push, return undef;
- $cmd->processargs
- or $log->push, return undef;
- return $cmd;
-}
-
-sub getline {
- my $cmd = shift;
- @_ == 0 or confess 0+@_;
- my @text = ($cmd->getname);
- for my $k (sort keys %{$cmd->getopts}) {
- if ($cmd->getopttype($k) == 1) {
- push(@text, "--$k");
- next;
- }
- if ($cmd->getopttype($k) == 2) {
- push(@text, "--$k", quotemeta($cmd->getopts->{$k}));
- next;
- }
- confess 'oops';
- }
- for my $s (@{$cmd->getargs}) {
- push(@text, quotemeta($s));
- }
- return "@text";
-}
-
-sub setopt {
- my $cmd = shift;
- my($key, $value) = @_;
- if ($cmd->getopttype($key) == 1) {
- @_ == 1 or confess 0+@_;
- $cmd->getopts->{$key} = 1;
- }
- elsif ($cmd->getopttype($key) == 2) {
- @_ == 2 or confess 0+@_;
- $cmd->getopts->{$key} = $value;
- }
- else {
- confess 'oops';
- }
-}
-
-sub getopt {
- my $cmd = shift;
- @_ == 1 or confess 0+@_;
- my($key) = @_;
- $cmd->getopttype($key) or confess 'oops';
- return $cmd->getopts->{$key};
-}
-
-sub setarg {
- my $cmd = shift;
- @_ == 2 or confess 0+@_;
- my($idx, $value) = @_;
- $cmd->getargs->[$idx] = $value;
-}
-
-sub getarg {
- my $cmd = shift;
- @_ == 1 or confess 0+@_;
- my($idx) = @_;
- return $cmd->getargs->[$idx];
-}
-
-sub getarglist {
- my $cmd = shift;
- @_ == 1 or confess 0+@_;
- my($idx) = @_;
- my @args = @{$cmd->getargs};
- @args = @args[$idx..$#args];
- return \@args;
-}
-
-sub helptext {
- my $cmd = shift;
- @_ <= 1 or confess 0+@_;
- my $name = $cmd->getargs->[0];
- my $text = "";
- my $indent = " "x4;
- if (defined($name)) {
- for my $entry (@$aliastab) {
- if ($entry->{name} eq $name) {
- $text .= "alias $name=\"$entry->{value}\"\n";
- ($name) = split(' ', $entry->{value});
- last;
- }
- }
- }
- else {
- $text .= "COMMANDS\n";
- }
- for my $entry (@$cmdtab) {
- if (defined($name)) {
- if ($entry->{name} eq $name) {
- $text .= uc($name) . "\n";
- for my $t (split(/\n/, $entry->{help})) {
- $text .= $indent;
- $text .= Text::Tabs::expand($t) . "\n";
- }
- last;
- }
- }
- else {
- $text .= $indent;
- $text .= sprintf("%-16s%s\n", $entry->{name}, $entry->{short});
- }
- }
- if (! $text) {
- $log->put("$name: undefined");
- return undef;
- }
- return $text;
-}
-
-sub aliastext {
- my $cmd = shift;
- @_ == 0 or confess 0+@_;
- my $text = "";
- my $indent = " "x4;
- $text .= "ALIASES\n";
- for my $entry (@$aliastab) {
- $text .= $indent;
- $text .= sprintf("%-16s%s\n", $entry->{name}, $entry->{value});
- }
- return $text;
-}
-
-# commands
-# name command name (unique)
-# optspec option spec in Getopt::Long style
-# argspec arg count (number or sub)
-# short one line summary
-# help long help text
-# opts options HASH (after parse)
-# args arguments ARRAY (after parse)
-
-$cmdtab = [
- {
- name => "help",
- optspec => [ qw() ],
- argspec => sub { $_[0] <= 1 },
- short => "print help (try: h h)",
- help => <<END,
-help [name]
-name command name or alias
-
-Print help summary or longer help text for one command.
-
-General:
-
-Options can be placed anywhere on command line and can be abbreviated.
-Example: "start db11 -i" instead of "start --init_rm db11".
-
-Several commands have internal option --local which makes current server
-do the work, instead of passing it to other servers. This option should
-not be used explicitly, except for testing.
-END
- },
- {
- name => "alias",
- optspec => [ qw() ],
- argspec => 0,
- short => "list aliases",
- help => <<END,
-alias
-
-List built-in aliases. New ones cannot be defined (yet).
-END
- },
- {
- name => "quit",
- optspec => [ qw() ],
- argspec => 0,
- short => "exit ndbnet",
- help => <<END,
-quit
-
-Exit ndbnet client.
-END
- },
- {
- name => "server",
- optspec => [ qw(all direct pass parallel script=s local) ],
- argspec => sub { $_ >= 1 },
- short => "net server commands",
- help => <<END,
-server action id... [options]
-action start restart stop ping
-id net server id from net config
---all do all servers listed in net config
---direct do not use a server
---pass pass current ndb environment to remote command
---parallel run in parallel when possible
---script path remote script instead of "ndbnetd"
---local for internal use by servers
-
-Each host needs one net server (ndbnetd). It should be started
-from latest ndb installation, for example at system boot time.
-A "server ping" is used to check that all servers are up (option
---all is added if no server ids are given).
-
-Other actions are mainly for testing. A "server start" tries to
-start servers via "ssh". This does not work if "ssh" is not allowed
-or if the remote command does not get right environment.
-
-Option --direct makes this ndbnet client do the work. It is assumed
-for "server start" and it requires that a local net config exists.
-Option --pass is useful in a homogeneous (NFS) environment.
-
-There are aliases "startserver" for "server start", etc.
-END
- },
- {
- name => "start",
- optspec => [ qw(init_rm nostart stop kill config old home=s clean proxy=s) ],
- argspec => 1,
- short => "start database",
- help => <<END,
-start dbname [options]
-dbname database name
---init_rm destroy existing database files on each node
---nostart for DB nodes only do "ndb -n"
---stop do "stop dbname" first
---kill do "kill dbname" first
---config create run config but start no processes
---old use existing config files
---home dir override home (product dir) from config
---clean passed to startnode
---proxy list generate proxy ports (read the source)
-
-Start a database as follows:
-
-- start mgmt servers on all mgmt nodes
-- start ndb processes on all db nodes
-- send "all start" to first mgmt server (redundant)
-- start processes on all api nodes (if runtype!="manual")
-
-Older database versions (v1.0) are started similarly except that there
-are no management servers.
-
-The --proxy option is used for testing network problems.
-END
- },
- {
- name => "startnode",
- optspec => [ qw(init_rm nostart config old run=s home=s local clean proxy=s) ],
- argspec => 2,
- short => "start database node",
- help => <<END,
-startnode dbname nodeid [options]
-dbname database name
-nodeid node number
---init_rm destroy existing database files (if db node)
---nostart if DB node only do "ndb -n"
---config create run config but start no processes
---old use existing config files
---run cmd run this shell command, default from config file
---home dir override home (product dir) from config
---local node must be local to this ndbnet server
---clean remove old node dir first
---proxy list processed by mgmt nodes, see "start" command
-
-Start the process on one database node. The node can be of any type
-(mgmt/db/api). If already running, does nothing.
-
-The --run option specifies a simple shell command (not pipeline etc).
-Defaults:
-
-- mgmt node => mgmtsrvr -p port -l Ndb.cfg -i config.txt -c config.bin
- where port comes from ndbnet.xml
-- db node => ndb
-- api node => based on ndbnet config, default empty
-
-The node server exits when the command exits (unless runtype is set to
-auto). Command exit status is not available.
-
-Used internally by db "start" command.
-END
- },
- {
- name => "stop",
- optspec => [ qw() ],
- argspec => 1,
- short => "stop database",
- help => <<END,
-stop dbname [options]
-dbname database name
-
-Stop a database as follows (see also "stopnode" command):
-
-- send SIGTERM to api processes, wait for them to exit
-- send "all stop" command to first mgmt server
-- wait for db processes to exit
-- send "quit" to mgmt servers, wait for them to exit
-END
- },
- {
- name => "stopnode",
- optspec => [ qw(local) ],
- argspec => 2,
- short => "stop process on one node",
- help => <<END,
-stopnode dbname nodeid [options]
-dbname database name
-nodeid node number
---local node must be local to this server
-
-Stop process on one database node. Action depends on node type:
-
-- api node: send SIGTERM to the process, wait for it to exit
-- db node: no action, wait for the ndb process to exit
-- mgmt node: send "quit" command to mgmt server, wait for it to exit
-
-Used internally by db "stop" command.
-END
- },
- {
- name => "kill",
- optspec => [ qw() ],
- argspec => 1,
- short => "kill processes on all nodes",
- help => <<END,
-kill dbname [options]
-dbname database name
-
-Send SIGKILL to processes on all nodes and wait for them to exit.
-END
- },
- {
- name => "killnode",
- optspec => [ qw(local) ],
- argspec => 2,
- short => "kill process on one node",
- help => <<END,
-killnode dbname nodeid [options]
-dbname database name
-nodeid node number
---local node must be local to this server
-
-Send SIGKILL to the process on the node and wait for it to exit.
-
-Used internally by db "kill" command.
-END
- },
- {
- name => "statnode",
- optspec => [ qw(local) ],
- argspec => 2,
- short => "get node run status (internal)",
- help => <<END,
-statnode dbname nodeid [options]
-dbname database name
-nodeid node number
---local node must be local to this server
-
-Get node run status (up/down) as a process. Used internally
-and may not produce any output in ndbnet command.
-END
- },
- {
- name => "list",
- optspec => [ qw(quick short) ],
- argspec => sub { 1 },
- short => "list databases",
- help => <<END,
-list [dbname] [options]
-dbname database name, default is to list all
---quick only output config, do not query status
---short do list nodes
-
-List databases and nodes. Internally returns a data structure
-of process and mgmt server status values for each node. Externally
-(in ndbnet command) this is formatted as a listing.
-END
- },
- {
- name => "writenode",
- optspec => [ qw(wait=i local) ],
- argspec => 3,
- short => "write line of text to the process on a node",
- help => <<END,
-writenode dbname nodeid "some text"
-dbname database name
-nodeid node number
-"some text" arbitrary text (quote if spaces)
---wait n wait n seconds for any response
---local node must be local to this server
-
-Write the text and a newline to the standard input of the process
-running on the node. If wait > 0 is specified, prints whatever
-the process wrote to stdout/stderr during that time.
-
-Used internally by "start" and other commands.
-END
- },
-];
-
-# aliases
-# name alias
-# value expansion
-
-$aliastab = [
- {
- name => "h",
- value => "help",
- },
- {
- name => "q",
- value => "quit",
- },
- {
- name => "EOF",
- value => "quit",
- },
- {
- name => "startserver",
- value => "server start",
- },
- {
- name => "ss",
- value => "server start",
- },
- {
- name => "restartserver",
- value => "server restart",
- },
- {
- name => "rss",
- value => "server restart",
- },
- {
- name => "stopserver",
- value => "server stop",
- },
- {
- name => "pingserver",
- value => "server ping",
- },
- {
- name => "ps",
- value => "server ping",
- },
- {
- name => "l",
- value => "list",
- },
-];
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Config.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Config.pm
deleted file mode 100644
index 4c5db3cd3f5..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Config.pm
+++ /dev/null
@@ -1,235 +0,0 @@
-package NDB::Net::Config;
-
-use strict;
-use Carp;
-use Symbol;
-use Socket;
-use Errno;
-use XML::Parser;
-
-require NDB::Net::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Net::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Net::Config->attributes(
- file => sub { /^\S+$/ },
- loadtime => sub { /^\d+$/ },
-);
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $netcfg = $class->SUPER::new(%attr);
- $netcfg->setfile($attr{file})
- or $log->put, return undef;
- return $netcfg;
-}
-
-sub desc {
- my $netcfg = shift;
- return $netcfg->getfile;
-}
-
-use vars qw(@context);
-
-sub handle_start {
- my($parser, $tag, %attr) = @_;
- my $p = $context[-1];
- my $q = {};
- $p->{$tag} ||= [];
- push(@{$p->{$tag}}, $q);
- for my $k (keys %attr) {
- $q->{$k} = $attr{$k};
- }
- push(@context, $q);
- return 1;
-}
-
-sub handle_end {
- my($parser, $tag, %attr) = @_;
- pop(@context);
- return 1;
-}
-
-sub load {
- my $netcfg = shift;
- my $file = $netcfg->getfile;
- my @s;
- while (1) {
- if (@s = stat($file)) {
- last;
- }
- $log->put("$file: stat failed: $!");
- if (! $!{ESTALE}) {
- return undef;
- }
- $log->put("(retry)")->info;
- sleep 1;
- }
- if ($s[9] <= $netcfg->getloadtime(0)) {
- return 1;
- }
- my $fh = gensym();
- if (! open($fh, "<$file")) {
- $log->put("$file: open for read failed: $!");
- return undef;
- }
- my $text = "";
- my $line;
- while (defined($line = <$fh>)) {
- $text .= $line;
- }
- close($fh);
- my $parser = XML::Parser->new(
- ParseParamEnt => 1,
- Handlers => {
- Start => \&handle_start,
- End => \&handle_end,
- },
- );
- delete $netcfg->{config};
- local @context = ($netcfg);
- $parser->parse($text);
- $netcfg->{text} = $text;
- $netcfg->{config} = $netcfg->{config}[0];
- $netcfg->setloadtime(time)
- or $log->push, return undef;
- NDB::Net::Server->deleteall;
- NDB::Net::Database->deleteall;
- NDB::Net::Node->deleteall;
- return 1;
-}
-
-sub getservers {
- my $netcfg = shift;
- @_ == 0 or confess 0+@_;
- my $servers = [];
- my $slist = $netcfg->{config}{server} || [];
- for my $s (@$slist) {
- my $server;
- $server = NDB::Net::ServerINET->get($s->{id});
- if (! $server) {
- $server = NDB::Net::ServerINET->new(%$s);
- if (! $server) {
- $log->push($netcfg)->warn;
- next;
- }
- }
- push(@$servers, $server);
- }
- return $servers;
-}
-
-sub getdatabases {
- my $netcfg = shift;
- @_ == 0 or confess 0+@_;
- my $databases = [];
- my $dlist = $netcfg->{config}{database} || [];
- for my $d (@$dlist) {
- if ($d->{isproto} eq "y") {
- next;
- }
- if ($d->{name} !~ /^\w(\w|-)*$/) {
- $log->put("$d->{name}: invalid db name")->push($netcfg)->warn;
- next;
- }
- my $db = $netcfg->getdatabase($d->{name});
- if (! $db) {
- $log->push->warn;
- next;
- }
- push(@$databases, $db);
- }
- return $databases;
-}
-
-sub getdatabase {
- my $netcfg = shift;
- @_ == 1 or confess 0+@_;
- my($name) = @_;
- $netcfg->getservers or return undef; # cache them
- my $default = $netcfg->{config}{default}[0] || {};
- my $db;
- my $dlist = $netcfg->{config}{database} || [];
- my $nlist;
- for my $d (@$dlist) {
- ($d->{name} ne $name) && next;
- if ($d->{isproto} eq "y") {
- next;
- }
- my %attr = (%$default, %$d);
- $db = NDB::Net::Database->new(%attr);
- if (! $db) {
- $log->push($netcfg);
- return undef;
- }
- if ($d->{proto}) {
- if ($d->{isproto} eq "y") {
- $log->put("$name: prototypes cannot be recursive");
- return undef;
- }
- for my $d2 (@$dlist) {
- ($d2->{name} ne $d->{proto}) && next;
- if ($d2->{isproto} ne "y") {
- $log->put("$name: $d2->{name} is not a prototype");
- return undef;
- }
- if (! $d->{node}) {
- $d->{node} = $d2->{node};
- }
- last;
- }
- }
- $nlist = $d->{node} || [];
- last;
- }
- if (! $db) {
- $log->put("$name: no such db")->push($netcfg);
- return undef;
- }
- if (! @$nlist) {
- $log->put("$name: empty node list")->push($netcfg);
- return undef;
- }
- for my $n (@$nlist) {
- my $node;
- try: {
- my $server = NDB::Net::Server->get($n->{server})
- or last try;
- my %attr = (%$n, db => $db, server => $server);
- my $type = $attr{type};
- if ($type eq 'db') {
- $node = NDB::Net::NodeDb->new(%attr)
- or last try;
- }
- if ($type eq 'mgmt') {
- $node = NDB::Net::NodeMgmt->new(%attr)
- or last try;
- }
- if ($type eq 'api') {
- $node = NDB::Net::NodeApi->new(%attr)
- or last try;
- }
- $log->put("bad node type '$type'");
- }
- if (! $node) {
- $log->push($netcfg);
- $db->delete;
- return undef;
- }
- }
- return $db;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Database.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Database.pm
deleted file mode 100644
index 7ea15be0650..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Database.pm
+++ /dev/null
@@ -1,321 +0,0 @@
-package NDB::Net::Database;
-
-use strict;
-use Carp;
-use Symbol;
-
-require NDB::Net::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Net::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-my %dbcache = ();
-
-NDB::Net::Database->attributes(
- name => sub { s/^\s+|\s+$//g; /^\S+$/ && ! m!/! },
- comment => sub { defined },
- version => sub { /^\d+(\.\d+)*$/ },
- base => sub { $^O eq 'MSWin32' || m!^/\S+$! },
- home => sub { $^O eq 'MSWin32' || m!^/\S+$! },
- nodeport => sub { $_ > 0 },
-);
-
-sub desc {
- my $db = shift;
- return $db->getname;
-}
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $db = $class->SUPER::new(%attr);
- $db->setname($attr{name})
- or $log->push, return undef;
- if ($dbcache{$db->getname}) {
- $log->put("duplicate db")->push($db);
- return undef;
- }
- $db->setcomment($attr{comment});
- $db->setversion($attr{version})
- or $log->push, return undef;
- if (defined($attr{base})) {
- $db->setbase($attr{base})
- or $log->push, return undef;
- }
- if (defined($attr{home})) {
- if ($^O ne 'MSWin32' && $attr{home} !~ m!^/! && $db->hasbase) {
- $attr{home} = $db->getbase . "/$attr{home}";
- }
- $db->sethome($attr{home})
- or $log->push, return undef;
- }
- if (defined($attr{nodeport})) {
- $db->setnodeport($attr{nodeport})
- or $log->push, return undef;
- }
- if ($^O eq 'MSWin32' && ! $db->hasnodeport) {
- $log->put("nodeport required on windows")->push($db), return undef;
- }
- $db->{nodehash} = {};
- $dbcache{$db->getname} = $db;
- return $db;
-}
-
-sub delete {
- my $db = shift;
- my $nodelist = $db->getnodelist('all');
- for my $node (@$nodelist) {
- $node->delete;
- }
- delete $dbcache{$db->getname};
-}
-
-sub deleteall {
- my $class = shift;
- for my $name (sort keys %dbcache) {
- my $db = $dbcache{$name};
- $db->delete;
- }
-}
-
-# assume numerical dot separated version numbers like 1.1.2
-sub cmpversion {
- my $db = shift;
- my $version = shift;
- my @x = split(/\./, $db->getversion);
- my @y = split(/\./, $version);
- while (@x || @y) {
- return -1 if $x[0] < $y[0];
- return +1 if $x[0] > $y[0];
- shift(@x);
- shift(@y);
- }
- return 0;
-}
-
-# nodes
-
-sub addnode {
- my $db = shift;
- @_ == 1 or confess 0+@_;
- my($node) = @_;
- unless (ref($node) && $node->isa('NDB::Net::Node')) {
- confess 'oops';
- }
- my $id = $node->getid;
- if ($db->{nodehash}{$id}) {
- $log->put("$id: duplicate node id")->push($db);
- return undef;
- }
- $db->{nodehash}{$id} = $node;
- return 1;
-}
-
-sub getnode {
- my $db = shift;
- @_ == 1 or confess 0+@_;
- my($id) = @_;
- $id += 0;
- my $node = $db->{nodehash}{$id};
- if (! $node) {
- $log->put("$id: no such node id")->push($db);
- return undef;
- }
- return $node;
-}
-
-sub getnodelist {
- my $db = shift;
- @_ == 1 or confess 0+@_;
- my($type) = @_;
- $type =~ /^(all|mgmt|db|api)$/ or confess 'oops';
- my @nodes = ();
- for my $id (sort { $a <=> $b } keys %{$db->{nodehash}}) {
- my $node = $db->{nodehash}{$id};
- if ($type eq 'all' or $type eq $node->gettype) {
- push(@nodes, $node);
- }
- }
- return \@nodes;
-}
-
-# start /stop
-
-sub start {
- my $db = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- if ($opts->{stop} || $opts->{kill}) {
- my $method = $opts->{stop} ? "stop" : "kill";
- my %opts = ();
- $db->$method(\%opts)
- or $log->push, return undef;
- }
- $log->put("start")->push($db)->info;
- my $nodesmgmt = $db->getnodelist('mgmt');
- my $nodesdb = $db->getnodelist('db');
- my $nodesapi = $db->getnodelist('api');
- my $ret;
- try: {
- my %startopts = ();
- for my $k (qw(local init_rm nostart config old home clean proxy)) {
- $startopts{$k} = $opts->{$k} if defined($opts->{$k});
- }
- my %writeopts = ();
- for my $k (qw(local)) {
- $writeopts{$k} = $opts->{$k} if defined($opts->{$k});
- }
- if ($db->cmpversion("1.0") > 0) {
- for my $node (@$nodesmgmt) {
- $node->start(\%startopts) or last try;
- }
- for my $node (@$nodesdb) {
- $node->start(\%startopts) or last try;
- }
- if (! $opts->{config}) {
- for my $node (@$nodesmgmt) { # probably redundant
- $node->write(\%writeopts, "all start") or last try;
- last;
- }
- }
- }
- else {
- for my $node (@$nodesdb) {
- $node->start(\%startopts) or last try;
- }
- if (! $opts->{config}) {
- for my $node (@$nodesdb) { # probably redundant
- $node->write(\%writeopts, "start") or last try;
- }
- }
- }
- for my $node (@$nodesapi) {
- my %apiopts = %startopts;
- if ($node->getruntype eq 'manual') {
- $apiopts{config} = 1;
- }
- $node->start(\%apiopts) or last try;
- }
- $ret = 1;
- }
- if (! $ret) {
- $log->push("start failed")->push($db);
- return undef;
- }
- my $msg = ! $opts->{config} ? "start done" : "config created";
- $log->put($msg)->push($db)->user;
- return 1;
-}
-
-sub stop {
- my $db = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- $log->put("stop")->push($db)->info;
- my $nodesmgmt = $db->getnodelist('mgmt');
- my $nodesdb = $db->getnodelist('db');
- my $nodesapi = $db->getnodelist('api');
- my $ret;
- try: {
- for my $node (@$nodesapi) {
- $node->stop($opts) or last try;
- }
- if ($db->cmpversion("1.0") > 0) {
- for my $node (@$nodesmgmt) {
- $node->write($opts, "all stop") or last try;
- last;
- }
- for my $node (@$nodesdb) {
- $node->stop($opts) or last try;
- }
- for my $node (@$nodesmgmt) {
- $node->stop($opts) or last try;
- }
- }
- else {
- for my $node (@$nodesdb) {
- $node->write($opts, "stop") or last try;
- }
- for my $node (@$nodesdb) {
- $node->stop($opts) or last try;
- }
- }
- $ret = 1;
- }
- if (! $ret) {
- $log->push("stop failed")->push($db);
- return undef;
- }
- $log->put("stop done")->push($db)->user;
- return 1;
-}
-
-sub kill {
- my $db = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- $log->put("kill")->push($db)->info;
- my $nodesmgmt = $db->getnodelist('mgmt');
- my $nodesdb = $db->getnodelist('db');
- my $nodesapi = $db->getnodelist('api');
- my $ret = 1;
- try: {
- for my $node (@$nodesapi) {
- $node->kill($opts) || ($ret = undef);
- }
- for my $node (@$nodesdb) {
- $node->kill($opts) || ($ret = undef);
- }
- for my $node (@$nodesmgmt) {
- $node->kill($opts) || ($ret = undef);
- }
- }
- if (! $ret) {
- $log->push("kill failed")->push($db);
- return undef;
- }
- $log->put("kill done")->push($db)->user;
- return 1;
-}
-
-sub list {
- my $db = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- my $dbsts = {};
- $dbsts->{comment} = $db->getcomment("");
- $dbsts->{home} = $db->gethome;
- $log->put("status")->push($db)->info;
- my $mgmsts;
- for my $node (@{$db->getnodelist('mgmt')}) {
- $mgmsts = $node->get_status or
- $log->push->error;
- last;
- }
- $mgmsts ||= {};
- for my $node (@{$db->getnodelist('all')}) {
- my $id = $node->getid;
- my $nodests = $dbsts->{node}{$id} ||= {};
- my $stat = $node->stat($opts) or
- $log->push->error;
- $nodests->{id} = $id;
- $nodests->{type} = $node->gettype;
- $nodests->{comment} = $node->getcomment("");
- $nodests->{host} = $node->getserver->gethost;
- $nodests->{run} = $stat || "error";
- $nodests->{status} = $mgmsts->{node}{$id};
- }
- return $dbsts;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Env.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Env.pm
deleted file mode 100644
index d79e72f2bb3..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Env.pm
+++ /dev/null
@@ -1,94 +0,0 @@
-package NDB::Net::Env;
-
-use strict;
-use File::Spec;
-use Carp;
-
-require NDB::Net::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Net::Base);
-
-# environment variables
-#
-# NDB_TOP source dir or installation dir
-# NDB_BASE base dir not tied to any release or database
-# NDB_NETCFG ndbnet config file, default $NDB_BASE/etc/ndbnet.xml
-#
-# ndbnet explicitly unsets NDB_TOP and NDB_HOME because they are
-# specific to each database or database node
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Net::Env->attributes(
- base => sub { /^\S+$/ },
- netcfg => sub { /^\S+$/ },
- hostname => sub { /^\S+$/ },
-);
-
-my $instance;
-
-sub desc {
- my $netenv = shift;
- return "net environment";;
-}
-
-sub instance {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- if ($instance) {
- return $instance;
- }
- for my $var (qw(NDB_TOP NDB_HOME)) {
- my $top = delete $ENV{$var};
- if (defined($top)) {
- if ($^O ne 'MSWin32') {
- $ENV{PATH} =~ s!(^|:)$top/bin($|:)!$1$2!g;
- $ENV{LD_LIBRARY_PATH} =~ s!(^|:)$top/lib($|:)!$1$2!g;
- $ENV{PERL5LIB} =~ s!(^|:)$top/lib/perl5($|:)!$1$2!g;
- }
- }
- }
- my $netenv = $class->SUPER::new(%attr);
- for my $base ($attr{base}, $ENV{NDB_BASE}) {
- if (defined($base)) {
- $netenv->setbase($base)
- or $log->push, return undef;
- }
- }
- for my $netcfg ($attr{netcfg}, $ENV{NDB_NETCFG}) {
- if (defined($netcfg)) {
- $netenv->setnetcfg($netcfg)
- or $log->push, return undef;
- }
- }
- if ($netenv->hasbase && ! $netenv->hasnetcfg) {
- $netenv->setnetcfg(File::Spec->catfile($netenv->getbase, "etc", "ndbnet.xml"))
- or $log->push, return undef;
- }
- my $uname;
- if ($^O ne 'MSWin32') {
- chomp($uname = `uname -n`);
- } else {
- chomp($uname = `hostname`);
- }
- my($hostname) = gethostbyname($uname);
- if (! defined($hostname)) {
- $uname =~ s!\..*$!!;
- ($hostname) = gethostbyname($uname);
- }
- $netenv->sethostname($hostname)
- or $log->push, return undef;
- $instance = $netenv;
- return $instance;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Node.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Node.pm
deleted file mode 100644
index f41bf51168d..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Node.pm
+++ /dev/null
@@ -1,747 +0,0 @@
-package NDB::Net::Node;
-
-use strict;
-use Carp;
-use Symbol;
-use Socket;
-use IPC::Open3;
-use POSIX();
-use Errno;
-use File::Spec;
-
-require NDB::Net::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Net::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-my %nodecache = ();
-
-NDB::Net::Node->attributes(
- db => sub { ref && $_->isa('NDB::Net::Database') },
- comment => sub { defined },
- id => sub { s/^\s+|\s+$//g; s/^0+(\d+)$/$1/; /^\d+$/ && $_ > 0 },
- type => sub { s/^\s+|\s+$//g; /^(mgmt|db|api)$/ },
- server => sub { ref && $_->isa('NDB::Net::Server') },
- base => sub { File::Spec->file_name_is_absolute($_) },
- home => sub { File::Spec->file_name_is_absolute($_) },
- state => sub { /^(new|run|stop)$/ },
- run => sub { defined },
- runenv => sub { defined },
- runtype => sub { m!(auto|once|manual)$! },
- lockpid => sub { $_ != 0 },
- iow => sub { ref && $_->isa('NDB::Util::IO') },
- ior => sub { ref && $_->isa('NDB::Util::IO') },
- pid => sub { $_ > 1 },
- event => sub { ref && $_->isa('NDB::Util::Event') },
-);
-
-sub desc {
- my $node = shift;
- my $dbname = $node->getdb->getname;
- my $id = $node->getid;
- my $type = $node->gettype;
- return "$dbname.$id-$type";
-}
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $node = $class->SUPER::new(%attr);
- $node->setdb($attr{db})
- or $log->push, return undef;
- $node->setid($attr{id})
- or $log->push, return undef;
- if ($nodecache{$node->getdb->getname,$node->getid}) {
- $log->put("duplicate node")->push($node);
- return undef;
- }
- $node->setcomment($attr{comment});
- $node->settype($attr{type})
- or $log->push, return undef;
- if ($node->getdb->cmpversion("1.0") <= 0 && $node->gettype eq 'mgmt') {
- $log->put("no mgmt nodes in db version <= 1.0")->push($node);
- return undef;
- }
- $node->setserver($attr{server})
- or $log->push, return undef;
- for my $base ($attr{base}, $node->getdb->getbase(undef)) {
- if (defined($base)) {
- $node->setbase($base)
- or $log->push, return undef;
- }
- }
- for my $home ($attr{home}, $node->getdb->gethome(undef)) {
- if (defined($home)) {
- if ($^O ne 'MSWin32' && $home !~ m!^/! && $node->hasbase) {
- $home = $node->getbase . "/$home";
- }
- $node->sethome($home)
- or $log->push, return undef;
- }
- }
- if (! $node->hashome) {
- $log->put("home not defined")->push($node);
- return undef;
- }
- $node->setstate('new')
- or $log->push, return undef;
- if (defined($attr{run})) {
- $node->setrun($attr{run})
- or $log->push, return undef;
- }
- if (defined($attr{runenv})) {
- $node->setrunenv($attr{runenv})
- or $log->push, return undef;
- }
- if (defined($attr{runtype})) {
- $node->setruntype($attr{runtype})
- or $log->push, return undef;
- }
- if (! $node->hasruntype) {
- my $runtype = "manual";
- $runtype = "once"
- if $node->gettype =~ /^(mgmt|db)$/ || $node->hasrun;
- $node->setruntype($runtype)
- or $log->push, return undef;
- }
- if (! $node->getdb->addnode($node)) {
- $log->push;
- return undef;
- }
- $nodecache{$node->getdb->getname,$node->getid} = $node;
- return $node;
-}
-
-sub delete {
- my $node = shift;
- delete $nodecache{$node->getdb->getname,$node->getid} or
- confess 'oops';
-}
-
-sub deleteall {
- my $class = shift;
- for my $k (sort keys %nodecache) {
- my $node = $nodecache{$k};
- $node->delete;
- }
-}
-
-# node startup
-
-sub getconfdir {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $netenv = NDB::Net::Env->instance;
- my $name = File::Spec->catfile($netenv->getbase, "etc");
- my $dir = NDB::Util::Dir->new(path => $name);
- return $dir;
-}
-
-sub getdbdir {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $netenv = NDB::Net::Env->instance;
- my $name = File::Spec->catfile($netenv->getbase, "db", $node->getdb->getname);
- my $dir = NDB::Util::Dir->new(path => $name);
- return $dir;
-}
-
-sub getnodedir {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $name = sprintf("%s-%s", $node->getid, $node->gettype);
- my $dir = $node->getdbdir->getdir($name);
- return $dir;
-}
-
-sub getrundir {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $name = sprintf("run");
- my $dir = $node->getdbdir->getdir($name);
- return $dir;
-}
-
-sub getlogdir {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $name = sprintf("log");
- my $dir = $node->getdbdir->getdir($name);
- return $dir;
-}
-
-sub getlock {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $name = sprintf("%s-%s.pid", $node->getid, $node->gettype);
- my $lock = $node->getrundir->getfile($name)->getlock;
- return $lock;
-}
-
-sub getsocketfile {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $name = sprintf("%s-%s.socket", $node->getid, $node->gettype);
- my $file = $node->getrundir->getfile($name);
- return $file;
-}
-
-sub getlogfile {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $name = sprintf("%s-%s.log", $node->getid, $node->gettype);
- my $file = $node->getlogdir->getfile($name);
- return $file;
-}
-
-sub getshellfile {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $name = sprintf("run.sh");
- my $file = $node->getnodedir->getfile($name);
- return $file;
-}
-
-sub getlocalcfg {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $name = "Ndb.cfg";
- my $file = $node->getnodedir->getfile($name);
- return $file;
-}
-
-sub writelocalcfg {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $db = $node->getdb;
- my $file = $node->getlocalcfg;
- $file->mkdir or $log->push, return undef;
- if ($db->cmpversion("1.0") <= 0) {
- my $section = "";
- my $edit = sub {
- chomp;
- if (/^\s*\[\s*(\S+)\s*\]/) {
- $section = uc($1);
- }
- if ($section eq 'OWN_HOST') {
- if (/^\s*ThisHostId\b/i) {
- $_ = "ThisHostId " . $node->getid;
- }
- }
- if ($section eq 'CM') {
- if (/^\s*ThisNodeId\b/i) {
- $_ = "ThisNodeId " . $node->getid;
- }
- }
- if (0 and $section eq 'PROCESS_ID') {
- if (/^\s*Host(\d+)\s+(\S+)(.*)/) {
- my $id2 = $1;
- my $host2 = $2;
- my $rest2 = $3;
- my $node2 = $db->getnode($id2)
- or $log->push, return undef;
- $_ = "Host$id2 ";
- $_ .= $node2->getserver->getcanon;
- $_ .= " $rest2";
- }
- }
- $_ .= "\n";
- return 1;
- };
- $node->getinifile->copyedit($file, $edit)
- or $log->push, return undef;
- }
- else {
- my @text = ();
- push(@text, sprintf("OwnProcessId %s", $node->getid));
- my $nodesmgmt = $db->getnodelist('mgmt');
- for my $mnode (@$nodesmgmt) {
- my $host = $mnode->getserver->getcanon;
- my $port = $mnode->getport;
- push(@text, "$host $port");
- }
- $file->putlines(\@text) or $log->push, return undef;
- }
- return 1;
-}
-
-sub getinifile {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $name = sprintf("%s.ini", $node->getdb->getname);
- my $file = $node->getconfdir->getfile($name);
- return $file;
-}
-
-sub getbincfg {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $name = sprintf("config.bin");
- my $file = $node->getnodedir->getfile($name);
- return $file;
-}
-
-sub getenvdefs {
- my $node = shift;
- @_ == 1 or confess 0+@_;
- my $opts = shift;
- my $home = $opts->{home} || $node->gethome;
- my $netenv = NDB::Net::Env->instance;
- if (! File::Spec->file_name_is_absolute($home)) {
- $netenv->hasbase
- or $log->put("no base and home=$home not absolute"), return undef;
- $home = File::Spec->catfile($netenv->getbase, $home);
- }
- (-d $home)
- or $log->put("$home: no such directory"), return undef;
- my $defs;
- if ($^O ne 'MSWin32') {
- $defs = <<END;
-# @{[ $node->desc ]} @{[ $node->getcomment("") ]}
-# @{[ $node->getserver->desc ]} @{[ $node->getserver->getcanon ]}
-#
-debugger=\$1
-#
-NDB_TOP=$home
-export NDB_TOP
-PATH=\$NDB_TOP/bin:\$PATH
-export PATH
-LD_LIBRARY_PATH=\$NDB_TOP/lib:\$LD_LIBRARY_PATH
-export LD_LIBRARY_PATH
-PERL5LIB=\$NDB_TOP/lib/perl5:\$PERL5LIB
-export PERL5LIB
-NDB_NODEID=@{[ $node->getid ]}
-export NDB_NODEID
-NDB_NODETYPE=@{[ $node->gettype ]}
-export NDB_NODETYPE
-ulimit -Sc unlimited
-END
- if ($node->hasrunenv) {
- $defs .= <<END;
-#
-cd @{[ $node->getnodedir->getpath ]} || exit 1
-@{[ $node->getrunenv ]}
-END
- }
- $defs .= <<END;
-#
-unset NDB_HOME # current NdbConfig.c would look here
-#
-END
- } else {
- $defs = <<END;
-rem @{[ $node->desc ]} @{[ $node->getcomment("") ]}
-rem @{[ $node->getserver->desc ]} @{[ $node->getserver->getcanon ]}
-rem
-set NDB_TOP=$home
-set PATH=%NDB_TOP%\\bin;%PATH%
-set PERL5LIB=%NDB_TOP%\\lib\\perl5;%PERL5LIB%
-set NDB_NODEID=@{[ $node->getid ]}
-set NDB_NODETYPE=@{[ $node->gettype ]}
-END
- if ($node->hasrunenv) {
- $defs .= <<END;
-rem
-@{[ $node->getrunenv ]}
-END
- }
- $defs .= <<END;
-rem
-rem current NdbConfig.c would look here
-set NDB_HOME=
-rem
-END
- }
- chomp($defs);
- return $defs;
-}
-
-sub startlocal {
- my $node = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- $log->put("start local")->push($node)->info;
- my $lock = $node->getlock;
- $lock->mkdir or $log->push, return undef;
- anon: {
- my $ret = $lock->test;
- defined($ret) or $log->push, return undef;
- if ($ret) {
- $log->put("already running under serverpid=%s",
- $lock->getpid)->push($node)->user;
- return 1;
- }
- $lock->set or $log->push, return undef;
- }
- if ($opts->{clean}) {
- $node->getnodedir->rmdir(1);
- $node->getlogfile->unlink;
- }
- if (! $opts->{old}) {
- $node->writelocalcfg or $log->push, return undef;
- $node->handleprepare($opts) or $log->push, return undef;
- }
- anon: {
- $lock->close;
- if ($opts->{config}) {
- return 1;
- }
- my $file = $node->getlogfile;
- $file->mkdir or $log->push, return undef;
- my $pid = fork();
- defined($pid) or $log->put("fork failed: $!"), return undef;
- if ($pid) {
- exit(0);
- }
- $lock->set or $log->push->fatal;
- $node->setlockpid($$) or $log->push->fatal;
- if ($^O ne 'MSWin32') {
- POSIX::setsid() or $log->put("setsid failed: $!")->fatal;
- }
- $log->setfile($file->getpath) or $log->push->fatal;
- }
- my $socket;
- anon: {
- my $file = $node->getsocketfile;
- $file->mkdir or $log->push($node)->fatal;
- unlink($file->getpath);
- if ($^O ne 'MSWin32') {
- $socket = NDB::Util::SocketUNIX->new
- or $log->push($node)->fatal;
- } else {
- $socket = NDB::Util::SocketINET->new
- or $log->push($node)->fatal;
- }
- $socket->setopt(SOL_SOCKET, SO_REUSEADDR, 1)
- or $log->push($node)->fatal;
- if ($^O ne 'MSWin32') {
- $socket->bind($file->getpath)
- or $log->push($node)->fatal;
- } else {
- $socket->bind($node->getdb->getnodeport + $node->getid)
- or $log->push($node)->fatal;
- }
- $socket->listen
- or $log->push($node)->fatal;
- }
- START: {
- my $w = gensym();
- my $r = gensym();
- my @arg = ('/bin/sh', $node->getshellfile->getpath);
- my $pid = open3($w, $r, undef, @arg);
- $node->setiow(NDB::Util::IO->new(fh => $w))
- or $log->push->fatal;
- $node->setior(NDB::Util::IO->new(fh => $r))
- or $log->push->fatal;
- $node->setpid($pid)
- or $log->push->fatal;
- }
- $node->setstate('run')
- or $log->push($node)->fatal;
- $log->put("started host=%s pid=%s",
- $node->getserver->gethost, $node->getpid)->push($node)->user;
- $log->push("started")->push($node)->putvalue(1)->user;
- $log->detachuser;
- NDB::Net::Client->deleteall;
- my $event = NDB::Util::Event->new;
- $event->set($socket, 'r');
- $event->set($node->getior, 'r');
- loop: {
- try: {
- my $n = $event->poll(10);
- if (! defined($n)) {
- $log->push->error;
- sleep 1;
- last try;
- }
- if (! $n) {
- $log->push->debug;
- last try;
- }
- if ($node->hasior && $event->test($node->getior, 'r')) {
- my $data = $node->getior->read;
- if (! defined($data)) {
- $log->push->fatal;
- }
- if (length($data) > 0) {
- $node->handleoutput($opts, $data);
- }
- if ($node->getior->getreadend) {
- $log->put("input closed")->warn;
- $event->clear($node->getior, 'r');
- $node->getior->close;
- $node->delior;
- $node->handleeof($opts);
- last loop;
- }
- }
- if (! $event->test($socket, 'r')) {
- last try;
- }
- my $csocket = $socket->accept(10);
- if (! defined($csocket)) {
- $log->push->error;
- last try;
- }
- if (! $csocket) {
- $log->push->warn;
- last try;
- }
- my $client = NDB::Net::Client->new(
- socket => $csocket,
- serversocket => $socket,
- serverlock => $lock,
- event => $event,
- context => $node,
- );
- $client or $log->push->fatal;
- }
- NDB::Net::Client->processall;
- redo loop;
- }
- if ($node->getruntype eq "auto") {
- if ($node->getstate eq "run") {
- $log->put("restart in 5 seconds...")->info;
- sleep 5;
- goto START;
- }
- $log->put("stopping, skip restart")->info;
- }
- $lock->close;
- $node->getsocketfile->unlink;
- while (wait() != -1) {}
- $log->put("exit")->push->info;
- exit(0);
-}
-
-# handlers can be overridden in subclass
-
-sub handleprepare { confess 'oops'; }
-
-sub handleoutput {
- my $node = shift;
- @_ == 2 or confess 0+@_;
- my($opts, $data) = @_;
- $data =~ s/\015//g;
- $data = $node->{savedata} . $data;
- while ((my $i = index($data, "\n")) >= 0) {
- my $line = substr($data, 0, $i);
- $data = substr($data, $i+1);
- $log->put($line)->info;
- if ($opts->{user} && $line !~ /^\s*$/) {
- $log->put($line)->user;
- }
- }
- $node->{savedata} = $data;
- if (1 && length $node->{savedata}) { # XXX partial line
- my $line = $node->{savedata};
- $log->put($line)->info;
- if ($opts->{user} && $line !~ /^\s*$/) {
- $log->put($line)->user;
- }
- $node->{savedata} = "";
- }
-}
-
-sub handleeof {
-}
-
-# command subs can be overridden by subclass
-
-sub waitforexit {
- my $node = shift;
- my $lock = $node->getlock;
- my $lockpid = $node->getlockpid;
- my $n1 = 0;
- my $n2 = 10;
- while (1) {
- my $ret = $lock->test;
- defined($ret) or $log->push, return undef;
- if (! $ret) {
- $log->put("exit done")->push($node)->user;
- last;
- }
- if ($lockpid != $lock->getpid) {
- $log->put("restarted: lock pid changed %s->%s",
- $lockpid, $lock->getpid)->push($node);
- return undef;
- }
- if (++$n1 >= $n2) {
- $n2 *= 2;
- $log->put("wait for exit")->push($node)->user;
- }
- select(undef, undef, undef, 0.1);
- }
- return 1;
-}
-
-sub cmd_stopnode_bg {
- my($node, $cmd) = @_;
- return $node->waitforexit;
-}
-
-sub cmd_killnode_fg {
- my($node, $cmd) = @_;
- my $pid = $node->getpid;
- $log->put("kill -9 $pid")->push($node)->user;
- kill(9, $pid);
- $node->setstate('stop')
- or $log->push($node), return undef;
- return 1;
-}
-
-sub cmd_killnode_bg {
- my($node, $cmd) = @_;
- return $node->waitforexit;
-}
-
-sub cmd_statnode_bg {
- my($node, $cmd) = @_;
- return "up";
-}
-
-sub cmd_writenode_fg {
- my($node, $cmd) = @_;
- my $text = $cmd->getarg(2);
- while(chomp($text)) {};
- $log->put("write: $text")->push($node)->user;
- $node->getiow->write("$text\n");
- my $output = "";
- if ((my $num = $cmd->getopt("wait")) > 0) {
- my $lim = time + $num;
- $node->getior->settimeout(1);
- loop: {
- my $data = $node->getior->read;
- if (length($data) > 0) {
- $node->handleoutput({user => 1}, $data);
- $output .= $data;
- }
- redo loop if time < $lim;
- }
- $node->getior->settimeout(0);
- }
- return { output => $output };
-}
-
-# commands
-
-sub doremote {
- my $node = shift;
- my($cmdname, $opts, @args) = @_;
- my $server = $node->getserver;
- $log->put("$cmdname remote")->push($server)->push($node)->info;
- my $argv = [
- $cmdname, q(--local),
- $opts, $node->getdb->getname, $node->getid, @args ];
- my $cmd = NDB::Net::Command->new(argv => $argv)
- or $log->push, return undef;
- my $ret = $server->request($cmd)
- or $log->push, return undef;
- return $ret;
-}
-
-sub dolocal {
- my $node = shift;
- my($cmdname, $opts, @args) = @_;
- $log->put("$cmdname local")->push($node)->info;
- if (! $node->getserver->islocal) {
- $log->put("not local")->push($node->getserver)->push($node);
- return undef;
- }
- if ($cmdname eq "startnode") {
- return $node->startlocal($opts);
- }
- my $lock = $node->getlock;
- anon: {
- my $ret = $lock->test;
- defined($ret) or $log->push, return undef;
- if (! $ret) {
- if ($cmdname eq "statnode") {
- return "down";
- }
- $log->put("not running")->push($node)->user;
- return $cmdname eq "writenode" ? undef : 1;
- }
- }
- my $server;
- anon: {
- my $path = $node->getsocketfile->getpath;
- if (! -e $path) {
- $log->put("$path: no socket")->push($node);
- return undef;
- }
- if ($^O ne 'MSWin32') {
- $server = NDB::Net::ServerUNIX->new(id => 0, path => $path)
- or $log->push, return undef;
- } else {
- $server = NDB::Net::ServerINET->new(id => 0, host => $node->getserver->getcanon, port => $node->getdb->getnodeport + $node->getid)
- or $log->push, return undef;
- }
- }
- my $argv = [
- $cmdname,
- $opts, $node->getdb->getname, $node->getid, @args ];
- my $cmd = NDB::Net::Command->new(argv => $argv)
- or $log->push, return undef;
- my $ret = $server->request($cmd)
- or $log->push, return undef;
- $log->put("$cmdname done")->push($node)->info;
- return $ret;
-}
-
-sub start {
- my $node = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- $log->put("start")->push($node)->info;
- my $do = $opts->{local} ? "dolocal" : "doremote";
- return $node->$do("startnode", $opts);
-}
-
-sub stop {
- my $node = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- $log->put("stop")->push($node)->info;
- my $do = $opts->{local} ? "dolocal" : "doremote";
- return $node->$do("stopnode", $opts);
-}
-
-sub kill {
- my $node = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- $log->put("kill")->push($node)->info;
- my $do = $opts->{local} ? "dolocal" : "doremote";
- return $node->$do("killnode", $opts);
-}
-
-sub stat {
- my $node = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- $log->put("stat")->push($node)->info;
- my $do = $opts->{local} ? "dolocal" : "doremote";
- return $node->$do("statnode", $opts);
-}
-
-sub write {
- my $node = shift;
- @_ == 2 or confess 0+@_;
- my($opts, $text) = @_;
- $log->put("write: $text")->push($node)->info;
- my $do = $opts->{local} ? "dolocal" : "doremote";
- return $node->$do("writenode", $opts, $text);
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeApi.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeApi.pm
deleted file mode 100644
index 08f5f85577d..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeApi.pm
+++ /dev/null
@@ -1,84 +0,0 @@
-package NDB::Net::NodeApi;
-
-use strict;
-use Carp;
-use Symbol;
-
-require NDB::Net::Node;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Net::Node);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Net::NodeApi->attributes();
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $node = $class->SUPER::new(%attr, type => 'api')
- or $log->push, return undef;
- return 1;
-}
-
-# run methods
-
-sub handleprepare {
- my $node = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- my $netenv = NDB::Net::Env->instance;
- my $envdefs = $node->getenvdefs($opts);
- defined($envdefs) or return undef;
- my $nodedir = $node->getnodedir;
- my $shellfile = $node->getshellfile;
- my $run;
- if ($node->hasrun) {
- $run = $node->getrun;
- }
- if (defined($opts->{run})) {
- $run = $opts->{run};
- }
- if (defined($run)) {
- $log->put("run: $run")->push($node)->user;
- }
- if ($^O ne 'MSWin32') {
- $shellfile->puttext(<<END) or $log->push, return undef;
-$envdefs
-cd @{[ $nodedir->getpath ]} || exit 1
-set -x
-exec \$DEBUGGER $run
-END
- } else {
- $shellfile->puttext(<<END) or $log->push, return undef;
-$envdefs
-cd @{[ $nodedir->getpath ]}
-call $run
-END
- }
- return 1;
-}
-
-sub cmd_stopnode_fg {
- my($node, $cmd) = @_;
- my $pid = $node->getpid;
- unless ($pid > 1) {
- $log->put("bad pid=$pid")->push($node);
- return undef;
- }
- $log->put("kill -15 $pid")->push($node)->user;
- kill(15, $pid);
- $node->setstate('stop')
- or log->push($node), return undef;
- return 1;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeDb.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeDb.pm
deleted file mode 100644
index 88a35ba4f8d..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeDb.pm
+++ /dev/null
@@ -1,116 +0,0 @@
-package NDB::Net::NodeDb;
-
-use strict;
-use Carp;
-use Symbol;
-
-require NDB::Net::Node;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Net::Node);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Net::NodeDb->attributes(
- fsdir => sub { s/^\s+|\s+$//g; /^\S+$/ },
-);
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $node = $class->SUPER::new(%attr, type => 'db')
- or $log->push, return undef;
- $node->setfsdir($attr{fsdir})
- or $log->push, return undef;
- return 1;
-}
-
-# run methods
-
-sub handleprepare {
- my $node = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- my $netenv = NDB::Net::Env->instance;
- my $envdefs = $node->getenvdefs($opts);
- defined($envdefs) or return undef;
- my $nodedir = $node->getnodedir;
- my $shellfile = $node->getshellfile;
- my $fsdir = NDB::Util::Dir->new(
- path => sprintf("%s/%s/%s-%s.fs",
- $node->getfsdir, $node->getdb->getname, $node->getid, $node->gettype));
- $fsdir->mkdir or $log->push, return undef;
- my $init_rm;
- my $run;
- if ($^O ne 'MSWin32') {
- $init_rm = "# no -i";
- if ($opts->{init_rm}) {
- $init_rm = 'rm -f $NDB_FILESYSTEM/*/DBDIH/P0.sysfile';
- }
- $run = "\$NDB_TOP/bin/ndb";
- } else {
- $init_rm = "rem no -i";
- if ($opts->{init_rm}) {
- $init_rm =
- 'del/f %NDB_FILESYSTEM%\D1\DBDIH\P0.sysfile' . "\n" .
- 'del/f %NDB_FILESYSTEM%\D2\DBDIH\P0.sysfile';
- }
- $run = "ndb";
- }
- if ($node->getdb->cmpversion("1.0") <= 0) {
- $run .= " -s";
- }
- if ($opts->{nostart}) {
- $run .= " -n";
- }
- if ($node->hasrun) {
- $run = $node->getrun;
- }
- if (defined($opts->{run})) {
- $run = $opts->{run};
- }
- $log->put("run: $run")->push($node)->user;
- if ($^O ne 'MSWin32') {
- $shellfile->puttext(<<END) or $log->push, return undef;
-$envdefs
-NDB_FILESYSTEM=@{[ $fsdir->getpath ]}
-export NDB_FILESYSTEM
-# v1.0 compat
-UAS_FILESYSTEM=\$NDB_FILESYSTEM
-export UAS_FILESYSTEM
-mkdir -p \$NDB_FILESYSTEM
-$init_rm
-cd @{[ $nodedir->getpath ]} || exit 1
-exec \$debugger $run
-END
- } else {
- $shellfile->puttext(<<END) or $log->push, return undef;
-$envdefs
-set NDB_FILESYSTEM=@{[ $fsdir->getpath ]}
-rem v1.0 compat
-set UAS_FILESYSTEM=%NDB_FILESYSTEM%
-mkdir %NDB_FILESYSTEM%
-$init_rm
-cd @{[ $nodedir->getpath ]}
-call $run
-END
- }
- return 1;
-}
-
-sub cmd_stopnode_fg {
- my($node, $cmd) = @_;
- $node->setstate('stop')
- or log->push($node), return undef;
- return 1;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeMgmt.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeMgmt.pm
deleted file mode 100644
index 1056e3df623..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeMgmt.pm
+++ /dev/null
@@ -1,318 +0,0 @@
-package NDB::Net::NodeMgmt;
-
-use strict;
-use Carp;
-use Symbol;
-
-require NDB::Net::Node;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Net::Node);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Net::NodeMgmt->attributes(
- port => sub { s/^\s+|\s+$//g; /^\d+$/ },
-);
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $node = $class->SUPER::new(%attr, type => 'mgmt')
- or $log->push, return undef;
- $node->setport($attr{port})
- or $log->push, return undef;
- return 1;
-}
-
-# socket parser methods
-
-sub socketcommand {
- my $node = shift;
- my $socket;
- $socket = NDB::Util::SocketINET->new or
- $log->push($node), return undef;
- $socket->settimeout(10);
- $socket->connect($node->getserver->getcanon, $node->getport) or
- $log->push($node), return undef;
- $socket->write("GET STATUS\r\nBYE\r\n") or
- $log->push($node), return undef;
- my $out = "";
- my $data;
- while ($data = $socket->read) {
- $out .= $data;
- }
- $socket->close;
- $out =~ s/\015//g;
- return $out;
-}
-
-sub get_status {
- my $node = shift;
- my $out = $node->socketcommand or
- $log->push, return undef;
- my @out = split(/\n/, $out);
- $out[0] =~ /^get\s+status\s+(\d+)/i or
- $log->put("bad line 0: $out[0]"), return undef;
- my $cnt = $1;
- my $ret = {};
- for (my $i = 1; $i <= $cnt; $i++) {
- $out[$i] =~ /^$i\s+(.*)/ or
- $log->put("bad line $i: $out[$i]"), return undef;
- my $text = $1;
- $text =~ s/^\s+|\s+$//g;
- if ($text =~ /^ndb\s+(no_contact)\s+(\d+)$/i) {
- $text = lc "$1";
- } elsif ($text =~ /^ndb\s+(starting)\s+(\d+)$/i) {
- $text = lc "$1/$2";
- } elsif ($text =~ /^ndb\s+(started)\s+(\d+)$/i) {
- $text = lc "$1";
- } elsif ($text =~ /^ndb\s+(shutting_down)\s+(\d+)$/i) {
- $text = lc "$1";
- } elsif ($text =~ /^ndb\s+(restarting)\s+(\d+)$/i) {
- $text = lc "$1";
- } elsif ($text =~ /^ndb\s+(unknown)\s+(\d+)$/i) {
- $text = lc "$1";
- }
- $ret->{node}{$i} = $text;
- }
- return $ret;
-}
-
-# run methods
-
-sub getautoinifile {
- my $node = shift;
- @_ == 0 or confess 0+@_;
- my $name = "config.txt";
- my $file = $node->getnodedir->getfile($name);
- return $file;
-}
-
-sub writeautoinifile {
- my $node = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- my $db = $node->getdb;
- my $nodelist = $db->getnodelist('all');
- my $computers = {};
- for my $n (@$nodelist) {
- $computers->{$n->getserver->getid} ||= {
- id => $n->getserver->getid,
- hostname => $n->getserver->getcanon,
- };
- }
- my $section = ""; # e.g. PROCESSES
- my $auto;
- my $edit = sub {
- chomp;
- s/^\s+|\s+$//g;
- if (/^(\w+)$/) {
- $section = uc($1);
- }
- elsif (/^\@loop$/i) {
- $_ = "#$_";
- if ($auto) {
- $log->put("nested \@loop");
- return undef;
- }
- $auto = {};
- }
- elsif (/^\@base\s+(\S+)\s*$/) {
- my $arg = $1;
- $_ = "#$_";
- if (! $auto) {
- $log->put("unexpected \@base");
- return undef;
- }
- if ($arg !~ /^\d+$/) {
- $log->put("non-numerical \@base");
- return undef;
- }
- $auto->{base} = $arg;
- }
- elsif (/^\@end$/i) {
- $_ = "#$_";
- if (! $auto) {
- $log->put("unmatched \@end");
- return undef;
- }
- if ($section eq 'COMPUTERS') {
- for my $id (sort { $a <=> $b } keys %$computers) {
- my $computer = $computers->{$id};
- $_ .= "\n";
- $_ .= "\nId: " . $computer->{id};
- $_ .= "\nHostName: " . $computer->{hostname};
- if ($auto->{list}) {
- $_ .= "\n#defaults";
- for my $s (@{$auto->{list}}) {
- $_ .= "\n$s";
- }
- }
- }
- }
- elsif ($section eq 'PROCESSES') {
- for my $n (@$nodelist) {
- if ($auto->{type} && $n->gettype ne lc($auto->{type})) {
- next;
- }
- $_ .= "\n";
- $_ .= "\nType: " . uc($n->gettype);
- $_ .= "\nId: " . $n->getid;
- $_ .= "\nExecuteOnComputer: " . $n->getserver->getid;
- if ($auto->{list}) {
- $_ .= "\n#defaults";
- for my $s (@{$auto->{list}}) {
- $_ .= "\n$s";
- }
- }
- }
- }
- elsif ($section eq 'CONNECTIONS') {
- if (! $auto->{type}) {
- $log->put("cannot generate CONNECTIONS without type");
- return undef;
- }
- if (! defined($auto->{base})) {
- $log->put("need \@base for CONNECTIONS");
- return undef;
- }
- my $key = $auto->{base};
- for (my $i1 = 0; $i1 <= $#$nodelist; $i1++) {
- for (my $i2 = $i1+1; $i2 <= $#$nodelist; $i2++) {
- my $n1 = $nodelist->[$i1];
- my $n2 = $nodelist->[$i2];
- if ($n1->gettype ne 'db' && $n2->gettype ne 'db') {
- next;
- }
- $_ .= "\n";
- $_ .= "\nType: $auto->{type}";
- $_ .= "\nProcessId1: " . $n1->getid;
- $_ .= "\nProcessId2: " . $n2->getid;
- $key++;
- if ($auto->{type} eq 'TCP') {
- $_ .= "\nPortNumber: $key";
- if (my $list = $opts->{proxy}) {
- my $id1 = $n1->getid;
- my $id2 = $n2->getid;
- if ($list =~ /\b$id1\b.*-.*\b$id2\b/) {
- $key++;
- $_ .= "\nProxy: $key";
- } elsif ($list =~ /\b$id2\b.*-.*\b$id1\b/) {
- $key++;
- $_ .= "\nProxy: $key";
- }
- }
- }
- elsif ($auto->{type} eq 'SHM') {
- $_ .= "\nShmKey: $key";
- }
- else {
- $log->put("cannot handle CONNECTIONS type $auto->{type}");
- return undef;
- }
- if ($auto->{list}) {
- $_ .= "\n#defaults";
- for my $s (@{$auto->{list}}) {
- $_ .= "\n$s";
- }
- }
- }
- }
- }
- else {
- $log->put("found \@end in unknown section '$section'");
- return undef;
- }
- undef $auto;
- }
- elsif (/^$/) {
- }
- elsif ($auto) {
- if (/^Type:\s*(\w+)$/i) {
- $auto->{type} = uc($1);
- }
- else {
- $auto->{list} ||= [];
- push(@{$auto->{list}}, $_);
- }
- $_ = "";
- return 1; # no output
- }
- $_ .= "\n";
- return 1;
- };
- $node->getautoinifile->mkdir
- or $log->push, return undef;
- $node->getinifile->copyedit($node->getautoinifile, $edit)
- or $log->push, return undef;
- return 1;
-}
-
-sub handleprepare {
- my $node = shift;
- @_ == 1 or confess 0+@_;
- my($opts) = @_;
- my $envdefs = $node->getenvdefs($opts);
- defined($envdefs) or return undef;
- my $nodedir = $node->getnodedir;
- my $shellfile = $node->getshellfile;
- my $port = $node->getport;
- my $lpath = $node->getlocalcfg->getbasename;
- $node->writeautoinifile($opts)
- or $log->push, return undef;
- my $ipath = $node->getautoinifile->getbasename;
- $node->getbincfg->mkdir or $log->push, return undef;
- my $cpath = $node->getbincfg->getbasename;
- my $run;
- if ($^O ne 'MSWin32') {
- $run = "\$NDB_TOP/bin/mgmtsrvr";
- } else {
- $run = "mgmtsrvr";
- }
- my $statport = $port + 1;
- $run .= " -l $lpath -c $ipath";
- if ($node->hasrun) {
- $run = $node->getrun;
- }
- if (defined($opts->{run})) {
- $run = $opts->{run};
- }
- $log->put("run: $run")->push($node)->user;
- if ($^O ne 'MSWin32') {
- $shellfile->puttext(<<END) or $log->push, return undef;
-$envdefs
-cd @{[ $nodedir->getpath ]} || exit 1
-set -x
-exec \$DEBUGGER $run
-END
- } else {
- $shellfile->puttext(<<END) or $log->push, return undef;
-$envdefs
-cd @{[ $nodedir->getpath ]}
-call $run
-END
- }
- return 1;
-}
-
-sub cmd_stopnode_fg {
- my $node = shift;
- @_ == 1 or confess 0+@_;
- my($cmd) = @_;
- $log->put("write: quit")->push($node)->user;
- $node->getiow->write("quit\n");
- $node->setstate('stop')
- or log->push($node), return undef;
- return 1;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Server.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Server.pm
deleted file mode 100644
index 5d2118f0ffe..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Server.pm
+++ /dev/null
@@ -1,149 +0,0 @@
-package NDB::Net::Server;
-
-use strict;
-use Carp;
-use Socket;
-
-require NDB::Net::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Net::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-my %servercache = ();
-
-NDB::Net::Server->attributes(
- id => sub { s/^\s+|\s+$//g; m/^\S+$/ && ! m!/! },
- domain => sub { $_ == PF_UNIX || $_ == PF_INET },
-);
-
-sub desc {
- my $server = shift;
- my $id = $server->getid;
- return "server $id";
-}
-
-sub add {
- my $server = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- if ($servercache{$server->getid}) {
- $log->put("duplicate server")->push($server);
- return undef;
- }
- $servercache{$server->getid} = $server;
- return 1;
-}
-
-sub get {
- my $class = shift;
- @_ == 1 or confess 0+@_;
- my($id) = @_;
- $id =~ s/^\s+|\s+$//g;
- my $server = $servercache{$id};
- if (! $server) {
- $log->put("$id: undefined server");
- return undef;
- }
- $log->put("found")->push($server)->debug;
- return $server;
-}
-
-sub delete {
- my $server = shift;
- delete $servercache{$server->getid};
-}
-
-sub deleteall {
- my $class = shift;
- for my $id (sort keys %servercache) {
- my $server = $servercache{$id};
- $server->delete;
- }
-}
-
-# local server is this server process
-
-my $localserver;
-
-sub setlocal {
- my $server = shift;
- @_ == 0 or confess 0+@_;
- $localserver = $server;
-}
-
-sub islocal {
- my $server = shift;
- @_ == 0 or confess 0+@_;
- return $localserver eq $server;
-}
-
-# client side
-
-sub testconnect {
- my $server = shift;
- @_ == 0 or confess 0+@_;
- my $socket = $server->connect or
- $log->push($server), return undef;
- $socket->close;
- return 1;
-}
-
-sub request {
- my $server = shift;
- @_ == 1 or confess 0+@_;
- my($cmd) = @_;
- unless (ref($cmd) && $cmd->isa('NDB::Net::Command')) {
- confess 'oops';
- }
- my $socket = $server->connect
- or $log->push($server), return undef;
- anon: {
- my $line = $cmd->getline;
- my $n = $socket->write("$line\n");
- defined($n) && $n == length("$line\n")
- or $log->push($server), return undef;
- shutdown($socket->{fh}, 1);
- }
- my $value;
- try: {
- my $last;
- loop: {
- my $line = $socket->readline;
- defined($line)
- or $log->push($server), last try;
- if ($socket->getreadend) {
- last loop;
- }
- while (chomp($line)) {}
- $log->put($line)->user
- unless $log->hasvalue($line);
- $last = $line;
- redo loop;
- }
- if (! $log->hasvalue($last)) {
- $log->put("missing return value in \"$last\"")->push($server);
- last try;
- }
- $value = $log->getvalue($last);
- defined($value)
- or $log->push, last try;
- $value = $value->[0];
- if (! defined($value)) {
- $log->put("failed")->push($cmd);
- last try;
- }
- }
- $socket->close;
- return $value;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerINET.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerINET.pm
deleted file mode 100644
index a065c186855..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerINET.pm
+++ /dev/null
@@ -1,116 +0,0 @@
-package NDB::Net::ServerINET;
-
-use strict;
-use Carp;
-use Socket;
-
-require NDB::Net::Server;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Net::Server);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Net::ServerINET->attributes(
- host => sub { s/^\s+|\s+$//g; /^\S+$/ },
- port => sub { s/^\s+|\s+$//g; /^\d+$/ },
- canon => sub { s/^\s+|\s+$//g; /^\S+$/ },
- aliases => sub { ref($_) eq 'ARRAY' },
-);
-
-
-sub desc {
- my $server = shift;
- my $id = $server->getid;
- my $host = $server->gethost;
- return "server $id at $host";
-}
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $server = $class->SUPER::new(%attr);
- $server->setid($attr{id})
- or $log->push, return undef;
- $server->setdomain(PF_INET)
- or $log->push, return undef;
- $server->sethost($attr{host})
- or $log->push, return undef;
- $server->setport($attr{port})
- or $log->push, return undef;
- my($canon, $aliases) = gethostbyname($server->gethost);
- if (! defined($canon)) {
- $log->put("%s: unknown host", $server->gethost);
- return undef;
- }
- $server->setcanon($canon)
- or $log->push, return undef;
- $server->setaliases([ split(' ', $aliases) ])
- or $log->push, return undef;
- $server->add or
- $log->push, return undef;
- $log->put("added")->push($server)->debug;
- return $server;
-}
-
-# find matching servers
-
-sub match {
- my $class = shift;
- @_ == 3 or confess 0+@_;
- my($host, $port, $servers) = @_;
- if (! defined($port) && $host =~ /:/) {
- ($host, $port) = split(/:/, $host, 2);
- }
- $host =~ s/^\s+|\s+$//g;
- my($canon) = gethostbyname($host);
- unless (defined($canon)) {
- $log->put("$host: unknown host");
- return undef;
- }
- my $hostport = $host;
- if (defined($port)) {
- $port =~ s/^\s+|\s+$//g;
- $port =~ /\d+$/
- or $log->put("$port: non-numeric port"), return undef;
- $hostport .= ":$port";
- }
- my @server = ();
- for my $s (@$servers) {
- ($s->getdomain == PF_INET) || next;
- ($s->getcanon eq $canon) || next;
- ($port && $s->getport != $port) && next;
- push(@server, $s);
- }
- if (! @server) {
- $log->put("$hostport: no server found");
- }
- if (@server > 1) {
- $log->put("$hostport: multiple servers at ports ",
- join(' ', map($_->getport, @server)));
- }
- return \@server;
-}
-
-# client side
-
-sub connect {
- my $server = shift;
- @_ == 0 or confess 0+@_;
- my $socket;
- $socket = NDB::Util::SocketINET->new or
- $log->push, return undef;
- $socket->connect($server->gethost, $server->getport) or
- $log->push, return undef;
- return $socket;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerUNIX.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerUNIX.pm
deleted file mode 100644
index b3fa245d5ee..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerUNIX.pm
+++ /dev/null
@@ -1,54 +0,0 @@
-package NDB::Net::ServerUNIX;
-
-use strict;
-use Carp;
-use Socket;
-
-require NDB::Net::Server;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Net::Server);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Net::ServerUNIX->attributes(
- path => sub { s/^\s+|\s+$//g; /^\S+$/ },
-);
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $server = $class->SUPER::new(%attr);
- $server->setid($attr{id})
- or $log->push, return undef;
- $server->setdomain(PF_UNIX)
- or $log->push, return undef;
- $server->setpath($attr{path})
- or $log->push, return undef;
- $server->add or
- $log->push, return undef;
- return $server;
-}
-
-# client side
-
-sub connect {
- my $server = shift;
- @_ == 0 or confess 0+@_;
- my $socket;
- $socket = NDB::Util::SocketUNIX->new or
- $log->push, return undef;
- $socket->connect($server->getpath) or
- $log->push, return undef;
- return $socket;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Run.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Run.pm
deleted file mode 100644
index a8cabde544c..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Run.pm
+++ /dev/null
@@ -1,40 +0,0 @@
-package NDB::Run;
-
-use strict;
-use Carp;
-require Exporter;
-
-use NDB::Net;
-
-use vars qw(@ISA @EXPORT @EXPORT_OK);
-@ISA = qw(Exporter);
-
-use vars qw(@modules);
-@modules = qw(
- NDB::Run::Base
- NDB::Run::Database
- NDB::Run::Env
- NDB::Run::Node
-);
-
-return 1 if $main::onlymodules;
-
-for my $module (@modules) {
- eval "require $module";
- $@ and confess "$module $@";
-}
-
-for my $module (@modules) {
- eval "$module->initmodule";
- $@ and confess "$module $@";
-}
-
-# methods
-
-sub getenv {
- my $class = shift;
- return NDB::Run::Env->new(@_);
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Base.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Base.pm
deleted file mode 100644
index 4769f2c4441..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Base.pm
+++ /dev/null
@@ -1,12 +0,0 @@
-package NDB::Run::Base;
-
-use strict;
-use Carp;
-
-require NDB::Util::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Util::Base);
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Database.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Database.pm
deleted file mode 100644
index 9a12ddb20b3..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Database.pm
+++ /dev/null
@@ -1,89 +0,0 @@
-package NDB::Run::Database;
-
-use strict;
-use Carp;
-
-require NDB::Run::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Run::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Run::Database->attributes(
- name => sub { s/^\s+|\s+$//g; /^\S+$/ && ! m!/! },
- env => sub { ref && $_->isa('NDB::Run::Env') },
-);
-
-sub desc {
- my $db = shift;
- return $db->getname;
-}
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $db = $class->SUPER::new(%attr);
- $db->setname($attr{name})
- or $log->push, return undef;
- $db->setenv($attr{env})
- or $log->push, return undef;
- return $db;
-}
-
-sub getnode {
- my $db = shift;
- @_ == 1 or croak q(usage: $node = $db->getnode($id));
- my($id) = @_;
- my $node = NDB::Run::Node->new(db => $db, id => $id)
- or $log->push, return undef;
- return $node;
-}
-
-# commands
-
-sub start {
- my $db = shift;
- my $opts = shift;
- my $argv = [ 'start', $db->getname, $opts ];
- my $cmd = NDB::Net::Command->new(argv => $argv)
- or $log->push, return undef;
- my $ret = $db->getenv->docmd($cmd);
- defined($ret)
- or $log->push, return undef;
- return $ret;
-}
-
-sub stop {
- my $db = shift;
- my $opts = shift;
- my $argv = [ 'stop', $db->getname, $opts ];
- my $cmd = NDB::Net::Command->new(argv => $argv)
- or $log->push, return undef;
- my $ret = $db->getenv->docmd($cmd);
- defined($ret)
- or $log->push, return undef;
- return $ret;
-}
-
-sub kill {
- my $db = shift;
- my $opts = shift;
- my $argv = [ 'kill', $db->getname, $opts ];
- my $cmd = NDB::Net::Command->new(argv => $argv)
- or $log->push, return undef;
- my $ret = $db->getenv->docmd($cmd);
- defined($ret)
- or $log->push, return undef;
- return $ret;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Env.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Env.pm
deleted file mode 100644
index e851a82636b..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Env.pm
+++ /dev/null
@@ -1,84 +0,0 @@
-package NDB::Run::Env;
-
-use strict;
-use Carp;
-
-require NDB::Run::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Run::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Run::Env->attributes(
- server => sub { ref && $_->isa('NDB::Net::Server') },
-);
-
-sub desc {
- "env";
-}
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $env = $class->SUPER::new(%attr);
- return $env;
-}
-
-sub getdb {
- my $env = shift;
- @_ == 1 or croak q(usage: $db = $env->getdb($name));
- my($name) = @_;
- my $db = NDB::Run::Database->new(env => $env, name => $name)
- or $log->push, return undef;
- return $db;
-}
-
-# commands
-
-sub init {
- my $env = shift;
- my $netenv = NDB::Net::Env->instance;
- my $netcfg = NDB::Net::Config->new(file => $netenv->getnetcfg)
- or $log->push, return undef;
- $netcfg->load
- or $log->push, return undef;
- my $servers = $netcfg->getservers
- or $log->push, return undef;
- my $server;
- for my $s (@$servers) {
- if (! $s->testconnect) {
- $log->push->warn;
- next;
- }
- $server = $s;
- last;
- }
- if (! $server) {
- $log->put("no available server")->push($netcfg);
- return undef;
- }
- $env->setserver($server)
- or $log->push, return undef;
- $log->put("selected")->push($server)->info;
- return 1;
-}
-
-sub docmd {
- my $env = shift;
- my $cmd = shift;
- my $ret = $env->getserver->request($cmd);
- defined($ret)
- or $log->push, return undef;
- return $ret;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Node.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Node.pm
deleted file mode 100644
index e657021b229..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Node.pm
+++ /dev/null
@@ -1,114 +0,0 @@
-package NDB::Run::Node;
-
-use strict;
-use Carp;
-
-require NDB::Run::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Run::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Run::Node->attributes(
- env => sub { ref && $_->isa('NDB::Run::Env') },
- db => sub { ref && $_->isa('NDB::Run::Database') },
- dbname => sub { s/^\s+|\s+$//g; /^\S+$/ && ! m!/! },
- id => sub { s/^\s+|\s+$//g; s/^0+(\d+)$/$1/; /^\d+$/ && $_ > 0 },
- type => sub { s/^\s+|\s+$//g; /^(mgmt|db|api)$/ },
-);
-
-sub desc {
- my $node = shift;
- my $dbname = $node->getdb->getname;
- my $id = $node->getid;
- my $type = "?"; # $node->gettype;
- return "$dbname.$id-$type";
-}
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $node = $class->SUPER::new(%attr);
- $node->setdb($attr{db})
- or $log->push, return undef;
- $node->setenv($node->getdb->getenv)
- or $log->push, return undef;
- $node->setdbname($node->getdb->getname)
- or $log->push, return undef;
- $node->setid($attr{id})
- or $log->push, return undef;
-# $node->settype($attr{type})
-# or $log->push, return undef;
- return $node;
-}
-
-# commands
-
-sub start {
- my $node = shift;
- my $opts = shift;
- my $argv = [ 'startnode', $node->getdb->getname, $node->getid, $opts ];
- my $cmd = NDB::Net::Command->new(argv => $argv)
- or $log->push, return undef;
- my $ret = $node->getenv->docmd($cmd)
- or $log->push, return undef;
- return $ret;
-}
-
-sub stop {
- my $node = shift;
- my $opts = shift;
- my $argv = [ 'stopnode', $node->getdb->getname, $node->getid, $opts ];
- my $cmd = NDB::Net::Command->new(argv => $argv)
- or $log->push, return undef;
- my $ret = $node->getenv->docmd($cmd)
- or $log->push, return undef;
- return $ret;
-}
-
-sub kill {
- my $node = shift;
- my $opts = shift;
- my $argv = [ 'killnode', $node->getdb->getname, $node->getid, $opts ];
- my $cmd = NDB::Net::Command->new(argv => $argv)
- or $log->push, return undef;
- my $ret = $node->getenv->docmd($cmd)
- or $log->push, return undef;
- return $ret;
-}
-
-sub stat {
- my $node = shift;
- my $opts = shift;
- my $argv = [ 'statnode', $node->getdb->getname, $node->getid, $opts ];
- my $cmd = NDB::Net::Command->new(argv => $argv)
- or $log->push, return undef;
- my $ret = $node->getenv->docmd($cmd)
- or $log->push, return undef;
- return $ret;
-}
-
-sub write {
- my $node = shift;
- my $text = shift;
- my $opts = shift;
- my $argv = [ 'writenode', $node->getdb->getname, $node->getid, $text, $opts ];
- my $cmd = NDB::Net::Command->new(argv => $argv)
- or $log->push, return undef;
- my $ret = $node->getenv->docmd($cmd)
- or $log->push, return undef;
- ref($ret) eq 'HASH' && defined($ret->{output})
- or confess 'oops';
- return $ret;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Util.pm
deleted file mode 100644
index d5db35cbf13..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util.pm
+++ /dev/null
@@ -1,37 +0,0 @@
-package NDB::Util;
-
-use strict;
-use Carp;
-require Exporter;
-
-use vars qw(@ISA @EXPORT @EXPORT_OK);
-@ISA = qw(Exporter);
-
-use vars qw(@modules);
-@modules = qw(
- NDB::Util::Base
- NDB::Util::Dir
- NDB::Util::Event
- NDB::Util::File
- NDB::Util::IO
- NDB::Util::Lock
- NDB::Util::Log
- NDB::Util::Socket
- NDB::Util::SocketINET
- NDB::Util::SocketUNIX
-);
-
-return 1 if $main::onlymodules;
-
-for my $module (@modules) {
- eval "require $module";
- $@ and confess "$module $@";
-}
-
-for my $module (@modules) {
- eval "$module->initmodule";
- $@ and confess "$module $@";
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Base.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Base.pm
deleted file mode 100644
index 20df78a3b9b..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Base.pm
+++ /dev/null
@@ -1,113 +0,0 @@
-package NDB::Util::Base;
-
-use strict;
-use Carp;
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-sub new {
- my $class = shift;
- my $this = bless {}, $class;
- return $this;
-}
-
-sub getlog {
- my $this = shift;
- return NDB::Util::Log->instance;
-}
-
-# clone an object
-# extra attributes override or delete (if value is undef)
-sub clone {
- my $this = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $that = bless {}, ref($this);
- for my $attr (sort keys %$this) {
- if (! exists($attr{$attr})) {
- my $get = "get$attr";
- $attr{$attr} = $this->$get();
- }
- }
- for my $attr (sort keys %attr) {
- if (defined($attr{$attr})) {
- my $set = "set$attr";
- $that->$set($attr{$attr});
- }
- }
- return $that;
-}
-
-# methods for member variables:
-# - set returns 1 on success and undef on undefined or invalid value
-# - get aborts unless value exists or a default (maybe undef) is given
-# - has tests existence of value
-# - del deletes the value and returns it (maybe undef)
-
-sub attributes {
- @_ % 2 == 1 or confess 0+@_;
- my $class = shift;
- my @attr = @_;
- while (@attr) {
- my $attr = shift @attr;
- my $filter = shift @attr;
- $attr =~ /^\w+$/ or confess $attr;
- ref($filter) eq 'CODE' or confess $attr;
- my $set = sub {
- @_ == 2 or confess "set$attr: arg count: @_";
- my $this = shift;
- my $value = shift;
- if (! defined($value)) {
- $log->put("set$attr: undefined value")->push($this);
- return undef;
- }
- local $_ = $value;
- if (! &$filter($this)) {
- $log->put("set$attr: invalid value: $value")->push($this);
- return undef;
- }
- $value = $_;
- if (! defined($value)) {
- confess "set$attr: changed to undef";
- }
- $this->{$attr} = $value;
- return 1;
- };
- my $get = sub {
- @_ == 1 || @_ == 2 or confess "get$attr: arg count: @_";
- my $this = shift;
- my $value = $this->{$attr};
- if (! defined($value)) {
- @_ == 0 and confess "get$attr: no value";
- $value = shift;
- }
- return $value;
- };
- my $has = sub {
- @_ == 1 or confess "has$attr: arg count: @_";
- my $this = shift;
- my $value = $this->{$attr};
- return defined($value);
- };
- my $del = sub {
- @_ == 1 or confess "del$attr: arg count: @_";
- my $this = shift;
- my $value = delete $this->{$attr};
- return $value;
- };
- no strict 'refs';
- *{"${class}::set$attr"} = $set;
- *{"${class}::get$attr"} = $get;
- *{"${class}::has$attr"} = $has;
- *{"${class}::del$attr"} = $del;
- }
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Dir.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Dir.pm
deleted file mode 100644
index 90609b971c7..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Dir.pm
+++ /dev/null
@@ -1,170 +0,0 @@
-package NDB::Util::Dir;
-
-use strict;
-use Carp;
-use Symbol;
-use Errno;
-use File::Basename;
-
-require NDB::Util::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Util::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Util::Dir->attributes(
- path => sub { length > 0 },
-);
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $dir = $class->SUPER::new(%attr);
- $dir->setpath($attr{path})
- or $log->push, return undef;
- return $dir;
-}
-
-sub desc {
- my $dir = shift;
- return $dir->getpath;
-}
-
-sub getparent {
- my $dir = shift;
- @_ == 0 or confess 0+@_;
- my $ppath = dirname($dir->getpath);
- my $pdir = NDB::Util::Dir->new(path => $ppath);
- return $pdir;
-}
-
-sub getdir {
- my $dir = shift;
- @_ == 1 or confess 0+@_;
- my($name) = @_;
- my $dirpath = $dir->getpath;
- my $path = $dirpath eq '.' ? $name : File::Spec->catfile($dirpath, $name);
- my $entry = NDB::Util::Dir->new(path => $path);
- return $entry;
-}
-
-sub getfile {
- my $dir = shift;
- @_ == 1 or confess 0+@_;
- my($name) = @_;
- my $dirpath = $dir->getpath;
- my $path = $dirpath eq '.' ? $name : File::Spec->catfile($dirpath, $name);
- my $entry = NDB::Util::File->new(path => $path);
- return $entry;
-}
-
-# list
-
-sub listdirs {
- my $dir = shift;
- @_ == 0 or confess 0+@_;
- my @list = ();
- my $dirpath = $dir->getpath;
- my $dh = gensym();
- if (! opendir($dh, $dirpath)) {
- $log->put("opendir failed: $!")->push($dir);
- return undef;
- }
- while (defined(my $name = readdir($dh))) {
- if ($name eq '.' || $name eq '..') {
- next;
- }
- my $path = $dirpath eq '.' ? $name : "$dirpath/$name";
- if (! -l $path && -d $path) {
- my $dir2 = NDB::Util::Dir->new(path => $path)
- or $log->push, return undef;
- push(@list, $dir2);
- }
- }
- close($dh);
- return \@list;
-}
-
-sub listfiles {
- my $dir = shift;
- @_ == 0 or confess 0+@_;
- my @list = ();
- my $dirpath = $dir->getpath;
- my $dh = gensym();
- if (! opendir($dh, $dirpath)) {
- $log->put("opendir failed: $!")->push($dir);
- return undef;
- }
- while (defined(my $name = readdir($dh))) {
- if ($name eq '.' || $name eq '..') {
- next;
- }
- my $path = $dirpath eq '.' ? $name : "$dirpath/$name";
- if (! -d $path && -e $path) {
- my $file2 = NDB::Util::File->new(path => $path)
- or $log->push, return undef;
- push(@list, $file2);
- }
- }
- close($dh);
- return \@list;
-}
-
-# create / remove
-
-sub mkdir {
- my $dir = shift;
- @_ == 0 or confess 0+@_;
- if (! -d $dir->getpath) {
- my $pdir = $dir->getparent;
- if (length($pdir->getpath) >= length($dir->getpath)) {
- $log->put("mkdir looping")->push($dir);
- return undef;
- }
- $pdir->mkdir or return undef;
- if (! mkdir($dir->getpath, 0777)) {
- my $errstr = "$!";
- if (-d $dir->getpath) {
- return 1;
- }
- $log->put("mkdir failed: $errstr")->push($dir);
- return undef;
- }
- }
- return 1;
-}
-
-sub rmdir {
- my $dir = shift;
- my $keep = shift; # keep top level
- $log->put("remove")->push($dir)->info;
- my $list;
- $list = $dir->listdirs or $log->push, return undef;
- for my $d (@$list) {
- $d->rmdir or $log->push, return undef;
- }
- $list = $dir->listfiles or $log->push, return undef;
- for my $f (@$list) {
- $f->unlink or $log->push, return undef;
- }
- if (! $keep && ! rmdir($dir->getpath)) {
- my $errstr = "$!";
- if (! -e $dir->getpath) {
- return 1;
- }
- $log->put("rmdir failed: $errstr")->push($dir);
- return undef;
- }
- return 1;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Event.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Event.pm
deleted file mode 100644
index a3ad32cd7fb..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Event.pm
+++ /dev/null
@@ -1,103 +0,0 @@
-package NDB::Util::Event;
-
-use strict;
-use Carp;
-use Errno;
-
-require NDB::Util::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Util::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Util::Event->attributes();
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $event = $class->SUPER::new(%attr);
- return $event;
-}
-
-# set and test bits
-
-sub check {
- my $event = shift;
- my($file, $type) = @_;
- my $fileno;
- if (ref($file) eq 'GLOB') {
- $fileno = fileno($file);
- }
- elsif (ref($file)) {
- $file->can("getfh") or confess 'oops';
- $fileno = fileno($file->getfh);
- }
- else {
- $fileno = $file;
- }
- defined($fileno) or confess 'oops';
- $fileno =~ s/^\s+|\s+$//g;
- $fileno =~ /^\d+$/ or confess 'oops';
- $type =~ /^[rwe]$/ or confess 'oops';
- return ($fileno, $type);
-}
-
-sub set {
- my $event = shift;
- @_ == 2 or confess 0+@_;
- my($fileno, $type) = $event->check(@_);
- vec($event->{"i_$type"}, $fileno, 1) = 1;
-}
-
-sub clear {
- my $event = shift;
- @_ == 2 or confess 0+@_;
- my($fileno, $type) = $event->check(@_);
- vec($event->{"i_$type"}, $fileno, 1) = 0;
-}
-
-sub test {
- my $event = shift;
- @_ == 2 or confess 0+@_;
- my($fileno, $type) = $event->check(@_);
- return vec($event->{"o_$type"}, $fileno, 1);
-}
-
-# poll
-
-sub poll {
- my $event = shift;
- @_ <= 1 or confess 'oops';
- my $timeout = shift;
- if (defined($timeout)) {
- $timeout =~ /^\d+$/ or confess 'oops';
- }
- $event->{o_r} = $event->{i_r};
- $event->{o_w} = $event->{i_w};
- $event->{o_e} = $event->{i_e};
- my $n;
- $n = select($event->{o_r}, $event->{o_w}, $event->{o_e}, $timeout);
- if ($n < 0 || ! defined($n)) {
- if ($! == Errno::EINTR) {
- $log->put("select interrupted");
- return 0;
- }
- $log->put("select failed: $!");
- return undef;
- }
- if (! $n) {
- $log->put("select timed out");
- }
- return $n;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/File.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/File.pm
deleted file mode 100644
index 4b3cb38191c..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/File.pm
+++ /dev/null
@@ -1,163 +0,0 @@
-package NDB::Util::File;
-
-use strict;
-use Carp;
-use Symbol;
-use Errno;
-use File::Basename;
-
-require NDB::Util::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Util::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Util::File->attributes(
- path => sub { length > 0 },
-);
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $file = $class->SUPER::new(%attr);
- $file->setpath($attr{path})
- or $log->push, return undef;
- return $file;
-}
-
-sub desc {
- my $file = shift;
- return $file->getpath;
-}
-
-sub getdir {
- my $file = shift;
- @_ == 0 or confess 0+@_;
- my $dirpath = dirname($file->getpath);
- my $dir = NDB::Util::Dir->new(path => $dirpath);
- return $dir;
-}
-
-sub getlock {
- my $file = shift;
- @_ == 0 or confess 0+@_;
- my $lock = NDB::Util::Lock->new(path => $file->getpath);
- return $lock;
-}
-
-sub getbasename {
- my $file = shift;
- @_ == 0 or confess 0+@_;
- return basename($file->getpath);
-}
-
-# make dir, unlink
-
-sub mkdir {
- my $file = shift;
- @_ == 0 or confess 0+@_;
- return $file->getdir->mkdir;
-}
-
-sub unlink {
- my $file = shift;
- @_ == 0 or confess 0+@_;
- $log->put("remove")->push($file)->debug;
- if (-e $file->getpath) {
- if (! unlink($file->getpath)) {
- my $errstr = "$!";
- if (! -e $file->getpath) {
- return 1;
- }
- $log->put("unlink failed: $errstr")->push($file);
- return undef;
- }
- }
- return 1;
-}
-
-# read /write
-
-sub open {
- my $file = shift;
- @_ == 1 or confess 0+@_;
- my($mode) = @_;
- my $fh = gensym();
- if (! open($fh, $mode.$file->getpath)) {
- $log->put("open$mode failed")->push($file);
- return undef;
- }
- my $io = NDB::Util::IO->new;
- $io->setfh($fh)
- or $log->push, return undef;
- return $io;
-}
-
-sub puttext {
- my $file = shift;
- @_ == 1 or confess 0+@_;
- my($text) = @_;
- ref($text) and confess 'oops';
- $file->mkdir
- or $log->push, return undef;
- $file->unlink
- or $log->push, return undef;
- my $io = $file->open(">")
- or $log->push, return undef;
- if (! $io->write($text)) {
- $log->push($file);
- $io->close;
- return undef;
- }
- if (! $io->close) {
- $log->push($file);
- return undef;
- }
- return 1;
-}
-
-sub putlines {
- my $file = shift;
- @_ == 1 or confess 0+@_;
- my($lines) = @_;
- ref($lines) eq 'ARRAY' or confess 'oops';
- my $text = join("\n", @$lines) . "\n";
- $file->puttext($text) or $log->push, return undef;
- return 1;
-}
-
-sub copyedit {
- my $file1 = shift;
- @_ == 2 or confess 0+@_;
- my($file2, $edit) = @_;
- my $io1 = $file1->open("<")
- or $log->push, return undef;
- my $io2 = $file2->open(">")
- or $log->push, return undef;
- local $_;
- my $fh1 = $io1->getfh;
- my $fh2 = $io2->getfh;
- my $line = 0;
- while (defined($_ = <$fh1>)) {
- $line++;
- if (! &$edit()) {
- $log->push("line $line")->push($file1);
- return undef;
- }
- print $fh2 $_;
- }
- $io1->close;
- $io2->close;
- return 1;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/IO.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/IO.pm
deleted file mode 100644
index 34f4d0a150d..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/IO.pm
+++ /dev/null
@@ -1,213 +0,0 @@
-package NDB::Util::IO;
-
-use strict;
-use Carp;
-
-require NDB::Util::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Util::Base);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Util::IO->attributes(
- readbuf => sub { defined },
- readend => sub { defined },
- writebuf => sub { defined },
- writeend => sub { defined },
- iosize => sub { $_ > 0 },
- timeout => sub { /^\d+$/ },
- fh => sub { ref($_) eq 'GLOB' && defined(fileno($_)) },
-);
-
-sub desc {
- my $io = shift;
- my $fileno = $io->hasfh ? fileno($io->getfh) : -1;
- return "fd=$fileno";
-}
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $io = $class->SUPER::new(%attr);
- $io->setreadbuf("")
- or $log->push, return undef;
- $io->setreadend(0)
- or $log->push, return undef;
- $io->setwritebuf("")
- or $log->push, return undef;
- $io->setwriteend(0)
- or $log->push, return undef;
- $io->setiosize(1024)
- or $log->push, return undef;
- $io->settimeout(0)
- or $log->push, return undef;
- if (defined($attr{fh})) {
- $io->setfh($attr{fh})
- or $log->push, return undef;
- }
- return $io;
-}
-
-# input / output
-
-sub read {
- my $io = shift;
- @_ == 0 or confess 0+@_;
- if ($io->getreadend) {
- return "";
- }
- my $size = $io->getiosize;
- my $timeout = $io->hastimeout ? $io->gettimeout : 0;
- my $fh = $io->getfh;
- my $n;
- my $data;
- eval {
- if ($^O ne 'MSWin32' && $timeout > 0) {
- local $SIG{ALRM} = sub { die("timed out\n") };
- alarm($timeout);
- $n = sysread($fh, $data, $size);
- alarm(0);
- }
- else {
- $n = sysread($fh, $data, $size);
- }
- };
- if ($@) {
- $log->put("read error: $@")->push($io);
- return undef;
- }
- if (! defined($n)) {
- $log->put("read failed: $!")->push($io);
- return undef;
- }
- if ($n == 0) {
- $io->setreadend(1)
- or $log->push, return undef;
- $log->put("read EOF")->push($io)->debug;
- return "";
- }
- (my $show = $data) =~ s!\n!\\n!g;
- $log->put("read: $show")->push($io)->debug;
- return $data;
-}
-
-sub readbuf {
- my $io = shift;
- @_ == 0 or confess 0+@_;
- my $data = $io->read;
- defined($data) or
- $log->push, return undef;
- if (length($data) == 0) {
- return 0;
- }
- $io->setreadbuf($io->getreadbuf . $data)
- or $log->push, return undef;
- return 1;
-}
-
-sub readupto {
- my $io = shift;
- @_ == 1 or confess 0+@_;
- my($code) = @_;
- ref($code) eq 'CODE' or confess 'oops';
- my $k = &$code($io->getreadbuf);
- if (! defined($k)) {
- $log->push($io);
- return undef;
- }
- if ($k == 0) {
- my $n = $io->readbuf;
- defined($n) or
- $log->push, return undef;
- if ($n == 0) {
- if ($io->getreadbuf eq "") {
- return "";
- }
- $log->put("incomplete input: %s", $io->getreadbuf)->push($io);
- return undef;
- }
- $k = &$code($io->getreadbuf);
- if (! defined($k)) {
- $log->push($io);
- return undef;
- }
- if ($k == 0) {
- return "";
- }
- }
- my $head = substr($io->getreadbuf, 0, $k);
- my $tail = substr($io->getreadbuf, $k);
- $io->setreadbuf($tail)
- or $log->push, return undef;
- return $head;
-}
-
-sub readline {
- my $io = shift;
- @_ == 0 or confess 0+@_;
- my $code = sub {
- my $i = index($_[0], "\n");
- return $i < 0 ? 0 : $i + 1;
- };
- return $io->readupto($code);
-}
-
-sub write {
- my $io = shift;
- @_ == 1 or confess 0+@_;
- my($data) = @_;
- my $timeout = $io->hastimeout ? $io->gettimeout : 0;
- my $fh = $io->getfh;
- (my $show = $data) =~ s!\n!\\n!g;
- $log->put("write: $show")->push($io)->debug;
- my $n;
- my $size = length($data);
- eval {
- local $SIG{PIPE} = sub { die("broken pipe\n") };
- if ($^O ne 'MSWin32' && $timeout > 0) {
- local $SIG{ALRM} = sub { die("timed out\n") };
- alarm($timeout);
- $n = syswrite($fh, $data, $size);
- alarm(0);
- }
- else {
- $n = syswrite($fh, $data, $size);
- }
- };
- if ($@) {
- $log->put("write error: $@")->push($io);
- return undef;
- }
- if (! defined($n)) {
- $log->put("write failed: $!")->push($io);
- return undef;
- }
- if ($n > $size) {
- $log->put("impossible write: $n > $size")->push($io);
- return undef;
- }
- if ($n != $size) { # need not be error
- $log->put("short write: $n < $size")->push($io);
- }
- return $n;
-}
-
-sub close {
- my $io = shift;
- @_ == 0 or confess 0+@_;
- if (! close($io->delfh)) {
- $log->put("close failed: $!")->push($io);
- return undef;
- }
- return 1;
-}
-
-1;
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Lock.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Lock.pm
deleted file mode 100644
index b515e633059..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Lock.pm
+++ /dev/null
@@ -1,136 +0,0 @@
-package NDB::Util::Lock;
-
-use strict;
-use Carp;
-use Symbol;
-use Fcntl qw(:flock);
-use Errno;
-use File::Basename;
-
-require NDB::Util::File;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Util::File);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Util::Lock->attributes(
- pid => sub { $_ != 0 },
-);
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $lock = $class->SUPER::new(%attr);
- return $lock;
-}
-
-sub desc {
- my $lock = shift;
- return $lock->getpath;
-}
-
-# test / set
-
-sub test {
- my $lock = shift;
- @_ == 0 or confess 0+@_;
- my $fh = gensym();
- if (! open($fh, "+<$lock->{path}")) {
- if ($! != Errno::ENOENT) {
- $log->put("$lock->{path}: open failed: $!");
- return undef;
- }
- return 0; # file does not exist
- }
- if (flock($fh, LOCK_EX|LOCK_NB)) {
- close($fh);
- return 0; # file was not locked
- }
- if ($^O eq 'MSWin32') {
- close($fh);
- if (! open($fh, "<$lock->{path}x")) {
- $log->put("$lock->{path}x: open failed: $!");
- return undef;
- }
- }
- my $pid = <$fh>;
- close($fh);
- ($pid) = split(' ', $pid);
- if ($pid+0 == 0) {
- $log->put("$lock->{path}: locked but pid='$pid' is zero");
- return undef;
- }
- $lock->{pid} = $pid;
- return 1; # file was locked
-}
-
-sub set {
- my $lock = shift;
- @_ == 0 or confess 0+@_;
- my $fh = gensym();
- if (! open($fh, "+<$lock->{path}")) {
- if ($! != Errno::ENOENT) {
- $log->put("$lock->{path}: open failed: $!");
- return undef;
- }
- close($fh);
- if (! open($fh, ">$lock->{path}")) {
- $log->put("$lock->{path}: create failed: $!");
- return undef;
- }
- }
- if (! flock($fh, LOCK_EX|LOCK_NB)) {
- $log->put("$lock->{path}: flock failed: $!");
- close($fh);
- return 0; # file was probably locked
- }
- my $line = "$$\n";
- if ($^O eq 'MSWin32') {
- my $gh = gensym();
- if (! open($gh, ">$lock->{path}x")) {
- $log->put("$lock->{path}x: open for write failed: $!");
- close($fh);
- return undef;
- }
- if (! syswrite($gh, $line)) {
- close($fh);
- close($gh);
- $log->put("$lock->{path}x: write failed: $!");
- return undef;
- }
- close($gh);
- } else {
- if (! truncate($fh, 0)) {
- close($fh);
- $log->put("$lock->{path}: truncate failed: $!");
- return undef;
- }
- if (! syswrite($fh, $line)) {
- close($fh);
- $log->put("$lock->{path}: write failed: $!");
- return undef;
- }
- }
- $lock->{fh} = $fh;
- return 1; # file is now locked by us
-}
-
-sub close {
- my $lock = shift;
- @_ == 0 or confess 0+@_;
- my $fh = delete $lock->{fh};
- if ($fh) {
- close($fh);
- }
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Log.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Log.pm
deleted file mode 100644
index 44b39df84e6..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Log.pm
+++ /dev/null
@@ -1,367 +0,0 @@
-package NDB::Util::Log;
-
-use strict;
-use Carp;
-use Symbol;
-use Data::Dumper ();
-
-require NDB::Util::Base;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Util::Base);
-
-# constructors
-
-my $instance = undef;
-my %attached = ();
-
-my %priolevel = qw(user 0 fatal 1 error 2 warn 3 notice 4 info 5 debug 6);
-my %partlist = qw(time 1 pid 2 prio 3 text 4 line 5);
-
-NDB::Util::Log->attributes(
- prio => sub { defined($priolevel{$_}) },
- parts => sub { ref eq 'HASH' },
- stack => sub { ref eq 'ARRAY' },
- io => sub { ref && $_->isa('NDB::Util::IO') },
- active => sub { defined },
- censor => sub { ref eq 'ARRAY' },
-);
-
-sub setpart {
- my $log = shift;
- @_ % 2 == 0 or confess 0+@_;
- while (@_) {
- my $part = shift;
- my $onoff = shift;
- $partlist{$part} or confess 'oops';
- $log->getparts->{$part} = $onoff;
- }
-}
-
-sub getpart {
- my $log = shift;
- @_ == 1 or confess 0+@_;
- my($part) = @_;
- $partlist{$part} or confess 'oops';
- return $log->getparts->{$part};
-}
-
-sub instance {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- if (! $instance) {
- $instance = $class->SUPER::new(%attr);
- $instance->setprio(q(info));
- $instance->setparts({ text => 1 });
- $instance->setstack([]);
- $instance->setcensor([]);
- my $io = NDB::Util::IO->new(fh => \*STDERR, %attr)
- or confess 'oops';
- $instance->setio($io);
- }
- return $instance;
-}
-
-# attached logs are written in parallel to main log
-# user log is a special server-to-client log
-
-sub attach {
- my $log = shift;
- @_ % 2 == 1 or confess 0+@_;
- my($key, %attr) = @_;
- $attached{$key} and confess 'oops';
- my $alog = $attached{$key} = $log->clone(%attr);
- return $alog;
-}
-
-sub detach {
- my $log = shift;
- @_ == 1 or confess 0+@_;
- my($key) = @_;
- $attached{$key} or return undef;
- my $alog = delete $attached{$key};
- return $alog;
-}
-
-sub attachuser {
- my $log = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- %attr = (
- prio => q(user),
- parts => { text => 1 },
- censor => [ qw(NDB::Net::Client NDB::Util::IO) ],
- %attr);
- my $alog = $log->attach(q(user), %attr);
- return $alog;
-}
-
-sub detachuser {
- my $log = shift;
- @_ == 0 or confess 0+@_;
- my $alog = $log->detach(q(user));
- return $alog;
-}
-
-# input / output
-
-sub setfile {
- my $log = shift;
- @_ == 1 or confess 0+@_;
- my $file = shift;
- if (! open(STDOUT, ">>$file")) {
- $log->put("$file: open for append failed: $!");
- return undef;
- }
- select(STDOUT);
- $| = 1;
- open(STDERR, ">&STDOUT");
- select(STDERR);
- $| = 1;
- return 1;
-}
-
-sub close {
- my $log = shift;
- $log->getio->close;
-}
-
-sub closeall {
- my $class = shift;
- for my $key (sort keys %attached) {
- my $log = $attached{$key};
- $log->close;
- }
- $instance->close;
-}
-
-# private
-
-sub entry {
- my $log = shift;
- my($clear, $file, $line, @args) = @_;
- $file =~ s!^.*\bNDB/!!;
- $file =~ s!^.*/bin/([^/]+)$!$1!;
- my $text = undef;
- if (@args) {
- $text = shift(@args);
- if (! ref($text)) {
- if (@args) {
- $text = sprintf($text, @args);
- }
- while (chomp($text)) {}
- }
- }
- if ($clear) {
- $#{$log->getstack} = -1;
- }
- push(@{$log->getstack}, {
- line => "$file($line)",
- text => $text,
- });
-}
-
-sub matchlevel {
- my $log = shift;
- my $msgprio = shift;
- my $logprio = $log->getprio;
- my $msglevel = $priolevel{$msgprio};
- my $loglevel = $priolevel{$logprio};
- defined($msglevel) && defined($loglevel)
- or confess 'oops';
- if ($msglevel == 0 && $loglevel == 0) {
- return $msgprio eq $logprio;
- }
- if ($msglevel == 0 && $loglevel != 0) {
- return $loglevel >= $priolevel{q(info)};
- }
- if ($msglevel != 0 && $loglevel == 0) {
- return $msglevel <= $priolevel{q(notice)};
- }
- if ($msglevel != 0 && $loglevel != 0) {
- return $msglevel <= $loglevel;
- }
- confess 'oops';
-}
-
-sub print {
- my $log = shift;
- @_ == 2 or confess 0+@_;
- my($prio, $tmpstack) = @_;
- if ($log->hasactive) { # avoid recursion
- return;
- }
- if (! $log->matchlevel($prio)) {
- return;
- }
- $log->setactive(1);
- my @text = ();
- if ($log->getpart(q(time))) {
- my @t = localtime(time);
- push(@text, sprintf("%02d-%02d/%02d:%02d:%02d",
- 1+$t[4], $t[3], $t[2], $t[1], $t[0]));
- }
- if ($log->getpart(q(pid))) {
- push(@text, "[$$]");
- }
- if ($log->getpart(q(prio)) &&
- (0 == $priolevel{$prio} || $priolevel{$prio} <= $priolevel{notice}))
- {
- push(@text, "[$prio]");
- }
- if ($log->getpart(q(text))) {
- my @stack = @$tmpstack;
- while (@stack) {
- my $s = pop(@stack);
- my $text = $s->{text};
- if (ref($text)) {
- if (grep($text->isa($_), @{$log->getcensor})) {
- next;
- }
- $text = $text->desc;
- }
- push(@text, $text) if length($text) > 0;
- }
- }
- if ($log->getpart(q(line)) &&
- (0 < $priolevel{$prio} && $priolevel{$prio} <= $priolevel{warn}))
- {
- push(@text, "at");
- my @stack = @$tmpstack;
- while (@stack) {
- my $s = shift(@stack);
- defined($s->{line}) or confess 'oops';
- if ($text[-1] ne $s->{line}) {
- push(@text, $s->{line});
- }
- }
- }
- $log->getio->write("@text\n");
- $log->delactive;
-}
-
-sub printall {
- my $log = shift;
- @_ == 1 or confess 0+@_;
- my($prio) = @_;
- my $logstack = $log->getstack;
- if (! @$logstack) {
- $log->put("[missing log message]");
- }
- my @tmpstack = ();
- while (@$logstack) {
- push(@tmpstack, shift(@$logstack));
- }
- for my $key (sort keys %attached) {
- my $alog = $attached{$key};
- $alog->print($prio, \@tmpstack);
- }
- $instance->print($prio, \@tmpstack);
-}
-
-# public
-
-sub push {
- my $log = shift;
- my(@args) = @_;
- my($pkg, $file, $line) = caller;
- $log->entry(0, $file, $line, @args);
- return $log;
-}
-
-sub put {
- my $log = shift;
- my(@args) = @_;
- my($pkg, $file, $line) = caller;
- $log->entry(1, $file, $line, @args);
- return $log;
-}
-
-sub fatal {
- my $log = shift;
- @_ == 0 or confess 0+@_;
- $log->printall(q(fatal));
- exit(1);
-}
-
-sub error {
- my $log = shift;
- @_ == 0 or confess 0+@_;
- $log->printall(q(error));
- return $log;
-}
-
-sub warn {
- my $log = shift;
- @_ == 0 or confess 0+@_;
- $log->printall(q(warn));
- return $log;
-}
-
-sub notice {
- my $log = shift;
- @_ == 0 or confess 0+@_;
- $log->printall(q(notice));
- return $log;
-}
-
-sub info {
- my $log = shift;
- @_ == 0 or confess 0+@_;
- $log->printall(q(info));
- return $log;
-}
-
-sub debug {
- my $log = shift;
- @_ == 0 or confess 0+@_;
- $log->printall(q(debug));
- return $log;
-}
-
-sub user {
- my $log = shift;
- @_ == 0 or confess 0+@_;
- $log->printall(q(user));
- return $log;
-}
-
-# return values from server to client
-
-sub putvalue {
- my $log = shift;
- @_ == 1 or confess 0+@_;
- my($value) = @_;
- my $d = Data::Dumper->new([$value], [qw($value)]);
- $d->Indent(0);
- $d->Useqq(1);
- my $dump = $d->Dump;
- $dump =~ /^\s*\$value\s*=\s*(.*);\s*$/ or confess $dump;
- $log->push("[value $1]");
-}
-
-sub hasvalue {
- my $log = shift;
- @_ == 1 or confess 0+@_;
- my($line) = @_;
- return $line =~ /\[value\s+(.*)\]/;
-}
-
-sub getvalue {
- my $log = shift;
- @_ == 1 or confess 0+@_;
- my($line) = @_;
- $line =~ /\[value\s+(.*)\]/ or confess $line;
- my $expr = $1;
- my($value);
- eval "\$value = $expr";
- if ($@) {
- $log->put("$line: eval error: $@");
- return undef;
- }
- return [$value];
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Socket.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Socket.pm
deleted file mode 100644
index 00e8b6eca51..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Socket.pm
+++ /dev/null
@@ -1,158 +0,0 @@
-package NDB::Util::Socket;
-
-use strict;
-use Carp;
-use Symbol;
-use Socket;
-use Errno;
-
-require NDB::Util::IO;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Util::IO);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Util::Socket->attributes(
- domain => sub { $_ == PF_INET || $_ == PF_UNIX },
- type => sub { $_ == SOCK_STREAM },
- proto => sub { /^(0|tcp)$/ },
-);
-
-sub desc {
- my $socket = shift;
- return $socket->SUPER::desc;
-}
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $socket = $class->SUPER::new(%attr);
- $socket->setdomain($attr{domain})
- or $log->push, return undef;
- $socket->settype($attr{type})
- or $log->push, return undef;
- $socket->setproto($attr{proto})
- or $log->push, return undef;
- my $nproto;
- if ($socket->getproto =~ /^\d+/) {
- $nproto = $socket->getproto;
- }
- else {
- $nproto = getprotobyname($socket->getproto);
- unless (defined($nproto)) {
- $log->put("%s: getprotobyname failed", $socket->getproto);
- return undef;
- }
- }
- my $fh = gensym();
- if (! socket($fh, $socket->getdomain, $socket->gettype, $nproto)) {
- $log->put("create socket failed: $!");
- return undef;
- }
- $socket->setfh($fh)
- or $log->push, return undef;
- return $socket;
-}
-
-sub setopt {
- my $socket = shift;
- @_ >= 2 or confess 'oops';
- my $level = shift;
- my $optname = shift;
- my $optval = @_ ? pack("l*", @_) : undef;
- my $fh = $socket->getfh;
- if (! setsockopt($fh, $level, $optname, $optval)) {
- $log->put("setsockopt failed: $!")->push($socket);
- return undef;
- }
- return 1;
-}
-
-sub connect {
- my $socket = shift;
- @_ == 1 or confess 0+@_;
- my($paddr) = @_;
- my $fh = $socket->getfh;
- if (! connect($fh, $paddr)) {
- $log->put("connect failed: $!")->push($socket);
- return undef;
- }
- $log->put("connect done")->push($socket)->debug;
- return 1;
-}
-
-sub bind {
- my $socket = shift;
- @_ == 1 or confess 0+@_;
- my($paddr) = @_;
- my $fh = $socket->getfh;
- if (! bind($fh, $paddr)) {
- $log->put("bind failed: $!")->push($socket);
- return undef;
- }
- return 1;
-}
-
-sub listen {
- my $socket = shift;
- @_ == 0 or confess 0+@_;
- my $fh = $socket->getfh;
- if (! listen($fh, SOMAXCONN)) {
- $log->put("listen failed: $!")->push($socket);
- return undef;
- }
- return 1;
-}
-
-sub accept {
- my $socket = shift;
- @_ == 1 or confess 0+@_;
- my($timeout) = @_;
- $timeout =~ /^\d+$/ or confess 'oops';
- my $fh = $socket->getfh;
- my $gh = gensym();
- my $paddr;
- eval {
- if ($^O ne 'MSWin32' && $timeout > 0) {
- local $SIG{ALRM} = sub { die("timed out\n") };
- alarm($timeout);
- $paddr = accept($gh, $fh);
- alarm(0);
- }
- else {
- $paddr = accept($gh, $fh);
- }
- };
- if ($@) {
- $log->put("accept failed: $@")->push($socket);
- return undef;
- }
- if (! $paddr) {
- my $errno = 0+$!;
- if ($errno == Errno::EINTR) {
- $log->put("accept interrupted")->push($socket);
- return 0;
- }
- $log->put("accept failed: $!")->push($socket);
- return undef;
- }
- my $csocket = $socket->clone(fh => $gh);
- $csocket->acceptaddr($paddr);
- return $csocket;
-}
-
-sub DESTROY {
- my $socket = shift;
- $socket->close;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketINET.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketINET.pm
deleted file mode 100644
index faaa568a08e..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketINET.pm
+++ /dev/null
@@ -1,86 +0,0 @@
-package NDB::Util::SocketINET;
-
-use strict;
-use Carp;
-use Symbol;
-use Socket;
-use Errno;
-
-require NDB::Util::Socket;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Util::Socket);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Util::SocketINET->attributes(
- host => sub { /^\S+$/ },
- port => sub { /^\d+$/ },
-);
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $socket = $class->SUPER::new(%attr,
- domain => PF_INET, type => SOCK_STREAM, proto => 'tcp')
- or $log->push, return undef;
- return $socket;
-}
-
-sub connect {
- my $socket = shift;
- @_ == 2 or confess 0+@_;
- my($host, $port) = @_;
- $port =~ /^\d+$/ or confess 'oops';
- my $iaddr = inet_aton($host);
- if (! $iaddr) {
- $log->put("host $host not found")->push($socket);
- return undef;
- }
- my $paddr = pack_sockaddr_in($port, $iaddr);
- $socket->SUPER::connect($paddr)
- or $log->push, return undef;
- $socket->sethost($host)
- or $log->push, return undef;
- $socket->setport($port)
- or $log->push, return undef;
- return 1;
-}
-
-sub bind {
- my $socket = shift;
- @_ == 1 or confess 0+@_;
- my($port) = @_;
- $port =~ /^\d+$/ or confess 'oops';
- my $paddr = pack_sockaddr_in($port, INADDR_ANY);
- $socket->SUPER::bind($paddr)
- or $log->push, return undef;
- $socket->setport($port)
- or $log->push, return undef;
- return 1;
-}
-
-sub acceptaddr {
- my $csocket = shift;
- @_ == 1 or confess 0+@_;
- my($paddr) = @_;
- my($port, $iaddr) = unpack_sockaddr_in($paddr);
- my $host = gethostbyaddr($iaddr, AF_INET);
- $csocket->sethost($host)
- or $log->push, return undef;
- $csocket->setport($port)
- or $log->push, return undef;
- $log->put("accept: host=%s port=%d",
- $csocket->gethost, $csocket->getport)->push($csocket)->debug;
- return 1;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketUNIX.pm b/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketUNIX.pm
deleted file mode 100644
index 9c6b3115f6a..00000000000
--- a/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketUNIX.pm
+++ /dev/null
@@ -1,76 +0,0 @@
-package NDB::Util::SocketUNIX;
-
-use strict;
-use Carp;
-use Symbol;
-use Socket;
-use Errno;
-
-require NDB::Util::Socket;
-
-use vars qw(@ISA);
-@ISA = qw(NDB::Util::Socket);
-
-# constructors
-
-my $log;
-
-sub initmodule {
- $log = NDB::Util::Log->instance;
-}
-
-NDB::Util::SocketUNIX->attributes(
- path => sub { /^\S+$/ },
-);
-
-sub new {
- my $class = shift;
- @_ % 2 == 0 or confess 0+@_;
- my(%attr) = @_;
- my $socket = $class->SUPER::new(%attr,
- domain => PF_UNIX, type => SOCK_STREAM, proto => 0)
- or $log->push, return undef;
- return $socket;
-}
-
-sub connect {
- my $socket = shift;
- @_ == 1 or confess 0+@_;
- my($path) = @_;
- $path =~ /^\S+$/ or confess 'oops';
- my $paddr = pack_sockaddr_un($path);
- $socket->SUPER::connect($paddr)
- or $log->push, return undef;
- $socket->setpath($path)
- or $log->push, return undef;
- return 1;
-}
-
-sub bind {
- my $socket = shift;
- @_ == 1 or confess 0+@_;
- my($path) = @_;
- $path =~ /^\S+$/ or confess 'oops';
- my $paddr = pack_sockaddr_un($path);
- $socket->SUPER::bind($paddr)
- or $log->push, return undef;
- $socket->setpath($path)
- or $log->push, return undef;
- return 1;
-}
-
-sub acceptaddr {
- my $csocket = shift;
- @_ == 1 or confess 0+@_;
- my($paddr) = @_;
- return 1; # crash
- my $path = unpack_sockaddr_un($paddr);
- $csocket->setpath($path)
- or $log->push, return undef;
- $log->put("%s accept: path=%s",
- $csocket->getpath)->push($csocket)->debug;
- return 1;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/ndbnet.pl b/ndb/tools/old_dirs/ndbnet/ndbnet.pl
deleted file mode 100644
index 5f6648da46d..00000000000
--- a/ndb/tools/old_dirs/ndbnet/ndbnet.pl
+++ /dev/null
@@ -1,339 +0,0 @@
-#! /usr/local/bin/perl
-
-use strict;
-use POSIX();
-use Socket;
-use Getopt::Long;
-use File::Basename;
-use Term::ReadLine;
-
-use NDB::Net;
-
-select(STDOUT);
-$| = 1;
-
-# get options and environment
-
-my $log = NDB::Util::Log->instance;
-$log->setpart();
-
-sub printhelp {
- print <<END;
-ndbnet -- ndbnet client
-usage: ndbnet [options] [command...]
---help print this text and exit
---base dir ndb installation, default \$NDB_BASE
---netcfg file net config, default \$NDB_BASE/etc/ndbnet.xml
---server id ndbnetd server id, or host:port if no config
---noterm no prompting and no input editing
---log prio debug/info/notice/warn/error/fatal, default info
-command... command (by default becomes interactive)
-END
- exit(0);
-}
-
-my $progopts = {};
-my @progargv;
-
-anon: {
- local $SIG{__WARN__} = sub {
- my $errstr = "@_";
- while (chomp($errstr)) {}
- $log->put("$errstr (try --help)")->fatal;
- };
- Getopt::Long::Configure(qw(
- default no_getopt_compat no_ignore_case require_order
- ));
- GetOptions($progopts, qw(
- help base=s netcfg=s server=s noterm log=s
- ));
-}
-
-$progopts->{help} && printhelp();
-if (defined(my $prio = $progopts->{log})) {
- $log->setprio($prio);
-}
-@progargv = @ARGV;
-
-my $netenv = NDB::Net::Env->instance(
- base => $progopts->{base},
- netcfg => $progopts->{netcfg},
-);
-$netenv or $log->fatal;
-
-# get servers from command line or from net config
-
-my @servers = ();
-my $netcfg;
-if ($netenv->hasnetcfg) {
- $netcfg = NDB::Net::Config->new(file => $netenv->getnetcfg);
-}
-
-if (defined(my $id = $progopts->{server})) {
- if ($id !~ /:/) {
- $netcfg or $log->put("need net config to find server $id")->fatal;
- $netcfg->load or $log->push->fatal;
- $netcfg->getservers or $log->push->fatal;
- my $s = NDB::Net::Server->get($id) or $log->fatal;
- push(@servers, $s);
- } else {
- my($host, $port) = split(/:/, $id, 2);
- my $s = NDB::Net::ServerINET->new(id => "?", host => $host, port => $port)
- or $log->fatal;
- push(@servers, $s);
- }
-} else {
- $netcfg or $log->put("need net config to find servers")->fatal;
- $netcfg->load or $log->push->fatal;
- my $list = $netcfg->getservers or $log->fatal;
- @servers= @$list;
- @servers or $log->put("no servers")->push($netcfg)->fatal;
-}
-
-# server commands
-
-my $server;
-sub doserver {
- my($cmd) = @_;
- my $ret;
- my $found;
- for my $s (@servers) {
- if (! $s->testconnect) {
- $log->warn;
- next;
- }
- $found = 1;
- if ($server ne $s) {
- $server = $s;
- $log->put("selected")->push($server)->debug;
- }
- $ret = $server->request($cmd);
- last;
- }
- if (! $found) {
- $log->put("no available server");
- return undef;
- }
- my %seen = ();
- @servers = grep(! $seen{$_}++, $server, @servers);
- defined($ret) or $log->push, return undef;
- return $ret;
-}
-
-# local commands
-
-sub cmd_help {
- my($cmd) = @_;
- my $text = $cmd->helptext;
- defined($text) or return undef;
- while(chomp($text)) {}
- print $text, "\n";
- return 1;
-}
-
-sub cmd_alias {
- my($cmd) = @_;
- my $text = $cmd->aliastext;
- while(chomp($text)) {}
- print $text, "\n";
-}
-
-sub cmd_quit {
- my($cmd) = @_;
- $log->put("bye-bye")->info;
- exit(0);
-}
-
-sub cmd_server {
- my($cmd) = @_;
- my $action = $cmd->getarg(0);
- if ($action !~ /^(start|restart|stop|ping)$/) {
- $log->put("$action: undefined action");
- return undef;
- }
- if ($action eq 'start') {
- $cmd->setopt('direct')
- or $log->push, return undef;
- }
- if ($action eq 'ping' && ! @{$cmd->getarglist(1)}) {
- $cmd->setopt('all')
- or $log->push, return undef;
- }
- if (! $cmd->getopt('direct')) {
- return doserver($cmd);
- }
- $netcfg->load
- or return undef;
- my $servers = $netcfg->getservers
- or return undef;
- my $list;
- if ($cmd->getopt('all')) {
- $list = $servers;
- }
- else {
- $list = [];
- for my $id (@{$cmd->getarglist(1)}) {
- if (my $s = NDB::Net::ServerINET->get($id)) {
- push(@$list, $s);
- next;
- }
- if (my $s = NDB::Net::ServerINET->match($id, undef, $servers)) {
- if (@$s) {
- push(@$list, @$s);
- next;
- }
- }
- $log->push;
- return undef;
- }
- }
- if (! @$list) {
- $log->put("no servers specified, use --all for all")->info;
- return 1;
- }
- for my $s (@$list) {
- if ($action eq 'ping') {
- if ($s->testconnect) {
- $log->put("is alive")->push($s);
- }
- $log->info;
- next;
- }
- if ($action eq 'start') {
- if ($s->testconnect) {
- $log->put("already running")->push($s)->info;
- next;
- }
- }
- my $script = $cmd->getopt('script') || "ndbnetd";
- my @cmd = ($script);
- if ($action eq 'restart') {
- push(@cmd, "--restart");
- }
- if ($action eq 'stop') {
- push(@cmd, "--stop");
- }
- if ($cmd->getopt('pass')) {
- my $base = $netenv->getbase;
- $cmd[0] = "$base/bin/$cmd[0]";
- }
- if ($cmd->getopt('parallel')) {
- my $pid = fork;
- defined($pid) or
- $log->push("fork failed: $!"), return undef;
- $pid > 0 && next;
- }
- $log->put("$action via ssh")->push($s->getcanon)->push($s)->info;
- $log->put("run: @cmd")->push($s)->debug;
- system 'ssh', '-n', $s->getcanon, "@cmd";
- if ($cmd->getopt('parallel')) {
- exit(0);
- }
- }
- if ($cmd->getopt('parallel')) {
- while ((my $pid = waitpid(-1, &POSIX::WNOHANG)) > 0) {
- ;
- }
- }
- return 1;
-}
-
-sub cmd_list {
- my($cmd) = @_;
- my $ret = doserver($cmd) or
- $log->push, return undef;
- my @out = ();
- my @o = qw(NAME NODES PROCESS STATUS COMMENT);
- push(@out, [ @o ]);
- for my $name (sort keys %$ret) {
- $#o = -1;
- $o[0] = $name;
- my $dbsts = $ret->{$name};
- my @tmp = sort { $a->{id} <=> $b->{id} } values %{$dbsts->{node}};
- my @nodesmgmt = grep($_->{type} eq 'mgmt', @tmp);
- my @nodesdb = grep($_->{type} eq 'db', @tmp);
- my @nodesapi = grep($_->{type} eq 'api', @tmp);
- my @nodes = (@nodesmgmt, @nodesdb, @nodesapi);
- $o[1] = sprintf("%d/%d/%d", 0+@nodesmgmt, 0+@nodesdb, 0+@nodesapi);
- $o[2] = "-";
- $o[3] = "-";
- $o[4] = $dbsts->{comment};
- $o[4] .= " - " if length $o[4];
- $o[4] .= basename($dbsts->{home});
- push(@out, [ @o ]);
- for my $nodests (@nodes) {
- $#o = -1;
- $o[0] = $nodests->{id} . "-" . $nodests->{type};
- $o[1] = $nodests->{host};
- $o[1] =~ s/\..*//;
- $o[2] = $nodests->{run};
- $o[3] = $nodests->{status} || "-";
- $o[4] = $nodests->{comment} || "-";
- push(@out, [ @o ]);
- }
- }
- my @len = ( 8, 8, 8, 8 );
- for my $o (@out) {
- for my $i (0..$#len) {
- $len[$i] = length($o->[$i]) if $len[$i] < length($o->[$i]);
- }
- }
- for my $o (@out) {
- my @t = ();
- for my $i (0..$#{$out[0]}) {
- my $f = $len[$i] ? "%-$len[$i].$len[$i]s" : "%s";
- push(@t, sprintf($f, $o->[$i]));
- }
- print "@t\n";
- }
- return 1;
-}
-
-# main program
-
-sub docmd {
- my(@args) = @_;
- my $cmd = NDB::Net::Command->new(@args)
- or return undef;
- my $name = $cmd->getname;
- my $doit;
- {
- no strict 'refs';
- $doit = *{"cmd_$name"};
- }
- if (! defined(&$doit)) {
- $doit = \&doserver;
- }
- my $ret = &$doit($cmd);
- defined($ret) or $log->push, return undef;
- return $ret;
-}
-
-if (@progargv) {
- docmd(argv => \@progargv) or $log->push->fatal;
- exit(0);
-}
-
-my $term;
-if ((-t STDIN) && (-t STDOUT) && ! $progopts->{noterm}) {
- $term = Term::ReadLine->new("ndbnet");
- $term->ornaments(0);
-}
-
-print "type 'h' for help\n" if $term;
-while (1) {
- my($line);
- while (! $line) {
- $line = $term ? $term->readline("> ") : <STDIN>;
- if (! defined($line)) {
- print("\n") if $term;
- $line = 'EOF';
- }
- }
- my $ret = docmd(line => $line);
- $ret or $log->error;
- ($line eq 'EOF') && last;
-}
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/ndbnetd.pl b/ndb/tools/old_dirs/ndbnet/ndbnetd.pl
deleted file mode 100644
index 95fa5322abc..00000000000
--- a/ndb/tools/old_dirs/ndbnet/ndbnetd.pl
+++ /dev/null
@@ -1,400 +0,0 @@
-#! /usr/local/bin/perl
-
-use strict;
-use POSIX();
-use Socket;
-use Getopt::Long;
-use File::Basename;
-use File::Spec;
-
-use NDB::Net;
-
-# save argv for restart via client
-my @origargv = @ARGV;
-
-# get options and environment
-
-my $log = NDB::Util::Log->instance;
-
-sub printhelp {
- print <<END;
-ndbnetd -- ndbnet daemon
-usage: ndbnetd [options]
---help print this text and exit
---base dir ndb installation, default \$NDB_BASE
---netcfg file net config, default \$NDB_BASE/etc/ndbnet.xml
---port num port number (if more than 1 server on this host)
---stop kill any existing server
---restart kill any existing server and start a new one
---fg run in foreground (test option)
---log prio debug/info/notice/warn/error/fatal, default info
-END
- exit(0);
-}
-
-my $progopts = {};
-anon: {
- local $SIG{__WARN__} = sub {
- my $errstr = "@_";
- while (chomp($errstr)) {}
- $log->put("$errstr (try --help)")->fatal;
- };
- Getopt::Long::Configure(qw(
- default no_getopt_compat no_ignore_case no_require_order
- ));
- GetOptions($progopts, qw(
- help base=s netcfg=s port=i stop restart fg log=s
- ));
-}
-$progopts->{help} && printhelp();
-if (defined(my $prio = $progopts->{log})) {
- $log->setprio($prio);
-}
-@ARGV and $log->put("extra args on command line")->fatal;
-
-my $netenv = NDB::Net::Env->instance(
- base => $progopts->{base},
- netcfg => $progopts->{netcfg},
-);
-$netenv or $log->fatal;
-$netenv->hasbase or $log->put("need NDB_BASE")->fatal;
-
-# load net config and find our entry
-
-my $netcfg = NDB::Net::Config->new(file => $netenv->getnetcfg)
- or $log->push->fatal;
-my $server;
-
-sub loadnetcfg {
- $netcfg->load or $log->push->fatal;
- my $servers = $netcfg->getservers or $log->fatal;
- my $host = $netenv->gethostname;
- my $port = $progopts->{port} || 0;
- my $list = NDB::Net::ServerINET->match($host, $port, $servers)
- or $log->push->fatal;
- @$list == 1
- or $log->push->fatal;
- $server = $list->[0];
- $server->setlocal;
-}
-loadnetcfg();
-$log->put("this server")->push($server)->debug;
-
-# check if server already running
-
-my $lock;
-anon: {
- my $dir = NDB::Util::Dir->new(path => File::Spec->catfile($netenv->getbase, "run"));
- $dir->mkdir or $log->fatal;
- my $name = sprintf("ndbnet%s.pid", $server->getid);
- $lock = $dir->getfile($name)->getlock;
- my $ret;
- $ret = $lock->test;
- defined($ret) or $log->fatal;
- if ($ret) {
- if ($progopts->{stop} || $progopts->{restart}) {
- $log->put("stopping server %s pid=%s", $netenv->gethostname, $lock->getpid)->info;
- if ($^O ne 'MSWin32') {
- kill -15, $lock->getpid;
- } else {
- kill 15, $lock->getpid;
- }
- while (1) {
- sleep 1;
- $ret = $lock->test;
- defined($ret) or $log->fatal;
- if ($ret) {
- if (! kill(0, $lock->getpid) && $! == Errno::ESRCH) {
- $log->put("locked but gone (linux bug?)")->info;
- $lock->unlink;
- $ret = 0;
- }
- }
- if (! $ret) {
- if ($progopts->{stop}) {
- $log->put("stopped")->info;
- exit(0);
- }
- $log->put("restarting server %s", $netenv->gethostname)->info;
- last;
- }
- }
- }
- else {
- $log->put("already running pid=%s", $lock->getpid)->fatal;
- }
- }
- else {
- if ($progopts->{stop}) {
- $log->put("not running")->info;
- exit(0);
- }
- }
- $lock->set or $log->fatal;
-}
-
-# become daemon, re-obtain the lock, direct log to file
-
-anon: {
- $log->setpart(time => 1, pid => 1, prio => 1, line => 1);
- $progopts->{fg} && last anon;
- $lock->close;
- my $dir = NDB::Util::Dir->new(path => $netenv->getbase . "/log");
- $dir->mkdir or $log->fatal;
- my $pid = fork();
- defined($pid) or $log->put("fork failed: $!")->fatal;
- if ($pid) {
- exit(0);
- }
- $lock->set or $log->fatal;
- if ($^O ne 'MSWin32') {
- POSIX::setsid() or $log->put("setsid failed: $!")->fatal;
- }
- open(STDIN, "</dev/null");
- my $name = sprintf("ndbnet%s.log", $server->getid);
- $log->setfile($dir->getfile($name)->getpath) or $log->fatal;
-}
-$log->put("ndbnetd started pid=$$ port=%s", $server->getport)->info;
-
-# create server socket and event
-
-my $socket = NDB::Util::SocketINET->new or $log->fatal;
-my $event = NDB::Util::Event->new;
-
-# commands
-
-sub cmd_server_fg {
- my($cmd) = @_;
- my $action = $cmd->getarg(0);
- if (! $cmd->getopt('local')) {
- return 1;
- }
- if ($action eq 'restart') {
- my $prog = $netenv->getbase . "/bin/ndbnetd";
- my @argv = @origargv;
- if (! grep(/^--restart$/, @argv)) {
- push(@argv, "--restart");
- }
- unshift(@argv, basename($prog));
- $lock->close;
- $socket->close;
- $log->put("restart: @argv")->push($server)->user;
- $log->put("server restart")->putvalue(1)->user;
- exec $prog @argv;
- die "restart failed: $!";
- }
- if ($action eq 'stop') {
- $log->put("stop by request")->push($server)->user;
- $log->put("server stop")->putvalue(1)->user;
- exit(0);
- }
- if ($action eq 'ping') {
- return 1;
- }
- $log->put("$action: unimplemented");
- return undef;
-}
-
-sub cmd_server_bg {
- my($cmd) = @_;
- loadnetcfg() or return undef;
- my $action = $cmd->getarg(0);
- if (! $cmd->getopt('local')) {
- $cmd->setopt('local')
- or $log->push, return undef;
- my $servers = $netcfg->getservers or $log->fatal;
- my $list;
- if ($cmd->getopt('all')) {
- $list = $servers;
- }
- else {
- $list = [];
- for my $id (@{$cmd->getarglist(1)}) {
- if (my $s = NDB::Net::ServerINET->get($id)) {
- push(@$list, $s);
- next;
- }
- if (my $s = NDB::Net::ServerINET->match($id, undef, $servers)) {
- if (@$s) {
- push(@$list, @$s);
- next;
- }
- }
- $log->push;
- return undef;
- }
- }
- my $fail = 0;
- for my $s (@$list) {
- if (! $s->request($cmd)) {
- $log->push->user;
- $fail++;
- }
- }
- if ($fail) {
- $log->put("failed %d/%d", $fail, scalar(@$list));
- return undef;
- }
- return 1;
- }
- if ($action eq 'restart') {
- return 1;
- }
- if ($action eq 'stop') {
- return 1;
- }
- if ($action eq 'ping') {
- $log->put("is alive")->push($server)->user;
- return 1;
- }
- $log->put("$action: unimplemented");
- return undef;
-}
-
-sub cmd_start_bg {
- my($cmd) = @_;
- loadnetcfg() or return undef;
- my $db = $netcfg->getdatabase($cmd->getarg(0)) or return undef;
- $db->start($cmd->getopts) or return undef;
- return 1;
-}
-
-sub cmd_startnode_bg {
- my($cmd) = @_;
- loadnetcfg() or return undef;
- my $db = $netcfg->getdatabase($cmd->getarg(0)) or return undef;
- my $node = $db->getnode($cmd->getarg(1)) or return undef;
- $node->start($cmd->getopts) or return undef;
- return 1;
-}
-
-sub cmd_stop_bg {
- my($cmd) = @_;
- my $db = $netcfg->getdatabase($cmd->getarg(0)) or return undef;
- $db->stop($cmd->getopts) or return undef;
- return 1;
-}
-
-sub cmd_stopnode_bg {
- my($cmd) = @_;
- my $db = $netcfg->getdatabase($cmd->getarg(0)) or return undef;
- my $node = $db->getnode($cmd->getarg(1)) or return undef;
- $node->stop($cmd->getopts) or return undef;
- return 1;
-}
-
-sub cmd_kill_bg {
- my($cmd) = @_;
- my $db = $netcfg->getdatabase($cmd->getarg(0)) or return undef;
- $db->kill($cmd->getopts) or return undef;
- return 1;
-}
-
-sub cmd_killnode_bg {
- my($cmd) = @_;
- my $db = $netcfg->getdatabase($cmd->getarg(0)) or return undef;
- my $node = $db->getnode($cmd->getarg(1)) or return undef;
- $node->kill($cmd->getopts) or return undef;
- return 1;
-}
-
-sub cmd_statnode_bg {
- my($cmd) = @_;
- my $db = $netcfg->getdatabase($cmd->getarg(0)) or return undef;
- my $node = $db->getnode($cmd->getarg(1)) or return undef;
- my $ret = $node->stat($cmd->getopts) or return undef;
- return $ret;
-}
-
-sub cmd_list_bg {
- my($cmd) = @_;
- loadnetcfg() or return undef;
- my $dblist;
- if ($cmd->getarg(0)) {
- my $db = $netcfg->getdatabase($cmd->getarg(0)) or return undef;
- $dblist = [ $db ];
- } else {
- $dblist = $netcfg->getdatabases or return undef;
- }
- my $ret = {};
- for my $db (@$dblist) {
- my $status = $db->list($cmd->getopts) || "error";
- $ret->{$db->getname} = $status;
- }
- return $ret;
-}
-
-sub cmd_writenode_bg {
- my($cmd) = @_;
- my $db = $netcfg->getdatabase($cmd->getarg(0)) or return undef;
- my $node = $db->getnode($cmd->getarg(1)) or return undef;
- my $ret = $node->write($cmd->getopts, $cmd->getarg(2)) or return undef;
- return $ret;
-}
-
-# main program
-
-sub checkchild {
- while ((my $pid = waitpid(-1, &POSIX::WNOHANG)) > 0) {
- $log->put("harvested pid=$pid")->info;
- }
-}
-
-my $gotterm = 0;
-$SIG{INT} = sub { $gotterm = 1 };
-$SIG{TERM} = sub { $gotterm = 1 };
-
-$socket->setopt(SOL_SOCKET, SO_REUSEADDR, 1) or $log->fatal;
-$socket->bind($server->getport) or $log->fatal;
-$socket->listen or $log->fatal;
-$event->set($socket, 'r');
-
-loop: {
- try: {
- my $n = $event->poll(10);
- if ($gotterm) {
- $log->put("terminate on signal")->info;
- last try;
- }
- if (! defined($n)) {
- $log->error;
- sleep 1;
- last try;
- }
- if (! $n) {
- $log->debug;
- last try;
- }
- if (! $event->test($socket, 'r')) {
- last try;
- }
- my $csocket = $socket->accept(10);
- if (! defined($csocket)) {
- $log->error;
- last try;
- }
- if (! $csocket) {
- $log->warn;
- last try;
- }
- my $client = NDB::Net::Client->new(
- socket => $csocket,
- serversocket => $socket,
- serverlock => $lock,
- event => $event,
- context => 'main',
- );
- $client or $log->fatal;
- }
- loadnetcfg() or $log->fatal;
- NDB::Net::Client->processall;
- if ($gotterm) {
- last loop;
- }
- redo loop;
-}
-
-$log->put("ndbnetd done")->info;
-
-1;
-# vim:set sw=4:
diff --git a/ndb/tools/old_dirs/ndbnet/ndbrun b/ndb/tools/old_dirs/ndbnet/ndbrun
deleted file mode 100644
index 99121276d99..00000000000
--- a/ndb/tools/old_dirs/ndbnet/ndbrun
+++ /dev/null
@@ -1,33 +0,0 @@
-#! /bin/sh
-
-# just for autotest for now
-
-case $# in
-1) script=$1 ;;
-*) echo "usage: $0 script"; exit 1 ;;
-esac
-
-case $NDB_TOP in
-/*) ;;
-*) echo "$0: NDB_TOP not defined" >&2; exit 1 ;;
-esac
-
-case $script in
-/*) ;;
-*) for d in $NDB_TOP $NDB_TOP/test $NDB_TOP/test/ndbnet; do
- if [ -f $d/$script ]; then
- script=$d/$script
- break
- fi
- done ;;
-esac
-
-if [ ! -f $script ]; then
- echo "$0: $script: script not found" >&2; exit 1
-fi
-
-PERL5LIB=$NDB_TOP/lib/perl5:$PERL5LIB; export PERL5LIB
-
-perl -cw $script || exit 1
-perl $script
-exit $?
diff --git a/ndb/tools/old_dirs/ndbsql/Makefile b/ndb/tools/old_dirs/ndbsql/Makefile
deleted file mode 100644
index 81ca87b0414..00000000000
--- a/ndb/tools/old_dirs/ndbsql/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-include .defs.mk
-
-TYPE := util
-
-BIN_TARGET := ndbsql
-
-#
-# If BIN_TARGET_LIBS include NDB_ODBC then the ODBC lib is
-# linked into the program and the user does not need to
-# set up any ODBC stuff to make it work.
-#
-# If you want to use this program together with some
-# other DBMS (e.g. MySQL or Oracle), then comment the line below.
-#
-BIN_TARGET_LIBS = NDB_ODBC
-
-#BIN_TARGET_ARCHIVES := mgmapi NDB_API
-
-ifneq ($(USE_EDITLINE), N)
-BIN_TARGET_ARCHIVES += editline
-#DIRS := mkconfig
-endif
-
-BIN_FLAGS += $(TERMCAP_LIB)
-
-#ifneq ($(USE_TERMCAP), N)
-#LDFLAGS_LOC = -ltermcap
-#endif
-
-
-# Source files of non-templated classes (.cpp files)
-SOURCES = \
- ndbsql.cpp
-
-CCFLAGS_LOC += -I$(call fixpath,$(NDB_TOP)/src/ndbapi) \
- -I$(call fixpath,$(NDB_TOP)/include/mgmapi) \
- -I$(call fixpath,$(NDB_TOP)/include/util) \
- -I$(call fixpath,$(NDB_TOP)/src/common/mgmcommon)
-
-
-include $(NDB_TOP)/Epilogue.mk
-
-_bins_mkconfig : $(NDB_TOP)/bin/$(BIN_TARGET)
-
diff --git a/ndb/tools/old_dirs/select_all/Makefile b/ndb/tools/old_dirs/select_all/Makefile
deleted file mode 100644
index e14e411b3a5..00000000000
--- a/ndb/tools/old_dirs/select_all/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-include .defs.mk
-
-TYPE := ndbapitest
-
-BIN_TARGET := select_all
-
-SOURCES := select_all.cpp
-
-include $(NDB_TOP)/Epilogue.mk
diff --git a/ndb/tools/old_dirs/select_count/Makefile b/ndb/tools/old_dirs/select_count/Makefile
deleted file mode 100644
index 35a53c6b046..00000000000
--- a/ndb/tools/old_dirs/select_count/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-include .defs.mk
-
-TYPE := ndbapitest
-
-BIN_TARGET := select_count
-
-SOURCES := select_count.cpp
-
-include $(NDB_TOP)/Epilogue.mk
diff --git a/ndb/tools/old_dirs/src/counterviewer/CounterViewer.java b/ndb/tools/old_dirs/src/counterviewer/CounterViewer.java
deleted file mode 100644
index 317c1c75e28..00000000000
--- a/ndb/tools/old_dirs/src/counterviewer/CounterViewer.java
+++ /dev/null
@@ -1,725 +0,0 @@
-
-import java.awt.*;
-import java.awt.event.*;
-import java.util.*;
-import java.io.*;
-import java.net.*;
-import javax.swing.*;
-
-class Node extends Observable {
- public final static int UNDEFINED = -1;
- public final static int NDB_NODE = 0;
- public final static int MGM_NODE = 1;
- public final static int API_NODE = 2;
-
- public int getNodeType() { return m_nodeType;}
- public static int getNodeType(String str) {
- if(str.equals("NDB"))
- return NDB_NODE;
- if(str.equals("API"))
- return API_NODE;
- if(str.equals("MGM"))
- return MGM_NODE;
- return UNDEFINED;
- }
-
- protected int m_nodeType;
-}
-
-class NdbNode extends Node {
- public NdbNode(){
- m_nodeType = NDB_NODE;
- }
-
- public Counters getCounters() { return counters; }
-
- public void setCounters(Counters _c) {
-
- if(_c == null){
- counters = null;
- setChanged();
- notifyObservers();
- return;
- }
-
- int old_tps = 0;
- int old_ops = 0;
- int old_aps = 0;
- int diff = 5;
- if(counters != null){
- old_tps = counters.tps;
- old_ops = counters.ops;
- old_aps = counters.aps;
- diff = 5; //_c.epochsecs - counters.epochsecs;
- }
-
- switch(_c.type){
- case Counters.TRANSACTIONS:
- _c.tps = (_c.transactions -_c.aborts)/ diff;
- _c.aps = _c.aborts / diff;
- _c.ops = old_ops;
- break;
- case Counters.OPERATIONS:
- _c.tps = old_tps;
- _c.aps = old_aps;
- _c.ops = _c.operations / diff;
- break;
- }
-
- counters = _c;
- setChanged();
- notifyObservers();
- }
-
- public int getNodeState(){
- return nodeState;
- }
-
- public static int getNodeState(String state){
- if(state.equals("NOT_STARTED") ||
- state.equals("NO_CONTACT"))
- return 0;
- return 1;
- }
-
- public void setState(int nodeState){
- this.nodeState = nodeState;
- if(nodeState == 0)
- counters = null;
- }
-
- private int nodeState;
- private Counters counters;
-}
-
-class MgmNode extends Node { public MgmNode(){ m_nodeType = MGM_NODE; } }
-class ApiNode extends Node { public ApiNode(){ m_nodeType = API_NODE; } }
-
-class Counters {
-
- public static final int TRANSACTIONS = 0;
- public static final int OPERATIONS = 1;
-
- public Counters(){
- transactions = operations = -1;
- }
-
- public int type;
- public int transactions;
- public int operations;
- public int aborts;
- public int tps;
- public int ops;
- public int aps;
- public int epochsecs;
-
- public String toString(){
- return "[Counters"+
- " transactions="+transactions+
- " operations="+operations+
- " tps="+tps+
- " ops="+ops+
- " ]";
- }
-}
-
-class NdbCluster extends Observable {
-
- NdbCluster(int node_types[], int num_nodes, int maxNodeId){
-
- nodes = new Node[maxNodeId+1];
- maxCounters = new Counters();
-
- for(int i = 0; i<maxNodeId; i++)
- nodes[i] = null;
-
- for(int i = 1; i<num_nodes; i++)
- switch(node_types[i]){
- case Node.NDB_NODE:
- nodes[i] = new NdbNode();
- break;
- case Node.API_NODE:
- nodes[i] = new ApiNode();
- break;
- case Node.MGM_NODE:
- nodes[i] = new MgmNode();
- default:
- }
- }
-
- public int getNoOfNdbNodes(){
- if(nodes == null)
- return 0;
- int retVal = 0;
- for(int i = 1; i<nodes.length; i++)
- if(getNodeType(i) == Node.NDB_NODE)
- retVal++;
- return retVal;
- }
-
- public int getNodeType(int nodeId){
- if(nodes == null || nodeId > nodes.length || nodes[nodeId] == null)
- return Node.UNDEFINED;
- return nodes[nodeId].getNodeType();
- }
-
- public Counters getCounters(int nodeId){
- if(nodes == null || nodeId > nodes.length || nodes[nodeId] == null ||
- nodes[nodeId].getNodeType() != Node.NDB_NODE)
- return null;
- return ((NdbNode)nodes[nodeId]).getCounters();
- }
-
- public void setCounters(int nodeId, Counters _c){
- if(nodes == null || nodeId > nodes.length || nodes[nodeId] == null)
- return;
- ((NdbNode)nodes[nodeId]).setCounters(_c);
-
- int maxSum = 0;
- for(int i = 1; i<nodes.length; i++){
- Counters c = getCounters(i);
- if(c != null){
- int sum = c.tps + c.ops + c.aps;
- if(sum > maxSum){
- maxCounters = c;
- maxSum = sum;
- }
- }
- }
- setChanged();
- notifyObservers();
- }
-
- public void setState(int nodeId, int nodeType, int nodeState){
- if(nodes == null || nodeId > nodes.length || nodes[nodeId] == null ||
- nodes[nodeId].getNodeType() != nodeType)
- return;
-
- if(nodeType != Node.NDB_NODE)
- return;
-
- ((NdbNode)nodes[nodeId]).setState(nodeState);
- }
-
- public void setNoConnection(){
- for(int i = 1; i<nodes.length; i++){
- Counters c = getCounters(i);
- if(c != null){
- setCounters(i, null);
- }
- }
- }
-
- public Counters getMaxCounters(){
- return maxCounters;
- }
-
- private Node nodes[];
- private Counters maxCounters;
-}
-
-class CountersPanel extends JPanel implements Observer
-{
- public CountersPanel(Dimension dim, NdbCluster _cluster, int maxInRow)
- {
- cluster = _cluster;
- cluster.addObserver(this);
- maxRow = maxInRow;
- reSize(dim);
- }
-
- private void showCounters(Graphics g, int node, int x, int y, boolean p)
- {
- Counters counters = cluster.getCounters(node);
-
- if (counters == null || p){
- // Mark processor as not available
- g.setColor(Color.black);
- g.fillRect(x, y, width, height);
- } else {
- int red = (counters.aps * height) / scale;
- int green = (counters.tps * height) / scale;
- int yellow = (counters.ops * height) / scale;
-
- System.out.println("tps="+counters.tps+" ops="+counters.ops+" scale="+scale+" green="+green+" yellow="+yellow);
-
- g.setColor(Color.white);
- g.fillRect(x, y, width, height);
- if (yellow + green + red <= height){ // Max 100% load
- int yellow_scaled = yellow;
- int green_scaled = green;
- int red_scaled = red;
- if (red_scaled > 0){
- g.setColor(Color.red);
- g.fillRect(x,
- height + y - red_scaled,
- width,
- red_scaled);
- }
- if (green_scaled > 0){
- g.setColor(Color.green);
- g.fillRect(x,
- height + y - red_scaled - green_scaled,
- width,
- green_scaled);
- }
- if (yellow_scaled > 0){
- g.setColor(Color.yellow);
- g.fillRect(x,
- height + y - red_scaled - green_scaled - yellow_scaled,
- width,
- yellow_scaled);
- }
- }
- // Draw box
- g.setColor(Color.black);
- g.drawRect(x, y, width, height);
-
- float f = ((float)height)/((float)(lines+1));
-
- for(int i = 0; i<lines; i++){
- int ytmp = (int)(y+height-(i+1)*f);
- g.drawLine(x, ytmp, x+width, ytmp);
- }
- }
- }
-
- public void paintComponent(Graphics g)
- {
- super.paintComponent(g);
-
- Counters maxCounters = cluster.getMaxCounters();
- final int sum = maxCounters.tps+maxCounters.ops+maxCounters.aps;
- boolean skipDraw = false;
- if(sum == 0){
- skipDraw = true;
- } else {
- lines = (sum / 1000) + 1;
- scale = (lines+1) * 1000;
- }
-
- int nodeId = 0;
- int nodeNo = 0;
- final int noOfNdbNodes = cluster.getNoOfNdbNodes();
- for(int row = 0; row <= noOfNdbNodes / maxRow; row++) {
- int end = Math.min(noOfNdbNodes, (row + 1) * maxRow);
- for (int pos = 0; (nodeNo < noOfNdbNodes) && (pos < maxRow); pos++){
- while(cluster.getNodeType(nodeId) != Node.NDB_NODE)
- nodeId++;
- showCounters(g,
- nodeId,
- xindent + (xgap + width) * pos,
- yindent + row * (height + ygap),
- skipDraw);
- nodeNo++;
- nodeId++;
- }
- }
- }
-
- public void setWidth(int maxInRow)
- {
- maxRow = maxInRow;
- }
-
- public void reSize(Dimension dim)
- {
- final int noOfNdbNodes = cluster.getNoOfNdbNodes();
-
- // System.out.println(dim);
- int noRows = (int) Math.ceil((double) noOfNdbNodes / (double) maxRow);
- xgap = (noOfNdbNodes > 1) ? Math.max(2, dim.width / 50) : 0;
- ygap = (noOfNdbNodes > 1) ? Math.max(2, dim.height / 20) : 0;
- xindent = 10;
- yindent = 10;
- int heightOfScroll = 20;
- Insets insets = getInsets();
- width = (dim.width - (insets.left + insets.right) - 2*xindent + xgap)/maxRow - xgap;
- height = (dim.height - (insets.top + insets.bottom) - 2*yindent + ygap - heightOfScroll)/noRows - ygap;
- }
-
-
- public void update(Observable o, Object arg){
- repaint();
- }
-
- private int width, height, maxRow, xgap, ygap, xindent, yindent;
- private int scale;
- private int lines;
- private NdbCluster cluster;
-}
-
-class CountersFrame extends JFrame
- implements ComponentListener, AdjustmentListener
-{
-
- public CountersFrame(NdbCluster cluster)
- {
- setTitle("CountersViewer");
-
- final int noOfNdbNodes = cluster.getNoOfNdbNodes();
-
- processorWidth = Math.min(noOfNdbNodes, 10);
- setSize(Math.max(50, processorWidth*20),
- Math.max(100, 200*noOfNdbNodes/processorWidth));
- JPanel p = new JPanel();
- addComponentListener(this);
- p.addComponentListener(this);
- getContentPane().add(p, "Center");
- myPanel = new CountersPanel(getContentPane().getSize(),
- cluster,
- processorWidth);
- getContentPane().add(myPanel, "Center");
- JPanel labelAndScroll = new JPanel();
- labelAndScroll.setLayout(new GridLayout (1, 2));
- myWidthLabel = new JLabel("Width: " + processorWidth);
- labelAndScroll.add(myWidthLabel);
- myWidthScroll = new JScrollBar(Adjustable.HORIZONTAL,
- Math.min(noOfNdbNodes, 10), 0, 1,
- noOfNdbNodes);
- myWidthScroll.addAdjustmentListener(this);
- labelAndScroll.add(myWidthScroll);
- if (noOfNdbNodes > 1)
- getContentPane().add(labelAndScroll, "South");
- }
-
- public void componentHidden(ComponentEvent e) {
- }
-
- public void componentMoved(ComponentEvent e) {
- }
-
- public void componentResized(ComponentEvent e) {
- myPanel.reSize(getContentPane().getSize());
- repaint();
- }
-
- public void componentShown(ComponentEvent e) {
- }
-
- public void adjustmentValueChanged(AdjustmentEvent evt)
- {
- myPanel.setWidth(myWidthScroll.getValue());
- myPanel.reSize(getContentPane().getSize());
- myWidthLabel.setText("Width: " + myWidthScroll.getValue());
- repaint();
- }
-
- private JScrollBar myWidthScroll;
- private JLabel myWidthLabel;
- private CountersPanel myPanel;
- private int processorWidth = 10;
-}
-
-class CountersConnection {
-
- public CountersConnection(String host, int port){
- this.host = host;
- this.port = port;
- }
-
- public boolean connect(){
- if(br == null){
- try {
- InetAddress target = InetAddress.getByName(host);
- sock = new Socket(target, port);
-
- br = new BufferedReader(new InputStreamReader
- (sock.getInputStream()));
- } catch (Exception e){
- System.out.println("connect: " + e);
- }
- }
-
- if (br == null)
- return false;
- return true;
- }
-
- public void disconnect(){
- try {
- sock.close();
- } catch (Exception e){
- System.out.println("disconnect: " + e);
- }
- sock = null;
- br = null;
- }
-
- public boolean readCounters(NdbCluster cluster) {
- if(!connect()){
- cluster.setNoConnection();
- return false;
- }
- String str = null;
-
- try {
- str = br.readLine();
- } catch (Exception e){
- System.out.println("readLine: " + e);
- }
- if(str == null){
- disconnect();
- return false;
- }
- StringTokenizer st = new StringTokenizer(str, " ");
-
- int nodeId = 0;
- Counters c = new Counters();
-
- while(st.hasMoreTokens()){
- String tmp = st.nextToken();
- int ind = 0;
- if(tmp.startsWith("nodeid=")){
- nodeId = Integer.valueOf(tmp.substring(7)).intValue();
- } else if(tmp.startsWith("trans=")){
- c.transactions = Integer.valueOf(tmp.substring(6)).intValue();
- c.type = Counters.TRANSACTIONS;
- } else if(tmp.startsWith("abort=")){
- c.aborts = Integer.valueOf(tmp.substring(6)).intValue();
- c.type = Counters.TRANSACTIONS;
- } else if(tmp.startsWith("epochsecs=")){
- c.epochsecs = Integer.valueOf(tmp.substring(11)).intValue();
- } else if(tmp.startsWith("operations=")){
- c.operations = Integer.valueOf(tmp.substring(11)).intValue();
- c.type = Counters.OPERATIONS;
- }
- }
-
- if(nodeId != 0)
- cluster.setCounters(nodeId, c);
-
- return true;
- }
-
- private Socket sock;
- private BufferedReader br;
- private String host;
- private int port;
-}
-
-class MgmConnection {
-
- public MgmConnection(String host, int port){
- this.host = host;
- this.port = port;
- }
-
- public NdbCluster getClusterInfo(){
- NdbCluster cluster = null;
- if(!connect())
- return cluster;
-
- out.println("get info cluster");
- String str = null;
- try {
- str = br.readLine();
- if(str.startsWith("GET INFO 0")){
- StringTokenizer st = new StringTokenizer
- (str.substring(11));
- int nodes[] = new int[255];
-
- int type = Node.UNDEFINED;
- int num_nodes = 0;
- int maxNodeId = 0;
- while(st.hasMoreTokens()){
- String tmp = st.nextToken();
- final int t = Node.getNodeType(tmp);
- if(t != Node.UNDEFINED)
- type = t;
-
- int nodeId = 0;
- try {
- nodeId = Integer.parseInt(tmp);
- } catch (Exception e) {}
- if(nodeId != 0){
- num_nodes ++;
- nodes[nodeId] = type;
- if(nodeId > maxNodeId)
- maxNodeId = nodeId;
- }
- }
- cluster = new NdbCluster(nodes, num_nodes,
- maxNodeId);
- }
-
- } catch(Exception e){
- System.out.println("readLine: "+e);
- }
- return cluster;
- }
-
- public boolean connect(){
- if(br == null || out == null){
- try {
- InetAddress target = InetAddress.getByName(host);
- sock = new Socket(target, port);
-
- br = new BufferedReader(new InputStreamReader
- (sock.getInputStream()));
- out = new PrintWriter(sock.getOutputStream(), true);
- } catch (Exception e){
- System.out.println("connect: " + e);
- }
- }
-
- if (br == null || out == null)
- return false;
- return true;
- }
-
- public void disconnect(){
- try {
- sock.close();
- } catch (Exception e){
- System.out.println("disconnect: " + e);
- }
- sock = null;
- br = null;
- out = null;
- }
-
- public boolean readStatus(NdbCluster cluster){
-
- if(!connect()){
- cluster.setNoConnection();
- return false;
- }
-
- String str = null;
- try {
- out.println("get status");
- str = br.readLine();
- } catch (Exception e){
- System.out.println("readLine: " + e);
- }
- if(str == null){
- disconnect();
- return false;
- }
-
- if(!str.startsWith("GET STATUS")){
- disconnect();
- return false;
- }
-
- int nodes = 0;
- try {
- nodes = Integer.parseInt(str.substring(11));
- } catch(Exception e){
- System.out.println("parseInt "+e);
- }
- if(nodes == 0){
- disconnect();
- return false;
- }
-
- try {
- for(; nodes > 0 ; nodes --){
- str = br.readLine();
- StringTokenizer st = new StringTokenizer(str);
-
- String s_nodeId = st.nextToken();
- final int nodeId = Integer.parseInt(s_nodeId);
-
- String s_type = st.nextToken();
- String s_state = st.nextToken();
- String s_phase = st.nextToken();
- int type = Node.getNodeType(s_type);
- int state = NdbNode.getNodeState(s_state);
-
- cluster.setState(nodeId, type, state);
- }
- } catch (Exception e){
- disconnect();
- return false;
- }
-
- return true;
- }
-
- public int getStatisticsPort(){
- if(!connect())
- return -1;
-
- String str = null;
- try {
- out.println("stat port");
- str = br.readLine();
- } catch (Exception e){
- System.out.println("readLine: " + e);
- }
- if(str == null){
- disconnect();
- return -1;
- }
-
- if(!str.startsWith("STAT PORT 0")){
- disconnect();
- return -1;
- }
-
- try {
- return Integer.parseInt(str.substring(12));
- } catch (Exception e){
- System.out.println("parseInt "+e);
- }
- return -1;
- }
-
- private Socket sock;
- private BufferedReader br;
- private PrintWriter out;
- private String host;
- private int port;
-}
-
-class CounterViewer {
-
- public static void usage(){
- System.out.println("java CounterViewer <mgm host> <mgm port>");
- }
-
- public static void main(String args[]){
- try {
- String host = args[0];
- int port = Integer.parseInt(args[1]);
- new CounterViewer(host, port).run();
- return;
- } catch (Exception e){
- }
- usage();
- }
-
- MgmConnection mgmConnection;
- CountersConnection countersConnection;
-
- NdbCluster cluster;
- boolean ok;
-
- CounterViewer(String host, int port){
- ok = false;
-
- mgmConnection = new MgmConnection(host, port);
- int statPort = mgmConnection.getStatisticsPort();
- if(statPort < 0)
- return;
-
- countersConnection = new CountersConnection(host, statPort);
- cluster = mgmConnection.getClusterInfo();
-
- CountersFrame f = new CountersFrame(cluster);
- f.setSize (300, 200);
- f.show();
-
- ok = true;
- }
-
- void run(){
- while(ok){
- mgmConnection.readStatus(cluster);
- countersConnection.readCounters(cluster);
- }
- }
-}
-
diff --git a/ndb/tools/restore/Restore.cpp b/ndb/tools/restore/Restore.cpp
deleted file mode 100644
index fa616ee8fee..00000000000
--- a/ndb/tools/restore/Restore.cpp
+++ /dev/null
@@ -1,947 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-#include "Restore.hpp"
-#include <NdbTCP.h>
-#include <OutputStream.hpp>
-#include <Bitmask.hpp>
-
-#include <AttributeHeader.hpp>
-#include <trigger_definitions.h>
-#include <SimpleProperties.hpp>
-#include <signaldata/DictTabInfo.hpp>
-
-Uint16 Twiddle16(Uint16 in); // Byte shift 16-bit data
-Uint32 Twiddle32(Uint32 in); // Byte shift 32-bit data
-Uint64 Twiddle64(Uint64 in); // Byte shift 64-bit data
-
-bool
-BackupFile::Twiddle(const AttributeDesc* attr_desc, AttributeData* attr_data, Uint32 arraySize){
- Uint32 i;
-
- if(m_hostByteOrder)
- return true;
-
- if(arraySize == 0){
- arraySize = attr_desc->arraySize;
- }
-
- switch(attr_desc->size){
- case 8:
-
- return true;
- case 16:
- for(i = 0; i<arraySize; i++){
- attr_data->u_int16_value[i] = Twiddle16(attr_data->u_int16_value[i]);
- }
- return true;
- case 32:
- for(i = 0; i<arraySize; i++){
- attr_data->u_int32_value[i] = Twiddle32(attr_data->u_int32_value[i]);
- }
- return true;
- case 64:
- for(i = 0; i<arraySize; i++){
- attr_data->u_int64_value[i] = Twiddle64(attr_data->u_int64_value[i]);
- }
- return true;
- default:
- return false;
- } // switch
-
-} // Twiddle
-
-FilteredNdbOut err(* new FileOutputStream(stderr), 0, 0);
-FilteredNdbOut info(* new FileOutputStream(stdout), 1, 1);
-FilteredNdbOut debug(* new FileOutputStream(stdout), 2, 0);
-
-// To decide in what byte order data is
-const Uint32 magicByteOrder = 0x12345678;
-const Uint32 swappedMagicByteOrder = 0x78563412;
-
-RestoreMetaData::RestoreMetaData(const char* path, Uint32 nodeId, Uint32 bNo) {
-
- debug << "RestoreMetaData constructor" << endl;
- setCtlFile(nodeId, bNo, path);
-}
-
-RestoreMetaData::~RestoreMetaData(){
- for(Uint32 i= 0; i < allTables.size(); i++)
- delete allTables[i];
- allTables.clear();
-}
-
-TableS *
-RestoreMetaData::getTable(Uint32 tableId) const {
- for(Uint32 i= 0; i < allTables.size(); i++)
- if(allTables[i]->getTableId() == tableId)
- return allTables[i];
- return NULL;
-}
-
-Uint32
-RestoreMetaData::getStopGCP() const {
- return m_stopGCP;
-}
-
-int
-RestoreMetaData::loadContent()
-{
- Uint32 noOfTables = readMetaTableList();
- if(noOfTables == 0) {
- return 1;
- }
- for(Uint32 i = 0; i<noOfTables; i++){
- if(!readMetaTableDesc()){
- return 0;
- }
- }
- if(!readGCPEntry())
- return 0;
- return 1;
-}
-
-Uint32
-RestoreMetaData::readMetaTableList() {
-
- Uint32 sectionInfo[2];
-
- if (buffer_read(&sectionInfo, sizeof(sectionInfo), 1) != 1){
- err << "readMetaTableList read header error" << endl;
- return 0;
- }
- sectionInfo[0] = ntohl(sectionInfo[0]);
- sectionInfo[1] = ntohl(sectionInfo[1]);
-
- const Uint32 tabCount = sectionInfo[1] - 2;
-
- void *tmp;
- if (buffer_get_ptr(&tmp, 4, tabCount) != tabCount){
- err << "readMetaTableList read tabCount error" << endl;
- return 0;
- }
-
- return tabCount;
-}
-
-bool
-RestoreMetaData::readMetaTableDesc() {
-
- Uint32 sectionInfo[2];
-
- // Read section header
- if (buffer_read(&sectionInfo, sizeof(sectionInfo), 1) != 1){
- err << "readMetaTableDesc read header error" << endl;
- return false;
- } // if
- sectionInfo[0] = ntohl(sectionInfo[0]);
- sectionInfo[1] = ntohl(sectionInfo[1]);
-
- assert(sectionInfo[0] == BackupFormat::TABLE_DESCRIPTION);
-
- // Read dictTabInfo buffer
- const Uint32 len = (sectionInfo[1] - 2);
- void *ptr;
- if (buffer_get_ptr(&ptr, 4, len) != len){
- err << "readMetaTableDesc read error" << endl;
- return false;
- } // if
-
- return parseTableDescriptor((Uint32*)ptr, len);
-}
-
-bool
-RestoreMetaData::readGCPEntry() {
-
- Uint32 data[4];
-
- BackupFormat::CtlFile::GCPEntry * dst =
- (BackupFormat::CtlFile::GCPEntry *)&data[0];
-
- if(buffer_read(dst, 4, 4) != 4){
- err << "readGCPEntry read error" << endl;
- return false;
- }
-
- dst->SectionType = ntohl(dst->SectionType);
- dst->SectionLength = ntohl(dst->SectionLength);
-
- if(dst->SectionType != BackupFormat::GCP_ENTRY){
- err << "readGCPEntry invalid format" << endl;
- return false;
- }
-
- dst->StartGCP = ntohl(dst->StartGCP);
- dst->StopGCP = ntohl(dst->StopGCP);
-
- m_startGCP = dst->StartGCP;
- m_stopGCP = dst->StopGCP;
- return true;
-}
-
-TableS::TableS(Uint32 version, NdbTableImpl* tableImpl)
- : m_dictTable(tableImpl)
-{
- m_dictTable = tableImpl;
- m_noOfNullable = m_nullBitmaskSize = 0;
- m_auto_val_id= ~(Uint32)0;
- m_max_auto_val= 0;
- backupVersion = version;
-
- for (int i = 0; i < tableImpl->getNoOfColumns(); i++)
- createAttr(tableImpl->getColumn(i));
-}
-
-TableS::~TableS()
-{
- for (Uint32 i= 0; i < allAttributesDesc.size(); i++)
- delete allAttributesDesc[i];
-}
-
-// Parse dictTabInfo buffer and pushback to to vector storage
-bool
-RestoreMetaData::parseTableDescriptor(const Uint32 * data, Uint32 len)
-{
- NdbTableImpl* tableImpl = 0;
- int ret = NdbDictInterface::parseTableInfo(&tableImpl, data, len, false);
-
- if (ret != 0) {
- err << "parseTableInfo " << " failed" << endl;
- return false;
- }
- if(tableImpl == 0)
- return false;
-
- debug << "parseTableInfo " << tableImpl->getName() << " done" << endl;
-
- TableS * table = new TableS(m_fileHeader.NdbVersion, tableImpl);
- if(table == NULL) {
- return false;
- }
-
- debug << "Parsed table id " << table->getTableId() << endl;
- debug << "Parsed table #attr " << table->getNoOfAttributes() << endl;
- debug << "Parsed table schema version not used " << endl;
-
- debug << "Pushing table " << table->getTableName() << endl;
- debug << " with " << table->getNoOfAttributes() << " attributes" << endl;
-
- allTables.push_back(table);
-
- return true;
-}
-
-// Constructor
-RestoreDataIterator::RestoreDataIterator(const RestoreMetaData & md, void (* _free_data_callback)())
- : BackupFile(_free_data_callback), m_metaData(md)
-{
- debug << "RestoreDataIterator constructor" << endl;
- setDataFile(md, 0);
-}
-
-TupleS & TupleS::operator=(const TupleS& tuple)
-{
- prepareRecord(*tuple.m_currentTable);
-
- if (allAttrData)
- memcpy(allAttrData, tuple.allAttrData, getNoOfAttributes()*sizeof(AttributeData));
-
- return *this;
-}
-int TupleS::getNoOfAttributes() const {
- if (m_currentTable == 0)
- return 0;
- return m_currentTable->getNoOfAttributes();
-}
-
-TableS * TupleS::getTable() const {
- return m_currentTable;
-}
-
-const AttributeDesc * TupleS::getDesc(int i) const {
- return m_currentTable->allAttributesDesc[i];
-}
-
-AttributeData * TupleS::getData(int i) const{
- return &(allAttrData[i]);
-}
-
-bool
-TupleS::prepareRecord(TableS & tab){
- if (allAttrData) {
- if (getNoOfAttributes() == tab.getNoOfAttributes())
- {
- m_currentTable = &tab;
- return true;
- }
- delete [] allAttrData;
- m_currentTable= 0;
- }
-
- allAttrData = new AttributeData[tab.getNoOfAttributes()];
- if (allAttrData == 0)
- return false;
-
- m_currentTable = &tab;
-
- return true;
-}
-
-const TupleS *
-RestoreDataIterator::getNextTuple(int & res)
-{
- Uint32 dataLength = 0;
- // Read record length
- if (buffer_read(&dataLength, sizeof(dataLength), 1) != 1){
- err << "getNextTuple:Error reading length of data part" << endl;
- res = -1;
- return NULL;
- } // if
-
- // Convert length from network byte order
- dataLength = ntohl(dataLength);
- const Uint32 dataLenBytes = 4 * dataLength;
-
- if (dataLength == 0) {
- // Zero length for last tuple
- // End of this data fragment
- debug << "End of fragment" << endl;
- res = 0;
- return NULL;
- } // if
-
- // Read tuple data
- void *_buf_ptr;
- if (buffer_get_ptr(&_buf_ptr, 1, dataLenBytes) != dataLenBytes) {
- err << "getNextTuple:Read error: " << endl;
- res = -1;
- return NULL;
- }
-
- Uint32 *buf_ptr = (Uint32*)_buf_ptr, *ptr = buf_ptr;
- ptr += m_currentTable->m_nullBitmaskSize;
- Uint32 i;
- for(i= 0; i < m_currentTable->m_fixedKeys.size(); i++){
- assert(ptr < buf_ptr + dataLength);
-
- const Uint32 attrId = m_currentTable->m_fixedKeys[i]->attrId;
-
- AttributeData * attr_data = m_tuple.getData(attrId);
- const AttributeDesc * attr_desc = m_tuple.getDesc(attrId);
-
- const Uint32 sz = attr_desc->getSizeInWords();
-
- attr_data->null = false;
- attr_data->void_value = ptr;
-
- if(!Twiddle(attr_desc, attr_data))
- {
- res = -1;
- return NULL;
- }
- ptr += sz;
- }
-
- for(i = 0; i < m_currentTable->m_fixedAttribs.size(); i++){
- assert(ptr < buf_ptr + dataLength);
-
- const Uint32 attrId = m_currentTable->m_fixedAttribs[i]->attrId;
-
- AttributeData * attr_data = m_tuple.getData(attrId);
- const AttributeDesc * attr_desc = m_tuple.getDesc(attrId);
-
- const Uint32 sz = attr_desc->getSizeInWords();
-
- attr_data->null = false;
- attr_data->void_value = ptr;
-
- if(!Twiddle(attr_desc, attr_data))
- {
- res = -1;
- return NULL;
- }
-
- ptr += sz;
- }
-
- for(i = 0; i < m_currentTable->m_variableAttribs.size(); i++){
- const Uint32 attrId = m_currentTable->m_variableAttribs[i]->attrId;
-
- AttributeData * attr_data = m_tuple.getData(attrId);
- const AttributeDesc * attr_desc = m_tuple.getDesc(attrId);
-
- if(attr_desc->m_column->getNullable()){
- const Uint32 ind = attr_desc->m_nullBitIndex;
- if(BitmaskImpl::get(m_currentTable->m_nullBitmaskSize,
- buf_ptr,ind)){
- attr_data->null = true;
- attr_data->void_value = NULL;
- continue;
- }
- }
-
- assert(ptr < buf_ptr + dataLength);
-
- typedef BackupFormat::DataFile::VariableData VarData;
- VarData * data = (VarData *)ptr;
- Uint32 sz = ntohl(data->Sz);
- Uint32 id = ntohl(data->Id);
- assert(id == attrId);
-
- attr_data->null = false;
- attr_data->void_value = &data->Data[0];
-
- /**
- * Compute array size
- */
- const Uint32 arraySize = (4 * sz) / (attr_desc->size / 8);
- assert(arraySize >= attr_desc->arraySize);
- if(!Twiddle(attr_desc, attr_data, attr_desc->arraySize))
- {
- res = -1;
- return NULL;
- }
-
- ptr += (sz + 2);
- }
-
- m_count ++;
- res = 0;
- return &m_tuple;
-} // RestoreDataIterator::getNextTuple
-
-BackupFile::BackupFile(void (* _free_data_callback)())
- : free_data_callback(_free_data_callback)
-{
- m_file = 0;
- m_path[0] = 0;
- m_fileName[0] = 0;
-
- m_buffer_sz = 64*1024;
- m_buffer = malloc(m_buffer_sz);
- m_buffer_ptr = m_buffer;
- m_buffer_data_left = 0;
-}
-
-BackupFile::~BackupFile(){
- if(m_file != 0)
- fclose(m_file);
- if(m_buffer != 0)
- free(m_buffer);
-}
-
-bool
-BackupFile::openFile(){
- if(m_file != NULL){
- fclose(m_file);
- m_file = 0;
- }
-
- m_file = fopen(m_fileName, "r");
- return m_file != 0;
-}
-
-Uint32 BackupFile::buffer_get_ptr_ahead(void **p_buf_ptr, Uint32 size, Uint32 nmemb)
-{
- Uint32 sz = size*nmemb;
- if (sz > m_buffer_data_left) {
-
- if (free_data_callback)
- (*free_data_callback)();
-
- memcpy(m_buffer, m_buffer_ptr, m_buffer_data_left);
-
- size_t r = fread(((char *)m_buffer) + m_buffer_data_left, 1, m_buffer_sz - m_buffer_data_left, m_file);
- m_buffer_data_left += r;
- m_buffer_ptr = m_buffer;
-
- if (sz > m_buffer_data_left)
- sz = size * (m_buffer_data_left / size);
- }
-
- *p_buf_ptr = m_buffer_ptr;
-
- return sz/size;
-}
-Uint32 BackupFile::buffer_get_ptr(void **p_buf_ptr, Uint32 size, Uint32 nmemb)
-{
- Uint32 r = buffer_get_ptr_ahead(p_buf_ptr, size, nmemb);
-
- m_buffer_ptr = ((char*)m_buffer_ptr)+(r*size);
- m_buffer_data_left -= (r*size);
-
- return r;
-}
-
-Uint32 BackupFile::buffer_read_ahead(void *ptr, Uint32 size, Uint32 nmemb)
-{
- void *buf_ptr;
- Uint32 r = buffer_get_ptr_ahead(&buf_ptr, size, nmemb);
- memcpy(ptr, buf_ptr, r*size);
-
- return r;
-}
-
-Uint32 BackupFile::buffer_read(void *ptr, Uint32 size, Uint32 nmemb)
-{
- void *buf_ptr;
- Uint32 r = buffer_get_ptr(&buf_ptr, size, nmemb);
- memcpy(ptr, buf_ptr, r*size);
-
- return r;
-}
-
-void
-BackupFile::setCtlFile(Uint32 nodeId, Uint32 backupId, const char * path){
- m_nodeId = nodeId;
- m_expectedFileHeader.BackupId = backupId;
- m_expectedFileHeader.FileType = BackupFormat::CTL_FILE;
-
- char name[PATH_MAX]; const Uint32 sz = sizeof(name);
- BaseString::snprintf(name, sz, "BACKUP-%d.%d.ctl", backupId, nodeId);
- setName(path, name);
-}
-
-void
-BackupFile::setDataFile(const BackupFile & bf, Uint32 no){
- m_nodeId = bf.m_nodeId;
- m_expectedFileHeader = bf.m_fileHeader;
- m_expectedFileHeader.FileType = BackupFormat::DATA_FILE;
-
- char name[PATH_MAX]; const Uint32 sz = sizeof(name);
- BaseString::snprintf(name, sz, "BACKUP-%d-%d.%d.Data",
- m_expectedFileHeader.BackupId, no, m_nodeId);
- setName(bf.m_path, name);
-}
-
-void
-BackupFile::setLogFile(const BackupFile & bf, Uint32 no){
- m_nodeId = bf.m_nodeId;
- m_expectedFileHeader = bf.m_fileHeader;
- m_expectedFileHeader.FileType = BackupFormat::LOG_FILE;
-
- char name[PATH_MAX]; const Uint32 sz = sizeof(name);
- BaseString::snprintf(name, sz, "BACKUP-%d.%d.log",
- m_expectedFileHeader.BackupId, m_nodeId);
- setName(bf.m_path, name);
-}
-
-void
-BackupFile::setName(const char * p, const char * n){
- const Uint32 sz = sizeof(m_path);
- if(p != 0 && strlen(p) > 0){
- if(p[strlen(p)-1] == '/'){
- BaseString::snprintf(m_path, sz, "%s", p);
- } else {
- BaseString::snprintf(m_path, sz, "%s%s", p, "/");
- }
- } else {
- m_path[0] = 0;
- }
-
- BaseString::snprintf(m_fileName, sizeof(m_fileName), "%s%s", m_path, n);
- debug << "Filename = " << m_fileName << endl;
-}
-
-bool
-BackupFile::readHeader(){
- if(!openFile()){
- return false;
- }
-
- if(buffer_read(&m_fileHeader, sizeof(m_fileHeader), 1) != 1){
- err << "readDataFileHeader: Error reading header" << endl;
- return false;
- }
-
- // Convert from network to host byte order for platform compatibility
- m_fileHeader.NdbVersion = ntohl(m_fileHeader.NdbVersion);
- m_fileHeader.SectionType = ntohl(m_fileHeader.SectionType);
- m_fileHeader.SectionLength = ntohl(m_fileHeader.SectionLength);
- m_fileHeader.FileType = ntohl(m_fileHeader.FileType);
- m_fileHeader.BackupId = ntohl(m_fileHeader.BackupId);
- m_fileHeader.BackupKey_0 = ntohl(m_fileHeader.BackupKey_0);
- m_fileHeader.BackupKey_1 = ntohl(m_fileHeader.BackupKey_1);
-
- debug << "FileHeader: " << m_fileHeader.Magic << " " <<
- m_fileHeader.NdbVersion << " " <<
- m_fileHeader.SectionType << " " <<
- m_fileHeader.SectionLength << " " <<
- m_fileHeader.FileType << " " <<
- m_fileHeader.BackupId << " " <<
- m_fileHeader.BackupKey_0 << " " <<
- m_fileHeader.BackupKey_1 << " " <<
- m_fileHeader.ByteOrder << endl;
-
- debug << "ByteOrder is " << m_fileHeader.ByteOrder << endl;
- debug << "magicByteOrder is " << magicByteOrder << endl;
-
- if (m_fileHeader.FileType != m_expectedFileHeader.FileType){
- abort();
- }
-
- // Check for BackupFormat::FileHeader::ByteOrder if swapping is needed
- if (m_fileHeader.ByteOrder == magicByteOrder) {
- m_hostByteOrder = true;
- } else if (m_fileHeader.ByteOrder == swappedMagicByteOrder){
- m_hostByteOrder = false;
- } else {
- abort();
- }
-
- return true;
-} // BackupFile::readHeader
-
-bool
-BackupFile::validateFooter(){
- return true;
-}
-
-bool RestoreDataIterator::readFragmentHeader(int & ret)
-{
- BackupFormat::DataFile::FragmentHeader Header;
-
- debug << "RestoreDataIterator::getNextFragment" << endl;
-
- if (buffer_read(&Header, sizeof(Header), 1) != 1){
- ret = 0;
- return false;
- } // if
-
- Header.SectionType = ntohl(Header.SectionType);
- Header.SectionLength = ntohl(Header.SectionLength);
- Header.TableId = ntohl(Header.TableId);
- Header.FragmentNo = ntohl(Header.FragmentNo);
- Header.ChecksumType = ntohl(Header.ChecksumType);
-
- debug << "FragmentHeader: " << Header.SectionType
- << " " << Header.SectionLength
- << " " << Header.TableId
- << " " << Header.FragmentNo
- << " " << Header.ChecksumType << endl;
-
- m_currentTable = m_metaData.getTable(Header.TableId);
- if(m_currentTable == 0){
- ret = -1;
- return false;
- }
-
- if(!m_tuple.prepareRecord(*m_currentTable))
- {
- ret =-1;
- return false;
- }
-
- info << "_____________________________________________________" << endl
- << "Restoring data in table: " << m_currentTable->getTableName()
- << "(" << Header.TableId << ") fragment "
- << Header.FragmentNo << endl;
-
- m_count = 0;
- ret = 0;
-
- return true;
-} // RestoreDataIterator::getNextFragment
-
-
-bool
-RestoreDataIterator::validateFragmentFooter() {
- BackupFormat::DataFile::FragmentFooter footer;
-
- if (buffer_read(&footer, sizeof(footer), 1) != 1){
- err << "getFragmentFooter:Error reading fragment footer" << endl;
- return false;
- }
-
- // TODO: Handle footer, nothing yet
- footer.SectionType = ntohl(footer.SectionType);
- footer.SectionLength = ntohl(footer.SectionLength);
- footer.TableId = ntohl(footer.TableId);
- footer.FragmentNo = ntohl(footer.FragmentNo);
- footer.NoOfRecords = ntohl(footer.NoOfRecords);
- footer.Checksum = ntohl(footer.Checksum);
-
- assert(m_count == footer.NoOfRecords);
-
- return true;
-} // RestoreDataIterator::getFragmentFooter
-
-AttributeDesc::AttributeDesc(NdbDictionary::Column *c)
- : m_column(c)
-{
- size = 8*NdbColumnImpl::getImpl(* c).m_attrSize;
- arraySize = NdbColumnImpl::getImpl(* c).m_arraySize;
-}
-
-void TableS::createAttr(NdbDictionary::Column *column)
-{
- AttributeDesc * d = new AttributeDesc(column);
- if(d == NULL) {
- ndbout_c("Restore: Failed to allocate memory");
- abort();
- }
- d->attrId = allAttributesDesc.size();
- allAttributesDesc.push_back(d);
-
- if (d->m_column->getAutoIncrement())
- m_auto_val_id= d->attrId;
-
- if(d->m_column->getPrimaryKey() && backupVersion <= MAKE_VERSION(4,1,7))
- {
- m_fixedKeys.push_back(d);
- return;
- }
-
- if(!d->m_column->getNullable())
- {
- m_fixedAttribs.push_back(d);
- return;
- }
-
- /* Nullable attr*/
- d->m_nullBitIndex = m_noOfNullable;
- m_noOfNullable++;
- m_nullBitmaskSize = (m_noOfNullable + 31) / 32;
- m_variableAttribs.push_back(d);
-} // TableS::createAttr
-
-Uint16 Twiddle16(Uint16 in)
-{
- Uint16 retVal = 0;
-
- retVal = ((in & 0xFF00) >> 8) |
- ((in & 0x00FF) << 8);
-
- return(retVal);
-} // Twiddle16
-
-Uint32 Twiddle32(Uint32 in)
-{
- Uint32 retVal = 0;
-
- retVal = ((in & 0x000000FF) << 24) |
- ((in & 0x0000FF00) << 8) |
- ((in & 0x00FF0000) >> 8) |
- ((in & 0xFF000000) >> 24);
-
- return(retVal);
-} // Twiddle32
-
-Uint64 Twiddle64(Uint64 in)
-{
- Uint64 retVal = 0;
-
- retVal =
- ((in & (Uint64)0x00000000000000FFLL) << 56) |
- ((in & (Uint64)0x000000000000FF00LL) << 40) |
- ((in & (Uint64)0x0000000000FF0000LL) << 24) |
- ((in & (Uint64)0x00000000FF000000LL) << 8) |
- ((in & (Uint64)0x000000FF00000000LL) >> 8) |
- ((in & (Uint64)0x0000FF0000000000LL) >> 24) |
- ((in & (Uint64)0x00FF000000000000LL) >> 40) |
- ((in & (Uint64)0xFF00000000000000LL) >> 56);
-
- return(retVal);
-} // Twiddle64
-
-
-RestoreLogIterator::RestoreLogIterator(const RestoreMetaData & md)
- : m_metaData(md)
-{
- debug << "RestoreLog constructor" << endl;
- setLogFile(md, 0);
-
- m_count = 0;
-}
-
-const LogEntry *
-RestoreLogIterator::getNextLogEntry(int & res) {
- // Read record length
- typedef BackupFormat::LogFile::LogEntry LogE;
-
- Uint32 gcp= 0;
- LogE * logE= 0;
- Uint32 len= ~0;
- const Uint32 stopGCP = m_metaData.getStopGCP();
- do {
- if (buffer_read_ahead(&len, sizeof(Uint32), 1) != 1){
- res= -1;
- return 0;
- }
- len= ntohl(len);
-
- Uint32 data_len = sizeof(Uint32) + len*4;
- if (buffer_get_ptr((void **)(&logE), 1, data_len) != data_len) {
- res= -2;
- return 0;
- }
-
- if(len == 0){
- res= 0;
- return 0;
- }
-
- logE->TableId= ntohl(logE->TableId);
- logE->TriggerEvent= ntohl(logE->TriggerEvent);
-
- const bool hasGcp= (logE->TriggerEvent & 0x10000) != 0;
- logE->TriggerEvent &= 0xFFFF;
-
- if(hasGcp){
- len--;
- gcp = ntohl(logE->Data[len-2]);
- }
- } while(gcp > stopGCP + 1);
-
- m_logEntry.m_table = m_metaData.getTable(logE->TableId);
- switch(logE->TriggerEvent){
- case TriggerEvent::TE_INSERT:
- m_logEntry.m_type = LogEntry::LE_INSERT;
- break;
- case TriggerEvent::TE_UPDATE:
- m_logEntry.m_type = LogEntry::LE_UPDATE;
- break;
- case TriggerEvent::TE_DELETE:
- m_logEntry.m_type = LogEntry::LE_DELETE;
- break;
- default:
- res = -1;
- return NULL;
- }
-
- const TableS * tab = m_logEntry.m_table;
- m_logEntry.clear();
-
- AttributeHeader * ah = (AttributeHeader *)&logE->Data[0];
- AttributeHeader *end = (AttributeHeader *)&logE->Data[len - 2];
- AttributeS * attr;
- while(ah < end){
- attr= m_logEntry.add_attr();
- if(attr == NULL) {
- ndbout_c("Restore: Failed to allocate memory");
- res = -1;
- return 0;
- }
-
- attr->Desc = (* tab)[ah->getAttributeId()];
- assert(attr->Desc != 0);
-
- const Uint32 sz = ah->getDataSize();
- if(sz == 0){
- attr->Data.null = true;
- attr->Data.void_value = NULL;
- } else {
- attr->Data.null = false;
- attr->Data.void_value = ah->getDataPtr();
- }
-
- Twiddle(attr->Desc, &(attr->Data));
-
- ah = ah->getNext();
- }
-
- m_count ++;
- res = 0;
- return &m_logEntry;
-}
-
-NdbOut &
-operator<<(NdbOut& ndbout, const AttributeS& attr){
- const AttributeData & data = attr.Data;
- const AttributeDesc & desc = *(attr.Desc);
-
- if (data.null)
- {
- ndbout << "<NULL>";
- return ndbout;
- }
-
- NdbRecAttr tmprec;
- tmprec.setup(desc.m_column, (char *)data.void_value);
- ndbout << tmprec;
-
- return ndbout;
-}
-
-// Print tuple data
-NdbOut&
-operator<<(NdbOut& ndbout, const TupleS& tuple)
-{
- ndbout << tuple.getTable()->getTableName() << "; ";
- for (int i = 0; i < tuple.getNoOfAttributes(); i++)
- {
- AttributeData * attr_data = tuple.getData(i);
- const AttributeDesc * attr_desc = tuple.getDesc(i);
- const AttributeS attr = {attr_desc, *attr_data};
- debug << i << " " << attr_desc->m_column->getName();
- ndbout << attr;
-
- if (i != (tuple.getNoOfAttributes() - 1))
- ndbout << delimiter << " ";
- } // for
- return ndbout;
-}
-
-// Print tuple data
-NdbOut&
-operator<<(NdbOut& ndbout, const LogEntry& logE)
-{
- switch(logE.m_type)
- {
- case LogEntry::LE_INSERT:
- ndbout << "INSERT " << logE.m_table->getTableName() << " ";
- break;
- case LogEntry::LE_DELETE:
- ndbout << "DELETE " << logE.m_table->getTableName() << " ";
- break;
- case LogEntry::LE_UPDATE:
- ndbout << "UPDATE " << logE.m_table->getTableName() << " ";
- break;
- default:
- ndbout << "Unknown log entry type (not insert, delete or update)" ;
- }
-
- for (Uint32 i= 0; i < logE.size();i++)
- {
- const AttributeS * attr = logE[i];
- ndbout << attr->Desc->m_column->getName() << "=";
- ndbout << (* attr);
- if (i < (logE.size() - 1))
- ndbout << ", ";
- }
- return ndbout;
-}
-
-
-NdbOut &
-operator<<(NdbOut& ndbout, const TableS & table){
- ndbout << endl << "Table: " << table.getTableName() << endl;
- for (int j = 0; j < table.getNoOfAttributes(); j++)
- {
- const AttributeDesc * desc = table[j];
- ndbout << desc->m_column->getName() << ": "
- << (Uint32) desc->m_column->getType();
- ndbout << " key: " << (Uint32) desc->m_column->getPrimaryKey();
- ndbout << " array: " << desc->arraySize;
- ndbout << " size: " << desc->size << endl;
- } // for
- return ndbout;
-}
-
-template class Vector<TableS*>;
-template class Vector<AttributeS*>;
-template class Vector<AttributeDesc*>;
-
diff --git a/ndb/tools/restore/Restore.hpp b/ndb/tools/restore/Restore.hpp
deleted file mode 100644
index d7f6e3b7799..00000000000
--- a/ndb/tools/restore/Restore.hpp
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 RESTORE_H
-#define RESTORE_H
-
-#include <ndb_global.h>
-#include <NdbOut.hpp>
-#include "../src/kernel/blocks/backup/BackupFormat.hpp"
-#include "../src/ndbapi/NdbDictionaryImpl.hpp"
-#include <NdbApi.hpp>
-
-#include <ndb_version.h>
-#include <version.h>
-
-static const char * delimiter = ";"; // Delimiter in file dump
-
-const int FileNameLenC = 256;
-const int TableNameLenC = 256;
-const int AttrNameLenC = 256;
-const Uint32 timeToWaitForNdbC = 10000;
-const Uint32 opsDefaultC = 1000;
-
-// Forward declarations
-//class AttributeDesc;
-struct AttributeDesc;
-struct AttributeData;
-struct AttributeS;
-
-struct AttributeData {
- bool null;
- Uint32 size;
- union {
- Int8 * int8_value;
- Uint8 * u_int8_value;
-
- Int16 * int16_value;
- Uint16 * u_int16_value;
-
- Int32 * int32_value;
- Uint32 * u_int32_value;
-
- Int64 * int64_value;
- Uint64 * u_int64_value;
-
- char * string_value;
-
- void* void_value;
- };
-};
-
-struct AttributeDesc {
- //private:
- friend class TupleS;
- friend class TableS;
- friend class RestoreDataIterator;
- friend class RestoreMetaData;
- friend struct AttributeS;
- Uint32 size; // bits
- Uint32 arraySize;
- Uint32 attrId;
- NdbDictionary::Column *m_column;
-
- Uint32 m_nullBitIndex;
-public:
-
- AttributeDesc(NdbDictionary::Column *column);
- AttributeDesc();
-
- Uint32 getSizeInWords() const { return (size * arraySize + 31)/ 32;}
-}; // AttributeDesc
-
-struct AttributeS {
- const AttributeDesc * Desc;
- AttributeData Data;
-};
-
-class TupleS {
-private:
- friend class RestoreDataIterator;
-
- class TableS *m_currentTable;
- AttributeData *allAttrData;
- bool prepareRecord(TableS &);
-
-public:
- TupleS() {
- m_currentTable= 0;
- allAttrData= 0;
- };
- ~TupleS()
- {
- if (allAttrData)
- delete [] allAttrData;
- };
- TupleS(const TupleS& tuple); // disable copy constructor
- TupleS & operator=(const TupleS& tuple);
- int getNoOfAttributes() const;
- TableS * getTable() const;
- const AttributeDesc * getDesc(int i) const;
- AttributeData * getData(int i) const;
-}; // class TupleS
-
-class TableS {
-
- friend class TupleS;
- friend class RestoreMetaData;
- friend class RestoreDataIterator;
-
- Uint32 schemaVersion;
- Uint32 backupVersion;
- Vector<AttributeDesc *> allAttributesDesc;
- Vector<AttributeDesc *> m_fixedKeys;
- //Vector<AttributeDesc *> m_variableKey;
- Vector<AttributeDesc *> m_fixedAttribs;
- Vector<AttributeDesc *> m_variableAttribs;
-
- Uint32 m_noOfNullable;
- Uint32 m_nullBitmaskSize;
-
- Uint32 m_auto_val_id;
- Uint64 m_max_auto_val;
-
- int pos;
-
- void createAttr(NdbDictionary::Column *column);
-
-public:
- class NdbDictionary::Table* m_dictTable;
- TableS (Uint32 version, class NdbTableImpl* dictTable);
- ~TableS();
-
- Uint32 getTableId() const {
- return m_dictTable->getTableId();
- }
- /*
- void setMysqlTableName(char * tableName) {
- strpcpy(mysqlTableName, tableName);
- }
-
- char *
- void setMysqlDatabaseName(char * databaseName) {
- strpcpy(mysqlDatabaseName, databaseName);
- }
-
- table.setMysqlDatabaseName(database);
- */
- void setBackupVersion(Uint32 version) {
- backupVersion = version;
- }
-
- Uint32 getBackupVersion() const {
- return backupVersion;
- }
-
- const char * getTableName() const {
- return m_dictTable->getName();
- }
-
- int getNoOfAttributes() const {
- return allAttributesDesc.size();
- };
-
- bool have_auto_inc() const {
- return m_auto_val_id != ~(Uint32)0;
- };
-
- bool have_auto_inc(Uint32 id) const {
- return m_auto_val_id == id;
- };
-
- Uint64 get_max_auto_val() const {
- return m_max_auto_val;
- };
-
- void update_max_auto_val(const char *data, int size) {
- union {
- Uint8 u8;
- Uint16 u16;
- Uint32 u32;
- } val;
- Uint64 v;
- switch(size){
- case 64:
- memcpy(&v,data,8);
- break;
- case 32:
- memcpy(&val.u32,data,4);
- v= val.u32;
- break;
- case 16:
- memcpy(&val.u16,data,2);
- v= val.u16;
- break;
- case 8:
- memcpy(&val.u8,data,1);
- v= val.u8;
- break;
- default:
- return;
- };
- if(v > m_max_auto_val)
- m_max_auto_val= v;
- };
- /**
- * Get attribute descriptor
- */
- const AttributeDesc * operator[](int attributeId) const {
- return allAttributesDesc[attributeId];
- }
-
- TableS& operator=(TableS& org) ;
-}; // TableS;
-
-class BackupFile {
-protected:
- FILE * m_file;
- char m_path[PATH_MAX];
- char m_fileName[PATH_MAX];
- bool m_hostByteOrder;
- BackupFormat::FileHeader m_fileHeader;
- BackupFormat::FileHeader m_expectedFileHeader;
-
- Uint32 m_nodeId;
-
- void * m_buffer;
- void * m_buffer_ptr;
- Uint32 m_buffer_sz;
- Uint32 m_buffer_data_left;
- void (* free_data_callback)();
-
- bool openFile();
- void setCtlFile(Uint32 nodeId, Uint32 backupId, const char * path);
- void setDataFile(const BackupFile & bf, Uint32 no);
- void setLogFile(const BackupFile & bf, Uint32 no);
-
- Uint32 buffer_get_ptr(void **p_buf_ptr, Uint32 size, Uint32 nmemb);
- Uint32 buffer_read(void *ptr, Uint32 size, Uint32 nmemb);
- Uint32 buffer_get_ptr_ahead(void **p_buf_ptr, Uint32 size, Uint32 nmemb);
- Uint32 buffer_read_ahead(void *ptr, Uint32 size, Uint32 nmemb);
-
- void setName(const char * path, const char * name);
-
- BackupFile(void (* free_data_callback)() = 0);
- ~BackupFile();
-public:
- bool readHeader();
- bool validateFooter();
-
- const char * getPath() const { return m_path;}
- const char * getFilename() const { return m_fileName;}
- Uint32 getNodeId() const { return m_nodeId;}
- const BackupFormat::FileHeader & getFileHeader() const { return m_fileHeader;}
- bool Twiddle(const AttributeDesc * attr_desc, AttributeData * attr_data, Uint32 arraySize = 0);
-};
-
-class RestoreMetaData : public BackupFile {
-
- Vector<TableS *> allTables;
- bool readMetaFileHeader();
- bool readMetaTableDesc();
-
- bool readGCPEntry();
- Uint32 readMetaTableList();
-
- Uint32 m_startGCP;
- Uint32 m_stopGCP;
-
- bool parseTableDescriptor(const Uint32 * data, Uint32 len);
-
-public:
- RestoreMetaData(const char * path, Uint32 nodeId, Uint32 bNo);
- virtual ~RestoreMetaData();
-
- int loadContent();
-
- Uint32 getNoOfTables() const { return allTables.size();}
-
- const TableS * operator[](int i) const { return allTables[i];}
- TableS * getTable(Uint32 tableId) const;
-
- Uint32 getStopGCP() const;
-}; // RestoreMetaData
-
-
-class RestoreDataIterator : public BackupFile {
- const RestoreMetaData & m_metaData;
- Uint32 m_count;
- TableS* m_currentTable;
- TupleS m_tuple;
-
-public:
-
- // Constructor
- RestoreDataIterator(const RestoreMetaData &, void (* free_data_callback)());
- ~RestoreDataIterator() {};
-
- // Read data file fragment header
- bool readFragmentHeader(int & res);
- bool validateFragmentFooter();
-
- const TupleS *getNextTuple(int & res);
-};
-
-class LogEntry {
-public:
- enum EntryType {
- LE_INSERT,
- LE_DELETE,
- LE_UPDATE
- };
- EntryType m_type;
- TableS * m_table;
- Vector<AttributeS*> m_values;
- Vector<AttributeS*> m_values_e;
- AttributeS *add_attr() {
- AttributeS * attr;
- if (m_values_e.size() > 0) {
- attr = m_values_e[m_values_e.size()-1];
- m_values_e.erase(m_values_e.size()-1);
- }
- else
- {
- attr = new AttributeS;
- }
- m_values.push_back(attr);
- return attr;
- }
- void clear() {
- for(Uint32 i= 0; i < m_values.size(); i++)
- m_values_e.push_back(m_values[i]);
- m_values.clear();
- }
- ~LogEntry()
- {
- Uint32 i;
- for(i= 0; i< m_values.size(); i++)
- delete m_values[i];
- for(i= 0; i< m_values_e.size(); i++)
- delete m_values_e[i];
- }
- Uint32 size() const { return m_values.size(); }
- const AttributeS * operator[](int i) const { return m_values[i];}
-};
-
-class RestoreLogIterator : public BackupFile {
-private:
- const RestoreMetaData & m_metaData;
-
- Uint32 m_count;
- LogEntry m_logEntry;
-public:
- RestoreLogIterator(const RestoreMetaData &);
- virtual ~RestoreLogIterator() {};
-
- const LogEntry * getNextLogEntry(int & res);
-};
-
-NdbOut& operator<<(NdbOut& ndbout, const TableS&);
-NdbOut& operator<<(NdbOut& ndbout, const TupleS&);
-NdbOut& operator<<(NdbOut& ndbout, const LogEntry&);
-NdbOut& operator<<(NdbOut& ndbout, const RestoreMetaData&);
-
-#endif
-
-
diff --git a/ndb/tools/restore/consumer.cpp b/ndb/tools/restore/consumer.cpp
deleted file mode 100644
index b130c4998d5..00000000000
--- a/ndb/tools/restore/consumer.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-#include "consumer.hpp"
-
-#ifdef USE_MYSQL
-int
-BackupConsumer::create_table_string(const TableS & table,
- char * tableName,
- char *buf){
- int pos = 0;
- int pos2 = 0;
- char buf2[2048];
-
- pos += sprintf(buf+pos, "%s%s", "CREATE TABLE ", tableName);
- pos += sprintf(buf+pos, "%s", "(");
- pos2 += sprintf(buf2+pos2, "%s", " primary key(");
-
- for (int j = 0; j < table.getNoOfAttributes(); j++)
- {
- const AttributeDesc * desc = table[j];
- // ndbout << desc->name << ": ";
- pos += sprintf(buf+pos, "%s%s", desc->m_column->getName()," ");
- switch(desc->m_column->getType()){
- case NdbDictionary::Column::Int:
- pos += sprintf(buf+pos, "%s", "int");
- break;
- case NdbDictionary::Column::Unsigned:
- pos += sprintf(buf+pos, "%s", "int unsigned");
- break;
- case NdbDictionary::Column::Float:
- pos += sprintf(buf+pos, "%s", "float");
- break;
- case NdbDictionary::Column::Olddecimal:
- case NdbDictionary::Column::Decimal:
- pos += sprintf(buf+pos, "%s", "decimal");
- break;
- case NdbDictionary::Column::Olddecimalunsigned:
- case NdbDictionary::Column::Decimalunsigned:
- pos += sprintf(buf+pos, "%s", "decimal unsigned");
- break;
- case NdbDictionary::Column::Char:
- pos += sprintf(buf+pos, "%s", "char");
- break;
- case NdbDictionary::Column::Varchar:
- pos += sprintf(buf+pos, "%s", "varchar");
- break;
- case NdbDictionary::Column::Binary:
- pos += sprintf(buf+pos, "%s", "binary");
- break;
- case NdbDictionary::Column::Varbinary:
- pos += sprintf(buf+pos, "%s", "varchar binary");
- break;
- case NdbDictionary::Column::Bigint:
- pos += sprintf(buf+pos, "%s", "bigint");
- break;
- case NdbDictionary::Column::Bigunsigned:
- pos += sprintf(buf+pos, "%s", "bigint unsigned");
- break;
- case NdbDictionary::Column::Double:
- pos += sprintf(buf+pos, "%s", "double");
- break;
- case NdbDictionary::Column::Datetime:
- pos += sprintf(buf+pos, "%s", "datetime");
- break;
- case NdbDictionary::Column::Date:
- pos += sprintf(buf+pos, "%s", "date");
- break;
- case NdbDictionary::Column::Time:
- pos += sprintf(buf+pos, "%s", "time");
- break;
- case NdbDictionary::Column::Undefined:
- // pos += sprintf(buf+pos, "%s", "varchar binary");
- return -1;
- break;
- default:
- //pos += sprintf(buf+pos, "%s", "varchar binary");
- return -1;
- }
- if (desc->arraySize > 1) {
- int attrSize = desc->arraySize;
- pos += sprintf(buf+pos, "%s%u%s",
- "(",
- attrSize,
- ")");
- }
- if (desc->m_column->getPrimaryKey()) {
- pos += sprintf(buf+pos, "%s", " not null");
- pos2 += sprintf(buf2+pos2, "%s%s", desc->m_column->getName(), ",");
- }
- pos += sprintf(buf+pos, "%s", ",");
- } // for
- pos2--; // remove trailing comma
- pos2 += sprintf(buf2+pos2, "%s", ")");
- // pos--; // remove trailing comma
-
- pos += sprintf(buf+pos, "%s", buf2);
- pos += sprintf(buf+pos, "%s", ") type=ndbcluster");
- return 0;
-}
-
-#endif // USE_MYSQL
diff --git a/ndb/tools/restore/consumer.hpp b/ndb/tools/restore/consumer.hpp
deleted file mode 100644
index 692c814159f..00000000000
--- a/ndb/tools/restore/consumer.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 CONSUMER_HPP
-#define CONSUMER_HPP
-
-#include "Restore.hpp"
-
-class BackupConsumer {
-public:
- virtual ~BackupConsumer() { }
- virtual bool init() { return true;}
- virtual bool table(const TableS &){return true;}
- virtual bool endOfTables() { return true; }
- virtual void tuple(const TupleS &){}
- virtual void tuple_free(){}
- virtual void endOfTuples(){}
- virtual void logEntry(const LogEntry &){}
- virtual void endOfLogEntrys(){}
- virtual bool finalize_table(const TableS &){return true;}
-};
-
-#endif
diff --git a/ndb/tools/restore/consumer_printer.cpp b/ndb/tools/restore/consumer_printer.cpp
deleted file mode 100644
index 0aa5b521d29..00000000000
--- a/ndb/tools/restore/consumer_printer.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-#include "consumer_printer.hpp"
-
-bool
-BackupPrinter::table(const TableS & tab)
-{
- if (m_print || m_print_meta)
- {
- m_ndbout << tab;
- ndbout_c("Successfully printed table: %s", tab.m_dictTable->getName());
- }
- return true;
-}
-
-void
-BackupPrinter::tuple(const TupleS & tup)
-{
- m_dataCount++;
- if (m_print || m_print_data)
- m_ndbout << tup << endl;
-}
-
-void
-BackupPrinter::logEntry(const LogEntry & logE)
-{
- if (m_print || m_print_log)
- m_ndbout << logE << endl;
- m_logCount++;
-}
-
-void
-BackupPrinter::endOfLogEntrys()
-{
- if (m_print || m_print_log)
- {
- ndbout << "Printed " << m_dataCount << " tuples and "
- << m_logCount << " log entries"
- << " to stdout." << endl;
- }
-}
diff --git a/ndb/tools/restore/consumer_printer.hpp b/ndb/tools/restore/consumer_printer.hpp
deleted file mode 100644
index 7cbc924e364..00000000000
--- a/ndb/tools/restore/consumer_printer.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 CONSUMER_PRINTER_HPP
-#define CONSUMER_PRINTER_HPP
-
-#include "consumer.hpp"
-
-class BackupPrinter : public BackupConsumer
-{
- NdbOut & m_ndbout;
-public:
- BackupPrinter(NdbOut & out = ndbout) : m_ndbout(out)
- {
- m_print = false;
- m_print_log = false;
- m_print_data = false;
- m_print_meta = false;
- }
-
- virtual bool table(const TableS &);
-#ifdef USE_MYSQL
- virtual bool table(const TableS &, MYSQL* mysqlp);
-#endif
- virtual void tuple(const TupleS &);
- virtual void logEntry(const LogEntry &);
- virtual void endOfTuples() {};
- virtual void endOfLogEntrys();
- bool m_print;
- bool m_print_log;
- bool m_print_data;
- bool m_print_meta;
- Uint32 m_logCount;
- Uint32 m_dataCount;
-};
-
-#endif
diff --git a/ndb/tools/restore/consumer_restore.cpp b/ndb/tools/restore/consumer_restore.cpp
deleted file mode 100644
index d72b82569e2..00000000000
--- a/ndb/tools/restore/consumer_restore.cpp
+++ /dev/null
@@ -1,674 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-#include "consumer_restore.hpp"
-#include <NdbSleep.h>
-
-extern FilteredNdbOut err;
-extern FilteredNdbOut info;
-extern FilteredNdbOut debug;
-
-static void callback(int, NdbTransaction*, void*);
-
-extern const char * g_connect_string;
-bool
-BackupRestore::init()
-{
- release();
-
- if (!m_restore && !m_restore_meta)
- return true;
-
- m_cluster_connection = new Ndb_cluster_connection(g_connect_string);
- if(m_cluster_connection->connect(12, 5, 1) != 0)
- {
- return -1;
- }
-
- m_ndb = new Ndb(m_cluster_connection);
-
- if (m_ndb == NULL)
- return false;
-
- m_ndb->init(1024);
- if (m_ndb->waitUntilReady(30) != 0)
- {
- err << "Failed to connect to ndb!!" << endl;
- return false;
- }
- info << "Connected to ndb!!" << endl;
-
- m_callback = new restore_callback_t[m_parallelism];
-
- if (m_callback == 0)
- {
- err << "Failed to allocate callback structs" << endl;
- return false;
- }
-
- m_free_callback= m_callback;
- for (Uint32 i= 0; i < m_parallelism; i++) {
- m_callback[i].restore= this;
- m_callback[i].connection= 0;
- if (i > 0)
- m_callback[i-1].next= &(m_callback[i]);
- }
- m_callback[m_parallelism-1].next = 0;
-
- return true;
-}
-
-void BackupRestore::release()
-{
- if (m_ndb)
- {
- delete m_ndb;
- m_ndb= 0;
- }
-
- if (m_callback)
- {
- delete [] m_callback;
- m_callback= 0;
- }
-
- if (m_cluster_connection)
- {
- delete m_cluster_connection;
- m_cluster_connection= 0;
- }
-}
-
-BackupRestore::~BackupRestore()
-{
- release();
-}
-
-static
-int
-match_blob(const char * name){
- int cnt, id1, id2;
- char buf[256];
- if((cnt = sscanf(name, "%[^/]/%[^/]/NDB$BLOB_%d_%d", buf, buf, &id1, &id2)) == 4){
- return id1;
- }
-
- return -1;
-}
-
-const NdbDictionary::Table*
-BackupRestore::get_table(const NdbDictionary::Table* tab){
- if(m_cache.m_old_table == tab)
- return m_cache.m_new_table;
- m_cache.m_old_table = tab;
-
- int cnt, id1, id2;
- char db[256], schema[256];
- if((cnt = sscanf(tab->getName(), "%[^/]/%[^/]/NDB$BLOB_%d_%d",
- db, schema, &id1, &id2)) == 4){
- m_ndb->setDatabaseName(db);
- m_ndb->setSchemaName(schema);
-
- BaseString::snprintf(db, sizeof(db), "NDB$BLOB_%d_%d",
- m_new_tables[id1]->getTableId(), id2);
-
- m_cache.m_new_table = m_ndb->getDictionary()->getTable(db);
-
- } else {
- m_cache.m_new_table = m_new_tables[tab->getTableId()];
- }
- assert(m_cache.m_new_table);
- return m_cache.m_new_table;
-}
-
-bool
-BackupRestore::finalize_table(const TableS & table){
- bool ret= true;
- if (!m_restore && !m_restore_meta)
- return ret;
- if (table.have_auto_inc())
- {
- Uint64 max_val= table.get_max_auto_val();
- Uint64 auto_val= m_ndb->readAutoIncrementValue(get_table(table.m_dictTable));
- if (max_val+1 > auto_val || auto_val == ~(Uint64)0)
- ret= m_ndb->setAutoIncrementValue(get_table(table.m_dictTable), max_val+1, false);
- }
- return ret;
-}
-
-bool
-BackupRestore::table(const TableS & table){
- if (!m_restore && !m_restore_meta)
- return true;
-
- const char * name = table.getTableName();
-
- /**
- * Ignore blob tables
- */
- if(match_blob(name) >= 0)
- return true;
-
- const NdbTableImpl & tmptab = NdbTableImpl::getImpl(* table.m_dictTable);
- if(tmptab.m_indexType != NdbDictionary::Index::Undefined){
- m_indexes.push_back(table.m_dictTable);
- return true;
- }
-
- BaseString tmp(name);
- Vector<BaseString> split;
- if(tmp.split(split, "/") != 3){
- err << "Invalid table name format " << name << endl;
- return false;
- }
-
- m_ndb->setDatabaseName(split[0].c_str());
- m_ndb->setSchemaName(split[1].c_str());
-
- NdbDictionary::Dictionary* dict = m_ndb->getDictionary();
- if(m_restore_meta){
- NdbDictionary::Table copy(*table.m_dictTable);
-
- copy.setName(split[2].c_str());
-
- if (dict->createTable(copy) == -1)
- {
- err << "Create table " << table.getTableName() << " failed: "
- << dict->getNdbError() << endl;
- return false;
- }
- info << "Successfully restored table " << table.getTableName()<< endl ;
- }
-
- const NdbDictionary::Table* tab = dict->getTable(split[2].c_str());
- if(tab == 0){
- err << "Unable to find table: " << split[2].c_str() << endl;
- return false;
- }
- if(m_restore_meta){
- m_ndb->setAutoIncrementValue(tab, ~(Uint64)0, false);
- }
- const NdbDictionary::Table* null = 0;
- m_new_tables.fill(table.m_dictTable->getTableId(), null);
- m_new_tables[table.m_dictTable->getTableId()] = tab;
- return true;
-}
-
-bool
-BackupRestore::endOfTables(){
- if(!m_restore_meta)
- return true;
-
- NdbDictionary::Dictionary* dict = m_ndb->getDictionary();
- for(size_t i = 0; i<m_indexes.size(); i++){
- NdbTableImpl & indtab = NdbTableImpl::getImpl(* m_indexes[i]);
-
- BaseString tmp(indtab.m_primaryTable.c_str());
- Vector<BaseString> split;
- if(tmp.split(split, "/") != 3){
- err << "Invalid table name format " << indtab.m_primaryTable.c_str()
- << endl;
- return false;
- }
-
- m_ndb->setDatabaseName(split[0].c_str());
- m_ndb->setSchemaName(split[1].c_str());
-
- const NdbDictionary::Table * prim = dict->getTable(split[2].c_str());
- if(prim == 0){
- err << "Unable to find base table \"" << split[2].c_str()
- << "\" for index "
- << indtab.getName() << endl;
- return false;
- }
- NdbTableImpl& base = NdbTableImpl::getImpl(*prim);
- NdbIndexImpl* idx;
- int id;
- char idxName[255], buf[255];
- if(sscanf(indtab.getName(), "%[^/]/%[^/]/%d/%s",
- buf, buf, &id, idxName) != 4){
- err << "Invalid index name format " << indtab.getName() << endl;
- return false;
- }
- if(NdbDictInterface::create_index_obj_from_table(&idx, &indtab, &base))
- {
- err << "Failed to create index " << idxName
- << " on " << split[2].c_str() << endl;
- return false;
- }
- idx->setName(idxName);
- if(dict->createIndex(* idx) != 0)
- {
- delete idx;
- err << "Failed to create index " << idxName
- << " on " << split[2].c_str() << endl
- << dict->getNdbError() << endl;
-
- return false;
- }
- delete idx;
- info << "Successfully created index " << idxName
- << " on " << split[2].c_str() << endl;
- }
- return true;
-}
-
-void BackupRestore::tuple(const TupleS & tup)
-{
- if (!m_restore)
- return;
-
- while (m_free_callback == 0)
- {
- assert(m_transactions == m_parallelism);
- // send-poll all transactions
- // close transaction is done in callback
- m_ndb->sendPollNdb(3000, 1);
- }
-
- restore_callback_t * cb = m_free_callback;
-
- if (cb == 0)
- assert(false);
-
- m_free_callback = cb->next;
- cb->retries = 0;
- cb->tup = tup; // must do copy!
- tuple_a(cb);
-
-}
-
-void BackupRestore::tuple_a(restore_callback_t *cb)
-{
- while (cb->retries < 10)
- {
- /**
- * start transactions
- */
- cb->connection = m_ndb->startTransaction();
- if (cb->connection == NULL)
- {
- /*
- if (errorHandler(cb))
- {
- continue;
- }
- */
- exitHandler();
- } // if
-
- const TupleS &tup = cb->tup;
- const NdbDictionary::Table * table = get_table(tup.getTable()->m_dictTable);
-
- NdbOperation * op = cb->connection->getNdbOperation(table);
-
- if (op == NULL)
- {
- if (errorHandler(cb))
- continue;
- exitHandler();
- } // if
-
- if (op->writeTuple() == -1)
- {
- if (errorHandler(cb))
- continue;
- exitHandler();
- } // if
-
- int ret = 0;
- for (int j = 0; j < 2; j++)
- {
- for (int i = 0; i < tup.getNoOfAttributes(); i++)
- {
- const AttributeDesc * attr_desc = tup.getDesc(i);
- const AttributeData * attr_data = tup.getData(i);
- int size = attr_desc->size;
- int arraySize = attr_desc->arraySize;
- char * dataPtr = attr_data->string_value;
- Uint32 length = (size * arraySize) / 8;
-
- if (j == 0 && tup.getTable()->have_auto_inc(i))
- tup.getTable()->update_max_auto_val(dataPtr,size);
-
- if (attr_desc->m_column->getPrimaryKey())
- {
- if (j == 1) continue;
- ret = op->equal(i, dataPtr, length);
- }
- else
- {
- if (j == 0) continue;
- if (attr_data->null)
- ret = op->setValue(i, NULL, 0);
- else
- ret = op->setValue(i, dataPtr, length);
- }
- if (ret < 0) {
- ndbout_c("Column: %d type %d %d %d %d",i,
- attr_desc->m_column->getType(),
- size, arraySize, attr_data->size);
- break;
- }
- }
- if (ret < 0)
- break;
- }
- if (ret < 0)
- {
- if (errorHandler(cb))
- continue;
- exitHandler();
- }
-
- // Prepare transaction (the transaction is NOT yet sent to NDB)
- cb->connection->executeAsynchPrepare(NdbTransaction::Commit,
- &callback, cb);
- m_transactions++;
- return;
- }
- err << "Retried transaction " << cb->retries << " times.\nLast error"
- << m_ndb->getNdbError(cb->error_code) << endl
- << "...Unable to recover from errors. Exiting..." << endl;
- exitHandler();
-}
-
-void BackupRestore::cback(int result, restore_callback_t *cb)
-{
- m_transactions--;
-
- if (result < 0)
- {
- /**
- * Error. temporary or permanent?
- */
- if (errorHandler(cb))
- tuple_a(cb); // retry
- else
- {
- err << "Restore: Failed to restore data due to a unrecoverable error. Exiting..." << endl;
- exitHandler();
- }
- }
- else
- {
- /**
- * OK! close transaction
- */
- m_ndb->closeTransaction(cb->connection);
- cb->connection= 0;
- cb->next= m_free_callback;
- m_free_callback= cb;
- m_dataCount++;
- }
-}
-
-/**
- * returns true if is recoverable,
- * Error handling based on hugo
- * false if it is an error that generates an abort.
- */
-bool BackupRestore::errorHandler(restore_callback_t *cb)
-{
- NdbError error= cb->connection->getNdbError();
- m_ndb->closeTransaction(cb->connection);
- cb->connection= 0;
-
- Uint32 sleepTime = 100 + cb->retries * 300;
-
- cb->retries++;
- cb->error_code = error.code;
-
- switch(error.status)
- {
- case NdbError::Success:
- return false;
- // ERROR!
- break;
-
- case NdbError::TemporaryError:
- NdbSleep_MilliSleep(sleepTime);
- return true;
- // RETRY
- break;
-
- case NdbError::UnknownResult:
- err << error << endl;
- return false;
- // ERROR!
- break;
-
- default:
- case NdbError::PermanentError:
- //ERROR
- err << error << endl;
- return false;
- break;
- }
- return false;
-}
-
-void BackupRestore::exitHandler()
-{
- release();
- exit(-1);
-}
-
-
-void
-BackupRestore::tuple_free()
-{
- if (!m_restore)
- return;
-
- // Poll all transactions
- while (m_transactions)
- {
- m_ndb->sendPollNdb(3000);
- }
-}
-
-void
-BackupRestore::endOfTuples()
-{
- tuple_free();
-}
-
-void
-BackupRestore::logEntry(const LogEntry & tup)
-{
- if (!m_restore)
- return;
-
- NdbTransaction * trans = m_ndb->startTransaction();
- if (trans == NULL)
- {
- // Deep shit, TODO: handle the error
- err << "Cannot start transaction" << endl;
- exit(-1);
- } // if
-
- const NdbDictionary::Table * table = get_table(tup.m_table->m_dictTable);
- NdbOperation * op = trans->getNdbOperation(table);
- if (op == NULL)
- {
- err << "Cannot get operation: " << trans->getNdbError() << endl;
- exit(-1);
- } // if
-
- int check = 0;
- switch(tup.m_type)
- {
- case LogEntry::LE_INSERT:
- check = op->insertTuple();
- break;
- case LogEntry::LE_UPDATE:
- check = op->updateTuple();
- break;
- case LogEntry::LE_DELETE:
- check = op->deleteTuple();
- break;
- default:
- err << "Log entry has wrong operation type."
- << " Exiting...";
- exit(-1);
- }
-
- for (Uint32 i= 0; i < tup.size(); i++)
- {
- const AttributeS * attr = tup[i];
- int size = attr->Desc->size;
- int arraySize = attr->Desc->arraySize;
- const char * dataPtr = attr->Data.string_value;
-
- if (tup.m_table->have_auto_inc(attr->Desc->attrId))
- tup.m_table->update_max_auto_val(dataPtr,size);
-
- const Uint32 length = (size / 8) * arraySize;
- if (attr->Desc->m_column->getPrimaryKey())
- op->equal(attr->Desc->attrId, dataPtr, length);
- else
- op->setValue(attr->Desc->attrId, dataPtr, length);
- }
-
- const int ret = trans->execute(NdbTransaction::Commit);
- if (ret != 0)
- {
- // Both insert update and delete can fail during log running
- // and it's ok
- // TODO: check that the error is either tuple exists or tuple does not exist?
- switch(tup.m_type)
- {
- case LogEntry::LE_INSERT:
- break;
- case LogEntry::LE_UPDATE:
- break;
- case LogEntry::LE_DELETE:
- break;
- }
- if (false)
- {
- err << "execute failed: " << trans->getNdbError() << endl;
- exit(-1);
- }
- }
-
- m_ndb->closeTransaction(trans);
- m_logCount++;
-}
-
-void
-BackupRestore::endOfLogEntrys()
-{
- if (!m_restore)
- return;
-
- info << "Restored " << m_dataCount << " tuples and "
- << m_logCount << " log entries" << endl;
-}
-
-/*
- * callback : This is called when the transaction is polled
- *
- * (This function must have three arguments:
- * - The result of the transaction,
- * - The NdbTransaction object, and
- * - A pointer to an arbitrary object.)
- */
-
-static void
-callback(int result, NdbTransaction* trans, void* aObject)
-{
- restore_callback_t *cb = (restore_callback_t *)aObject;
- (cb->restore)->cback(result, cb);
-}
-
-#if 0 // old tuple impl
-void
-BackupRestore::tuple(const TupleS & tup)
-{
- if (!m_restore)
- return;
- while (1)
- {
- NdbTransaction * trans = m_ndb->startTransaction();
- if (trans == NULL)
- {
- // Deep shit, TODO: handle the error
- ndbout << "Cannot start transaction" << endl;
- exit(-1);
- } // if
-
- const TableS * table = tup.getTable();
- NdbOperation * op = trans->getNdbOperation(table->getTableName());
- if (op == NULL)
- {
- ndbout << "Cannot get operation: ";
- ndbout << trans->getNdbError() << endl;
- exit(-1);
- } // if
-
- // TODO: check return value and handle error
- if (op->writeTuple() == -1)
- {
- ndbout << "writeTuple call failed: ";
- ndbout << trans->getNdbError() << endl;
- exit(-1);
- } // if
-
- for (int i = 0; i < tup.getNoOfAttributes(); i++)
- {
- const AttributeS * attr = tup[i];
- int size = attr->Desc->size;
- int arraySize = attr->Desc->arraySize;
- const char * dataPtr = attr->Data.string_value;
-
- const Uint32 length = (size * arraySize) / 8;
- if (attr->Desc->m_column->getPrimaryKey())
- op->equal(i, dataPtr, length);
- }
-
- for (int i = 0; i < tup.getNoOfAttributes(); i++)
- {
- const AttributeS * attr = tup[i];
- int size = attr->Desc->size;
- int arraySize = attr->Desc->arraySize;
- const char * dataPtr = attr->Data.string_value;
-
- const Uint32 length = (size * arraySize) / 8;
- if (!attr->Desc->m_column->getPrimaryKey())
- if (attr->Data.null)
- op->setValue(i, NULL, 0);
- else
- op->setValue(i, dataPtr, length);
- }
- int ret = trans->execute(NdbTransaction::Commit);
- if (ret != 0)
- {
- ndbout << "execute failed: ";
- ndbout << trans->getNdbError() << endl;
- exit(-1);
- }
- m_ndb->closeTransaction(trans);
- if (ret == 0)
- break;
- }
- m_dataCount++;
-}
-#endif
-
-template class Vector<NdbDictionary::Table*>;
-template class Vector<const NdbDictionary::Table*>;
diff --git a/ndb/tools/restore/consumer_restore.hpp b/ndb/tools/restore/consumer_restore.hpp
deleted file mode 100644
index 1bf6d89a912..00000000000
--- a/ndb/tools/restore/consumer_restore.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 CONSUMER_RESTORE_HPP
-#define CONSUMER_RESTORE_HPP
-
-#include "consumer.hpp"
-
-struct restore_callback_t {
- class BackupRestore *restore;
- class TupleS tup;
- class NdbTransaction *connection;
- int retries;
- int error_code;
- restore_callback_t *next;
-};
-
-
-class BackupRestore : public BackupConsumer
-{
-public:
- BackupRestore(Uint32 parallelism=1)
- {
- m_ndb = 0;
- m_cluster_connection = 0;
- m_logCount = m_dataCount = 0;
- m_restore = false;
- m_restore_meta = false;
- m_parallelism = parallelism;
- m_callback = 0;
- m_free_callback = 0;
- m_transactions = 0;
- m_cache.m_old_table = 0;
- }
-
- virtual ~BackupRestore();
- virtual bool init();
- virtual void release();
- virtual bool table(const TableS &);
- virtual bool endOfTables();
- virtual void tuple(const TupleS &);
- virtual void tuple_free();
- virtual void tuple_a(restore_callback_t *cb);
- virtual void cback(int result, restore_callback_t *cb);
- virtual bool errorHandler(restore_callback_t *cb);
- virtual void exitHandler();
- virtual void endOfTuples();
- virtual void logEntry(const LogEntry &);
- virtual void endOfLogEntrys();
- virtual bool finalize_table(const TableS &);
- void connectToMysql();
- Ndb * m_ndb;
- Ndb_cluster_connection * m_cluster_connection;
- bool m_restore;
- bool m_restore_meta;
- Uint32 m_logCount;
- Uint32 m_dataCount;
-
- Uint32 m_parallelism;
- volatile Uint32 m_transactions;
-
- restore_callback_t *m_callback;
- restore_callback_t *m_free_callback;
-
- /**
- * m_new_table_ids[X] = Y;
- * X - old table id
- * Y != 0 - new table
- */
- Vector<const NdbDictionary::Table*> m_new_tables;
- struct {
- const NdbDictionary::Table* m_old_table;
- const NdbDictionary::Table* m_new_table;
- } m_cache;
- const NdbDictionary::Table* get_table(const NdbDictionary::Table* );
-
- Vector<const NdbDictionary::Table*> m_indexes;
-};
-
-#endif
diff --git a/ndb/tools/restore/consumer_restorem.cpp b/ndb/tools/restore/consumer_restorem.cpp
deleted file mode 100644
index 56179a60ab0..00000000000
--- a/ndb/tools/restore/consumer_restorem.cpp
+++ /dev/null
@@ -1,653 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-#include "consumer_restore.hpp"
-#include <NdbSleep.h>
-
-extern FilteredNdbOut err;
-extern FilteredNdbOut info;
-extern FilteredNdbOut debug;
-
-static bool asynchErrorHandler(NdbTransaction * trans, Ndb * ndb);
-static void callback(int result, NdbTransaction* trans, void* aObject);
-
-bool
-BackupRestore::init()
-{
-
- if (!m_restore && !m_restore_meta)
- return true;
-
- m_ndb = new Ndb();
-
- if (m_ndb == NULL)
- return false;
-
- // Turn off table name completion
- m_ndb->useFullyQualifiedNames(false);
-
- m_ndb->init(1024);
- if (m_ndb->waitUntilReady(30) != 0)
- {
- ndbout << "Failed to connect to ndb!!" << endl;
- return false;
- }
- ndbout << "Connected to ndb!!" << endl;
-
-#if USE_MYSQL
- if(use_mysql)
- {
- if ( mysql_thread_safe() == 0 )
- {
- ndbout << "Not thread safe mysql library..." << endl;
- exit(-1);
- }
-
- ndbout << "Connecting to MySQL..." <<endl;
-
- /**
- * nwe param:
- * port
- * host
- * user
- */
- bool returnValue = true;
- mysql_init(&mysql);
- {
- int portNo = 3306;
- if ( mysql_real_connect(&mysql,
- ga_host,
- ga_user,
- ga_password,
- ga_database,
- ga_port,
-:: ga_socket,
- 0) == NULL )
- {
- ndbout_c("Connect failed: %s", mysql_error(&mysql));
- returnValue = false;
- }
- mysql.reconnect= 1;
- ndbout << "Connected to MySQL!!!" <<endl;
- }
-
- /* if(returnValue){
- mysql_set_server_option(&mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON);
- }
- */
- return returnValue;
- }
-#endif
-
- if (m_callback) {
- delete [] m_callback;
- m_callback = 0;
- }
-
- m_callback = new restore_callback_t[m_parallelism];
-
- if (m_callback == 0)
- {
- ndbout << "Failed to allocate callback structs" << endl;
- return false;
- }
-
- m_free_callback = m_callback;
- for (int i= 0; i < m_parallelism; i++) {
- m_callback[i].restore = this;
- m_callback[i].connection = 0;
- m_callback[i].retries = 0;
- if (i > 0)
- m_callback[i-1].next = &(m_callback[i]);
- }
- m_callback[m_parallelism-1].next = 0;
-
- return true;
-
-}
-
-BackupRestore::~BackupRestore()
-{
- if (m_ndb != 0)
- delete m_ndb;
-
- if (m_callback)
- delete [] m_callback;
-}
-
-#ifdef USE_MYSQL
-bool
-BackupRestore::table(const TableS & table, MYSQL * mysqlp){
- if (!m_restore_meta)
- {
- return true;
- }
-
- char tmpTabName[MAX_TAB_NAME_SIZE*2];
- sprintf(tmpTabName, "%s", table.getTableName());
- char * database = strtok(tmpTabName, "/");
- char * schema = strtok( NULL , "/");
- char * tableName = strtok( NULL , "/");
-
- /**
- * this means that the user did not specify schema
- * and it is a v2x backup
- */
- if(database == NULL)
- return false;
- if(schema == NULL)
- return false;
- if(tableName==NULL)
- tableName = schema;
-
- char stmtCreateDB[255];
- sprintf(stmtCreateDB,"CREATE DATABASE %s", database);
-
- /*ignore return value. mysql_select_db will trap errors anyways*/
- if (mysql_query(mysqlp,stmtCreateDB) == 0)
- {
- //ndbout_c("%s", stmtCreateDB);
- }
-
- if (mysql_select_db(&mysql, database) != 0)
- {
- ndbout_c("Error: %s", mysql_error(&mysql));
- return false;
- }
-
- char buf [2048];
- /**
- * create table ddl
- */
- if (create_table_string(table, tableName, buf))
- {
- ndbout_c("Unable to create a table definition since the "
- "backup contains undefined types");
- return false;
- }
-
- //ndbout_c("%s", buf);
-
- if (mysql_query(mysqlp,buf) != 0)
- {
- ndbout_c("Error: %s", mysql_error(&mysql));
- return false;
- } else
- {
- ndbout_c("Successfully restored table %s into database %s", tableName, database);
- }
-
- return true;
-}
-#endif
-
-bool
-BackupRestore::table(const TableS & table){
- if (!m_restore_meta)
- {
- return true;
- }
- NdbDictionary::Dictionary* dict = m_ndb->getDictionary();
- if (dict->createTable(*table.m_dictTable) == -1)
- {
- err << "Create table " << table.getTableName() << " failed: "
- << dict->getNdbError() << endl;
- return false;
- }
- info << "Successfully restored table " << table.getTableName()<< endl ;
- return true;
-}
-
-void BackupRestore::tuple(const TupleS & tup)
-{
- if (!m_restore)
- {
- delete &tup;
- return;
- }
-
- restore_callback_t * cb = m_free_callback;
-
- if (cb)
- {
- m_free_callback = cb->next;
- cb->retries = 0;
- cb->tup = &tup;
- tuple_a(cb);
- }
-
- if (m_free_callback == 0)
- {
- // send-poll all transactions
- // close transaction is done in callback
- m_ndb->sendPollNdb(3000, 1);
- }
-}
-
-void BackupRestore::tuple_a(restore_callback_t *cb)
-{
- while (cb->retries < 10)
- {
- /**
- * start transactions
- */
- cb->connection = m_ndb->startTransaction();
- if (cb->connection == NULL)
- {
- /*
- if (asynchErrorHandler(cb->connection, m_ndb))
- {
- cb->retries++;
- continue;
- }
- */
- asynchExitHandler();
- } // if
-
- const TupleS &tup = *(cb->tup);
- const TableS * table = tup.getTable();
- NdbOperation * op = cb->connection->getNdbOperation(table->getTableName());
-
- if (op == NULL)
- {
- if (asynchErrorHandler(cb->connection, m_ndb))
- {
- cb->retries++;
- continue;
- }
- asynchExitHandler();
- } // if
-
- if (op->writeTuple() == -1)
- {
- if (asynchErrorHandler(cb->connection, m_ndb))
- {
- cb->retries++;
- continue;
- }
- asynchExitHandler();
- } // if
-
- Uint32 ret = 0;
- for (int i = 0; i < tup.getNoOfAttributes(); i++)
- {
- const AttributeS * attr = tup[i];
- int size = attr->Desc->size;
- int arraySize = attr->Desc->arraySize;
- char * dataPtr = attr->Data.string_value;
- Uint32 length = (size * arraySize) / 8;
- if (attr->Desc->m_column->getPrimaryKey())
- {
- ret = op->equal(i, dataPtr, length);
- }
- else
- {
- if (attr->Data.null)
- ret = op->setValue(i, NULL, 0);
- else
- ret = op->setValue(i, dataPtr, length);
- }
-
- if (ret<0)
- {
- ndbout_c("Column: %d type %d",i,
- tup.getTable()->m_dictTable->getColumn(i)->getType());
- if (asynchErrorHandler(cb->connection, m_ndb))
- {
- cb->retries++;
- break;
- }
- asynchExitHandler();
- }
- }
- if (ret < 0)
- continue;
-
- // Prepare transaction (the transaction is NOT yet sent to NDB)
- cb->connection->executeAsynchPrepare(Commit, &callback, cb);
- m_transactions++;
- }
- ndbout_c("Unable to recover from errors. Exiting...");
- asynchExitHandler();
-}
-
-void BackupRestore::cback(int result, restore_callback_t *cb)
-{
- if (result<0)
- {
- /**
- * Error. temporary or permanent?
- */
- if (asynchErrorHandler(cb->connection, m_ndb))
- {
- cb->retries++;
- tuple_a(cb);
- }
- else
- {
- ndbout_c("Restore: Failed to restore data "
- "due to a unrecoverable error. Exiting...");
- delete m_ndb;
- delete cb->tup;
- exit(-1);
- }
- }
- else
- {
- /**
- * OK! close transaction
- */
- m_ndb->closeTransaction(cb->connection);
- delete cb->tup;
- m_transactions--;
- }
-}
-
-void BackupRestore::asynchExitHandler()
-{
- if (m_ndb != NULL)
- delete m_ndb;
- exit(-1);
-}
-
-#if 0 // old tuple impl
-void
-BackupRestore::tuple(const TupleS & tup)
-{
- if (!m_restore)
- return;
- while (1)
- {
- NdbTransaction * trans = m_ndb->startTransaction();
- if (trans == NULL)
- {
- // Deep shit, TODO: handle the error
- ndbout << "Cannot start transaction" << endl;
- exit(-1);
- } // if
-
- const TableS * table = tup.getTable();
- NdbOperation * op = trans->getNdbOperation(table->getTableName());
- if (op == NULL)
- {
- ndbout << "Cannot get operation: ";
- ndbout << trans->getNdbError() << endl;
- exit(-1);
- } // if
-
- // TODO: check return value and handle error
- if (op->writeTuple() == -1)
- {
- ndbout << "writeTuple call failed: ";
- ndbout << trans->getNdbError() << endl;
- exit(-1);
- } // if
-
- for (int i = 0; i < tup.getNoOfAttributes(); i++)
- {
- const AttributeS * attr = tup[i];
- int size = attr->Desc->size;
- int arraySize = attr->Desc->arraySize;
- const char * dataPtr = attr->Data.string_value;
-
- const Uint32 length = (size * arraySize) / 8;
- if (attr->Desc->m_column->getPrimaryKey())
- op->equal(i, dataPtr, length);
- }
-
- for (int i = 0; i < tup.getNoOfAttributes(); i++)
- {
- const AttributeS * attr = tup[i];
- int size = attr->Desc->size;
- int arraySize = attr->Desc->arraySize;
- const char * dataPtr = attr->Data.string_value;
-
- const Uint32 length = (size * arraySize) / 8;
- if (!attr->Desc->m_column->getPrimaryKey())
- if (attr->Data.null)
- op->setValue(i, NULL, 0);
- else
- op->setValue(i, dataPtr, length);
- }
- int ret = trans->execute(Commit);
- if (ret != 0)
- {
- ndbout << "execute failed: ";
- ndbout << trans->getNdbError() << endl;
- exit(-1);
- }
- m_ndb->closeTransaction(trans);
- if (ret == 0)
- break;
- }
- m_dataCount++;
-}
-#endif
-
-void
-BackupRestore::endOfTuples()
-{
- if (!m_restore)
- return;
-
- // Send all transactions to NDB
- m_ndb->sendPreparedTransactions(0);
-
- // Poll all transactions
- m_ndb->pollNdb(3000, m_transactions);
-
- // Close all transactions
- // for (int i = 0; i < nPreparedTransactions; i++)
- // m_ndb->closeTransaction(asynchTrans[i]);
-}
-
-void
-BackupRestore::logEntry(const LogEntry & tup)
-{
- if (!m_restore)
- return;
-
- NdbTransaction * trans = m_ndb->startTransaction();
- if (trans == NULL)
- {
- // Deep shit, TODO: handle the error
- ndbout << "Cannot start transaction" << endl;
- exit(-1);
- } // if
-
- const TableS * table = tup.m_table;
- NdbOperation * op = trans->getNdbOperation(table->getTableName());
- if (op == NULL)
- {
- ndbout << "Cannot get operation: ";
- ndbout << trans->getNdbError() << endl;
- exit(-1);
- } // if
-
- int check = 0;
- switch(tup.m_type)
- {
- case LogEntry::LE_INSERT:
- check = op->insertTuple();
- break;
- case LogEntry::LE_UPDATE:
- check = op->updateTuple();
- break;
- case LogEntry::LE_DELETE:
- check = op->deleteTuple();
- break;
- default:
- ndbout << "Log entry has wrong operation type."
- << " Exiting...";
- exit(-1);
- }
-
- for (int i = 0; i < tup.m_values.size(); i++)
- {
- const AttributeS * attr = tup.m_values[i];
- int size = attr->Desc->size;
- int arraySize = attr->Desc->arraySize;
- const char * dataPtr = attr->Data.string_value;
-
- const Uint32 length = (size / 8) * arraySize;
- if (attr->Desc->m_column->getPrimaryKey())
- op->equal(attr->Desc->attrId, dataPtr, length);
- else
- op->setValue(attr->Desc->attrId, dataPtr, length);
- }
-
-#if 1
- trans->execute(Commit);
-#else
- const int ret = trans->execute(Commit);
- // Both insert update and delete can fail during log running
- // and it's ok
-
- if (ret != 0)
- {
- ndbout << "execute failed: ";
- ndbout << trans->getNdbError() << endl;
- exit(-1);
- }
-#endif
-
- m_ndb->closeTransaction(trans);
- m_logCount++;
-}
-
-void
-BackupRestore::endOfLogEntrys()
-{
- if (m_restore)
- {
- ndbout << "Restored " << m_dataCount << " tuples and "
- << m_logCount << " log entries" << endl;
- }
-}
-#if 0
-/*****************************************
- *
- * Callback function for asynchronous transactions
- *
- * Idea for error handling: Transaction objects have to be stored globally when
- * they are prepared.
- * In the callback function if the transaction:
- * succeeded: delete the object from global storage
- * failed but can be retried: execute the object that is in global storage
- * failed but fatal: delete the object from global storage
- *
- ******************************************/
-static void restoreCallback(int result, // Result for transaction
- NdbTransaction *object, // Transaction object
- void *anything) // Not used
-{
- static Uint32 counter = 0;
-
-
- debug << "restoreCallback function called " << counter << " time(s)" << endl;
-
- ++counter;
-
- if (result == -1)
- {
- ndbout << " restoreCallback (" << counter;
- if ((counter % 10) == 1)
- {
- ndbout << "st";
- } // if
- else if ((counter % 10) == 2)
- {
- ndbout << "nd";
- } // else if
- else if ((counter % 10 ) ==3)
- {
- ndbout << "rd";
- } // else if
- else
- {
- ndbout << "th";
- } // else
- err << " time: error detected " << object->getNdbError() << endl;
- } // if
-
-} // restoreCallback
-#endif
-
-
-
-/*
- * callback : This is called when the transaction is polled
- *
- * (This function must have three arguments:
- * - The result of the transaction,
- * - The NdbTransaction object, and
- * - A pointer to an arbitrary object.)
- */
-
-static void
-callback(int result, NdbTransaction* trans, void* aObject)
-{
- restore_callback_t *cb = (restore_callback_t *)aObject;
- (cb->restore)->cback(result, cb);
-}
-
-/**
- * returns true if is recoverable,
- * Error handling based on hugo
- * false if it is an error that generates an abort.
- */
-static
-bool asynchErrorHandler(NdbTransaction * trans, Ndb* ndb)
-{
- NdbError error = trans->getNdbError();
- ndb->closeTransaction(trans);
- switch(error.status)
- {
- case NdbError::Success:
- return false;
- // ERROR!
- break;
-
- case NdbError::TemporaryError:
- NdbSleep_MilliSleep(10);
- return true;
- // RETRY
- break;
-
- case NdbError::UnknownResult:
- ndbout << error << endl;
- return false;
- // ERROR!
- break;
-
- default:
- case NdbError::PermanentError:
- switch (error.code)
- {
- case 499:
- case 250:
- NdbSleep_MilliSleep(10);
- return true; //temp errors?
- default:
- break;
- }
- //ERROR
- ndbout << error << endl;
- return false;
- break;
- }
- return false;
-}
diff --git a/ndb/tools/restore/restore_main.cpp b/ndb/tools/restore/restore_main.cpp
deleted file mode 100644
index 93c40d31adb..00000000000
--- a/ndb/tools/restore/restore_main.cpp
+++ /dev/null
@@ -1,411 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-#include <ndb_global.h>
-#include <ndb_opts.h>
-#include <Vector.hpp>
-#include <ndb_limits.h>
-#include <NdbTCP.h>
-#include <NdbOut.hpp>
-
-#include "consumer_restore.hpp"
-#include "consumer_printer.hpp"
-
-extern FilteredNdbOut err;
-extern FilteredNdbOut info;
-extern FilteredNdbOut debug;
-
-static int ga_nodeId = 0;
-static int ga_nParallelism = 128;
-static int ga_backupId = 0;
-static bool ga_dont_ignore_systab_0 = false;
-static Vector<class BackupConsumer *> g_consumers;
-
-static const char* ga_backupPath = "." DIR_SEPARATOR;
-
-NDB_STD_OPTS_VARS;
-
-/**
- * print and restore flags
- */
-static bool ga_restore = false;
-static bool ga_print = false;
-static int _print = 0;
-static int _print_meta = 0;
-static int _print_data = 0;
-static int _print_log = 0;
-static int _restore_data = 0;
-static int _restore_meta = 0;
-
-static struct my_option my_long_options[] =
-{
- NDB_STD_OPTS("ndb_restore"),
- { "connect", 'c', "same as --connect-string",
- (gptr*) &opt_connect_str, (gptr*) &opt_connect_str, 0,
- GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { "nodeid", 'n', "Backup files from node with id",
- (gptr*) &ga_nodeId, (gptr*) &ga_nodeId, 0,
- GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { "backupid", 'b', "Backup id",
- (gptr*) &ga_backupId, (gptr*) &ga_backupId, 0,
- GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { "restore_data", 'r',
- "Restore table data/logs into NDB Cluster using NDBAPI",
- (gptr*) &_restore_data, (gptr*) &_restore_data, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { "restore_meta", 'm',
- "Restore meta data into NDB Cluster using NDBAPI",
- (gptr*) &_restore_meta, (gptr*) &_restore_meta, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { "parallelism", 'p',
- "No of parallel transactions during restore of data."
- "(parallelism can be 1 to 1024)",
- (gptr*) &ga_nParallelism, (gptr*) &ga_nParallelism, 0,
- GET_INT, REQUIRED_ARG, 128, 1, 1024, 0, 1, 0 },
- { "print", 256, "Print data and log to stdout",
- (gptr*) &_print, (gptr*) &_print, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { "print_data", 257, "Print data to stdout",
- (gptr*) &_print_data, (gptr*) &_print_data, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { "print_meta", 258, "Print meta data to stdout",
- (gptr*) &_print_meta, (gptr*) &_print_meta, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { "print_log", 259, "Print log to stdout",
- (gptr*) &_print_log, (gptr*) &_print_log, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { "dont_ignore_systab_0", 'f',
- "Experimental. Do not ignore system table during restore.",
- (gptr*) &ga_dont_ignore_systab_0, (gptr*) &ga_dont_ignore_systab_0, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-
-static void short_usage_sub(void)
-{
- printf("Usage: %s [OPTIONS] [<path to backup files>]\n", my_progname);
-}
-static void usage()
-{
- short_usage_sub();
- ndb_std_print_version();
- my_print_help(my_long_options);
- my_print_variables(my_long_options);
-}
-static my_bool
-get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
- char *argument)
-{
-#ifndef DBUG_OFF
- opt_debug= "d:t:O,/tmp/ndb_restore.trace";
-#endif
- ndb_std_get_one_option(optid, opt, argument);
- switch (optid) {
- case 'n':
- if (ga_nodeId == 0)
- {
- printf("Error in --nodeid,-n setting, see --help\n");
- exit(1);
- }
- break;
- case 'b':
- if (ga_backupId == 0)
- {
- printf("Error in --backupid,-b setting, see --help\n");
- exit(1);
- }
- break;
- }
- return 0;
-}
-bool
-readArguments(int *pargc, char*** pargv)
-{
- const char *load_default_groups[]= { "mysql_cluster","ndb_restore",0 };
- load_defaults("my",load_default_groups,pargc,pargv);
- if (handle_options(pargc, pargv, my_long_options, get_one_option))
- {
- exit(1);
- }
-
- BackupPrinter* printer = new BackupPrinter();
- if (printer == NULL)
- return false;
-
- BackupRestore* restore = new BackupRestore(ga_nParallelism);
- if (restore == NULL)
- {
- delete printer;
- return false;
- }
-
- if (_print)
- {
- ga_print = true;
- ga_restore = true;
- printer->m_print = true;
- }
- if (_print_meta)
- {
- ga_print = true;
- printer->m_print_meta = true;
- }
- if (_print_data)
- {
- ga_print = true;
- printer->m_print_data = true;
- }
- if (_print_log)
- {
- ga_print = true;
- printer->m_print_log = true;
- }
-
- if (_restore_data)
- {
- ga_restore = true;
- restore->m_restore = true;
- }
-
- if (_restore_meta)
- {
- // ga_restore = true;
- restore->m_restore_meta = true;
- }
-
- {
- BackupConsumer * c = printer;
- g_consumers.push_back(c);
- }
- {
- BackupConsumer * c = restore;
- g_consumers.push_back(c);
- }
- // Set backup file path
- if (*pargv[0] != NULL)
- {
- ga_backupPath = *pargv[0];
- }
-
- return true;
-}
-
-void
-clearConsumers()
-{
- for(Uint32 i= 0; i<g_consumers.size(); i++)
- delete g_consumers[i];
- g_consumers.clear();
-}
-
-static bool
-checkSysTable(const char *tableName)
-{
- return ga_dont_ignore_systab_0 ||
- (strcmp(tableName, "SYSTAB_0") != 0 &&
- strcmp(tableName, "NDB$EVENTS_0") != 0 &&
- strcmp(tableName, "sys/def/SYSTAB_0") != 0 &&
- strcmp(tableName, "sys/def/NDB$EVENTS_0") != 0);
-}
-
-static void
-free_data_callback()
-{
- for(Uint32 i= 0; i < g_consumers.size(); i++)
- g_consumers[i]->tuple_free();
-}
-
-const char * g_connect_string = 0;
-
-int
-main(int argc, char** argv)
-{
- NDB_INIT(argv[0]);
-
- if (!readArguments(&argc, &argv))
- {
- return -1;
- }
-
- g_connect_string = opt_connect_str;
-
- /**
- * we must always load meta data, even if we will only print it to stdout
- */
- RestoreMetaData metaData(ga_backupPath, ga_nodeId, ga_backupId);
- if (!metaData.readHeader())
- {
- ndbout << "Failed to read " << metaData.getFilename() << endl << endl;
- return -1;
- }
-
- const BackupFormat::FileHeader & tmp = metaData.getFileHeader();
- const Uint32 version = tmp.NdbVersion;
-
- ndbout << "Ndb version in backup files: "
- << getVersionString(version, 0) << endl;
-
- /**
- * check wheater we can restore the backup (right version).
- */
- int res = metaData.loadContent();
-
- if (res == 0)
- {
- ndbout_c("Restore: Failed to load content");
- return -1;
- }
-
- if (metaData.getNoOfTables() == 0)
- {
- ndbout_c("Restore: The backup contains no tables ");
- return -1;
- }
-
-
- if (!metaData.validateFooter())
- {
- ndbout_c("Restore: Failed to validate footer.");
- return -1;
- }
-
- Uint32 i;
- for(i= 0; i < g_consumers.size(); i++)
- {
- if (!g_consumers[i]->init())
- {
- clearConsumers();
- return -11;
- }
-
- }
-
- for(i = 0; i<metaData.getNoOfTables(); i++)
- {
- if (checkSysTable(metaData[i]->getTableName()))
- {
- for(Uint32 j= 0; j < g_consumers.size(); j++)
- if (!g_consumers[j]->table(* metaData[i]))
- {
- ndbout_c("Restore: Failed to restore table: %s. "
- "Exiting...",
- metaData[i]->getTableName());
- return -11;
- }
- }
- }
-
- for(i= 0; i < g_consumers.size(); i++)
- if (!g_consumers[i]->endOfTables())
- {
- ndbout_c("Restore: Failed while closing tables");
- return -11;
- }
-
- if (ga_restore || ga_print)
- {
- if (ga_restore)
- {
- RestoreDataIterator dataIter(metaData, &free_data_callback);
-
- // Read data file header
- if (!dataIter.readHeader())
- {
- ndbout << "Failed to read header of data file. Exiting..." ;
- return -11;
- }
-
-
- while (dataIter.readFragmentHeader(res= 0))
- {
- const TupleS* tuple;
- while ((tuple = dataIter.getNextTuple(res= 1)) != 0)
- {
- if (checkSysTable(tuple->getTable()->getTableName()))
- for(Uint32 i= 0; i < g_consumers.size(); i++)
- g_consumers[i]->tuple(* tuple);
- } // while (tuple != NULL);
-
- if (res < 0)
- {
- ndbout_c("Restore: An error occured while restoring data. "
- "Exiting...");
- return -1;
- }
- if (!dataIter.validateFragmentFooter()) {
- ndbout_c("Restore: Error validating fragment footer. "
- "Exiting...");
- return -1;
- }
- } // while (dataIter.readFragmentHeader(res))
-
- if (res < 0)
- {
- err << "Restore: An error occured while restoring data. Exiting... "
- << "res=" << res << endl;
- return -1;
- }
-
-
- dataIter.validateFooter(); //not implemented
-
- for (i= 0; i < g_consumers.size(); i++)
- g_consumers[i]->endOfTuples();
-
- RestoreLogIterator logIter(metaData);
- if (!logIter.readHeader())
- {
- err << "Failed to read header of data file. Exiting..." << endl;
- return -1;
- }
-
- const LogEntry * logEntry = 0;
- while ((logEntry = logIter.getNextLogEntry(res= 0)) != 0)
- {
- if (checkSysTable(logEntry->m_table->getTableName()))
- for(Uint32 i= 0; i < g_consumers.size(); i++)
- g_consumers[i]->logEntry(* logEntry);
- }
- if (res < 0)
- {
- err << "Restore: An restoring the data log. Exiting... res="
- << res << endl;
- return -1;
- }
- logIter.validateFooter(); //not implemented
- for (i= 0; i < g_consumers.size(); i++)
- g_consumers[i]->endOfLogEntrys();
- for(i = 0; i<metaData.getNoOfTables(); i++)
- {
- if (checkSysTable(metaData[i]->getTableName()))
- {
- for(Uint32 j= 0; j < g_consumers.size(); j++)
- if (!g_consumers[j]->finalize_table(* metaData[i]))
- {
- ndbout_c("Restore: Failed to finalize restore table: %s. "
- "Exiting...",
- metaData[i]->getTableName());
- return -11;
- }
- }
- }
- }
- }
- clearConsumers();
- return 0;
-} // main
-
-template class Vector<BackupConsumer*>;
diff --git a/ndb/tools/rgrep b/ndb/tools/rgrep
deleted file mode 100755
index 212b068639d..00000000000
--- a/ndb/tools/rgrep
+++ /dev/null
@@ -1,194 +0,0 @@
-#!/vobs/wds/swt/bin/perl
-
-die "Usage: rgrep [-iredblLn] regexp filepat ...\n rgrep -h for help\n"
- if $#ARGV < $[;
-
-# Written by Piet van Oostrum <piet@cs.ruu.nl>
-# This is really free software
-
-# Mats Lidell added support for gzip.
-# Mats Lidell added support for skipping line numbers.
-
-$nextopt = 1;
-$igncase = '';
-$regpat = 0;
-$links = 0;
-$error = 0;
-$skipbin = 1;
-$havenl = 1;
-$debug = 0;
-
-do { $regexp = shift (@ARGV); } while &checkopt ($regexp);
-$icreg = $igncase;
-$igncase = '';
-
-eval 'sub grep_file {
- while (<F>) {
- $ln++;
- if (/$regexp/o' . $icreg .') {
- print "$file:$ln:" if $havenl;
- print "$_";
- print "\n" if substr($_, -1, 1) ne "\n";
- }
- }
-}';
-
-for (@ARGV) {
- if (! &checkopt ($_)) {
- if ($igncase || $regpat || /[?*[]/ || ! -e) {
- if ($regpat) {
- s/#/\\#/g;
- $_ = "#$_#";
- } else { # translate File pattern into regexp
- $re = '#($|/)'; $save = $_;
- while (/[[*?+()|.^$#]/) {
- $re .= $`;
- $c = $&;
- $_ = $';
- if ($c eq '*') { $c = '[^/]*'; }
- elsif ($c eq '?') { $c = '[^/]'; }
- elsif ($c eq '[') {
- if (/.\]/) { $c = "[$`$&"; $_ = $'; }
- else {
- $error++;
- printf stderr "Illegal filepattern %s\n", $save;
- }
- } else { $c = "\\$c"; }
- $re .= $c;
- }
- $_ = "$re$_\$#$igncase";
- }
- print "filepat: $_\n" if $debug;
- push (@filepat, $_);
- }
- else { push (@files, $_); print "file: $_\n" if $debug; }
- }
-}
-
-exit 1 if $errors ;
-
-if ($#filepat < $[) {
- eval "sub in_pat {1;}" ;
-}
-else {
- $subtxt = 'sub in_pat { local ($f) = @_;';
- $or = "";
- for (@filepat) {
- $subtxt .= $or . '$f =~ m' . $_;
- $or = " || ";
- }
- $subtxt .= ';};1';
-
- if (! eval $subtxt) {
- print $@;
- exit 1;
- }
-}
-
-@files = (".") if $#files < $[;
-
-for $file (@files) {
- &do_grep ($file);
-}
-
-sub do_grep {
- local ($file) = @_;
- local (*F, $ln, $f, $g, @dirfiles);
- if (-f $file) {
- if (open (F, $file)) {
- if (-B F) { # binary file -- may be compressed/compacted/gziped
- if (($cx1 = getc(F)) eq "\377" && (getc(F) eq "\037")) {
- open (F, "uncompact < $file|");
- if ($skipbin && -B F) { close (F); return; }
- }
- elsif ($cx1 eq "\037" && (($cx2 = getc(F)) eq "\235")) {
- open (F, "uncompress < $file|");
- if ($skipbin && -B F) { close (F); return; }
- }
- elsif ($cx1 eq "\037" && $cx2 eq "\213") {
- open (F, "gzip -d < $file|");
- if ($skipbin && -B F) { close (F); return; }
- }
- elsif ($skipbin) {
- close (F); return;
- }
- }
- print "Reading $file\n" if $debug;
- &grep_file;
- } else {
- print stderr "Cannot open $file\n";
- }
- }
- elsif (-d $file) {
- print "Entering $file\n" if $debug;
- if (opendir (F, $file)) {
- @dirfiles = readdir (F);
- closedir (F);
- for $f (@dirfiles) {
- next if ($f eq '.' || $f eq '..');
- $g = "$file/$f";
- next if (-l $g && ($links < 1 || $links == 1 && -d $g));
- if (-f $g && &in_pat ($g) || -d _) {
- &do_grep ($g);
- }
- }
- } else {
- print stderr "Can't open $file\n";
- }
- }
-}
-
-sub checkopt {
- local ($_) = $_[0];
- if (/^-/ && $nextopt) {
- $nextopt = 1;
- @opt = split (/-*/,$_); shift (@opt);
- for $opt (@opt) {
- if ($opt eq 'i') { $igncase = 'i'; }
- elsif ($opt eq 'd') { $debug = 1; }
- elsif ($opt eq 'l') { $links = 1; }
- elsif ($opt eq 'L') { $links = 2; }
- elsif ($opt eq 'b') { $skipbin = 0; }
- elsif ($opt eq 'r') { $regpat = 1; }
- elsif ($opt eq 'e') { $nextopt = 0; }
- elsif ($opt eq 'n') { $havenl = 0; }
- elsif ($opt eq 'h' || $opt eq 'H') { & help; }
- else { $error++; printf stderr "Unknown option -%s\n", $opt; }
- }
- return 1;
- }
- $nextopt = 1;
- return 0;
-}
-
-sub help {
- print <<'HELP'; exit 0;
-Usage: rgrep [-iredblL] regexp filepat ...
- regexp = perl regular expression to search
- filepat ... = a list of files and directories to be searched or
- file patterns to match filenames.
- filepat will be interpreted as file or directory name if it exists
- as such, and does not contain the metacharacters [ ] ? or *. After
- the options -i and -r all filepats will be considered patterns.
- rgrep will search all files in any of the directories given (and its
- subdirectories) that match any of the filepats, except binary files.
- Compressed files will be searched in uncompressed form.
- Note: filepats may contain / contrary to find usage.
- -b Don't skip binary files.
- -i Ignore case, either in the regexp or in filename matching (depending
- on the location). Before the regexp only applies to the regexp,
- otherwise to the filepats following it.
- -r The following filepats are treated as real perl regexps rather than
- shell style filename patterns. In this case / is not a special
- character, i.e. it is matched by . and matching is not anchored (you
- must supply ^ and $ yourself). E.g. a.b matches the file /xa/by/zz.
- -l Do follow symbolic links only for files (default is do not follow).
- -L Do follow symbolic links for files and directories.
- -e Do not interpret following argument as option. Useful if regexp or
- filepat starts with a -.
- -d Debugging: Give a lot of output on what happens.
- -n Don't precede each line by its relative line number in the file.
- -h print this message and exit.
-Piet van Oostrum <piet@cs.ruu.nl>
-HELP
-}
diff --git a/ndb/tools/select_all.cpp b/ndb/tools/select_all.cpp
deleted file mode 100644
index baa18db1ebd..00000000000
--- a/ndb/tools/select_all.cpp
+++ /dev/null
@@ -1,358 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-
-#include <ndb_global.h>
-#include <ndb_opts.h>
-
-#include <NdbOut.hpp>
-
-#include <NdbApi.hpp>
-#include <NdbMain.h>
-#include <NDBT.hpp>
-#include <NdbSleep.h>
-
-int scanReadRecords(Ndb*,
- const NdbDictionary::Table*,
- const NdbDictionary::Index*,
- int parallel,
- int lockType,
- bool headers,
- bool useHexFormat,
- char delim,
- bool orderby,
- bool descending);
-
-NDB_STD_OPTS_VARS;
-
-static const char* _dbname = "TEST_DB";
-static const char* _delimiter = "\t";
-static int _unqualified, _header, _parallelism, _useHexFormat, _lock,
- _order, _descending;
-
-static struct my_option my_long_options[] =
-{
- NDB_STD_OPTS("ndb_desc"),
- { "database", 'd', "Name of database table is in",
- (gptr*) &_dbname, (gptr*) &_dbname, 0,
- GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { "parallelism", 'p', "parallelism",
- (gptr*) &_parallelism, (gptr*) &_parallelism, 0,
- GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { "lock", 'l', "Read(0), Read-hold(1), Exclusive(2)",
- (gptr*) &_lock, (gptr*) &_lock, 0,
- GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { "order", 'o', "Sort resultset according to index",
- (gptr*) &_order, (gptr*) &_order, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { "descending", 'z', "Sort descending (requires order flag)",
- (gptr*) &_descending, (gptr*) &_descending, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { "header", 'h', "Print header",
- (gptr*) &_header, (gptr*) &_header, 0,
- GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0 },
- { "useHexFormat", 'x', "Output numbers in hexadecimal format",
- (gptr*) &_useHexFormat, (gptr*) &_useHexFormat, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { "delimiter", 'D', "Column delimiter",
- (gptr*) &_delimiter, (gptr*) &_delimiter, 0,
- GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-static void usage()
-{
- char desc[] =
- "tabname\n"\
- "This program reads all records from one table in NDB Cluster\n"\
- "and print them to stdout. This is performed using a scan read.\n"\
- "(It only print error messages if it encounters a permanent error.)\n"\
- "It can also be used to dump the content of a table to file \n"\
- " ex: select_all --no-header --delimiter=';' T4 > T4.data\n";
- ndb_std_print_version();
- my_print_help(my_long_options);
- my_print_variables(my_long_options);
-}
-
-int main(int argc, char** argv){
- NDB_INIT(argv[0]);
- const char *load_default_groups[]= { "mysql_cluster",0 };
- load_defaults("my",load_default_groups,&argc,&argv);
- const char* _tabname;
- int ho_error;
-#ifndef DBUG_OFF
- opt_debug= "d:t:O,/tmp/ndb_select_all.trace";
-#endif
- if ((ho_error=handle_options(&argc, &argv, my_long_options,
- ndb_std_get_one_option)))
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- if ((_tabname = argv[0]) == 0) {
- usage();
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- }
-
- Ndb_cluster_connection con(opt_connect_str);
- if(con.connect(12, 5, 1) != 0)
- {
- ndbout << "Unable to connect to management server." << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
- if (con.wait_until_ready(30,0) < 0)
- {
- ndbout << "Cluster nodes not ready in 30 seconds." << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- Ndb MyNdb(&con, _dbname );
- if(MyNdb.init() != 0){
- ERR(MyNdb.getNdbError());
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- // Check if table exists in db
- const NdbDictionary::Table* pTab = NDBT_Table::discoverTableFromDb(&MyNdb, _tabname);
- const NdbDictionary::Index * pIdx = 0;
- if(argc > 1){
- pIdx = MyNdb.getDictionary()->getIndex(argv[1], _tabname);
- }
-
- if(pTab == NULL){
- ndbout << " Table " << _tabname << " does not exist!" << endl;
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- }
-
- if(argc > 1 && pIdx == 0)
- {
- ndbout << " Index " << argv[1] << " does not exists" << endl;
- }
-
- if(_order && pIdx == NULL){
- ndbout << " Order flag given without an index" << endl;
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- }
-
- if (_descending && ! _order) {
- ndbout << " Descending flag given without order flag" << endl;
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- }
-
- if (scanReadRecords(&MyNdb,
- pTab,
- pIdx,
- _parallelism,
- _lock,
- _header,
- _useHexFormat,
- (char)*_delimiter, _order, _descending) != 0){
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- return NDBT_ProgramExit(NDBT_OK);
-
-}
-
-int scanReadRecords(Ndb* pNdb,
- const NdbDictionary::Table* pTab,
- const NdbDictionary::Index* pIdx,
- int parallel,
- int _lock,
- bool headers,
- bool useHexFormat,
- char delimiter, bool order, bool descending){
-
- int retryAttempt = 0;
- const int retryMax = 100;
- int check;
- NdbTransaction *pTrans;
- NdbScanOperation *pOp;
- NdbIndexScanOperation * pIOp= 0;
-
- NDBT_ResultRow * row = new NDBT_ResultRow(*pTab, delimiter);
-
- while (true){
-
- if (retryAttempt >= retryMax){
- ndbout << "ERROR: has retried this operation " << retryAttempt
- << " times, failing!" << endl;
- return -1;
- }
-
- pTrans = pNdb->startTransaction();
- if (pTrans == NULL) {
- const NdbError err = pNdb->getNdbError();
-
- if (err.status == NdbError::TemporaryError){
- NdbSleep_MilliSleep(50);
- retryAttempt++;
- continue;
- }
- ERR(err);
- return -1;
- }
-
-
- pOp = (!pIdx) ? pTrans->getNdbScanOperation(pTab->getName()) :
- pIOp=pTrans->getNdbIndexScanOperation(pIdx->getName(), pTab->getName());
-
- if (pOp == NULL) {
- ERR(pTrans->getNdbError());
- pNdb->closeTransaction(pTrans);
- return -1;
- }
-
- int rs;
- switch(_lock + (3 * order)){
- case 1:
- rs = pOp->readTuples(NdbScanOperation::LM_Read, 0, parallel);
- break;
- case 2:
- rs = pOp->readTuples(NdbScanOperation::LM_Exclusive, 0, parallel);
- break;
- case 3:
- rs = pIOp->readTuples(NdbScanOperation::LM_CommittedRead, 0, parallel,
- true, descending);
- break;
- case 4:
- rs = pIOp->readTuples(NdbScanOperation::LM_Read, 0, parallel, true, descending);
- break;
- case 5:
- rs = pIOp->readTuples(NdbScanOperation::LM_Exclusive, 0, parallel, true, descending);
- break;
- case 0:
- default:
- rs = pOp->readTuples(NdbScanOperation::LM_CommittedRead, 0, parallel);
- break;
- }
- if( rs != 0 ){
- ERR(pTrans->getNdbError());
- pNdb->closeTransaction(pTrans);
- return -1;
- }
-
- if(0){
- NdbScanFilter sf(pOp);
-#if 0
- sf.begin(NdbScanFilter::AND);
- sf.le(0, (Uint32)10);
-
- sf.end();
-#elif 0
- sf.begin(NdbScanFilter::OR);
- sf.begin(NdbScanFilter::AND);
- sf.ge(0, (Uint32)10);
- sf.lt(0, (Uint32)20);
- sf.end();
- sf.begin(NdbScanFilter::AND);
- sf.ge(0, (Uint32)30);
- sf.lt(0, (Uint32)40);
- sf.end();
- sf.end();
-#elif 1
- sf.begin(NdbScanFilter::AND);
- sf.begin(NdbScanFilter::OR);
- sf.begin(NdbScanFilter::AND);
- sf.ge(0, (Uint32)10);
- sf.lt(0, (Uint32)20);
- sf.end();
- sf.begin(NdbScanFilter::AND);
- sf.ge(0, (Uint32)30);
- sf.lt(0, (Uint32)40);
- sf.end();
- sf.end();
- sf.begin(NdbScanFilter::OR);
- sf.begin(NdbScanFilter::AND);
- sf.ge(0, (Uint32)0);
- sf.lt(0, (Uint32)50);
- sf.end();
- sf.begin(NdbScanFilter::AND);
- sf.ge(0, (Uint32)100);
- sf.lt(0, (Uint32)200);
- sf.end();
- sf.end();
- sf.end();
-#endif
- } else {
- check = pOp->interpret_exit_ok();
- if( check == -1 ) {
- ERR(pTrans->getNdbError());
- pNdb->closeTransaction(pTrans);
- return -1;
- }
- }
-
- for(int a = 0; a<pTab->getNoOfColumns(); a++){
- if((row->attributeStore(a) =
- pOp->getValue(pTab->getColumn(a)->getName())) == 0) {
- ERR(pTrans->getNdbError());
- pNdb->closeTransaction(pTrans);
- return -1;
- }
- }
-
- check = pTrans->execute(NdbTransaction::NoCommit);
- if( check == -1 ) {
- const NdbError err = pTrans->getNdbError();
-
- if (err.status == NdbError::TemporaryError){
- pNdb->closeTransaction(pTrans);
- NdbSleep_MilliSleep(50);
- retryAttempt++;
- continue;
- }
- ERR(err);
- pNdb->closeTransaction(pTrans);
- return -1;
- }
-
- if (headers)
- row->header(ndbout) << endl;
-
- int eof;
- int rows = 0;
- eof = pOp->nextResult();
-
- while(eof == 0){
- rows++;
-
- if (useHexFormat) {
- ndbout.setHexFormat(1) << (*row) << endl;
- } else {
- ndbout << (*row) << endl;
- }
-
- eof = pOp->nextResult();
- }
- if (eof == -1) {
- const NdbError err = pTrans->getNdbError();
-
- if (err.status == NdbError::TemporaryError){
- pNdb->closeTransaction(pTrans);
- NdbSleep_MilliSleep(50);
- retryAttempt++;
- continue;
- }
- ERR(err);
- pNdb->closeTransaction(pTrans);
- return -1;
- }
-
- pNdb->closeTransaction(pTrans);
-
- ndbout << rows << " rows returned" << endl;
-
- return 0;
- }
- return -1;
-}
diff --git a/ndb/tools/select_count.cpp b/ndb/tools/select_count.cpp
deleted file mode 100644
index 6fa3c77f15a..00000000000
--- a/ndb/tools/select_count.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-
-#include <ndb_global.h>
-#include <ndb_opts.h>
-
-#include <NdbOut.hpp>
-
-#include <NdbApi.hpp>
-#include <NdbMain.h>
-#include <NDBT.hpp>
-#include <NdbSleep.h>
-#include <UtilTransactions.hpp>
-
-static int
-select_count(Ndb* pNdb, const NdbDictionary::Table* pTab,
- int parallelism,
- int* count_rows,
- NdbOperation::LockMode lock);
-
-NDB_STD_OPTS_VARS;
-
-static const char* _dbname = "TEST_DB";
-static int _parallelism = 240;
-static int _lock = 0;
-static struct my_option my_long_options[] =
-{
- NDB_STD_OPTS("ndb_desc"),
- { "database", 'd', "Name of database table is in",
- (gptr*) &_dbname, (gptr*) &_dbname, 0,
- GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { "parallelism", 'p', "parallelism",
- (gptr*) &_parallelism, (gptr*) &_parallelism, 0,
- GET_INT, REQUIRED_ARG, 240, 0, 0, 0, 0, 0 },
- { "lock", 'l', "Read(0), Read-hold(1), Exclusive(2)",
- (gptr*) &_lock, (gptr*) &_lock, 0,
- GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-static void usage()
-{
- char desc[] =
- "tabname1 ... tabnameN\n"\
- "This program will count the number of records in tables\n";
- ndb_std_print_version();
- my_print_help(my_long_options);
- my_print_variables(my_long_options);
-}
-
-int main(int argc, char** argv){
- NDB_INIT(argv[0]);
- const char *load_default_groups[]= { "mysql_cluster",0 };
- load_defaults("my",load_default_groups,&argc,&argv);
- int ho_error;
-#ifndef DBUG_OFF
- opt_debug= "d:t:O,/tmp/ndb_select_count.trace";
-#endif
- if ((ho_error=handle_options(&argc, &argv, my_long_options,
- ndb_std_get_one_option)))
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- if (argc < 1) {
- usage();
- return NDBT_ProgramExit(NDBT_WRONGARGS);
- }
-
- Ndb_cluster_connection con(opt_connect_str);
- if(con.connect(12, 5, 1) != 0)
- {
- ndbout << "Unable to connect to management server." << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
- if (con.wait_until_ready(30,0) < 0)
- {
- ndbout << "Cluster nodes not ready in 30 seconds." << endl;
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- Ndb MyNdb(&con, _dbname );
- if(MyNdb.init() != 0){
- ERR(MyNdb.getNdbError());
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- for(int i = 0; i<argc; i++){
- // Check if table exists in db
- const NdbDictionary::Table * pTab = NDBT_Table::discoverTableFromDb(&MyNdb, argv[i]);
- if(pTab == NULL){
- ndbout << " Table " << argv[i] << " does not exist!" << endl;
- continue;
- }
-
- int rows = 0;
- if (select_count(&MyNdb, pTab, _parallelism, &rows,
- (NdbOperation::LockMode)_lock) != 0){
- return NDBT_ProgramExit(NDBT_FAILED);
- }
-
- ndbout << rows << " records in table " << argv[i] << endl;
- }
- return NDBT_ProgramExit(NDBT_OK);
-}
-
-int
-select_count(Ndb* pNdb, const NdbDictionary::Table* pTab,
- int parallelism,
- int* count_rows,
- NdbOperation::LockMode lock){
-
- int retryAttempt = 0;
- const int retryMax = 100;
- int check;
- NdbTransaction *pTrans;
- NdbScanOperation *pOp;
-
- while (true){
-
- if (retryAttempt >= retryMax){
- g_info << "ERROR: has retried this operation " << retryAttempt
- << " times, failing!" << endl;
- return NDBT_FAILED;
- }
-
- pTrans = pNdb->startTransaction();
- if (pTrans == NULL) {
- const NdbError err = pNdb->getNdbError();
-
- if (err.status == NdbError::TemporaryError){
- NdbSleep_MilliSleep(50);
- retryAttempt++;
- continue;
- }
- ERR(err);
- return NDBT_FAILED;
- }
- pOp = pTrans->getNdbScanOperation(pTab->getName());
- if (pOp == NULL) {
- ERR(pTrans->getNdbError());
- pNdb->closeTransaction(pTrans);
- return NDBT_FAILED;
- }
-
- if( pOp->readTuples(NdbScanOperation::LM_Dirty) ) {
- ERR(pTrans->getNdbError());
- pNdb->closeTransaction(pTrans);
- return NDBT_FAILED;
- }
-
-
- check = pOp->interpret_exit_last_row();
- if( check == -1 ) {
- ERR(pTrans->getNdbError());
- pNdb->closeTransaction(pTrans);
- return NDBT_FAILED;
- }
-
- Uint64 tmp;
- Uint32 row_size;
- pOp->getValue(NdbDictionary::Column::ROW_COUNT, (char*)&tmp);
- pOp->getValue(NdbDictionary::Column::ROW_SIZE, (char*)&row_size);
- check = pTrans->execute(NdbTransaction::NoCommit);
- if( check == -1 ) {
- ERR(pTrans->getNdbError());
- pNdb->closeTransaction(pTrans);
- return NDBT_FAILED;
- }
-
- Uint64 row_count = 0;
- int eof;
- while((eof = pOp->nextResult(true)) == 0){
- row_count += tmp;
- }
-
- if (eof == -1) {
- const NdbError err = pTrans->getNdbError();
-
- if (err.status == NdbError::TemporaryError){
- pNdb->closeTransaction(pTrans);
- NdbSleep_MilliSleep(50);
- retryAttempt++;
- continue;
- }
- ERR(err);
- pNdb->closeTransaction(pTrans);
- return NDBT_FAILED;
- }
-
- pNdb->closeTransaction(pTrans);
-
- if (count_rows != NULL){
- *count_rows = row_count;
- }
-
- return NDBT_OK;
- }
- return NDBT_FAILED;
-}
-
-
diff --git a/ndb/tools/waiter.cpp b/ndb/tools/waiter.cpp
deleted file mode 100644
index db90bd8bd90..00000000000
--- a/ndb/tools/waiter.cpp
+++ /dev/null
@@ -1,314 +0,0 @@
-/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
- (at your option) any later version.
-
- 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 */
-
-
-#include <ndb_global.h>
-#include <ndb_opts.h>
-
-#include <mgmapi.h>
-#include <NdbMain.h>
-#include <NdbOut.hpp>
-#include <NdbSleep.h>
-#include <kernel/ndb_limits.h>
-
-#include <NDBT.hpp>
-
-int
-waitClusterStatus(const char* _addr, ndb_mgm_node_status _status,
- unsigned int _timeout);
-
-enum ndb_waiter_options {
- OPT_WAIT_STATUS_NOT_STARTED = NDB_STD_OPTIONS_LAST
-};
-NDB_STD_OPTS_VARS;
-
-static int _no_contact = 0;
-static int _not_started = 0;
-static int _timeout = 120;
-static struct my_option my_long_options[] =
-{
- NDB_STD_OPTS("ndb_desc"),
- { "no-contact", 'n', "Wait for cluster no contact",
- (gptr*) &_no_contact, (gptr*) &_no_contact, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { "not-started", OPT_WAIT_STATUS_NOT_STARTED, "Wait for cluster not started",
- (gptr*) &_not_started, (gptr*) &_not_started, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
- { "timeout", 't', "Timeout to wait",
- (gptr*) &_timeout, (gptr*) &_timeout, 0,
- GET_INT, REQUIRED_ARG, 120, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-
-static void usage()
-{
- ndb_std_print_version();
- my_print_help(my_long_options);
- my_print_variables(my_long_options);
-}
-
-int main(int argc, char** argv){
- NDB_INIT(argv[0]);
- const char *load_default_groups[]= { "mysql_cluster",0 };
- load_defaults("my",load_default_groups,&argc,&argv);
- const char* _hostName = NULL;
- int ho_error;
-#ifndef DBUG_OFF
- opt_debug= "d:t:O,/tmp/ndb_waiter.trace";
-#endif
- if ((ho_error=handle_options(&argc, &argv, my_long_options,
- ndb_std_get_one_option)))
- return NDBT_ProgramExit(NDBT_WRONGARGS);
-
- _hostName = argv[0];
-
- if (_hostName == 0)
- _hostName= opt_connect_str;
-
- enum ndb_mgm_node_status wait_status;
- if (_no_contact)
- {
- wait_status= NDB_MGM_NODE_STATUS_NO_CONTACT;
- }
- else if (_not_started)
- {
- wait_status= NDB_MGM_NODE_STATUS_NOT_STARTED;
- }
- else
- {
- wait_status= NDB_MGM_NODE_STATUS_STARTED;
- }
-
- if (waitClusterStatus(_hostName, wait_status, _timeout) != 0)
- return NDBT_ProgramExit(NDBT_FAILED);
- return NDBT_ProgramExit(NDBT_OK);
-}
-
-#define MGMERR(h) \
- ndbout << "latest_error="<<ndb_mgm_get_latest_error(h) \
- << ", line="<<ndb_mgm_get_latest_error_line(h) \
- << endl;
-
-NdbMgmHandle handle= NULL;
-
-Vector<ndb_mgm_node_state> ndbNodes;
-Vector<ndb_mgm_node_state> mgmNodes;
-Vector<ndb_mgm_node_state> apiNodes;
-
-int
-getStatus(){
- int retries = 0;
- struct ndb_mgm_cluster_state * status;
- struct ndb_mgm_node_state * node;
-
- ndbNodes.clear();
- mgmNodes.clear();
- apiNodes.clear();
-
- while(retries < 10){
- status = ndb_mgm_get_status(handle);
- if (status == NULL){
- ndbout << "status==NULL, retries="<<retries<<endl;
- MGMERR(handle);
- retries++;
- continue;
- }
- int count = status->no_of_nodes;
- for (int i = 0; i < count; i++){
- node = &status->node_states[i];
- switch(node->node_type){
- case NDB_MGM_NODE_TYPE_NDB:
- ndbNodes.push_back(*node);
- break;
- case NDB_MGM_NODE_TYPE_MGM:
- mgmNodes.push_back(*node);
- break;
- case NDB_MGM_NODE_TYPE_API:
- apiNodes.push_back(*node);
- break;
- default:
- if(node->node_status == NDB_MGM_NODE_STATUS_UNKNOWN ||
- node->node_status == NDB_MGM_NODE_STATUS_NO_CONTACT){
- retries++;
- ndbNodes.clear();
- mgmNodes.clear();
- apiNodes.clear();
- free(status);
- status = NULL;
- count = 0;
-
- ndbout << "kalle"<< endl;
- break;
- }
- abort();
- break;
- }
- }
- if(status == 0){
- ndbout << "status == 0" << endl;
- continue;
- }
- free(status);
- return 0;
- }
-
- g_err << "getStatus failed" << endl;
- return -1;
-}
-
-int
-waitClusterStatus(const char* _addr,
- ndb_mgm_node_status _status,
- unsigned int _timeout)
-{
- int _startphase = -1;
-
- int _nodes[MAX_NDB_NODES];
- int _num_nodes = 0;
-
- handle = ndb_mgm_create_handle();
- if (handle == NULL){
- g_err << "handle == NULL" << endl;
- return -1;
- }
- g_info << "Connecting to mgmsrv at " << _addr << endl;
- if (ndb_mgm_set_connectstring(handle, _addr))
- {
- MGMERR(handle);
- g_err << "Connectstring " << _addr << " invalid" << endl;
- return -1;
- }
- if (ndb_mgm_connect(handle,0,0,1)) {
- MGMERR(handle);
- g_err << "Connection to " << _addr << " failed" << endl;
- return -1;
- }
-
- if (getStatus() != 0)
- return -1;
-
- // Collect all nodes into nodes
- for (size_t i = 0; i < ndbNodes.size(); i++){
- _nodes[i] = ndbNodes[i].node_id;
- _num_nodes++;
- }
-
- unsigned int attempts = 0;
- unsigned int resetAttempts = 0;
- const unsigned int MAX_RESET_ATTEMPTS = 10;
- bool allInState = false;
- while (allInState == false){
- if (_timeout > 0 && attempts > _timeout){
- /**
- * Timeout has expired waiting for the nodes to enter
- * the state we want
- */
- bool waitMore = false;
- /**
- * Make special check if we are waiting for
- * cluster to become started
- */
- if(_status == NDB_MGM_NODE_STATUS_STARTED){
- waitMore = true;
- /**
- * First check if any node is not starting
- * then it's no idea to wait anymore
- */
- for (size_t n = 0; n < ndbNodes.size(); n++){
- if (ndbNodes[n].node_status != NDB_MGM_NODE_STATUS_STARTED &&
- ndbNodes[n].node_status != NDB_MGM_NODE_STATUS_STARTING)
- waitMore = false;
-
- }
- }
-
- if (!waitMore || resetAttempts > MAX_RESET_ATTEMPTS){
- g_err << "waitNodeState("
- << ndb_mgm_get_node_status_string(_status)
- <<", "<<_startphase<<")"
- << " timeout after " << attempts <<" attemps" << endl;
- return -1;
- }
-
- g_err << "waitNodeState("
- << ndb_mgm_get_node_status_string(_status)
- <<", "<<_startphase<<")"
- << " resetting number of attempts "
- << resetAttempts << endl;
- attempts = 0;
- resetAttempts++;
-
- }
-
- allInState = true;
- if (getStatus() != 0){
- g_err << "getStatus != 0" << endl;
- return -1;
- }
-
- // ndbout << "waitNodeState; _num_nodes = " << _num_nodes << endl;
- // for (int i = 0; i < _num_nodes; i++)
- // ndbout << " node["<<i<<"] =" <<_nodes[i] << endl;
-
- for (int i = 0; i < _num_nodes; i++){
- ndb_mgm_node_state* ndbNode = NULL;
- for (size_t n = 0; n < ndbNodes.size(); n++){
- if (ndbNodes[n].node_id == _nodes[i])
- ndbNode = &ndbNodes[n];
- }
-
- if(ndbNode == NULL){
- allInState = false;
- continue;
- }
-
- g_info << "State node " << ndbNode->node_id << " "
- << ndb_mgm_get_node_status_string(ndbNode->node_status)<< endl;
-
- assert(ndbNode != NULL);
-
- if(_status == NDB_MGM_NODE_STATUS_STARTING &&
- ((ndbNode->node_status == NDB_MGM_NODE_STATUS_STARTING &&
- ndbNode->start_phase >= _startphase) ||
- (ndbNode->node_status == NDB_MGM_NODE_STATUS_STARTED)))
- continue;
-
- if (_status == NDB_MGM_NODE_STATUS_STARTING){
- g_info << "status = "
- << ndb_mgm_get_node_status_string(ndbNode->node_status)
- <<", start_phase="<<ndbNode->start_phase<<endl;
- if (ndbNode->node_status != _status) {
- if (ndbNode->node_status < _status)
- allInState = false;
- else
- g_info << "node_status(" << (unsigned)ndbNode->node_status
- << ") != _status("<< (unsigned)_status << ")" <<endl;
- } else if (ndbNode->start_phase < _startphase)
- allInState = false;
- } else {
- if (ndbNode->node_status != _status)
- allInState = false;
- }
- }
- g_info << "Waiting for cluster enter state "
- << ndb_mgm_get_node_status_string(_status)<< endl;
- NdbSleep_SecSleep(1);
- attempts++;
- }
- return 0;
-}
-
-template class Vector<ndb_mgm_node_state>;