mirror of
https://github.com/MariaDB/server.git
synced 2025-01-23 23:34:34 +01:00
abee640f44
ndb/test/tools/hugoCalculator.cpp: Rename: ndb/test/tools/hugoCalculator/hugoCalculator.cpp -> ndb/test/tools/hugoCalculator.cpp ndb/test/tools/hugoLoad.cpp: Rename: ndb/test/tools/hugoLoad/hugoLoad.cpp -> ndb/test/tools/hugoLoad.cpp ndb/test/tools/hugoFill.cpp: Rename: ndb/test/tools/hugoFill/hugoFill.cpp -> ndb/test/tools/hugoFill.cpp ndb/test/tools/hugoLockRecords.cpp: Rename: ndb/test/tools/hugoLockRecords/hugoLockRecords.cpp -> ndb/test/tools/hugoLockRecords.cpp ndb/test/tools/hugoPkRead.cpp: Rename: ndb/test/tools/hugoPkRead/hugoPkRead.cpp -> ndb/test/tools/hugoPkRead.cpp ndb/test/tools/hugoPkReadRecord.cpp: Rename: ndb/test/tools/hugoPkReadRecord/hugoPkReadRecord.cpp -> ndb/test/tools/hugoPkReadRecord.cpp ndb/test/tools/hugoScanRead.cpp: Rename: ndb/test/tools/hugoScanRead/hugoScanRead.cpp -> ndb/test/tools/hugoScanRead.cpp ndb/test/tools/restart.cpp: Rename: ndb/test/tools/restart/restart.cpp -> ndb/test/tools/restart.cpp ndb/test/ndbapi/TraceNdbApi.cpp: Rename: ndb/test/ndbapi/acid2/TraceNdbApi.cpp -> ndb/test/ndbapi/TraceNdbApi.cpp ndb/test/ndbapi/VerifyNdbApi.cpp: Rename: ndb/test/ndbapi/acid2/VerifyNdbApi.cpp -> ndb/test/ndbapi/VerifyNdbApi.cpp ndb/test/ndbapi/acid.cpp: Rename: ndb/test/ndbapi/acid/acid.cpp -> ndb/test/ndbapi/acid.cpp ndb/test/ndbapi/acid2.cpp: Rename: ndb/test/ndbapi/acid2/acid2.cpp -> ndb/test/ndbapi/acid2.cpp ndb/test/ndbapi/bulk_copy.cpp: Rename: ndb/test/ndbapi/bulk_copy/bulk_copy.cpp -> ndb/test/ndbapi/bulk_copy.cpp ndb/test/ndbapi/celloDb.cpp: Rename: ndb/test/ndbapi/cello-sessionDb/celloDb.cpp -> ndb/test/ndbapi/celloDb.cpp ndb/test/ndbapi/create_all_tabs.cpp: Rename: ndb/test/ndbapi/create_all_tabs/create_all_tabs.cpp -> ndb/test/ndbapi/create_all_tabs.cpp ndb/test/ndbapi/create_tab.cpp: Rename: ndb/test/ndbapi/create_tab/create_tab.cpp -> ndb/test/ndbapi/create_tab.cpp ndb/test/ndbapi/drop_all_tabs.cpp: Rename: ndb/test/ndbapi/drop_all_tabs/drop_all_tabs.cpp -> ndb/test/ndbapi/drop_all_tabs.cpp ndb/test/ndbapi/flexAsynch.cpp: Rename: ndb/test/ndbapi/flexAsynch/flexAsynch.cpp -> ndb/test/ndbapi/flexAsynch.cpp ndb/test/ndbapi/flexBench.cpp: Rename: ndb/test/ndbapi/flexBench/flexBench.cpp -> ndb/test/ndbapi/flexBench.cpp ndb/test/ndbapi/flexHammer.cpp: Rename: ndb/test/ndbapi/flexHammer/flexHammer.cpp -> ndb/test/ndbapi/flexHammer.cpp ndb/test/ndbapi/flexScan.cpp: Rename: ndb/test/ndbapi/flexScan/flexScan.cpp -> ndb/test/ndbapi/flexScan.cpp ndb/test/ndbapi/flexTT.cpp: Rename: ndb/test/ndbapi/flexTT/flexTT.cpp -> ndb/test/ndbapi/flexTT.cpp ndb/test/ndbapi/flexTimedAsynch.cpp: Rename: ndb/test/ndbapi/flexTimedAsynch/flexTimedAsynch.cpp -> ndb/test/ndbapi/flexTimedAsynch.cpp ndb/test/ndbapi/flex_bench_mysql.cpp: Rename: ndb/test/ndbapi/flex_bench_mysql/flex_bench_mysql.cpp -> ndb/test/ndbapi/flex_bench_mysql.cpp ndb/test/ndbapi/index.cpp: Rename: ndb/test/ndbapi/indexTest/index.cpp -> ndb/test/ndbapi/index.cpp ndb/test/ndbapi/asyncGenerator.cpp: Rename: ndb/test/ndbapi/lmc-bench/async-src/generator/asyncGenerator.cpp -> ndb/test/ndbapi/asyncGenerator.cpp ndb/test/ndbapi/index2.cpp: Rename: ndb/test/ndbapi/indexTest2/index2.cpp -> ndb/test/ndbapi/index2.cpp ndb/test/ndbapi/interpreterInTup.cpp: Rename: ndb/test/ndbapi/interpreterInTup/interpreterInTup.cpp -> ndb/test/ndbapi/interpreterInTup.cpp ndb/test/ndbapi/mainAsyncGenerator.cpp: Rename: ndb/test/ndbapi/lmc-bench/async-src/generator/mainAsyncGenerator.cpp -> ndb/test/ndbapi/mainAsyncGenerator.cpp ndb/test/ndbapi/ndb_async1.cpp: Rename: ndb/test/ndbapi/lmc-bench/async-src/user/ndb_async1.cpp -> ndb/test/ndbapi/ndb_async1.cpp ndb/test/ndbapi/ndb_async2.cpp: Rename: ndb/test/ndbapi/lmc-bench/async-src/user/ndb_async2.cpp -> ndb/test/ndbapi/ndb_async2.cpp ndb/test/ndbapi/ndb_user_populate.cpp: Rename: ndb/test/ndbapi/lmc-bench/src/user/ndb_user_populate.cpp -> ndb/test/ndbapi/ndb_user_populate.cpp ndb/test/ndbapi/ndb_user_transaction.cpp: Rename: ndb/test/ndbapi/lmc-bench/src/user/ndb_user_transaction.cpp -> ndb/test/ndbapi/ndb_user_transaction.cpp ndb/test/ndbapi/ndb_user_transaction2.cpp: Rename: ndb/test/ndbapi/lmc-bench/src/user/ndb_user_transaction2.cpp -> ndb/test/ndbapi/ndb_user_transaction2.cpp ndb/test/ndbapi/ndb_user_transaction3.cpp: Rename: ndb/test/ndbapi/lmc-bench/src/user/ndb_user_transaction3.cpp -> ndb/test/ndbapi/ndb_user_transaction3.cpp ndb/test/ndbapi/userInterface.cpp: Rename: ndb/test/ndbapi/lmc-bench/async-src/user/userInterface.cpp -> ndb/test/ndbapi/userInterface.cpp ndb/test/ndbapi/benchronja.cpp: Rename: ndb/test/ndbapi/ronja/benchronja/benchronja.cpp -> ndb/test/ndbapi/benchronja.cpp ndb/test/ndbapi/ndb_user_transaction4.cpp: Rename: ndb/test/ndbapi/lmc-bench/src/user/ndb_user_transaction4.cpp -> ndb/test/ndbapi/ndb_user_transaction4.cpp ndb/test/ndbapi/ndb_user_transaction5.cpp: Rename: ndb/test/ndbapi/lmc-bench/src/user/ndb_user_transaction5.cpp -> ndb/test/ndbapi/ndb_user_transaction5.cpp ndb/test/ndbapi/ndb_user_transaction6.cpp: Rename: ndb/test/ndbapi/lmc-bench/src/user/ndb_user_transaction6.cpp -> ndb/test/ndbapi/ndb_user_transaction6.cpp ndb/test/ndbapi/restarter.cpp: Rename: ndb/test/ndbapi/restarter/restarter.cpp -> ndb/test/ndbapi/restarter.cpp ndb/test/ndbapi/restarter2.cpp: Rename: ndb/test/ndbapi/restarter2/restarter2.cpp -> ndb/test/ndbapi/restarter2.cpp ndb/test/ndbapi/restarts.cpp: Rename: ndb/test/ndbapi/restarts/restarts.cpp -> ndb/test/ndbapi/restarts.cpp ndb/test/ndbapi/InsertRecs.cpp: Rename: ndb/test/ndbapi/telco/InsertRecs.cpp -> ndb/test/ndbapi/InsertRecs.cpp ndb/test/ndbapi/adoInsertRecs.cpp: Rename: ndb/test/ndbapi/telco/adoInsertRecs.cpp -> ndb/test/ndbapi/adoInsertRecs.cpp ndb/test/ndbapi/initronja.cpp: Rename: ndb/test/ndbapi/ronja/initronja/initronja.cpp -> ndb/test/ndbapi/initronja.cpp ndb/test/ndbapi/msa.cpp: Rename: ndb/test/ndbapi/telco/msa.cpp -> ndb/test/ndbapi/msa.cpp ndb/test/ndbapi/testBasic.cpp: Rename: ndb/test/ndbapi/testBasic/testBasic.cpp -> ndb/test/ndbapi/testBasic.cpp ndb/test/ndbapi/testDataBuffers.cpp: Rename: ndb/test/ndbapi/testDataBuffers/testDataBuffers.cpp -> ndb/test/ndbapi/testDataBuffers.cpp ndb/test/ndbapi/testDict.cpp: Rename: ndb/test/ndbapi/testDict/testDict.cpp -> ndb/test/ndbapi/testDict.cpp ndb/test/ndbapi/testGrep.cpp: Rename: ndb/test/ndbapi/testGrep/testGrep.cpp -> ndb/test/ndbapi/testGrep.cpp ndb/test/ndbapi/testGrepVerify.cpp: Rename: ndb/test/ndbapi/testGrep/verify/testGrepVerify.cpp -> ndb/test/ndbapi/testGrepVerify.cpp ndb/test/ndbapi/testIndex.cpp: Rename: ndb/test/ndbapi/testIndex/testIndex.cpp -> ndb/test/ndbapi/testIndex.cpp ndb/test/ndbapi/testInterpreter.cpp: Rename: ndb/test/ndbapi/testInterpreter/testInterpreter.cpp -> ndb/test/ndbapi/testInterpreter.cpp ndb/test/ndbapi/testMgm.cpp: Rename: ndb/test/ndbapi/testMgm/testMgm.cpp -> ndb/test/ndbapi/testMgm.cpp ndb/test/ndbapi/testNdbApi.cpp: Rename: ndb/test/ndbapi/testNdbApi/testNdbApi.cpp -> ndb/test/ndbapi/testNdbApi.cpp ndb/test/ndbapi/testNodeRestart.cpp: Rename: ndb/test/ndbapi/testNodeRestart/testNodeRestart.cpp -> ndb/test/ndbapi/testNodeRestart.cpp ndb/test/ndbapi/testOIBasic.cpp: Rename: ndb/test/ndbapi/testOIBasic/testOIBasic.cpp -> ndb/test/ndbapi/testOIBasic.cpp ndb/test/ndbapi/testOperations.cpp: Rename: ndb/test/ndbapi/testOperations/testOperations.cpp -> ndb/test/ndbapi/testOperations.cpp ndb/test/ndbapi/testOrderedIndex.cpp: Rename: ndb/test/ndbapi/testOrderedIndex/testOrderedIndex.cpp -> ndb/test/ndbapi/testOrderedIndex.cpp ndb/test/ndbapi/testRestartGci.cpp: Rename: ndb/test/ndbapi/testRestartGci/testRestartGci.cpp -> ndb/test/ndbapi/testRestartGci.cpp ndb/test/ndbapi/testScan.cpp: Rename: ndb/test/ndbapi/testScan/testScan.cpp -> ndb/test/ndbapi/testScan.cpp ndb/test/ndbapi/testScanInterpreter.cpp: Rename: ndb/test/ndbapi/testScanInterpreter/testScanInterpreter.cpp -> ndb/test/ndbapi/testScanInterpreter.cpp ndb/test/ndbapi/testSystemRestart.cpp: Rename: ndb/test/ndbapi/testSystemRestart/testSystemRestart.cpp -> ndb/test/ndbapi/testSystemRestart.cpp ndb/test/ndbapi/testTimeout.cpp: Rename: ndb/test/ndbapi/testTimeout/testTimeout.cpp -> ndb/test/ndbapi/testTimeout.cpp ndb/test/ndbapi/cdrserver.cpp: Rename: ndb/test/ndbapi/vw_test/cdrserver.cpp -> ndb/test/ndbapi/cdrserver.cpp ndb/test/ndbapi/size.cpp: Rename: ndb/test/ndbapi/vw_test/size.cpp -> ndb/test/ndbapi/size.cpp ndb/test/ndbapi/testTransactions.cpp: Rename: ndb/test/ndbapi/testTransactions/testTransactions.cpp -> ndb/test/ndbapi/testTransactions.cpp ndb/test/ndbapi/test_event.cpp: Rename: ndb/test/ndbapi/test_event/test_event.cpp -> ndb/test/ndbapi/test_event.cpp ndb/tools/delete_all.cpp: Rename: ndb/tools/delete_all/delete_all.cpp -> ndb/tools/delete_all.cpp ndb/tools/desc.cpp: Rename: ndb/tools/desc/desc.cpp -> ndb/tools/desc.cpp ndb/tools/drop_index.cpp: Rename: ndb/tools/drop_index/drop_index.cpp -> ndb/tools/drop_index.cpp ndb/tools/drop_tab.cpp: Rename: ndb/tools/drop_tab/drop_tab.cpp -> ndb/tools/drop_tab.cpp ndb/tools/listTables.cpp: Rename: ndb/tools/list_tables/listTables.cpp -> ndb/tools/listTables.cpp ndb/tools/ndbsql.cpp: Rename: ndb/tools/ndbsql/ndbsql.cpp -> ndb/tools/ndbsql.cpp ndb/tools/select_all.cpp: Rename: ndb/tools/select_all/select_all.cpp -> ndb/tools/select_all.cpp ndb/tools/select_count.cpp: Rename: ndb/tools/select_count/select_count.cpp -> ndb/tools/select_count.cpp ndb/test/tools/hugoScanUpdate.cpp: Rename: ndb/test/tools/hugoScanUpd.cpp -> ndb/test/tools/hugoScanUpdate.cpp ndb/test/tools/hugoPkUpdate.cpp: Rename: ndb/test/tools/hugoPkUpd.cpp -> ndb/test/tools/hugoPkUpdate.cpp ndb/test/tools/hugoPkDelete.cpp: Rename: ndb/test/tools/hugoPkDel.cpp -> ndb/test/tools/hugoPkDelete.cpp ndb/tools/Makefile_old: Rename: ndb/tools/Makefile -> ndb/tools/Makefile_old ndb/test/tools/transproxy.cpp: Rename: ndb/tools/transproxy.cpp -> ndb/test/tools/transproxy.cpp ndb/test/tools/verify_index.cpp: Rename: ndb/tools/verify_index.cpp -> ndb/test/tools/verify_index.cpp ndb/test/tools/copy_tab.cpp: Rename: ndb/tools/copy_tab.cpp -> ndb/test/tools/copy_tab.cpp ndb/test/tools/cpcc.cpp: Rename: ndb/tools/cpcc.cpp -> ndb/test/tools/cpcc.cpp ndb/test/tools/create_index.cpp: Rename: ndb/tools/create_index.cpp -> ndb/test/tools/create_index.cpp ndb/test/tools/old_dirs/waiter/Makefile_old: mvdir ndb/test/tools/old_dirs/waiter/waiter.cpp: mvdir ndb/test/tools/old_dirs/restart/Makefile: mvdir ndb/test/tools/old_dirs/hugoScanUpdate/Makefile: mvdir ndb/test/tools/old_dirs/hugoScanRead/Makefile: mvdir ndb/test/tools/old_dirs/hugoPkUpdate/Makefile: mvdir ndb/test/tools/old_dirs/hugoPkReadRecord/Makefile: mvdir ndb/test/tools/old_dirs/hugoPkRead/Makefile: mvdir ndb/test/tools/old_dirs/hugoPkDelete/Makefile: mvdir ndb/test/tools/old_dirs/hugoLockRecords/Makefile: mvdir ndb/test/tools/old_dirs/hugoLoad/Makefile: mvdir ndb/test/tools/old_dirs/hugoFill/Makefile: mvdir ndb/test/tools/old_dirs/hugoCalculator/Makefile: mvdir ndb/tools/old_dirs/copy_tab/Makefile: mvdir ndb/tools/old_dirs/cpcc/Makefile: mvdir ndb/tools/old_dirs/create_index/Makefile: mvdir ndb/tools/old_dirs/delete_all/Makefile: mvdir ndb/tools/old_dirs/desc/Makefile: mvdir ndb/tools/old_dirs/drop_index/Makefile: mvdir ndb/tools/old_dirs/drop_tab/Makefile: mvdir ndb/tools/old_dirs/list_tables/Makefile: mvdir ndb/tools/old_dirs/select_all/Makefile: mvdir ndb/tools/old_dirs/select_count/Makefile: mvdir ndb/test/tools/old_dirs/transproxy/Makefile: mvdir ndb/test/tools/old_dirs/verify_index/Makefile: mvdir ndb/test/ndbapi/old_dirs/flexTT/Makefile: mvdir ndb/test/ndbapi/old_dirs/flexTimedAsynch/Makefile: mvdir ndb/test/ndbapi/old_dirs/flexHammer/Makefile: mvdir ndb/test/ndbapi/old_dirs/flexHammer/README: mvdir ndb/test/ndbapi/old_dirs/flexBench/Makefile.am: mvdir ndb/test/ndbapi/old_dirs/flexBench/Makefile_old: mvdir ndb/test/ndbapi/old_dirs/flexBench/ndbplot.pl: mvdir ndb/test/ndbapi/old_dirs/flexAsynch/Makefile: mvdir ndb/test/ndbapi/old_dirs/drop_all_tabs/Makefile: mvdir ndb/test/ndbapi/old_dirs/create_tab/Makefile: mvdir ndb/test/ndbapi/old_dirs/testOIBasic/Makefile: mvdir ndb/test/ndbapi/old_dirs/testOIBasic/times.txt: mvdir ndb/test/ndbapi/old_dirs/testNodeRestart/Makefile: mvdir ndb/test/ndbapi/old_dirs/testOperations/Makefile: mvdir ndb/test/ndbapi/old_dirs/testBlobs/Makefile: mvdir ndb/test/ndbapi/old_dirs/testBackup/Makefile: mvdir ndb/test/ndbapi/old_dirs/testDict/Makefile: mvdir ndb/test/ndbapi/old_dirs/test_event/Makefile: mvdir ndb/test/ndbapi/old_dirs/testTransactions/Makefile: mvdir ndb/test/ndbapi/old_dirs/testTimeout/Makefile: mvdir ndb/test/ndbapi/old_dirs/testSystemRestart/Makefile: mvdir ndb/test/ndbapi/old_dirs/testScanInterpreter/Makefile: mvdir ndb/test/ndbapi/old_dirs/testDataBuffers/Makefile: mvdir ndb/test/ndbapi/old_dirs/testIndex/Makefile: mvdir ndb/test/ndbapi/old_dirs/testMgm/Makefile: mvdir ndb/test/ndbapi/old_dirs/restarter/Makefile: mvdir ndb/test/ndbapi/old_dirs/flexScan/Makefile: mvdir ndb/test/ndbapi/old_dirs/flexScan/README: mvdir ndb/test/ndbapi/old_dirs/testRestartGci/Makefile: mvdir ndb/test/ndbapi/old_dirs/flex_bench_mysql/Makefile: mvdir ndb/test/ndbapi/old_dirs/indexTest/Makefile: mvdir ndb/test/ndbapi/old_dirs/indexTest2/Makefile: mvdir ndb/test/ndbapi/old_dirs/testBasic/Makefile: mvdir ndb/test/ndbapi/old_dirs/basicAsynch/Makefile: mvdir ndb/test/ndbapi/old_dirs/create_all_tabs/Makefile: mvdir ndb/test/ndbapi/old_dirs/testNdbApi/Makefile: mvdir ndb/test/ndbapi/old_dirs/testOrderedIndex/Makefile: mvdir ndb/test/ndbapi/old_dirs/restarter2/Makefile: mvdir ndb/test/ndbapi/old_dirs/telco/Makefile: mvdir ndb/test/ndbapi/old_dirs/telco/readme: mvdir ndb/test/ndbapi/old_dirs/acid/Makefile: mvdir ndb/test/ndbapi/old_dirs/acid2/Makefile: mvdir ndb/test/ndbapi/old_dirs/acid2/TraceNdbApi.hpp: mvdir ndb/test/ndbapi/old_dirs/acid2/VerifyNdbApi.hpp: mvdir ndb/test/ndbapi/old_dirs/interpreterInTup/Makefile: mvdir ndb/test/ndbapi/old_dirs/ronja/Makefile: mvdir ndb/test/ndbapi/old_dirs/ronja/benchronja/Makefile: mvdir ndb/test/ndbapi/old_dirs/ronja/initronja/Makefile: mvdir ndb/test/ndbapi/old_dirs/testScan/Makefile: mvdir ndb/test/ndbapi/old_dirs/vw_test/Makefile: mvdir ndb/test/ndbapi/old_dirs/vw_test/bcd.h: mvdir ndb/test/ndbapi/old_dirs/vw_test/utv.h: mvdir ndb/test/ndbapi/old_dirs/vw_test/vcdrfunc.h: mvdir ndb/test/ndbapi/old_dirs/vw_test/script/client_start: mvdir ndb/test/ndbapi/old_dirs/testGrep/Makefile: mvdir ndb/test/ndbapi/old_dirs/testGrep/verify/Makefile: mvdir ndb/test/ndbapi/old_dirs/testInterpreter/Makefile: mvdir ndb/test/ndbapi/old_dirs/restarts/Makefile: mvdir ndb/test/ndbapi/old_dirs/bulk_copy/Makefile: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/Makefile: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/async-src/Makefile: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/async-src/generator/Makefile: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/dbGenerator.h: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/testData.h: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/userInterface.h: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/Makefile: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/macros.h: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/ndb_error.hpp: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/bin/.empty: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/include/ndb_schema.hpp: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/include/testDefinitions.h: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/lib/.empty: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/script/Makefile: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/script/async-lmc-bench-l-p10.sh: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/script/async-lmc-bench-l.sh: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/script/async-lmc-bench-p10.sh: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/script/async-lmc-bench.sh: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/Makefile: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/README: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/Makefile: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/dbGenerator.c: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/makevars.linux: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/makevars.sparc: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/dbGenerator.h: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/mainGenerator.c: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/include/testData.h: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/include/userInterface.h: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/Makefile: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/dbPopulate.c: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/dbPopulate.h: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/mainPopulate.c: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/user/Makefile: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/user/localDbPrepare.c: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/user/macros.h: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/user/ndb_error.hpp: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/Makefile: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userHandle.h: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userInterface.c: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userTransaction.c: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userHandle.h: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userInterface.cpp: mvdir ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userTransaction.c: mvdir ndb/test/ndbapi/testBasicAsynch.cpp: Change mode to -rw-rw-r-- ndb/tools/old_dirs/ndbnet/Makefile.PL: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Base.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Client.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Command.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Config.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Run.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Util.pm: mvdir ndb/tools/old_dirs/ndbnet/ndbnet.pl: mvdir ndb/tools/old_dirs/ndbnet/ndbnetd.pl: mvdir ndb/tools/old_dirs/ndbnet/ndbrun: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Database.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Env.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Node.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeApi.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeDb.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeMgmt.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Server.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerINET.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerUNIX.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Base.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Database.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Env.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Node.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Base.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Dir.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Event.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Util/File.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Util/IO.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Lock.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Log.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Socket.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketINET.pm: mvdir ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketUNIX.pm: mvdir ndb/tools/old_dirs/ndbsql/Makefile: mvdir ndb/tools/old_dirs/src/counterviewer/CounterViewer.java: mvdir ndb/test/ndbapi/bank/Bank.hpp: mvdir ndb/test/ndbapi/bank/Makefile_old: Rename: ndb/test/ndbapi/bank/Makefile -> ndb/test/ndbapi/bank/Makefile_old ndb/test/ndbapi/bank/old_dirs/bankCreator/Makefile: mvdir ndb/test/ndbapi/bank/old_dirs/bankSumAccounts/Makefile: mvdir ndb/test/ndbapi/bank/old_dirs/bankMakeGL/Makefile: mvdir ndb/test/ndbapi/bank/old_dirs/bankTimer/Makefile: mvdir ndb/test/ndbapi/bank/old_dirs/bankValidateAllGLs/Makefile: mvdir ndb/test/ndbapi/bank/old_dirs/bankTransactionMaker/Makefile: mvdir ndb/test/ndbapi/bank/old_dirs/src/Makefile: mvdir ndb/test/ndbapi/bank/old_dirs/testBank/Makefile: mvdir ndb/test/ndbapi/ScanFilter.hpp: Rename: ndb/test/ndbapi/old_dirs/testScanInterpreter/ScanFilter.hpp -> ndb/test/ndbapi/ScanFilter.hpp ndb/test/ndbapi/ScanInterpretTest.hpp: Rename: ndb/test/ndbapi/old_dirs/testScanInterpreter/ScanInterpretTest.hpp -> ndb/test/ndbapi/ScanInterpretTest.hpp ndb/test/ndbapi/ScanFunctions.hpp: Rename: ndb/test/ndbapi/old_dirs/testScan/ScanFunctions.hpp -> ndb/test/ndbapi/ScanFunctions.hpp
692 lines
22 KiB
C++
692 lines
22 KiB
C++
/* 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 <NdbApi.hpp>
|
|
#include <NdbOut.hpp>
|
|
#include <NdbThread.h>
|
|
#include <NdbSleep.h>
|
|
#include <NdbMutex.h>
|
|
|
|
#include "TraceNdbApi.hpp"
|
|
#include "VerifyNdbApi.hpp"
|
|
|
|
|
|
#define Ndb CTraceNdb
|
|
#define NdbSchemaCon CTraceNdbSchemaCon
|
|
#define NdbSchemaOp CTraceNdbSchemaOp
|
|
#define NdbConnection CTraceNdbConnection
|
|
#define NdbOperation CTraceNdbOperation
|
|
#define NdbIndexOperation CTraceNdbIndexOperation
|
|
#define NdbRecAttr CTraceNdbRecAttr
|
|
#define Table CTraceTable
|
|
#define Index CTraceIndex
|
|
#define Column CTraceColumn
|
|
#define NdbDictionary CTraceNdbDictionary
|
|
|
|
/*
|
|
#define Ndb CVerifyNdb
|
|
#define NdbSchemaCon CVerifyNdbSchemaCon
|
|
#define NdbSchemaOp CVerifyNdbSchemaOp
|
|
#define NdbConnection CVerifyNdbConnection
|
|
#define NdbOperation CVerifyNdbOperation
|
|
#define NdbIndexOperation CVerifyNdbIndexOperation
|
|
#define NdbRecAttr CVerifyNdbRecAttr
|
|
#define Table CVerifyTable
|
|
#define Index CVerifyIndex
|
|
#define Column CVerifyColumn
|
|
#define NdbDictionary CVerifyNdbDictionary
|
|
*/
|
|
|
|
NdbMutex* g_pNdbMutexStop = 0;
|
|
Uint32 g_nPart = 1;
|
|
Uint32 g_nTable = 1;
|
|
Uint32 g_nTuple = 1;
|
|
Uint32 g_nAttribute = 1;
|
|
char* g_szTable = 0;
|
|
char* g_szIndex = 0;
|
|
char* g_szAttribute = 0;
|
|
bool g_bVerify = false;
|
|
bool g_bUseIndex = false;
|
|
|
|
|
|
|
|
#define N 624
|
|
#define M 397
|
|
#define MATRIX_A 0x9908b0df
|
|
#define UPPER_MASK 0x80000000
|
|
#define LOWER_MASK 0x7fffffff
|
|
|
|
#define TEMPERING_MASK_B 0x9d2c5680
|
|
#define TEMPERING_MASK_C 0xefc60000
|
|
#define TEMPERING_SHIFT_U(y) (y >> 11)
|
|
#define TEMPERING_SHIFT_S(y) (y << 7)
|
|
#define TEMPERING_SHIFT_T(y) (y << 15)
|
|
#define TEMPERING_SHIFT_L(y) (y >> 18)
|
|
|
|
|
|
class MT19937
|
|
{
|
|
public:
|
|
MT19937(void);
|
|
void sgenrand(unsigned long seed);
|
|
unsigned long genrand(void);
|
|
|
|
private:
|
|
unsigned long mt[N];
|
|
int mti;
|
|
unsigned long mag01[2];
|
|
};
|
|
|
|
|
|
MT19937::MT19937(void)
|
|
{
|
|
mti = N+1;
|
|
mag01[0] = 0x0;
|
|
mag01[1] = MATRIX_A;
|
|
sgenrand(4357);
|
|
}
|
|
|
|
|
|
void MT19937::sgenrand(unsigned long seed)
|
|
{
|
|
mt[0]= seed & 0xffffffff;
|
|
for (mti=1; mti<N; mti++)
|
|
mt[mti] = (69069 * mt[mti-1]) & 0xffffffff;
|
|
}
|
|
|
|
|
|
unsigned long MT19937::genrand(void)
|
|
{
|
|
unsigned long y;
|
|
if (mti >= N) {
|
|
int kk;
|
|
if (mti == N+1)
|
|
{
|
|
sgenrand(4357);
|
|
}
|
|
for (kk=0;kk<N-M;kk++) {
|
|
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
|
|
mt[kk] = mt[kk+M] ^ (y >> 1) ^ mag01[y & 0x1];
|
|
}
|
|
for (;kk<N-1;kk++) {
|
|
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
|
|
mt[kk] = mt[kk+(M-N)] ^ (y >> 1) ^ mag01[y & 0x1];
|
|
}
|
|
y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK);
|
|
mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1];
|
|
mti = 0;
|
|
}
|
|
y = mt[mti++];
|
|
y ^= TEMPERING_SHIFT_U(y);
|
|
y ^= TEMPERING_SHIFT_S(y) & TEMPERING_MASK_B;
|
|
y ^= TEMPERING_SHIFT_T(y) & TEMPERING_MASK_C;
|
|
y ^= TEMPERING_SHIFT_L(y);
|
|
return y;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CreateTables(Ndb* pNdb)
|
|
{
|
|
for(Uint32 iTable=0; iTable<g_nTable; ++iTable)
|
|
{
|
|
NdbDictionary::Dictionary* pDictionary = pNdb->getDictionary();
|
|
|
|
NdbDictionary::Table table;
|
|
table.setName(g_szTable+iTable*4);
|
|
|
|
NdbDictionary::Index index;
|
|
index.setName(g_szIndex+iTable*4);
|
|
index.setTable(table.getName());
|
|
index.setType(NdbDictionary::Index::UniqueHashIndex);
|
|
|
|
NdbDictionary::Column columnPK;
|
|
columnPK.setName("PK");
|
|
columnPK.setTupleKey(true);
|
|
table.addColumn(columnPK);
|
|
index.addIndexColumn(columnPK.getName());
|
|
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
NdbDictionary::Column columnAttr;
|
|
columnAttr.setName(g_szAttribute+iAttr*4);
|
|
columnAttr.setTupleKey(false);
|
|
table.addColumn(columnAttr);
|
|
}
|
|
|
|
pDictionary->createTable(table);
|
|
pDictionary->createIndex(index);
|
|
|
|
/*
|
|
NdbSchemaCon* pNdbSchemaCon = pNdb->startSchemaTransaction();
|
|
NdbSchemaOp* pNdbSchemaOp = pNdbSchemaCon->getNdbSchemaOp();
|
|
pNdbSchemaOp->createTable(g_szTable+iTable*4);
|
|
pNdbSchemaOp->createAttribute("PK", TupleKey);
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
pNdbSchemaOp->createAttribute(g_szAttribute+iAttr*4, NoKey);
|
|
}
|
|
|
|
pNdbSchemaCon->execute();
|
|
pNdb->closeSchemaTransaction(pNdbSchemaCon);
|
|
*/
|
|
}
|
|
}
|
|
|
|
|
|
int InsertTransaction(Ndb* pNdb, const Uint32 iPart, const bool bIndex)
|
|
{
|
|
int iExec = -1;
|
|
int iCode = -1;
|
|
NdbConnection* pNdbConnection = pNdb->startTransaction();
|
|
if(pNdbConnection)
|
|
{
|
|
for(Uint32 iTable=0; iTable<g_nTable; ++iTable)
|
|
{
|
|
for(Uint32 iTuple=0; iTuple<g_nTuple; ++iTuple)
|
|
{
|
|
if(bIndex)
|
|
{
|
|
NdbIndexOperation* pNdbIndexOperation = pNdbConnection->getNdbIndexOperation(g_szIndex+iTable*4, g_szTable+iTable*4);
|
|
pNdbIndexOperation->insertTuple();
|
|
Uint32 nPK = iPart*g_nTuple + iTuple;
|
|
pNdbIndexOperation->equal("PK", nPK);
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
Uint32 nValue = ((iPart*g_nTable+iTable)*g_nTuple+iTuple)*g_nAttribute+iAttr;
|
|
pNdbIndexOperation->setValue(g_szAttribute+iAttr*4, nValue);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
NdbOperation* pNdbOperation = pNdbConnection->getNdbOperation(g_szTable+iTable*4);
|
|
pNdbOperation->insertTuple();
|
|
Uint32 nPK = iPart*g_nTuple + iTuple;
|
|
pNdbOperation->equal("PK", nPK);
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
Uint32 nValue = ((iPart*g_nTable+iTable)*g_nTuple+iTuple)*g_nAttribute+iAttr;
|
|
pNdbOperation->setValue(g_szAttribute+iAttr*4, nValue);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
iExec = pNdbConnection->execute_ok(Commit);
|
|
if (iExec == -1)
|
|
{
|
|
ndbout << pNdbConnection->getNdbError() << endl;
|
|
}
|
|
pNdb->closeTransaction(pNdbConnection);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
int UpdateGetAndSetTransaction(Ndb* pNdb, const Uint32 iPart, const bool bIndex)
|
|
{
|
|
int iExec = -1;
|
|
int iCode = -1;
|
|
NdbRecAttr** ppNdbRecAttr = new NdbRecAttr*[g_nTable*g_nTuple*g_nAttribute];
|
|
NdbConnection* pNdbConnection = pNdb->startTransaction();
|
|
if(pNdbConnection)
|
|
{
|
|
for(Uint32 iTable=0; iTable<g_nTable; ++iTable)
|
|
{
|
|
for(Uint32 iTuple=0; iTuple<g_nTuple; ++iTuple)
|
|
{
|
|
if(bIndex)
|
|
{
|
|
NdbIndexOperation* pNdbIndexOperation = pNdbConnection->getNdbIndexOperation(g_szIndex+iTable*4, g_szTable+iTable*4);
|
|
pNdbIndexOperation->readTupleExclusive();
|
|
Uint32 nPK = iPart*g_nTuple + iTuple;
|
|
pNdbIndexOperation->equal("PK", nPK);
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
ppNdbRecAttr[(iTable*g_nTuple+iTuple)*g_nAttribute+iAttr]
|
|
= pNdbIndexOperation->getValue(g_szAttribute+iAttr*4);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
NdbOperation* pNdbOperation = pNdbConnection->getNdbOperation(g_szTable+iTable*4);
|
|
pNdbOperation->readTupleExclusive();
|
|
Uint32 nPK = iPart*g_nTuple + iTuple;
|
|
pNdbOperation->equal("PK", nPK);
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
ppNdbRecAttr[(iTable*g_nTuple+iTuple)*g_nAttribute+iAttr]
|
|
= pNdbOperation->getValue(g_szAttribute+iAttr*4);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
iExec = pNdbConnection->execute_ok(NoCommit);
|
|
if( iExec == -1)
|
|
{
|
|
ndbout << pNdbConnection->getNdbError() << endl;
|
|
}
|
|
}
|
|
iCode = pNdbConnection->getNdbError().code;
|
|
if(iExec==0)
|
|
{
|
|
for(Uint32 iTable=0; iTable<g_nTable; ++iTable)
|
|
{
|
|
for(Uint32 iTuple=0; iTuple<g_nTuple; ++iTuple)
|
|
{
|
|
if(bIndex)
|
|
{
|
|
NdbIndexOperation* pNdbIndexOperation = pNdbConnection->getNdbIndexOperation(g_szIndex+iTable*4, g_szTable+iTable*4);
|
|
pNdbIndexOperation->updateTuple();
|
|
Uint32 nPK = iPart*g_nTuple + iTuple;
|
|
pNdbIndexOperation->equal("PK", nPK);
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
NdbRecAttr* pNdbRecAttr
|
|
= ppNdbRecAttr[(iTable*g_nTuple+iTuple)*g_nAttribute+iAttr];
|
|
Uint32 nValue = pNdbRecAttr->u_32_value() + 1;
|
|
pNdbIndexOperation->setValue(g_szAttribute+iAttr*4, nValue);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
NdbOperation* pNdbOperation = pNdbConnection->getNdbOperation(g_szTable+iTable*4);
|
|
pNdbOperation->updateTuple();
|
|
Uint32 nPK = iPart*g_nTuple + iTuple;
|
|
pNdbOperation->equal("PK", nPK);
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
NdbRecAttr* pNdbRecAttr
|
|
= ppNdbRecAttr[(iTable*g_nTuple+iTuple)*g_nAttribute+iAttr];
|
|
Uint32 nValue = pNdbRecAttr->u_32_value() + 1;
|
|
pNdbOperation->setValue(g_szAttribute+iAttr*4, nValue);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
iExec = pNdbConnection->execute(Commit);
|
|
if (iExec == -1)
|
|
{
|
|
ndbout << pNdbConnection->getNdbError() << endl;
|
|
}
|
|
pNdb->closeTransaction(pNdbConnection);
|
|
}
|
|
delete[] ppNdbRecAttr;
|
|
return 0;
|
|
}
|
|
|
|
|
|
int UpdateInterpretedTransaction(Ndb* pNdb, const Uint32 iPart, const bool bIndex)
|
|
{
|
|
int iExec = -1;
|
|
int iCode = -1;
|
|
NdbConnection* pNdbConnection = pNdb->startTransaction();
|
|
if(pNdbConnection)
|
|
{
|
|
for(Uint32 iTable=0; iTable<g_nTable; ++iTable)
|
|
{
|
|
for(Uint32 iTuple=0; iTuple<g_nTuple; ++iTuple)
|
|
{
|
|
if(bIndex)
|
|
{
|
|
NdbIndexOperation* pNdbIndexOperation = pNdbConnection->getNdbIndexOperation(g_szIndex+iTable*4, g_szTable+iTable*4);
|
|
pNdbIndexOperation->interpretedUpdateTuple();
|
|
Uint32 nPK = iPart*g_nTuple + iTuple;
|
|
pNdbIndexOperation->equal("PK", nPK);
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
pNdbIndexOperation->incValue(g_szAttribute+iAttr*4, (Uint32)1);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
NdbOperation* pNdbOperation = pNdbConnection->getNdbOperation(g_szTable+iTable*4);
|
|
pNdbOperation->interpretedUpdateTuple();
|
|
Uint32 nPK = iPart*g_nTuple + iTuple;
|
|
pNdbOperation->equal("PK", nPK);
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
pNdbOperation->incValue(g_szAttribute+iAttr*4, (Uint32)1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
iExec = pNdbConnection->execute_ok(Commit);
|
|
|
|
if (iExec == -1)
|
|
{
|
|
ndbout << pNdbConnection->getNdbError() << endl;
|
|
}
|
|
pNdb->closeTransaction(pNdbConnection);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
void ReportInconsistency (const Uint32 iPart,
|
|
const Uint32 iTable,
|
|
const Uint32 iTuple,
|
|
const Uint32 iAttr,
|
|
const Uint32 nValue,
|
|
const Uint32 nExpected )
|
|
{
|
|
ndbout << "INCONSISTENCY: ";
|
|
ndbout << "Part " << iPart;
|
|
ndbout << ", Table " << iTable;
|
|
ndbout << ", Tuple " << iTuple;
|
|
ndbout << ", Attr " << iAttr;
|
|
ndbout << ", Value " << nValue;
|
|
ndbout << ", Expected " << nExpected;
|
|
ndbout << endl;
|
|
}
|
|
|
|
|
|
int ReadTransaction(Ndb* pNdb, const Uint32 iPart, const bool bIndex)
|
|
{
|
|
int iExec = -1;
|
|
int iCode = -1;
|
|
NdbRecAttr** ppNdbRecAttr = new NdbRecAttr*[g_nTable*g_nTuple*g_nAttribute];
|
|
NdbConnection* pNdbConnection = pNdb->startTransaction();
|
|
if(pNdbConnection)
|
|
{
|
|
for(Uint32 iTable=0; iTable<g_nTable; ++iTable)
|
|
{
|
|
for(Uint32 iTuple=0; iTuple<g_nTuple; ++iTuple)
|
|
{
|
|
if(bIndex)
|
|
{
|
|
NdbIndexOperation* pNdbIndexOperation = pNdbConnection->getNdbIndexOperation(g_szIndex+iTable*4, g_szTable+iTable*4);
|
|
pNdbIndexOperation->readTuple();
|
|
Uint32 nPK = iPart*g_nTuple + iTuple;
|
|
pNdbIndexOperation->equal("PK", nPK);
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
ppNdbRecAttr[(iTable*g_nTuple+iTuple)*g_nAttribute+iAttr]
|
|
= pNdbIndexOperation->getValue(g_szAttribute+iAttr*4);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
NdbOperation* pNdbOperation = pNdbConnection->getNdbOperation(g_szTable+iTable*4);
|
|
pNdbOperation->readTuple();
|
|
Uint32 nPK = iPart*g_nTuple + iTuple;
|
|
pNdbOperation->equal("PK", nPK);
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
ppNdbRecAttr[(iTable*g_nTuple+iTuple)*g_nAttribute+iAttr]
|
|
= pNdbOperation->getValue(g_szAttribute+iAttr*4);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
iExec = pNdbConnection->execute_ok(Commit);
|
|
if (iExec == -1)
|
|
{
|
|
ndbout << pNdbConnection->getNdbError() << endl;
|
|
}
|
|
if(iExec==0)
|
|
{
|
|
Uint32 nValue0 = ppNdbRecAttr[0]->u_32_value();
|
|
for(Uint32 iTable=0; iTable<g_nTable; ++iTable)
|
|
{
|
|
for(Uint32 iTuple=0; iTuple<g_nTuple; ++iTuple)
|
|
{
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
Uint32 nValue = ppNdbRecAttr[(iTable*g_nTuple+iTuple)*g_nAttribute+iAttr]->u_32_value();
|
|
Uint32 nExpected = nValue0 + (iTable*g_nTuple+iTuple)*g_nAttribute+iAttr;
|
|
if(nValue!=nExpected)
|
|
{
|
|
ReportInconsistency(iPart, iTable, iTuple, iAttr, nValue, nExpected);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
pNdb->closeTransaction(pNdbConnection);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
int DeleteTransaction(Ndb* pNdb, const Uint32 iPart, const bool bIndex)
|
|
{
|
|
int iExec = -1;
|
|
int iCode = -1;
|
|
NdbConnection* pNdbConnection = pNdb->startTransaction();
|
|
if(pNdbConnection)
|
|
{
|
|
for(Uint32 iTable=0; iTable<g_nTable; ++iTable)
|
|
{
|
|
for(Uint32 iTuple=0; iTuple<g_nTuple; ++iTuple)
|
|
{
|
|
if(bIndex)
|
|
{
|
|
NdbIndexOperation* pNdbIndexOperation = pNdbConnection->getNdbIndexOperation(g_szIndex+iTable*4, g_szTable+iTable*4);
|
|
pNdbIndexOperation->deleteTuple();
|
|
Uint32 nPK = iPart*g_nTuple + iTuple;
|
|
pNdbIndexOperation->equal("PK", nPK);
|
|
}
|
|
else
|
|
{
|
|
NdbOperation* pNdbOperation = pNdbConnection->getNdbOperation(g_szTable+iTable*4);
|
|
pNdbOperation->deleteTuple();
|
|
Uint32 nPK = iPart*g_nTuple + iTuple;
|
|
pNdbOperation->equal("PK", nPK);
|
|
}
|
|
}
|
|
}
|
|
iExec = pNdbConnection->execute_ok(Commit);
|
|
|
|
if (iExec == -1)
|
|
{
|
|
ndbout << pNdbConnection->getNdbError() << endl;
|
|
}
|
|
pNdb->closeTransaction(pNdbConnection);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
extern "C" void* ThreadFunc(void*)
|
|
{
|
|
Ndb* pNdb = new Ndb("TEST_DB");
|
|
pNdb->init();
|
|
pNdb->waitUntilReady();
|
|
|
|
MT19937 rndgen;
|
|
rndgen.sgenrand((unsigned long)pNdb);
|
|
|
|
Uint32 nInsertError = 0;
|
|
Uint32 nInsertCommit = 0;
|
|
Uint32 nInsertRollback = 0;
|
|
Uint32 nUpdateGetAndSetError = 0;
|
|
Uint32 nUpdateGetAndSetCommit = 0;
|
|
Uint32 nUpdateGetAndSetRollback = 0;
|
|
Uint32 nReadError = 0;
|
|
Uint32 nReadCommit = 0;
|
|
Uint32 nReadRollback = 0;
|
|
Uint32 nUpdateInterpretedError = 0;
|
|
Uint32 nUpdateInterpretedCommit = 0;
|
|
Uint32 nUpdateInterpretedRollback = 0;
|
|
Uint32 nDeleteError = 0;
|
|
Uint32 nDeleteCommit = 0;
|
|
Uint32 nDeleteRollback = 0;
|
|
|
|
if (g_bVerify)
|
|
{
|
|
for (Uint32 iPart = 0; iPart < g_nPart; iPart++)
|
|
{
|
|
switch(ReadTransaction(pNdb, iPart, false))
|
|
{
|
|
case -1: ++nReadError; break;
|
|
case 0: ++nReadCommit; break;
|
|
case 1: ++nReadRollback; break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
while(NdbMutex_Trylock(g_pNdbMutexStop))
|
|
{
|
|
Uint32 iPart = rndgen.genrand() % g_nPart;
|
|
Uint32 iTrans = rndgen.genrand() % 5;
|
|
bool bIndex = ((rndgen.genrand() & 1) ? true : false);
|
|
switch(iTrans)
|
|
{
|
|
case 0:
|
|
switch(InsertTransaction(pNdb, iPart, bIndex))
|
|
{
|
|
case -1: ++nInsertError; break;
|
|
case 0: ++nInsertCommit; break;
|
|
case 1: ++nInsertRollback; break;
|
|
}
|
|
break;
|
|
|
|
case 1:
|
|
switch(UpdateGetAndSetTransaction(pNdb, iPart, bIndex))
|
|
{
|
|
case -1: ++nUpdateGetAndSetError; break;
|
|
case 0: ++nUpdateGetAndSetCommit; break;
|
|
case 1: ++nUpdateGetAndSetRollback; break;
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
switch(ReadTransaction(pNdb, iPart, bIndex))
|
|
{
|
|
case -1: ++nReadError; break;
|
|
case 0: ++nReadCommit; break;
|
|
case 1: ++nReadRollback; break;
|
|
}
|
|
break;
|
|
|
|
case 3:
|
|
switch(UpdateInterpretedTransaction(pNdb, iPart, bIndex))
|
|
{
|
|
case -1: ++nUpdateInterpretedError; break;
|
|
case 0: ++nUpdateInterpretedCommit; break;
|
|
case 1: ++nUpdateInterpretedRollback; break;
|
|
}
|
|
break;
|
|
|
|
case 4:
|
|
switch(DeleteTransaction(pNdb, iPart, bIndex))
|
|
{
|
|
case -1: ++nDeleteError; break;
|
|
case 0: ++nDeleteCommit; break;
|
|
case 1: ++nDeleteRollback; break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
ndbout << "I:" << nInsertError << ":" << nInsertCommit << ":" << nInsertRollback;
|
|
ndbout << " UG:" << nUpdateGetAndSetError << ":" << nUpdateGetAndSetCommit << ":" << nUpdateGetAndSetRollback;
|
|
ndbout << " R:" << nReadError << ":" << nReadCommit << ":" << nReadRollback;
|
|
ndbout << " UI:" << nUpdateInterpretedError << ":" << nUpdateInterpretedCommit << ":" << nUpdateInterpretedRollback;
|
|
ndbout << " D:" << nDeleteError << ":" << nDeleteCommit << ":" << nDeleteRollback << endl;
|
|
ndbout << endl;
|
|
|
|
NdbMutex_Unlock(g_pNdbMutexStop);
|
|
delete pNdb;
|
|
return 0;
|
|
}
|
|
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
Uint32 nSeconds = 1;
|
|
Uint32 nThread = 1;
|
|
|
|
for(int iArg=1; iArg<argc; ++iArg)
|
|
{
|
|
if(argv[iArg][0]=='-')
|
|
{
|
|
switch(argv[iArg][1])
|
|
{
|
|
case 'p': g_nPart = atol(argv[iArg]+2); break;
|
|
case 'b': g_nTable = atol(argv[iArg]+2); break;
|
|
case 'u': g_nTuple = atol(argv[iArg]+2); break;
|
|
case 'a': g_nAttribute = atol(argv[iArg]+2); break;
|
|
case 'v': g_bVerify = true; break;
|
|
case 't': nThread = atol(argv[iArg]+2); break;
|
|
case 's': nSeconds = atol(argv[iArg]+2); break;
|
|
case 'i': g_bUseIndex = true; break;
|
|
}
|
|
}
|
|
}
|
|
ndbout << argv[0];
|
|
ndbout << " -p" << g_nPart;
|
|
ndbout << " -b" << g_nTable;
|
|
ndbout << " -u" << g_nTuple;
|
|
ndbout << " -a" << g_nAttribute;
|
|
if (g_bVerify)
|
|
ndbout << " -v";
|
|
ndbout << " -t" << nThread;
|
|
ndbout << " -s" << nSeconds;
|
|
ndbout << endl;
|
|
|
|
g_szTable = new char[g_nTable*4];
|
|
for(Uint32 iTable=0; iTable<g_nTable; ++iTable)
|
|
{
|
|
sprintf(g_szTable+iTable*4, "T%02d", iTable);
|
|
}
|
|
|
|
g_szIndex = new char[g_nTable*4];
|
|
for(Uint32 iIndex=0; iIndex<g_nTable; ++iIndex)
|
|
{
|
|
sprintf(g_szIndex+iIndex*4, "I%02d", iIndex);
|
|
}
|
|
|
|
g_szAttribute = new char[g_nAttribute*4];
|
|
for(Uint32 iAttr=0; iAttr<g_nAttribute; ++iAttr)
|
|
{
|
|
sprintf(g_szAttribute+iAttr*4, "A%02d", iAttr);
|
|
}
|
|
|
|
|
|
Ndb* pNdb = new Ndb("TEST_DB");
|
|
pNdb->init();
|
|
pNdb->waitUntilReady();
|
|
|
|
if (!g_bVerify) CreateTables(pNdb);
|
|
g_pNdbMutexStop = NdbMutex_Create();
|
|
NdbMutex_Lock(g_pNdbMutexStop);
|
|
|
|
NdbThread_SetConcurrencyLevel(nThread+1);
|
|
NdbThread** ppNdbThread = new NdbThread*[nThread];
|
|
for(Uint32 iThread=0; iThread<nThread; ++iThread)
|
|
{
|
|
ppNdbThread[iThread] = NdbThread_Create(ThreadFunc, 0, 0, "ThreadFunc", NDB_THREAD_PRIO_MEAN);
|
|
}
|
|
|
|
NdbSleep_SecSleep(nSeconds);
|
|
NdbMutex_Unlock(g_pNdbMutexStop);
|
|
|
|
for(Uint32 iThread=0; iThread<nThread; ++iThread)
|
|
{
|
|
void* status;
|
|
NdbThread_WaitFor(ppNdbThread[iThread], &status);
|
|
}
|
|
|
|
NdbMutex_Destroy(g_pNdbMutexStop);
|
|
g_pNdbMutexStop = 0;
|
|
delete pNdb;
|
|
}
|
|
|
|
|