You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3620 lines
103 KiB

Added back sql-bench directory, so that one can more easily run benchmarks on a server and add new benchmarks for new optimizations Fixed memory leak in _db_set() (Bug#24497 Valgrind warning: get_one_option) Don't call net_clear() on COM_QUIT. This avoids a warning from net_clear() after shutdown: "skipped ## bytes from file" BUG#21428: skipped 9 bytes from file: socket (3)" on "mysqladmin shutdown" sql-bench/test-wisconsin.sh: Rename: BitKeeper/deleted/.del-test-wisconsin.sh~c0b86821b5f95f26 -> sql-bench/test-wisconsin.sh sql-bench/test-transactions.sh: Rename: BitKeeper/deleted/.del-test-transactions.sh~c1c892f10c40caf -> sql-bench/test-transactions.sh sql-bench/test-insert.sh: Rename: BitKeeper/deleted/.del-test-insert.sh~893bfac9dedb79a7 -> sql-bench/test-insert.sh sql-bench/test-select.sh: Rename: BitKeeper/deleted/.del-test-select.sh~6d5cc770acf11be6 -> sql-bench/test-select.sh sql-bench/test-create.sh: Rename: BitKeeper/deleted/.del-test-create.sh~f9a1ea38c191b17a -> sql-bench/test-create.sh sql-bench/test-big-tables.sh: Rename: BitKeeper/deleted/.del-test-big-tables.sh~5b1b0c5fb623565a -> sql-bench/test-big-tables.sh sql-bench/test-connect.sh: Rename: BitKeeper/deleted/.del-test-connect.sh~382a728c949ee075 -> sql-bench/test-connect.sh sql-bench/test-ATIS.sh: Rename: BitKeeper/deleted/.del-test-ATIS.sh~e8ebff7086c95773 -> sql-bench/test-ATIS.sh sql-bench/test-alter-table.sh: Rename: BitKeeper/deleted/.del-test-alter-table.sh~eba6cfa9972fcced -> sql-bench/test-alter-table.sh sql-bench/innotest2b.sh: Rename: BitKeeper/deleted/.del-innotest2b.sh~7b99ece835e8dff3 -> sql-bench/innotest2b.sh sql-bench/run-all-tests.sh: Rename: BitKeeper/deleted/.del-run-all-tests.sh~41d6da1cf211ee95 -> sql-bench/run-all-tests.sh sql-bench/innotest2.sh: Rename: BitKeeper/deleted/.del-innotest2.sh~9c14df528285603 -> sql-bench/innotest2.sh sql-bench/innotest2a.sh: Rename: BitKeeper/deleted/.del-innotest2a.sh~e01d016a7cafdc0b -> sql-bench/innotest2a.sh sql-bench/innotest1a.sh: Rename: BitKeeper/deleted/.del-innotest1a.sh~c64f4610ae1e26fe -> sql-bench/innotest1a.sh sql-bench/innotest1b.sh: Rename: BitKeeper/deleted/.del-innotest1b.sh~aafd0819ae84da7b -> sql-bench/innotest1b.sh sql-bench/innotest1.sh: Rename: BitKeeper/deleted/.del-innotest1.sh~aa36bce09ca783c7 -> sql-bench/innotest1.sh sql-bench/crash-me.sh: Rename: BitKeeper/deleted/.del-crash-me.sh~2fa881d0b40339c8 -> sql-bench/crash-me.sh sql-bench/graph-compare-results.sh: Rename: BitKeeper/deleted/.del-graph-compare-results.sh~7e4e28b3591b4542 -> sql-bench/graph-compare-results.sh sql-bench/copy-db.sh: Rename: BitKeeper/deleted/.del-copy-db.sh~e8116afb93144ccd -> sql-bench/copy-db.sh sql-bench/compare-results.sh: Rename: BitKeeper/deleted/.del-compare-results.sh~a9e26e2644c694b3 -> sql-bench/compare-results.sh sql-bench/bench-count-distinct.sh: Rename: BitKeeper/deleted/.del-bench-count-distinct.sh~a92f174271a831d7 -> sql-bench/bench-count-distinct.sh sql-bench/as3ap.sh: Rename: BitKeeper/deleted/.del-as3ap.sh~f54eebbd8d34c9b6 -> sql-bench/as3ap.sh sql-bench/Comments/Informix.crash-me: Rename: BitKeeper/deleted/.del-Informix.crash-me~51ab5b717cefe74 -> sql-bench/Comments/Informix.crash-me sql-bench/Comments/postgres.crash-me: Rename: BitKeeper/deleted/.del-postgres.crash-me~eacac145c3e30f17 -> sql-bench/Comments/postgres.crash-me sql-bench/Comments/Empress.crash-me: Rename: BitKeeper/deleted/.del-Empress.crash-me~bdaff0c68ce10f02 -> sql-bench/Comments/Empress.crash-me sql-bench/Comments/Adabas.crash-me: Rename: BitKeeper/deleted/.del-Adabas.crash-me~ce88ba1a540971ac -> sql-bench/Comments/Adabas.crash-me sql-bench/Comments/Access.crash-me: Rename: BitKeeper/deleted/.del-Access.crash-me~bb457ec282d939b6 -> sql-bench/Comments/Access.crash-me sql-bench/Comments/postgres.benchmark: Rename: BitKeeper/deleted/.del-postgres.benchmark~4d30890732b784a -> sql-bench/Comments/postgres.benchmark sql-bench/Comments/mysql.benchmark: Rename: BitKeeper/deleted/.del-mysql.benchmark~4d8729c0937456fc -> sql-bench/Comments/mysql.benchmark sql-bench/Comments/FrontBase.benchmark: Rename: BitKeeper/deleted/.del-FrontBase.benchmark~217041ef18274c2e -> sql-bench/Comments/FrontBase.benchmark sql-bench/Comments/interbase: Rename: BitKeeper/deleted/.del-interbase~cdad59622b4d6f3 -> sql-bench/Comments/interbase sql-bench/uname.bat: Rename: BitKeeper/deleted/.del-uname.bat~a6d933d2ee9314c -> sql-bench/uname.bat sql-bench/pwd.bat: Rename: BitKeeper/deleted/.del-pwd.bat~9b64050849abf51 -> sql-bench/pwd.bat sql-bench/example.bat: Rename: BitKeeper/deleted/.del-example.bat~22d0170bccf0f030 -> sql-bench/example.bat sql-bench/Makefile.am: Rename: BitKeeper/deleted/.del-Makefile.am~7b07da85b2e9375 -> sql-bench/Makefile.am sql-bench/Data/ATIS/transport.txt: Rename: BitKeeper/deleted/.del-transport.txt~fa4ca40735f8354c -> sql-bench/Data/ATIS/transport.txt sql-bench/Data/ATIS/time_zone.txt: Rename: BitKeeper/deleted/.del-time_zone.txt~4171f9ca732f65c0 -> sql-bench/Data/ATIS/time_zone.txt sql-bench/Data/Wisconsin/tenk.data: Rename: BitKeeper/deleted/.del-tenk.data~6aeaebdd534e458e -> sql-bench/Data/Wisconsin/tenk.data sql-bench/Data/Wisconsin/onek.data: Rename: BitKeeper/deleted/.del-onek.data~6cd1edaf596a7f7 -> sql-bench/Data/Wisconsin/onek.data sql-bench/Data/ATIS/stop1.txt: Rename: BitKeeper/deleted/.del-stop1.txt~f09ba164ad44a288 -> sql-bench/Data/ATIS/stop1.txt sql-bench/Data/ATIS/time_interval.txt: Rename: BitKeeper/deleted/.del-time_interval.txt~a1def62e267a59b2 -> sql-bench/Data/ATIS/time_interval.txt sql-bench/Data/ATIS/stop.txt: Rename: BitKeeper/deleted/.del-stop.txt~31fb564e1f415e34 -> sql-bench/Data/ATIS/stop.txt sql-bench/Data/ATIS/restriction.txt: Rename: BitKeeper/deleted/.del-restriction.txt~6ae208924617784a -> sql-bench/Data/ATIS/restriction.txt sql-bench/Data/ATIS/state.txt: Rename: BitKeeper/deleted/.del-state.txt~9dd470ce14075b90 -> sql-bench/Data/ATIS/state.txt sql-bench/Data/ATIS/restrict_class.txt: Rename: BitKeeper/deleted/.del-restrict_class.txt~2f741bf0ea498f84 -> sql-bench/Data/ATIS/restrict_class.txt sql-bench/Data/ATIS/month_name.txt: Rename: BitKeeper/deleted/.del-month_name.txt~4c44f7a323d57d92 -> sql-bench/Data/ATIS/month_name.txt sql-bench/Data/ATIS/restrict_carrier.txt: Rename: BitKeeper/deleted/.del-restrict_carrier.txt~925b5492f3f9cba3 -> sql-bench/Data/ATIS/restrict_carrier.txt sql-bench/Data/ATIS/ground_service.txt: Rename: BitKeeper/deleted/.del-ground_service.txt~1087e477e86e84c -> sql-bench/Data/ATIS/ground_service.txt sql-bench/Data/ATIS/food_service.txt: Rename: BitKeeper/deleted/.del-food_service.txt~66d95a150c28458 -> sql-bench/Data/ATIS/food_service.txt sql-bench/Data/ATIS/flight_day.txt: Rename: BitKeeper/deleted/.del-flight_day.txt~76868d6d265d441e -> sql-bench/Data/ATIS/flight_day.txt sql-bench/Data/ATIS/flight_fare.txt: Rename: BitKeeper/deleted/.del-flight_fare.txt~d7322593c8530487 -> sql-bench/Data/ATIS/flight_fare.txt sql-bench/Data/ATIS/flight_class.txt: Rename: BitKeeper/deleted/.del-flight_class.txt~1801101474c29098 -> sql-bench/Data/ATIS/flight_class.txt sql-bench/Data/ATIS/fconnection.txt: Rename: BitKeeper/deleted/.del-fconnection.txt~e0ef6a8b5560a713 -> sql-bench/Data/ATIS/fconnection.txt sql-bench/Data/ATIS/flight.txt: Rename: BitKeeper/deleted/.del-flight.txt~e5065423760e99eb -> sql-bench/Data/ATIS/flight.txt sql-bench/Data/ATIS/fare.txt: Rename: BitKeeper/deleted/.del-fare.txt~ea0652f490bc24a6 -> sql-bench/Data/ATIS/fare.txt sql-bench/Data/ATIS/day_name.txt: Rename: BitKeeper/deleted/.del-day_name.txt~f813b215955d894c -> sql-bench/Data/ATIS/day_name.txt sql-bench/Data/ATIS/dual_carrier.txt: Rename: BitKeeper/deleted/.del-dual_carrier.txt~a7dd776224fbd92b -> sql-bench/Data/ATIS/dual_carrier.txt sql-bench/Data/ATIS/date_day.txt: Rename: BitKeeper/deleted/.del-date_day.txt~4e9a282fcf54cfd8 -> sql-bench/Data/ATIS/date_day.txt sql-bench/Data/ATIS/compound_class.txt: Rename: BitKeeper/deleted/.del-compound_class.txt~d4a2f1b7f96340b9 -> sql-bench/Data/ATIS/compound_class.txt sql-bench/Data/ATIS/connect_leg.txt: Rename: BitKeeper/deleted/.del-connect_leg.txt~f97b6e94e108bb36 -> sql-bench/Data/ATIS/connect_leg.txt sql-bench/Data/ATIS/code_description.txt: Rename: BitKeeper/deleted/.del-code_description.txt~f9117373e438b0e2 -> sql-bench/Data/ATIS/code_description.txt sql-bench/Data/ATIS/city.txt: Rename: BitKeeper/deleted/.del-city.txt~d96dd6d073344d2e -> sql-bench/Data/ATIS/city.txt sql-bench/Data/ATIS/class_of_service.txt: Rename: BitKeeper/deleted/.del-class_of_service.txt~21f6b9848b8c76d -> sql-bench/Data/ATIS/class_of_service.txt sql-bench/Data/ATIS/airport_service.txt: Rename: BitKeeper/deleted/.del-airport_service.txt~6ee6d5b852b3e38 -> sql-bench/Data/ATIS/airport_service.txt sql-bench/Data/ATIS/airline.txt: Rename: BitKeeper/deleted/.del-airline.txt~a79f8eadf853f2c8 -> sql-bench/Data/ATIS/airline.txt sql-bench/Data/ATIS/airport.txt: Rename: BitKeeper/deleted/.del-airport.txt~59c78514130e1f45 -> sql-bench/Data/ATIS/airport.txt sql-bench/Data/ATIS/aircraft.txt: Rename: BitKeeper/deleted/.del-aircraft.txt~15e4de7ab37c92d3 -> sql-bench/Data/ATIS/aircraft.txt sql-bench/TODO: Rename: BitKeeper/deleted/.del-TODO~cac6d7a63c426ae5 -> sql-bench/TODO sql-bench/limits/sybase.cfg: Rename: BitKeeper/deleted/.del-sybase.cfg~c4636b12767b3f14 -> sql-bench/limits/sybase.cfg sql-bench/limits/solid-nt4.cfg: Rename: BitKeeper/deleted/.del-solid-nt4.cfg~cca779f0c9e29d31 -> sql-bench/limits/solid-nt4.cfg sql-bench/limits/solid.cfg: Rename: BitKeeper/deleted/.del-solid.cfg~5ae0e4342eadb0fb -> sql-bench/limits/solid.cfg sql-bench/limits/pg.cfg: Rename: BitKeeper/deleted/.del-pg.cfg~db59cf39a5d417be -> sql-bench/limits/pg.cfg sql-bench/limits/mysql.cfg: Rename: BitKeeper/deleted/.del-mysql.cfg~9cab20a8771b93cf -> sql-bench/limits/mysql.cfg sql-bench/limits/oracle.cfg: Rename: BitKeeper/deleted/.del-oracle.cfg~affab21af8f438fd -> sql-bench/limits/oracle.cfg sql-bench/limits/mysql-4.1.cfg: Rename: BitKeeper/deleted/.del-mysql-4.1.cfg~b6c5e74aefc99e3c -> sql-bench/limits/mysql-4.1.cfg sql-bench/limits/mysql-3.23.cfg: Rename: BitKeeper/deleted/.del-mysql-3.23.cfg~3cf9d6be54b77a3c -> sql-bench/limits/mysql-3.23.cfg sql-bench/limits/mysql-4.0.cfg: Rename: BitKeeper/deleted/.del-mysql-4.0.cfg~6c9d63c85b5ef574 -> sql-bench/limits/mysql-4.0.cfg sql-bench/limits/mysql-3.22.cfg: Rename: BitKeeper/deleted/.del-mysql-3.22.cfg~e706f26a161175cd -> sql-bench/limits/mysql-3.22.cfg sql-bench/limits/msql.cfg: Rename: BitKeeper/deleted/.del-msql.cfg~52710b12932cceb9 -> sql-bench/limits/msql.cfg sql-bench/limits/ms-sql65.cfg: Rename: BitKeeper/deleted/.del-ms-sql65.cfg~6b9bc3c460dbee05 -> sql-bench/limits/ms-sql65.cfg sql-bench/limits/mimer.cfg: Rename: BitKeeper/deleted/.del-mimer.cfg~234e6c1c3c47b612 -> sql-bench/limits/mimer.cfg sql-bench/limits/ms-sql.cfg: Rename: BitKeeper/deleted/.del-ms-sql.cfg~1907964264d2786a -> sql-bench/limits/ms-sql.cfg sql-bench/limits/interbase.cfg: Rename: BitKeeper/deleted/.del-interbase.cfg~c6951a0376cc6ff3 -> sql-bench/limits/interbase.cfg sql-bench/limits/interbase-dialect3.cfg: Rename: BitKeeper/deleted/.del-interbase-dialect3.cfg~46277bdfc74c667a -> sql-bench/limits/interbase-dialect3.cfg sql-bench/limits/interbase-superserver.cfg: Rename: BitKeeper/deleted/.del-interbase-superserver.cfg~22501198689243b0 -> sql-bench/limits/interbase-superserver.cfg sql-bench/limits/interbase-dialect1.cfg: Rename: BitKeeper/deleted/.del-interbase-dialect1.cfg~659206b5b9a11036 -> sql-bench/limits/interbase-dialect1.cfg sql-bench/limits/empress.cfg: Rename: BitKeeper/deleted/.del-empress.cfg~1f97f34d6560a499 -> sql-bench/limits/empress.cfg sql-bench/limits/frontbase.cfg: Rename: BitKeeper/deleted/.del-frontbase.cfg~71369e9c002696e -> sql-bench/limits/frontbase.cfg sql-bench/limits/db2.cfg: Rename: BitKeeper/deleted/.del-db2.cfg~711099b4d7906959 -> sql-bench/limits/db2.cfg sql-bench/limits/access.cfg: Rename: BitKeeper/deleted/.del-access.cfg~5239ea3655b7bba0 -> sql-bench/limits/access.cfg sql-bench/limits/access_odbc.cfg: Rename: BitKeeper/deleted/.del-access_odbc.cfg~34b4cf0eda56c4b1 -> sql-bench/limits/access_odbc.cfg sql-bench/limits/Informix.cfg: Rename: BitKeeper/deleted/.del-Informix.cfg~b94188e1ececb51b -> sql-bench/limits/Informix.cfg sql-bench/limits/Adabas.cfg: Rename: BitKeeper/deleted/.del-Adabas.cfg~343ed4e7f8b02111 -> sql-bench/limits/Adabas.cfg sql-bench/README: Rename: BitKeeper/deleted/.del-README~b1aa0c1bf9f5eb5e -> sql-bench/README BitKeeper/deleted/.del-create-pg_fast-Linux_2.2.14_my_SMP_i686-crashed: Delete: sql-bench/Results/create-pg_fast-Linux_2.2.14_my_SMP_i686-crashed Makefile.am: Added back sql-bench configure.in: Added back sql-bench dbug/dbug.c: Fixed memory leak in _db_set() This is not a complete fix as we can still get memory leaks if we do any of the following: mysqld --debug --debug CAll DBUG_SET or DBUG_SET_INITIAL more than once in a program Use SET @@global.debug=xxxx At some point we should fix the above, but this is not critical for normal operation (only for debugging) Bug #24497 Valgrind warning: get_one_option Note that all changes to _db_set_ is only a variable access change, and can be ignored while reviewing the bug fix. mysql-test/t/flush_read_lock_kill-master.opt: Added '+' to option, to be able to use this together with --debug mysql-test/valgrind.supp: Removed warning that is now fixed mysys/ptr_cmp.c: Fixed wrong pointer read (probably never used) scripts/make_binary_distribution.sh: Added back sql_bench sql/field.h: Removed class function that was identical in parent class sql/mysqld.cc: Removed some calls to my_thread_init() / my_thread_end() that was not needed. Only call DBUG_SET_INITAL, not DBUG_SET (Fixes memory leak in dbug) Mark some code as deadcode sql/net_serv.cc: Add information about from where error comes sql-bench/bench-init.pl.sh: Cleaned up help text sql-bench/server-cfg.sh: Don't write '/' after server name of no ssl version sql-common/client.c: Don't call net_clear() on COM_QUIT. This avoids a warning from net_clear() after shutdown: "skipped ## bytes from file" BUG#21428: skipped 9 bytes from file: socket (3)" on "mysqladmin shutdown" sql/sql_parse.cc: Added comment sql/table.h: Removed compiler warning
19 years ago
my_strtoll10-x86.s: Corrected spelling in copyright text Makefile.am: Don't update the files from BitKeeper Many files: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header Many files: Added GPL copyright text Removed files: Docs/Support/colspec-fix.pl Docs/Support/docbook-fixup.pl Docs/Support/docbook-prefix.pl Docs/Support/docbook-split Docs/Support/make-docbook Docs/Support/make-makefile Docs/Support/test-make-manual Docs/Support/test-make-manual-de Docs/Support/xwf CMakeLists.txt: Added GPL copyright text bdb/CMakeLists.txt: Added GPL copyright text client/CMakeLists.txt: Added GPL copyright text dbug/CMakeLists.txt: Added GPL copyright text extra/CMakeLists.txt: Added GPL copyright text extra/yassl/CMakeLists.txt: Added GPL copyright text extra/yassl/taocrypt/CMakeLists.txt: Added GPL copyright text heap/CMakeLists.txt: Added GPL copyright text innobase/CMakeLists.txt: Added GPL copyright text libmysql/CMakeLists.txt: Added GPL copyright text myisam/CMakeLists.txt: Added GPL copyright text myisammrg/CMakeLists.txt: Added GPL copyright text mysys/CMakeLists.txt: Added GPL copyright text regex/CMakeLists.txt: Added GPL copyright text server-tools/CMakeLists.txt: Added GPL copyright text server-tools/instance-manager/CMakeLists.txt: Added GPL copyright text sql/CMakeLists.txt: Added GPL copyright text sql/examples/CMakeLists.txt: Added GPL copyright text strings/CMakeLists.txt: Added GPL copyright text tests/CMakeLists.txt: Added GPL copyright text vio/CMakeLists.txt: Added GPL copyright text zlib/CMakeLists.txt: Added GPL copyright text VC++Files/copy_mysql_files.bat: Added GPL copyright text extra/yassl/src/make.bat: Added GPL copyright text extra/yassl/taocrypt/benchmark/make.bat: Added GPL copyright text extra/yassl/taocrypt/src/make.bat: Added GPL copyright text extra/yassl/taocrypt/test/make.bat: Added GPL copyright text extra/yassl/testsuite/make.bat: Added GPL copyright text Docs/Support/generate-text-files.pl: Added GPL copyright text VC++Files/prepare: Added GPL copyright text VC++Files/test1/mysql_thr.c: Added GPL copyright text VC++Files/thr_test/thr_test.c: Added GPL copyright text include/help_end.h: Added GPL copyright text include/help_start.h: Added GPL copyright text mysql-test/install_test_db.sh: Added GPL copyright text mysql-test/my_create_tables.c: Added GPL copyright text mysql-test/ndb/ndbcluster.sh: Added GPL copyright text scripts/fill_func_tables.sh: Added GPL copyright text scripts/fill_help_tables.sh: Added GPL copyright text scripts/mysql_create_system_tables.sh: Added GPL copyright text scripts/mysql_install_db.sh: Added GPL copyright text scripts/mysql_upgrade_shell.sh: Added GPL copyright text server-tools/instance-manager/IMService.cpp: Added GPL copyright text server-tools/instance-manager/IMService.h: Added GPL copyright text server-tools/instance-manager/WindowsService.cpp: Added GPL copyright text server-tools/instance-manager/WindowsService.h: Added GPL copyright text server-tools/instance-manager/portability.h: Added GPL copyright text strings/ctype-extra.c: Added GPL copyright text strings/dump_map.c: Added GPL copyright text strings/uca-dump.c: Added GPL copyright text strings/utr11-dump.c: Added GPL copyright text win/build-vs71.bat: Added GPL copyright text win/build-vs8.bat: Added GPL copyright text win/build-vs8_x64.bat: Added GPL copyright text win/configure.js: Added GPL copyright text mysql-test/lib/mtr_cases.pl: Added GPL copyright text mysql-test/lib/mtr_diff.pl: Added GPL copyright text mysql-test/lib/mtr_gcov.pl: Added GPL copyright text mysql-test/lib/mtr_gprof.pl: Added GPL copyright text mysql-test/lib/mtr_im.pl: Added GPL copyright text mysql-test/lib/mtr_io.pl: Added GPL copyright text mysql-test/lib/mtr_match.pl: Added GPL copyright text mysql-test/lib/mtr_misc.pl: Added GPL copyright text mysql-test/lib/mtr_process.pl: Added GPL copyright text mysql-test/lib/mtr_report.pl: Added GPL copyright text mysql-test/lib/mtr_stress.pl: Added GPL copyright text mysql-test/lib/mtr_timer.pl: Added GPL copyright text mysql-test/lib/mtr_unique.pl: Added GPL copyright text strings/my_strtoll10-x86.s: Corrected spelling in copyright text BUILD/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header Docs/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header SSL/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header bdb/Makefile.in: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header client/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header client/client_priv.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header client/completion_hash.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header client/mysqladmin.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header client/mysqlimport.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header client/mysqlshow.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header dbug/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header extra/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/_check.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/_rectest.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/heapdef.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_block.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_clear.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_close.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_create.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_delete.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_extra.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_hash.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_info.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_open.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_panic.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_rename.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_rfirst.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_rkey.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_rlast.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_rnext.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_rprev.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_rrnd.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_rsame.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_scan.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_static.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_test1.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_test2.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_update.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header heap/hp_write.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header include/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header include/my_aes.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header include/my_getopt.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header include/my_handler.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header include/my_time.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header include/mysql_time.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header include/rijndael.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header include/sha1.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header include/sql_common.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header libmysql/client_settings.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header libmysqld/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header libmysqld/emb_qcache.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header libmysqld/embedded_priv.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header man/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/ft_boolean_search.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/ft_eval.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/ft_nlq_search.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/ft_parser.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/ft_static.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/ft_stem.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/ft_stopwords.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/ft_test1.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/ft_test1.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/ft_update.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/ftdefs.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/fulltext.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_cache.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_changed.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_check.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_checksum.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_close.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_create.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_dbug.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_delete.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_delete_all.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_delete_table.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_dynrec.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_extra.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_info.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_key.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_locking.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_log.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_open.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_packrec.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_page.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_panic.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_preload.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_range.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_rename.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_rfirst.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_rkey.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_rlast.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_rnext.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_rnext_same.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_rprev.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_rrnd.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_rsame.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_rsamepos.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_scan.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_search.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_static.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_statrec.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_test1.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_test2.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_test3.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_unique.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_update.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/mi_write.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/myisam_ftdump.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/myisamdef.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/myisamlog.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/myisampack.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/rt_index.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/rt_index.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/rt_key.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/rt_mbr.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/rt_mbr.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/rt_split.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/rt_test.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/sort.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/sp_defs.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisam/sp_test.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_close.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_create.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_def.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_delete.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_extra.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_info.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_locking.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_open.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_panic.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_queue.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_range.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_rfirst.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_rkey.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_rlast.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_rnext.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_rnext_same.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_rprev.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_rrnd.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_rsame.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_static.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_update.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header myisammrg/myrg_write.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header mysql-test/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header mysys/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header mysys/my_aes.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header mysys/my_gethostbyname.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header mysys/my_gethwaddr.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header mysys/my_getopt.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header mysys/my_getsystime.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header mysys/my_handler.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header mysys/my_port.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header mysys/my_semaphore.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header mysys/rijndael.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header mysys/sha1.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header os2/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header os2/ReadMe.txt: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header os2/include/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header os2/include/sys/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header pstack/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header regex/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header scripts/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header scripts/mysql_config.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/listener.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/listener.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/log.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/log.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/manager.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/manager.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/messages.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/messages.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/mysql_connection.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/mysql_connection.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/mysqlmanager.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/options.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/options.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/priv.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/priv.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/protocol.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/protocol.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/thread_registry.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/thread_registry.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/user_map.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header server-tools/instance-manager/user_map.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/as3ap.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/bench-count-distinct.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/bench-init.pl.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/compare-results.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/copy-db.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/crash-me.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/print-limit-table: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/run-all-tests.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/server-cfg.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/test-ATIS.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/test-alter-table.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/test-big-tables.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/test-connect.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/test-create.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/test-insert.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/test-select.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/test-transactions.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-bench/test-wisconsin.sh: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-common/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql-common/my_time.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/client_settings.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/custom_conf.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/derror.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/des_key_file.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/discover.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/field.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/field.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/filesort.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/frm_crypt.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/gen_lex_hash.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/gstream.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/ha_berkeley.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/ha_berkeley.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/ha_heap.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/ha_heap.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/ha_myisam.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/ha_myisam.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/ha_myisammrg.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/ha_myisammrg.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/handler.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/handler.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/hash_filo.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/hash_filo.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/hostname.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/init.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/item.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/item.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/item_buff.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/item_cmpfunc.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/item_create.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/item_func.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/item_geofunc.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/item_strfunc.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/item_sum.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/item_timefunc.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/item_uniq.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/item_uniq.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/key.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/lex_symbol.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/lock.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/log_event.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/matherr.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/mf_iocache.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/my_decimal.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/my_decimal.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/my_lock.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/opt_range.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/opt_range.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/password.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/procedure.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/procedure.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/protocol.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/records.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/repl_failsafe.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/repl_failsafe.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/set_var.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/spatial.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_acl.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_analyse.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_analyse.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_base.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_cache.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_class.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_class.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_client.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_crypt.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_crypt.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_cursor.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_cursor.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_do.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_insert.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_lex.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_lex.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_list.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_load.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_manager.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_manager.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_map.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_map.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_olap.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_rename.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_repl.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_repl.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_select.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_select.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_test.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_udf.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/sql_update.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/structs.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/table.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/table.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/thr_malloc.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/time.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/unireg.cc: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header sql/unireg.h: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/bmove_upp-sparc.s: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/macros.asm: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/ptr_cmp.asm: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/strappend-sparc.s: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/strend-sparc.s: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/strings.asm: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/strinstr-sparc.s: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/strmake-sparc.s: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/strmov-sparc.s: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/strnmov-sparc.s: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/strstr-sparc.s: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/strxmov-sparc.s: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header strings/strxmov.asm: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header support-files/MacOSX/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header support-files/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header tests/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header tests/deadlock_test.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header tools/mysqlmanager.c: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header vio/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header win/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header innobase/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header innobase/ibuf/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header innobase/include/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header innobase/os/Makefile.am: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header ndb/include/Makefile.am: Added GPL copyright text ndb/src/common/debugger/Makefile.am: Added GPL copyright text ndb/src/common/debugger/signaldata/Makefile.am: Added GPL copyright text ndb/src/common/logger/Makefile.am: Added GPL copyright text ndb/src/common/mgmcommon/Makefile.am: Added GPL copyright text ndb/src/common/transporter/Makefile.am: Added GPL copyright text ndb/src/common/util/Makefile.am: Added GPL copyright text ndb/src/cw/cpcd/Makefile.am: Added GPL copyright text ndb/src/kernel/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/backup/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/cmvmi/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/dbacc/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/dbdict/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/dbdih/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/dblqh/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/dbtc/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/dbtup/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/dbtux/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/dbutil/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/ndbcntr/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/ndbfs/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/qmgr/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/suma/Makefile.am: Added GPL copyright text ndb/src/kernel/blocks/trix/Makefile.am: Added GPL copyright text ndb/src/kernel/error/Makefile.am: Added GPL copyright text ndb/src/kernel/vm/Makefile.am: Added GPL copyright text ndb/src/mgmapi/Makefile.am: Added GPL copyright text ndb/src/mgmclient/Makefile.am: Added GPL copyright text ndb/src/mgmsrv/Makefile.am: Added GPL copyright text ndb/src/ndbapi/Makefile.am: Added GPL copyright text ndb/test/ndbapi/Makefile.am: Added GPL copyright text ndb/test/ndbapi/bank/Makefile.am: Added GPL copyright text ndb/test/run-test/Makefile.am: Added GPL copyright text ndb/test/src/Makefile.am: Added GPL copyright text ndb/test/tools/Makefile.am: Added GPL copyright text ndb/tools/Makefile.am: Added GPL copyright text scripts/make_binary_distribution.sh: Added GPL copyright text scripts/make_sharedlib_distribution.sh: Added GPL copyright text scripts/make_win_bin_dist: Added GPL copyright text scripts/make_win_src_distribution.sh: Added GPL copyright text scripts/mysql_convert_table_format.sh: Added GPL copyright text scripts/mysql_explain_log.sh: Added GPL copyright text scripts/mysql_find_rows.sh: Added GPL copyright text scripts/mysql_fix_privilege_tables.sh: Added GPL copyright text scripts/mysql_zap.sh: Added GPL copyright text scripts/mysqlbug.sh: Added GPL copyright text BitKeeper/deleted/.del-colspec-fix.pl: Delete: Docs/Support/colspec-fix.pl BitKeeper/deleted/.del-docbook-fixup.pl: Delete: Docs/Support/docbook-fixup.pl BitKeeper/deleted/.del-docbook-prefix.pl: Delete: Docs/Support/docbook-prefix.pl BitKeeper/deleted/.del-docbook-split: Delete: Docs/Support/docbook-split BitKeeper/deleted/.del-make-docbook: Delete: Docs/Support/make-docbook BitKeeper/deleted/.del-make-makefile: Delete: Docs/Support/make-makefile BitKeeper/deleted/.del-test-make-manual-de: Delete: Docs/Support/test-make-manual-de BitKeeper/deleted/.del-test-make-manual: Delete: Docs/Support/test-make-manual BitKeeper/deleted/.del-xwf: Delete: Docs/Support/xwf Makefile.am: Don't update the files from BitKeeper extra/yassl/Makefile.am: Don't update the files from BitKeeper extra/yassl/taocrypt/Makefile.am: Don't update the files from BitKeeper extra/yassl/taocrypt/benchmark/Makefile.am: Don't update the files from BitKeeper extra/yassl/taocrypt/test/Makefile.am: Don't update the files from BitKeeper innobase/btr/Makefile.am: Don't update the files from BitKeeper innobase/buf/Makefile.am: Don't update the files from BitKeeper innobase/data/Makefile.am: Don't update the files from BitKeeper innobase/dict/Makefile.am: Don't update the files from BitKeeper innobase/dyn/Makefile.am: Don't update the files from BitKeeper innobase/eval/Makefile.am: Don't update the files from BitKeeper innobase/fil/Makefile.am: Don't update the files from BitKeeper innobase/fsp/Makefile.am: Don't update the files from BitKeeper innobase/fut/Makefile.am: Don't update the files from BitKeeper innobase/ha/Makefile.am: Don't update the files from BitKeeper innobase/lock/Makefile.am: Don't update the files from BitKeeper innobase/log/Makefile.am: Don't update the files from BitKeeper innobase/mach/Makefile.am: Don't update the files from BitKeeper innobase/mem/Makefile.am: Don't update the files from BitKeeper innobase/mtr/Makefile.am: Don't update the files from BitKeeper innobase/page/Makefile.am: Don't update the files from BitKeeper innobase/pars/Makefile.am: Don't update the files from BitKeeper innobase/que/Makefile.am: Don't update the files from BitKeeper innobase/read/Makefile.am: Don't update the files from BitKeeper innobase/rem/Makefile.am: Don't update the files from BitKeeper innobase/row/Makefile.am: Don't update the files from BitKeeper innobase/srv/Makefile.am: Don't update the files from BitKeeper innobase/sync/Makefile.am: Don't update the files from BitKeeper innobase/thr/Makefile.am: Don't update the files from BitKeeper innobase/trx/Makefile.am: Don't update the files from BitKeeper innobase/usr/Makefile.am: Don't update the files from BitKeeper innobase/ut/Makefile.am: Don't update the files from BitKeeper libmysql/Makefile.am: Don't update the files from BitKeeper libmysql_r/Makefile.am: Don't update the files from BitKeeper ndb/Makefile.am: Don't update the files from BitKeeper ndb/docs/Makefile.am: Don't update the files from BitKeeper ndb/src/Makefile.am: Don't update the files from BitKeeper ndb/src/common/Makefile.am: Don't update the files from BitKeeper ndb/src/common/portlib/Makefile.am: Don't update the files from BitKeeper ndb/src/cw/Makefile.am: Don't update the files from BitKeeper ndb/src/kernel/blocks/Makefile.am: Don't update the files from BitKeeper ndb/test/Makefile.am: Don't update the files from BitKeeper pstack/aout/Makefile.am: Don't update the files from BitKeeper server-tools/Makefile.am: Don't update the files from BitKeeper zlib/Makefile.am: Don't update the files from BitKeeper ndb/config/common.mk.am: Added GPL copyright text ndb/config/type_kernel.mk.am: Added GPL copyright text ndb/config/type_mgmapiclient.mk.am: Added GPL copyright text ndb/config/type_ndbapi.mk.am: Added GPL copyright text ndb/config/type_ndbapiclient.mk.am: Added GPL copyright text ndb/config/type_ndbapitest.mk.am: Added GPL copyright text ndb/config/type_ndbapitools.mk.am: Added GPL copyright text ndb/config/type_util.mk.am: Added GPL copyright text ndb/include/kernel/kernel_config_parameters.h: Added GPL copyright text ndb/include/kernel/signaldata/CntrStart.hpp: Added GPL copyright text ndb/include/kernel/signaldata/ReadConfig.hpp: Added GPL copyright text ndb/include/kernel/signaldata/UpgradeStartup.hpp: Added GPL copyright text ndb/include/mgmapi/mgmapi_config_parameters.h: Added GPL copyright text ndb/include/mgmapi/mgmapi_config_parameters_debug.h: Added GPL copyright text ndb/include/ndb_net.h: Added GPL copyright text ndb/include/util/ConfigValues.hpp: Added GPL copyright text ndb/src/common/debugger/signaldata/CntrStart.cpp: Added GPL copyright text ndb/src/common/debugger/signaldata/ReadNodesConf.cpp: Added GPL copyright text ndb/src/common/debugger/signaldata/print.awk: Added GPL copyright text ndb/src/common/util/Bitmask.cpp: Added GPL copyright text ndb/src/common/util/ConfigValues.cpp: Added GPL copyright text ndb/src/common/util/new.cpp: Added GPL copyright text ndb/src/common/util/testConfigValues/testConfigValues.cpp: Added GPL copyright text ndb/src/kernel/blocks/dbdict/Master_AddTable.sfl: Added GPL copyright text ndb/src/kernel/blocks/dbdict/Slave_AddTable.sfl: Added GPL copyright text ndb/src/mgmapi/mgmapi_configuration.cpp: Added GPL copyright text
19 years ago
Added back sql-bench directory, so that one can more easily run benchmarks on a server and add new benchmarks for new optimizations Fixed memory leak in _db_set() (Bug#24497 Valgrind warning: get_one_option) Don't call net_clear() on COM_QUIT. This avoids a warning from net_clear() after shutdown: "skipped ## bytes from file" BUG#21428: skipped 9 bytes from file: socket (3)" on "mysqladmin shutdown" sql-bench/test-wisconsin.sh: Rename: BitKeeper/deleted/.del-test-wisconsin.sh~c0b86821b5f95f26 -> sql-bench/test-wisconsin.sh sql-bench/test-transactions.sh: Rename: BitKeeper/deleted/.del-test-transactions.sh~c1c892f10c40caf -> sql-bench/test-transactions.sh sql-bench/test-insert.sh: Rename: BitKeeper/deleted/.del-test-insert.sh~893bfac9dedb79a7 -> sql-bench/test-insert.sh sql-bench/test-select.sh: Rename: BitKeeper/deleted/.del-test-select.sh~6d5cc770acf11be6 -> sql-bench/test-select.sh sql-bench/test-create.sh: Rename: BitKeeper/deleted/.del-test-create.sh~f9a1ea38c191b17a -> sql-bench/test-create.sh sql-bench/test-big-tables.sh: Rename: BitKeeper/deleted/.del-test-big-tables.sh~5b1b0c5fb623565a -> sql-bench/test-big-tables.sh sql-bench/test-connect.sh: Rename: BitKeeper/deleted/.del-test-connect.sh~382a728c949ee075 -> sql-bench/test-connect.sh sql-bench/test-ATIS.sh: Rename: BitKeeper/deleted/.del-test-ATIS.sh~e8ebff7086c95773 -> sql-bench/test-ATIS.sh sql-bench/test-alter-table.sh: Rename: BitKeeper/deleted/.del-test-alter-table.sh~eba6cfa9972fcced -> sql-bench/test-alter-table.sh sql-bench/innotest2b.sh: Rename: BitKeeper/deleted/.del-innotest2b.sh~7b99ece835e8dff3 -> sql-bench/innotest2b.sh sql-bench/run-all-tests.sh: Rename: BitKeeper/deleted/.del-run-all-tests.sh~41d6da1cf211ee95 -> sql-bench/run-all-tests.sh sql-bench/innotest2.sh: Rename: BitKeeper/deleted/.del-innotest2.sh~9c14df528285603 -> sql-bench/innotest2.sh sql-bench/innotest2a.sh: Rename: BitKeeper/deleted/.del-innotest2a.sh~e01d016a7cafdc0b -> sql-bench/innotest2a.sh sql-bench/innotest1a.sh: Rename: BitKeeper/deleted/.del-innotest1a.sh~c64f4610ae1e26fe -> sql-bench/innotest1a.sh sql-bench/innotest1b.sh: Rename: BitKeeper/deleted/.del-innotest1b.sh~aafd0819ae84da7b -> sql-bench/innotest1b.sh sql-bench/innotest1.sh: Rename: BitKeeper/deleted/.del-innotest1.sh~aa36bce09ca783c7 -> sql-bench/innotest1.sh sql-bench/crash-me.sh: Rename: BitKeeper/deleted/.del-crash-me.sh~2fa881d0b40339c8 -> sql-bench/crash-me.sh sql-bench/graph-compare-results.sh: Rename: BitKeeper/deleted/.del-graph-compare-results.sh~7e4e28b3591b4542 -> sql-bench/graph-compare-results.sh sql-bench/copy-db.sh: Rename: BitKeeper/deleted/.del-copy-db.sh~e8116afb93144ccd -> sql-bench/copy-db.sh sql-bench/compare-results.sh: Rename: BitKeeper/deleted/.del-compare-results.sh~a9e26e2644c694b3 -> sql-bench/compare-results.sh sql-bench/bench-count-distinct.sh: Rename: BitKeeper/deleted/.del-bench-count-distinct.sh~a92f174271a831d7 -> sql-bench/bench-count-distinct.sh sql-bench/as3ap.sh: Rename: BitKeeper/deleted/.del-as3ap.sh~f54eebbd8d34c9b6 -> sql-bench/as3ap.sh sql-bench/Comments/Informix.crash-me: Rename: BitKeeper/deleted/.del-Informix.crash-me~51ab5b717cefe74 -> sql-bench/Comments/Informix.crash-me sql-bench/Comments/postgres.crash-me: Rename: BitKeeper/deleted/.del-postgres.crash-me~eacac145c3e30f17 -> sql-bench/Comments/postgres.crash-me sql-bench/Comments/Empress.crash-me: Rename: BitKeeper/deleted/.del-Empress.crash-me~bdaff0c68ce10f02 -> sql-bench/Comments/Empress.crash-me sql-bench/Comments/Adabas.crash-me: Rename: BitKeeper/deleted/.del-Adabas.crash-me~ce88ba1a540971ac -> sql-bench/Comments/Adabas.crash-me sql-bench/Comments/Access.crash-me: Rename: BitKeeper/deleted/.del-Access.crash-me~bb457ec282d939b6 -> sql-bench/Comments/Access.crash-me sql-bench/Comments/postgres.benchmark: Rename: BitKeeper/deleted/.del-postgres.benchmark~4d30890732b784a -> sql-bench/Comments/postgres.benchmark sql-bench/Comments/mysql.benchmark: Rename: BitKeeper/deleted/.del-mysql.benchmark~4d8729c0937456fc -> sql-bench/Comments/mysql.benchmark sql-bench/Comments/FrontBase.benchmark: Rename: BitKeeper/deleted/.del-FrontBase.benchmark~217041ef18274c2e -> sql-bench/Comments/FrontBase.benchmark sql-bench/Comments/interbase: Rename: BitKeeper/deleted/.del-interbase~cdad59622b4d6f3 -> sql-bench/Comments/interbase sql-bench/uname.bat: Rename: BitKeeper/deleted/.del-uname.bat~a6d933d2ee9314c -> sql-bench/uname.bat sql-bench/pwd.bat: Rename: BitKeeper/deleted/.del-pwd.bat~9b64050849abf51 -> sql-bench/pwd.bat sql-bench/example.bat: Rename: BitKeeper/deleted/.del-example.bat~22d0170bccf0f030 -> sql-bench/example.bat sql-bench/Makefile.am: Rename: BitKeeper/deleted/.del-Makefile.am~7b07da85b2e9375 -> sql-bench/Makefile.am sql-bench/Data/ATIS/transport.txt: Rename: BitKeeper/deleted/.del-transport.txt~fa4ca40735f8354c -> sql-bench/Data/ATIS/transport.txt sql-bench/Data/ATIS/time_zone.txt: Rename: BitKeeper/deleted/.del-time_zone.txt~4171f9ca732f65c0 -> sql-bench/Data/ATIS/time_zone.txt sql-bench/Data/Wisconsin/tenk.data: Rename: BitKeeper/deleted/.del-tenk.data~6aeaebdd534e458e -> sql-bench/Data/Wisconsin/tenk.data sql-bench/Data/Wisconsin/onek.data: Rename: BitKeeper/deleted/.del-onek.data~6cd1edaf596a7f7 -> sql-bench/Data/Wisconsin/onek.data sql-bench/Data/ATIS/stop1.txt: Rename: BitKeeper/deleted/.del-stop1.txt~f09ba164ad44a288 -> sql-bench/Data/ATIS/stop1.txt sql-bench/Data/ATIS/time_interval.txt: Rename: BitKeeper/deleted/.del-time_interval.txt~a1def62e267a59b2 -> sql-bench/Data/ATIS/time_interval.txt sql-bench/Data/ATIS/stop.txt: Rename: BitKeeper/deleted/.del-stop.txt~31fb564e1f415e34 -> sql-bench/Data/ATIS/stop.txt sql-bench/Data/ATIS/restriction.txt: Rename: BitKeeper/deleted/.del-restriction.txt~6ae208924617784a -> sql-bench/Data/ATIS/restriction.txt sql-bench/Data/ATIS/state.txt: Rename: BitKeeper/deleted/.del-state.txt~9dd470ce14075b90 -> sql-bench/Data/ATIS/state.txt sql-bench/Data/ATIS/restrict_class.txt: Rename: BitKeeper/deleted/.del-restrict_class.txt~2f741bf0ea498f84 -> sql-bench/Data/ATIS/restrict_class.txt sql-bench/Data/ATIS/month_name.txt: Rename: BitKeeper/deleted/.del-month_name.txt~4c44f7a323d57d92 -> sql-bench/Data/ATIS/month_name.txt sql-bench/Data/ATIS/restrict_carrier.txt: Rename: BitKeeper/deleted/.del-restrict_carrier.txt~925b5492f3f9cba3 -> sql-bench/Data/ATIS/restrict_carrier.txt sql-bench/Data/ATIS/ground_service.txt: Rename: BitKeeper/deleted/.del-ground_service.txt~1087e477e86e84c -> sql-bench/Data/ATIS/ground_service.txt sql-bench/Data/ATIS/food_service.txt: Rename: BitKeeper/deleted/.del-food_service.txt~66d95a150c28458 -> sql-bench/Data/ATIS/food_service.txt sql-bench/Data/ATIS/flight_day.txt: Rename: BitKeeper/deleted/.del-flight_day.txt~76868d6d265d441e -> sql-bench/Data/ATIS/flight_day.txt sql-bench/Data/ATIS/flight_fare.txt: Rename: BitKeeper/deleted/.del-flight_fare.txt~d7322593c8530487 -> sql-bench/Data/ATIS/flight_fare.txt sql-bench/Data/ATIS/flight_class.txt: Rename: BitKeeper/deleted/.del-flight_class.txt~1801101474c29098 -> sql-bench/Data/ATIS/flight_class.txt sql-bench/Data/ATIS/fconnection.txt: Rename: BitKeeper/deleted/.del-fconnection.txt~e0ef6a8b5560a713 -> sql-bench/Data/ATIS/fconnection.txt sql-bench/Data/ATIS/flight.txt: Rename: BitKeeper/deleted/.del-flight.txt~e5065423760e99eb -> sql-bench/Data/ATIS/flight.txt sql-bench/Data/ATIS/fare.txt: Rename: BitKeeper/deleted/.del-fare.txt~ea0652f490bc24a6 -> sql-bench/Data/ATIS/fare.txt sql-bench/Data/ATIS/day_name.txt: Rename: BitKeeper/deleted/.del-day_name.txt~f813b215955d894c -> sql-bench/Data/ATIS/day_name.txt sql-bench/Data/ATIS/dual_carrier.txt: Rename: BitKeeper/deleted/.del-dual_carrier.txt~a7dd776224fbd92b -> sql-bench/Data/ATIS/dual_carrier.txt sql-bench/Data/ATIS/date_day.txt: Rename: BitKeeper/deleted/.del-date_day.txt~4e9a282fcf54cfd8 -> sql-bench/Data/ATIS/date_day.txt sql-bench/Data/ATIS/compound_class.txt: Rename: BitKeeper/deleted/.del-compound_class.txt~d4a2f1b7f96340b9 -> sql-bench/Data/ATIS/compound_class.txt sql-bench/Data/ATIS/connect_leg.txt: Rename: BitKeeper/deleted/.del-connect_leg.txt~f97b6e94e108bb36 -> sql-bench/Data/ATIS/connect_leg.txt sql-bench/Data/ATIS/code_description.txt: Rename: BitKeeper/deleted/.del-code_description.txt~f9117373e438b0e2 -> sql-bench/Data/ATIS/code_description.txt sql-bench/Data/ATIS/city.txt: Rename: BitKeeper/deleted/.del-city.txt~d96dd6d073344d2e -> sql-bench/Data/ATIS/city.txt sql-bench/Data/ATIS/class_of_service.txt: Rename: BitKeeper/deleted/.del-class_of_service.txt~21f6b9848b8c76d -> sql-bench/Data/ATIS/class_of_service.txt sql-bench/Data/ATIS/airport_service.txt: Rename: BitKeeper/deleted/.del-airport_service.txt~6ee6d5b852b3e38 -> sql-bench/Data/ATIS/airport_service.txt sql-bench/Data/ATIS/airline.txt: Rename: BitKeeper/deleted/.del-airline.txt~a79f8eadf853f2c8 -> sql-bench/Data/ATIS/airline.txt sql-bench/Data/ATIS/airport.txt: Rename: BitKeeper/deleted/.del-airport.txt~59c78514130e1f45 -> sql-bench/Data/ATIS/airport.txt sql-bench/Data/ATIS/aircraft.txt: Rename: BitKeeper/deleted/.del-aircraft.txt~15e4de7ab37c92d3 -> sql-bench/Data/ATIS/aircraft.txt sql-bench/TODO: Rename: BitKeeper/deleted/.del-TODO~cac6d7a63c426ae5 -> sql-bench/TODO sql-bench/limits/sybase.cfg: Rename: BitKeeper/deleted/.del-sybase.cfg~c4636b12767b3f14 -> sql-bench/limits/sybase.cfg sql-bench/limits/solid-nt4.cfg: Rename: BitKeeper/deleted/.del-solid-nt4.cfg~cca779f0c9e29d31 -> sql-bench/limits/solid-nt4.cfg sql-bench/limits/solid.cfg: Rename: BitKeeper/deleted/.del-solid.cfg~5ae0e4342eadb0fb -> sql-bench/limits/solid.cfg sql-bench/limits/pg.cfg: Rename: BitKeeper/deleted/.del-pg.cfg~db59cf39a5d417be -> sql-bench/limits/pg.cfg sql-bench/limits/mysql.cfg: Rename: BitKeeper/deleted/.del-mysql.cfg~9cab20a8771b93cf -> sql-bench/limits/mysql.cfg sql-bench/limits/oracle.cfg: Rename: BitKeeper/deleted/.del-oracle.cfg~affab21af8f438fd -> sql-bench/limits/oracle.cfg sql-bench/limits/mysql-4.1.cfg: Rename: BitKeeper/deleted/.del-mysql-4.1.cfg~b6c5e74aefc99e3c -> sql-bench/limits/mysql-4.1.cfg sql-bench/limits/mysql-3.23.cfg: Rename: BitKeeper/deleted/.del-mysql-3.23.cfg~3cf9d6be54b77a3c -> sql-bench/limits/mysql-3.23.cfg sql-bench/limits/mysql-4.0.cfg: Rename: BitKeeper/deleted/.del-mysql-4.0.cfg~6c9d63c85b5ef574 -> sql-bench/limits/mysql-4.0.cfg sql-bench/limits/mysql-3.22.cfg: Rename: BitKeeper/deleted/.del-mysql-3.22.cfg~e706f26a161175cd -> sql-bench/limits/mysql-3.22.cfg sql-bench/limits/msql.cfg: Rename: BitKeeper/deleted/.del-msql.cfg~52710b12932cceb9 -> sql-bench/limits/msql.cfg sql-bench/limits/ms-sql65.cfg: Rename: BitKeeper/deleted/.del-ms-sql65.cfg~6b9bc3c460dbee05 -> sql-bench/limits/ms-sql65.cfg sql-bench/limits/mimer.cfg: Rename: BitKeeper/deleted/.del-mimer.cfg~234e6c1c3c47b612 -> sql-bench/limits/mimer.cfg sql-bench/limits/ms-sql.cfg: Rename: BitKeeper/deleted/.del-ms-sql.cfg~1907964264d2786a -> sql-bench/limits/ms-sql.cfg sql-bench/limits/interbase.cfg: Rename: BitKeeper/deleted/.del-interbase.cfg~c6951a0376cc6ff3 -> sql-bench/limits/interbase.cfg sql-bench/limits/interbase-dialect3.cfg: Rename: BitKeeper/deleted/.del-interbase-dialect3.cfg~46277bdfc74c667a -> sql-bench/limits/interbase-dialect3.cfg sql-bench/limits/interbase-superserver.cfg: Rename: BitKeeper/deleted/.del-interbase-superserver.cfg~22501198689243b0 -> sql-bench/limits/interbase-superserver.cfg sql-bench/limits/interbase-dialect1.cfg: Rename: BitKeeper/deleted/.del-interbase-dialect1.cfg~659206b5b9a11036 -> sql-bench/limits/interbase-dialect1.cfg sql-bench/limits/empress.cfg: Rename: BitKeeper/deleted/.del-empress.cfg~1f97f34d6560a499 -> sql-bench/limits/empress.cfg sql-bench/limits/frontbase.cfg: Rename: BitKeeper/deleted/.del-frontbase.cfg~71369e9c002696e -> sql-bench/limits/frontbase.cfg sql-bench/limits/db2.cfg: Rename: BitKeeper/deleted/.del-db2.cfg~711099b4d7906959 -> sql-bench/limits/db2.cfg sql-bench/limits/access.cfg: Rename: BitKeeper/deleted/.del-access.cfg~5239ea3655b7bba0 -> sql-bench/limits/access.cfg sql-bench/limits/access_odbc.cfg: Rename: BitKeeper/deleted/.del-access_odbc.cfg~34b4cf0eda56c4b1 -> sql-bench/limits/access_odbc.cfg sql-bench/limits/Informix.cfg: Rename: BitKeeper/deleted/.del-Informix.cfg~b94188e1ececb51b -> sql-bench/limits/Informix.cfg sql-bench/limits/Adabas.cfg: Rename: BitKeeper/deleted/.del-Adabas.cfg~343ed4e7f8b02111 -> sql-bench/limits/Adabas.cfg sql-bench/README: Rename: BitKeeper/deleted/.del-README~b1aa0c1bf9f5eb5e -> sql-bench/README BitKeeper/deleted/.del-create-pg_fast-Linux_2.2.14_my_SMP_i686-crashed: Delete: sql-bench/Results/create-pg_fast-Linux_2.2.14_my_SMP_i686-crashed Makefile.am: Added back sql-bench configure.in: Added back sql-bench dbug/dbug.c: Fixed memory leak in _db_set() This is not a complete fix as we can still get memory leaks if we do any of the following: mysqld --debug --debug CAll DBUG_SET or DBUG_SET_INITIAL more than once in a program Use SET @@global.debug=xxxx At some point we should fix the above, but this is not critical for normal operation (only for debugging) Bug #24497 Valgrind warning: get_one_option Note that all changes to _db_set_ is only a variable access change, and can be ignored while reviewing the bug fix. mysql-test/t/flush_read_lock_kill-master.opt: Added '+' to option, to be able to use this together with --debug mysql-test/valgrind.supp: Removed warning that is now fixed mysys/ptr_cmp.c: Fixed wrong pointer read (probably never used) scripts/make_binary_distribution.sh: Added back sql_bench sql/field.h: Removed class function that was identical in parent class sql/mysqld.cc: Removed some calls to my_thread_init() / my_thread_end() that was not needed. Only call DBUG_SET_INITAL, not DBUG_SET (Fixes memory leak in dbug) Mark some code as deadcode sql/net_serv.cc: Add information about from where error comes sql-bench/bench-init.pl.sh: Cleaned up help text sql-bench/server-cfg.sh: Don't write '/' after server name of no ssl version sql-common/client.c: Don't call net_clear() on COM_QUIT. This avoids a warning from net_clear() after shutdown: "skipped ## bytes from file" BUG#21428: skipped 9 bytes from file: socket (3)" on "mysqladmin shutdown" sql/sql_parse.cc: Added comment sql/table.h: Removed compiler warning
19 years ago
Many files: Changed header to GPL version 2 only BUILD/Makefile.am: Changed header to GPL version 2 only Docs/Makefile.am: Changed header to GPL version 2 only Makefile.am: Changed header to GPL version 2 only SSL/Makefile.am: Changed header to GPL version 2 only bdb/Makefile.in: Changed header to GPL version 2 only client/Makefile.am: Changed header to GPL version 2 only client/client_priv.h: Changed header to GPL version 2 only client/completion_hash.cc: Changed header to GPL version 2 only client/completion_hash.h: Changed header to GPL version 2 only client/get_password.c: Changed header to GPL version 2 only client/my_readline.h: Changed header to GPL version 2 only client/mysql.cc: Changed header to GPL version 2 only client/mysql_upgrade.c: Changed header to GPL version 2 only client/mysqladmin.cc: Changed header to GPL version 2 only client/mysqlbinlog.cc: Changed header to GPL version 2 only client/mysqlcheck.c: Changed header to GPL version 2 only client/mysqldump.c: Changed header to GPL version 2 only client/mysqlimport.c: Changed header to GPL version 2 only client/mysqlmanager-pwgen.c: Changed header to GPL version 2 only client/mysqlmanagerc.c: Changed header to GPL version 2 only client/mysqlshow.c: Changed header to GPL version 2 only client/mysqltest.c: Changed header to GPL version 2 only client/readline.cc: Changed header to GPL version 2 only client/sql_string.cc: Changed header to GPL version 2 only client/sql_string.h: Changed header to GPL version 2 only cmd-line-utils/Makefile.am: Changed header to GPL version 2 only dbug/Makefile.am: Changed header to GPL version 2 only extra/Makefile.am: Changed header to GPL version 2 only extra/charset2html.c: Changed header to GPL version 2 only extra/comp_err.c: Changed header to GPL version 2 only extra/innochecksum.c: Changed header to GPL version 2 only extra/my_print_defaults.c: Changed header to GPL version 2 only extra/mysql_waitpid.c: Changed header to GPL version 2 only extra/perror.c: Changed header to GPL version 2 only extra/replace.c: Changed header to GPL version 2 only extra/resolve_stack_dump.c: Changed header to GPL version 2 only extra/resolveip.c: Changed header to GPL version 2 only heap/Makefile.am: Changed header to GPL version 2 only heap/_check.c: Changed header to GPL version 2 only heap/_rectest.c: Changed header to GPL version 2 only heap/heapdef.h: Changed header to GPL version 2 only heap/hp_block.c: Changed header to GPL version 2 only heap/hp_clear.c: Changed header to GPL version 2 only heap/hp_close.c: Changed header to GPL version 2 only heap/hp_create.c: Changed header to GPL version 2 only heap/hp_delete.c: Changed header to GPL version 2 only heap/hp_extra.c: Changed header to GPL version 2 only heap/hp_hash.c: Changed header to GPL version 2 only heap/hp_info.c: Changed header to GPL version 2 only heap/hp_open.c: Changed header to GPL version 2 only heap/hp_panic.c: Changed header to GPL version 2 only heap/hp_rename.c: Changed header to GPL version 2 only heap/hp_rfirst.c: Changed header to GPL version 2 only heap/hp_rkey.c: Changed header to GPL version 2 only heap/hp_rlast.c: Changed header to GPL version 2 only heap/hp_rnext.c: Changed header to GPL version 2 only heap/hp_rprev.c: Changed header to GPL version 2 only heap/hp_rrnd.c: Changed header to GPL version 2 only heap/hp_rsame.c: Changed header to GPL version 2 only heap/hp_scan.c: Changed header to GPL version 2 only heap/hp_static.c: Changed header to GPL version 2 only heap/hp_test1.c: Changed header to GPL version 2 only heap/hp_test2.c: Changed header to GPL version 2 only heap/hp_update.c: Changed header to GPL version 2 only heap/hp_write.c: Changed header to GPL version 2 only include/Makefile.am: Changed header to GPL version 2 only include/base64.h: Changed header to GPL version 2 only include/config-netware.h: Changed header to GPL version 2 only include/config-os2.h: Changed header to GPL version 2 only include/config-win.h: Changed header to GPL version 2 only include/decimal.h: Changed header to GPL version 2 only include/errmsg.h: Changed header to GPL version 2 only include/ft_global.h: Changed header to GPL version 2 only include/hash.h: Changed header to GPL version 2 only include/heap.h: Changed header to GPL version 2 only include/keycache.h: Changed header to GPL version 2 only include/m_ctype.h: Changed header to GPL version 2 only include/m_string.h: Changed header to GPL version 2 only include/md5.h: Changed header to GPL version 2 only include/my_aes.h: Changed header to GPL version 2 only include/my_alarm.h: Changed header to GPL version 2 only include/my_alloc.h: Changed header to GPL version 2 only include/my_base.h: Changed header to GPL version 2 only include/my_bitmap.h: Changed header to GPL version 2 only include/my_dbug.h: Changed header to GPL version 2 only include/my_dir.h: Changed header to GPL version 2 only include/my_getopt.h: Changed header to GPL version 2 only include/my_global.h: Changed header to GPL version 2 only include/my_handler.h: Changed header to GPL version 2 only include/my_libwrap.h: Changed header to GPL version 2 only include/my_list.h: Changed header to GPL version 2 only include/my_net.h: Changed header to GPL version 2 only include/my_no_pthread.h: Changed header to GPL version 2 only include/my_nosys.h: Changed header to GPL version 2 only include/my_pthread.h: Changed header to GPL version 2 only include/my_sys.h: Changed header to GPL version 2 only include/my_time.h: Changed header to GPL version 2 only include/my_tree.h: Changed header to GPL version 2 only include/my_user.h: Changed header to GPL version 2 only include/my_xml.h: Changed header to GPL version 2 only include/myisam.h: Changed header to GPL version 2 only include/myisammrg.h: Changed header to GPL version 2 only include/myisampack.h: Changed header to GPL version 2 only include/mysql.h: Changed header to GPL version 2 only include/mysql_com.h: Changed header to GPL version 2 only include/mysql_embed.h: Changed header to GPL version 2 only include/mysql_time.h: Changed header to GPL version 2 only include/mysys_err.h: Changed header to GPL version 2 only include/queues.h: Changed header to GPL version 2 only include/raid.h: Changed header to GPL version 2 only include/rijndael.h: Changed header to GPL version 2 only include/sha1.h: Changed header to GPL version 2 only include/sql_common.h: Changed header to GPL version 2 only include/sslopt-case.h: Changed header to GPL version 2 only include/sslopt-longopts.h: Changed header to GPL version 2 only include/sslopt-vars.h: Changed header to GPL version 2 only include/t_ctype.h: Changed header to GPL version 2 only include/thr_alarm.h: Changed header to GPL version 2 only include/thr_lock.h: Changed header to GPL version 2 only include/typelib.h: Changed header to GPL version 2 only include/violite.h: Changed header to GPL version 2 only innobase/Makefile.am: Changed header to GPL version 2 only innobase/btr/Makefile.am: Changed header to GPL version 2 only innobase/buf/Makefile.am: Changed header to GPL version 2 only innobase/data/Makefile.am: Changed header to GPL version 2 only innobase/dict/Makefile.am: Changed header to GPL version 2 only innobase/dyn/Makefile.am: Changed header to GPL version 2 only innobase/eval/Makefile.am: Changed header to GPL version 2 only innobase/fil/Makefile.am: Changed header to GPL version 2 only innobase/fsp/Makefile.am: Changed header to GPL version 2 only innobase/fut/Makefile.am: Changed header to GPL version 2 only innobase/ha/Makefile.am: Changed header to GPL version 2 only innobase/ibuf/Makefile.am: Changed header to GPL version 2 only innobase/include/Makefile.am: Changed header to GPL version 2 only innobase/lock/Makefile.am: Changed header to GPL version 2 only innobase/log/Makefile.am: Changed header to GPL version 2 only innobase/mach/Makefile.am: Changed header to GPL version 2 only innobase/mem/Makefile.am: Changed header to GPL version 2 only innobase/mtr/Makefile.am: Changed header to GPL version 2 only innobase/os/Makefile.am: Changed header to GPL version 2 only innobase/page/Makefile.am: Changed header to GPL version 2 only innobase/pars/Makefile.am: Changed header to GPL version 2 only innobase/que/Makefile.am: Changed header to GPL version 2 only innobase/read/Makefile.am: Changed header to GPL version 2 only innobase/rem/Makefile.am: Changed header to GPL version 2 only innobase/row/Makefile.am: Changed header to GPL version 2 only innobase/srv/Makefile.am: Changed header to GPL version 2 only innobase/sync/Makefile.am: Changed header to GPL version 2 only innobase/thr/Makefile.am: Changed header to GPL version 2 only innobase/trx/Makefile.am: Changed header to GPL version 2 only innobase/usr/Makefile.am: Changed header to GPL version 2 only innobase/ut/Makefile.am: Changed header to GPL version 2 only libmysql/client_settings.h: Changed header to GPL version 2 only libmysqld/Makefile.am: Changed header to GPL version 2 only libmysqld/emb_qcache.cc: Changed header to GPL version 2 only libmysqld/emb_qcache.h: Changed header to GPL version 2 only libmysqld/embedded_priv.h: Changed header to GPL version 2 only libmysqld/examples/Makefile.am: Changed header to GPL version 2 only libmysqld/libmysqld.c: Changed header to GPL version 2 only man/Makefile.am: Changed header to GPL version 2 only myisam/Makefile.am: Changed header to GPL version 2 only myisam/ft_boolean_search.c: Changed header to GPL version 2 only myisam/ft_eval.c: Changed header to GPL version 2 only myisam/ft_eval.h: Changed header to GPL version 2 only myisam/ft_nlq_search.c: Changed header to GPL version 2 only myisam/ft_parser.c: Changed header to GPL version 2 only myisam/ft_static.c: Changed header to GPL version 2 only myisam/ft_stem.c: Changed header to GPL version 2 only myisam/ft_stopwords.c: Changed header to GPL version 2 only myisam/ft_test1.c: Changed header to GPL version 2 only myisam/ft_test1.h: Changed header to GPL version 2 only myisam/ft_update.c: Changed header to GPL version 2 only myisam/ftdefs.h: Changed header to GPL version 2 only myisam/fulltext.h: Changed header to GPL version 2 only myisam/mi_cache.c: Changed header to GPL version 2 only myisam/mi_changed.c: Changed header to GPL version 2 only myisam/mi_check.c: Changed header to GPL version 2 only myisam/mi_checksum.c: Changed header to GPL version 2 only myisam/mi_close.c: Changed header to GPL version 2 only myisam/mi_create.c: Changed header to GPL version 2 only myisam/mi_dbug.c: Changed header to GPL version 2 only myisam/mi_delete.c: Changed header to GPL version 2 only myisam/mi_delete_all.c: Changed header to GPL version 2 only myisam/mi_delete_table.c: Changed header to GPL version 2 only myisam/mi_dynrec.c: Changed header to GPL version 2 only myisam/mi_extra.c: Changed header to GPL version 2 only myisam/mi_info.c: Changed header to GPL version 2 only myisam/mi_key.c: Changed header to GPL version 2 only myisam/mi_keycache.c: Changed header to GPL version 2 only myisam/mi_locking.c: Changed header to GPL version 2 only myisam/mi_log.c: Changed header to GPL version 2 only myisam/mi_open.c: Changed header to GPL version 2 only myisam/mi_packrec.c: Changed header to GPL version 2 only myisam/mi_page.c: Changed header to GPL version 2 only myisam/mi_panic.c: Changed header to GPL version 2 only myisam/mi_preload.c: Changed header to GPL version 2 only myisam/mi_range.c: Changed header to GPL version 2 only myisam/mi_rename.c: Changed header to GPL version 2 only myisam/mi_rfirst.c: Changed header to GPL version 2 only myisam/mi_rkey.c: Changed header to GPL version 2 only myisam/mi_rlast.c: Changed header to GPL version 2 only myisam/mi_rnext.c: Changed header to GPL version 2 only myisam/mi_rnext_same.c: Changed header to GPL version 2 only myisam/mi_rprev.c: Changed header to GPL version 2 only myisam/mi_rrnd.c: Changed header to GPL version 2 only myisam/mi_rsame.c: Changed header to GPL version 2 only myisam/mi_rsamepos.c: Changed header to GPL version 2 only myisam/mi_scan.c: Changed header to GPL version 2 only myisam/mi_search.c: Changed header to GPL version 2 only myisam/mi_static.c: Changed header to GPL version 2 only myisam/mi_statrec.c: Changed header to GPL version 2 only myisam/mi_test1.c: Changed header to GPL version 2 only myisam/mi_test2.c: Changed header to GPL version 2 only myisam/mi_test3.c: Changed header to GPL version 2 only myisam/mi_unique.c: Changed header to GPL version 2 only myisam/mi_update.c: Changed header to GPL version 2 only myisam/mi_write.c: Changed header to GPL version 2 only myisam/myisam_ftdump.c: Changed header to GPL version 2 only myisam/myisamchk.c: Changed header to GPL version 2 only myisam/myisamdef.h: Changed header to GPL version 2 only myisam/myisamlog.c: Changed header to GPL version 2 only myisam/myisampack.c: Changed header to GPL version 2 only myisam/rt_index.c: Changed header to GPL version 2 only myisam/rt_index.h: Changed header to GPL version 2 only myisam/rt_key.c: Changed header to GPL version 2 only myisam/rt_key.h: Changed header to GPL version 2 only myisam/rt_mbr.c: Changed header to GPL version 2 only myisam/rt_mbr.h: Changed header to GPL version 2 only myisam/rt_split.c: Changed header to GPL version 2 only myisam/rt_test.c: Changed header to GPL version 2 only myisam/sort.c: Changed header to GPL version 2 only myisam/sp_defs.h: Changed header to GPL version 2 only myisam/sp_key.c: Changed header to GPL version 2 only myisam/sp_test.c: Changed header to GPL version 2 only myisammrg/Makefile.am: Changed header to GPL version 2 only myisammrg/myrg_close.c: Changed header to GPL version 2 only myisammrg/myrg_create.c: Changed header to GPL version 2 only myisammrg/myrg_def.h: Changed header to GPL version 2 only myisammrg/myrg_delete.c: Changed header to GPL version 2 only myisammrg/myrg_extra.c: Changed header to GPL version 2 only myisammrg/myrg_info.c: Changed header to GPL version 2 only myisammrg/myrg_locking.c: Changed header to GPL version 2 only myisammrg/myrg_open.c: Changed header to GPL version 2 only myisammrg/myrg_panic.c: Changed header to GPL version 2 only myisammrg/myrg_queue.c: Changed header to GPL version 2 only myisammrg/myrg_range.c: Changed header to GPL version 2 only myisammrg/myrg_rfirst.c: Changed header to GPL version 2 only myisammrg/myrg_rkey.c: Changed header to GPL version 2 only myisammrg/myrg_rlast.c: Changed header to GPL version 2 only myisammrg/myrg_rnext.c: Changed header to GPL version 2 only myisammrg/myrg_rnext_same.c: Changed header to GPL version 2 only myisammrg/myrg_rprev.c: Changed header to GPL version 2 only myisammrg/myrg_rrnd.c: Changed header to GPL version 2 only myisammrg/myrg_rsame.c: Changed header to GPL version 2 only myisammrg/myrg_static.c: Changed header to GPL version 2 only myisammrg/myrg_update.c: Changed header to GPL version 2 only myisammrg/myrg_write.c: Changed header to GPL version 2 only mysql-test/Makefile.am: Changed header to GPL version 2 only mysys/Makefile.am: Changed header to GPL version 2 only mysys/array.c: Changed header to GPL version 2 only mysys/base64.c: Changed header to GPL version 2 only mysys/charset-def.c: Changed header to GPL version 2 only mysys/charset.c: Changed header to GPL version 2 only mysys/checksum.c: Changed header to GPL version 2 only mysys/default.c: Changed header to GPL version 2 only mysys/default_modify.c: Changed header to GPL version 2 only mysys/errors.c: Changed header to GPL version 2 only mysys/hash.c: Changed header to GPL version 2 only mysys/list.c: Changed header to GPL version 2 only mysys/make-conf.c: Changed header to GPL version 2 only mysys/md5.c: Changed header to GPL version 2 only mysys/mf_brkhant.c: Changed header to GPL version 2 only mysys/mf_cache.c: Changed header to GPL version 2 only mysys/mf_dirname.c: Changed header to GPL version 2 only mysys/mf_fn_ext.c: Changed header to GPL version 2 only mysys/mf_format.c: Changed header to GPL version 2 only mysys/mf_getdate.c: Changed header to GPL version 2 only mysys/mf_iocache.c: Changed header to GPL version 2 only mysys/mf_iocache2.c: Changed header to GPL version 2 only mysys/mf_keycache.c: Changed header to GPL version 2 only mysys/mf_keycaches.c: Changed header to GPL version 2 only mysys/mf_loadpath.c: Changed header to GPL version 2 only mysys/mf_pack.c: Changed header to GPL version 2 only mysys/mf_path.c: Changed header to GPL version 2 only mysys/mf_qsort.c: Changed header to GPL version 2 only mysys/mf_qsort2.c: Changed header to GPL version 2 only mysys/mf_radix.c: Changed header to GPL version 2 only mysys/mf_same.c: Changed header to GPL version 2 only mysys/mf_sort.c: Changed header to GPL version 2 only mysys/mf_soundex.c: Changed header to GPL version 2 only mysys/mf_strip.c: Changed header to GPL version 2 only mysys/mf_tempdir.c: Changed header to GPL version 2 only mysys/mf_tempfile.c: Changed header to GPL version 2 only mysys/mf_unixpath.c: Changed header to GPL version 2 only mysys/mf_util.c: Changed header to GPL version 2 only mysys/mf_wcomp.c: Changed header to GPL version 2 only mysys/mf_wfile.c: Changed header to GPL version 2 only mysys/mulalloc.c: Changed header to GPL version 2 only mysys/my_access.c: Changed header to GPL version 2 only mysys/my_aes.c: Changed header to GPL version 2 only mysys/my_alarm.c: Changed header to GPL version 2 only mysys/my_alloc.c: Changed header to GPL version 2 only mysys/my_append.c: Changed header to GPL version 2 only mysys/my_bit.c: Changed header to GPL version 2 only mysys/my_bitmap.c: Changed header to GPL version 2 only mysys/my_chsize.c: Changed header to GPL version 2 only mysys/my_clock.c: Changed header to GPL version 2 only mysys/my_compress.c: Changed header to GPL version 2 only mysys/my_conio.c: Changed header to GPL version 2 only mysys/my_copy.c: Changed header to GPL version 2 only mysys/my_crc32.c: Changed header to GPL version 2 only mysys/my_create.c: Changed header to GPL version 2 only mysys/my_delete.c: Changed header to GPL version 2 only mysys/my_div.c: Changed header to GPL version 2 only mysys/my_dup.c: Changed header to GPL version 2 only mysys/my_error.c: Changed header to GPL version 2 only mysys/my_file.c: Changed header to GPL version 2 only mysys/my_fopen.c: Changed header to GPL version 2 only mysys/my_fstream.c: Changed header to GPL version 2 only mysys/my_gethostbyname.c: Changed header to GPL version 2 only mysys/my_gethwaddr.c: Changed header to GPL version 2 only mysys/my_getopt.c: Changed header to GPL version 2 only mysys/my_getpagesize.c: Changed header to GPL version 2 only mysys/my_getsystime.c: Changed header to GPL version 2 only mysys/my_getwd.c: Changed header to GPL version 2 only mysys/my_handler.c: Changed header to GPL version 2 only mysys/my_init.c: Changed header to GPL version 2 only mysys/my_largepage.c: Changed header to GPL version 2 only mysys/my_lib.c: Changed header to GPL version 2 only mysys/my_libwrap.c: Changed header to GPL version 2 only mysys/my_lock.c: Changed header to GPL version 2 only mysys/my_lockmem.c: Changed header to GPL version 2 only mysys/my_lread.c: Changed header to GPL version 2 only mysys/my_lwrite.c: Changed header to GPL version 2 only mysys/my_malloc.c: Changed header to GPL version 2 only mysys/my_messnc.c: Changed header to GPL version 2 only mysys/my_mkdir.c: Changed header to GPL version 2 only mysys/my_mmap.c: Changed header to GPL version 2 only mysys/my_net.c: Changed header to GPL version 2 only mysys/my_netware.c: Changed header to GPL version 2 only mysys/my_new.cc: Changed header to GPL version 2 only mysys/my_once.c: Changed header to GPL version 2 only mysys/my_open.c: Changed header to GPL version 2 only mysys/my_os2cond.c: Changed header to GPL version 2 only mysys/my_os2dirsrch.c: Changed header to GPL version 2 only mysys/my_os2dirsrch.h: Changed header to GPL version 2 only mysys/my_os2dlfcn.c: Changed header to GPL version 2 only mysys/my_os2dlfcn.h0: Changed header to GPL version 2 only mysys/my_os2file64.c: Changed header to GPL version 2 only mysys/my_os2thread.c: Changed header to GPL version 2 only mysys/my_os2tls.c: Changed header to GPL version 2 only mysys/my_port.c: Changed header to GPL version 2 only mysys/my_pread.c: Changed header to GPL version 2 only mysys/my_pthread.c: Changed header to GPL version 2 only mysys/my_quick.c: Changed header to GPL version 2 only mysys/my_read.c: Changed header to GPL version 2 only mysys/my_realloc.c: Changed header to GPL version 2 only mysys/my_redel.c: Changed header to GPL version 2 only mysys/my_rename.c: Changed header to GPL version 2 only mysys/my_seek.c: Changed header to GPL version 2 only mysys/my_semaphore.c: Changed header to GPL version 2 only mysys/my_sleep.c: Changed header to GPL version 2 only mysys/my_static.c: Changed header to GPL version 2 only mysys/my_static.h: Changed header to GPL version 2 only mysys/my_symlink.c: Changed header to GPL version 2 only mysys/my_symlink2.c: Changed header to GPL version 2 only mysys/my_sync.c: Changed header to GPL version 2 only mysys/my_thr_init.c: Changed header to GPL version 2 only mysys/my_wincond.c: Changed header to GPL version 2 only mysys/my_windac.c: Changed header to GPL version 2 only mysys/my_winthread.c: Changed header to GPL version 2 only mysys/my_write.c: Changed header to GPL version 2 only mysys/mysys_priv.h: Changed header to GPL version 2 only mysys/ptr_cmp.c: Changed header to GPL version 2 only mysys/queues.c: Changed header to GPL version 2 only mysys/raid.cc: Changed header to GPL version 2 only mysys/raid2.c: Changed header to GPL version 2 only mysys/rijndael.c: Changed header to GPL version 2 only mysys/safemalloc.c: Changed header to GPL version 2 only mysys/sha1.c: Changed header to GPL version 2 only mysys/string.c: Changed header to GPL version 2 only mysys/test_charset.c: Changed header to GPL version 2 only mysys/test_dir.c: Changed header to GPL version 2 only mysys/test_fn.c: Changed header to GPL version 2 only mysys/test_xml.c: Changed header to GPL version 2 only mysys/testhash.c: Changed header to GPL version 2 only mysys/thr_alarm.c: Changed header to GPL version 2 only mysys/thr_lock.c: Changed header to GPL version 2 only mysys/thr_mutex.c: Changed header to GPL version 2 only mysys/thr_rwlock.c: Changed header to GPL version 2 only mysys/tree.c: Changed header to GPL version 2 only mysys/typelib.c: Changed header to GPL version 2 only ndb/include/debugger/DebuggerNames.hpp: Changed header to GPL version 2 only ndb/include/debugger/EventLogger.hpp: Changed header to GPL version 2 only ndb/include/debugger/GrepError.hpp: Changed header to GPL version 2 only ndb/include/debugger/SignalLoggerManager.hpp: Changed header to GPL version 2 only ndb/include/editline/editline.h: Changed header to GPL version 2 only ndb/include/kernel/AttributeDescriptor.hpp: Changed header to GPL version 2 only ndb/include/kernel/AttributeHeader.hpp: Changed header to GPL version 2 only ndb/include/kernel/AttributeList.hpp: Changed header to GPL version 2 only ndb/include/kernel/BlockNumbers.h: Changed header to GPL version 2 only ndb/include/kernel/GlobalSignalNumbers.h: Changed header to GPL version 2 only ndb/include/kernel/GrepEvent.hpp: Changed header to GPL version 2 only ndb/include/kernel/Interpreter.hpp: Changed header to GPL version 2 only ndb/include/kernel/LogLevel.hpp: Changed header to GPL version 2 only ndb/include/kernel/NodeBitmask.hpp: Changed header to GPL version 2 only ndb/include/kernel/NodeInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/NodeState.hpp: Changed header to GPL version 2 only ndb/include/kernel/RefConvert.hpp: Changed header to GPL version 2 only ndb/include/kernel/kernel_types.h: Changed header to GPL version 2 only ndb/include/kernel/ndb_limits.h: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AbortAll.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AccFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AccLock.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AccScan.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AccSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AlterIndx.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AlterTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AlterTable.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AlterTrig.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ApiBroadcast.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ApiRegSignalData.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ApiVersion.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ArbitSignalData.hpp: Changed header to GPL version 2 only ndb/include/kernel/trigger_definitions.h: Changed header to GPL version 2 only ndb/include/ndb_constants.h: Changed header to GPL version 2 only ndb/include/ndb_global.h.in: Changed header to GPL version 2 only ndb/include/ndb_init.h: Changed header to GPL version 2 only ndb/include/ndb_types.h.in: Changed header to GPL version 2 only ndb/include/ndb_version.h.in: Changed header to GPL version 2 only ndb/include/kernel/signaldata/AttrInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/BackupContinueB.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/BackupImpl.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/BackupSignalData.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/BlockCommitOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/BuildIndx.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CheckNodeGroups.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CloseComReqConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CmInit.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CmRegSignalData.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CmvmiCfgConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CntrMasterConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CntrMasterReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ConfigParamId.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ContinueFragmented.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CopyActive.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CopyFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CopyGCIReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateEvnt.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateFragmentation.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateIndx.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateTable.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/CreateTrig.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DiAddTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DiGetNodes.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DictLock.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DictSchemaInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DictSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DictStart.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DictTabInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DihAddFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DihContinueB.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DihSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DihStartTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DihSwitchReplica.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DisconnectRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DropIndx.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DropTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DropTabFile.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DropTable.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DropTrig.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/DumpStateOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/EmptyLcp.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/EndTo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/EventReport.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/EventSubscribeReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ExecFragReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FailRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FireTrigOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsAppendReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsCloseReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsOpenReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsReadWriteReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsRef.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/FsRemoveReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/GCPSave.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/GetTabInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/GetTableId.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/GrepImpl.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/HotSpareRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/IndxAttrInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/IndxKeyInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/InvalidateNodeLCPConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/InvalidateNodeLCPReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/KeyInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/LCP.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ListTables.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/LqhFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/LqhKey.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/LqhSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/LqhTransConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ManagementServer.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/MasterGCP.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/MasterLCP.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/NFCompleteRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/NdbSttor.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/NdbfsContinueB.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/NextScan.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/NodeFailRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/NodeStateSignalData.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/PackedSignal.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/PrepDropTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/PrepFailReqRef.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ReadNodesConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/RelTabMem.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/RepImpl.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ResumeReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ScanFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/ScanTab.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SetLogLevelOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SetVarReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SignalData.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SignalDataPrint.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SignalDroppedRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SrFragidConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartFragReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartMe.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartPerm.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartRec.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StartTo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StopMe.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StopPerm.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/StopReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SumaImpl.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/SystemError.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TamperOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcCommit.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcContinueB.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcHbRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcIndx.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcKeyConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcKeyFailConf.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcKeyRef.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcKeyReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcRollbackRep.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TcSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TestOrd.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TransIdAI.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TrigAttrInfo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TupCommit.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TupFrag.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TupKey.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TupSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TuxBound.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TuxContinueB.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TuxMaint.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/TuxSizeAltReq.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UpdateTo.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UtilDelete.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UtilExecute.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UtilLock.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UtilPrepare.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UtilRelease.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/UtilSequence.hpp: Changed header to GPL version 2 only ndb/include/kernel/signaldata/WaitGCP.hpp: Changed header to GPL version 2 only ndb/include/logger/ConsoleLogHandler.hpp: Changed header to GPL version 2 only ndb/include/logger/FileLogHandler.hpp: Changed header to GPL version 2 only ndb/include/logger/LogHandler.hpp: Changed header to GPL version 2 only ndb/include/logger/Logger.hpp: Changed header to GPL version 2 only ndb/include/logger/SysLogHandler.hpp: Changed header to GPL version 2 only ndb/include/mgmapi/mgmapi.h: Changed header to GPL version 2 only ndb/include/mgmapi/mgmapi_debug.h: Changed header to GPL version 2 only ndb/include/mgmapi/ndb_logevent.h: Changed header to GPL version 2 only ndb/include/mgmapi/ndbd_exit_codes.h: Changed header to GPL version 2 only ndb/include/mgmcommon/ConfigRetriever.hpp: Changed header to GPL version 2 only ndb/include/mgmcommon/IPCConfig.hpp: Changed header to GPL version 2 only ndb/include/mgmcommon/MgmtErrorReporter.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/Ndb.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbApi.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbBlob.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbDictionary.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbError.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbEventOperation.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbIndexOperation.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbIndexScanOperation.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbOperation.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbPool.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbRecAttr.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbReceiver.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbScanFilter.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbScanOperation.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/NdbTransaction.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/ndb_cluster_connection.hpp: Changed header to GPL version 2 only ndb/include/ndbapi/ndb_opt_defaults.h: Changed header to GPL version 2 only ndb/include/ndbapi/ndbapi_limits.h: Changed header to GPL version 2 only ndb/include/ndbapi/ndberror.h: Changed header to GPL version 2 only ndb/include/newtonapi/dba.h: Changed header to GPL version 2 only ndb/include/newtonapi/defs/pcn_types.h: Changed header to GPL version 2 only ndb/include/portlib/NdbCondition.h: Changed header to GPL version 2 only ndb/include/portlib/NdbConfig.h: Changed header to GPL version 2 only ndb/include/portlib/NdbDaemon.h: Changed header to GPL version 2 only ndb/include/portlib/NdbEnv.h: Changed header to GPL version 2 only ndb/include/portlib/NdbHost.h: Changed header to GPL version 2 only ndb/include/portlib/NdbMain.h: Changed header to GPL version 2 only ndb/include/portlib/NdbMem.h: Changed header to GPL version 2 only ndb/include/portlib/NdbMutex.h: Changed header to GPL version 2 only ndb/include/portlib/NdbSleep.h: Changed header to GPL version 2 only ndb/include/portlib/NdbTCP.h: Changed header to GPL version 2 only ndb/include/portlib/NdbThread.h: Changed header to GPL version 2 only ndb/include/portlib/NdbTick.h: Changed header to GPL version 2 only ndb/include/portlib/PortDefs.h: Changed header to GPL version 2 only ndb/include/portlib/prefetch.h: Changed header to GPL version 2 only ndb/include/transporter/TransporterCallback.hpp: Changed header to GPL version 2 only ndb/include/transporter/TransporterDefinitions.hpp: Changed header to GPL version 2 only ndb/include/transporter/TransporterRegistry.hpp: Changed header to GPL version 2 only ndb/include/util/BaseString.hpp: Changed header to GPL version 2 only ndb/include/util/Bitmask.hpp: Changed header to GPL version 2 only ndb/include/util/File.hpp: Changed header to GPL version 2 only ndb/include/util/InputStream.hpp: Changed header to GPL version 2 only ndb/include/util/NdbAutoPtr.hpp: Changed header to GPL version 2 only ndb/include/util/NdbOut.hpp: Changed header to GPL version 2 only ndb/include/util/NdbSqlUtil.hpp: Changed header to GPL version 2 only ndb/include/util/OutputStream.hpp: Changed header to GPL version 2 only ndb/include/util/Parser.hpp: Changed header to GPL version 2 only ndb/include/util/Properties.hpp: Changed header to GPL version 2 only ndb/include/util/SimpleProperties.hpp: Changed header to GPL version 2 only ndb/include/util/SocketAuthenticator.hpp: Changed header to GPL version 2 only ndb/include/util/SocketClient.hpp: Changed header to GPL version 2 only ndb/include/util/SocketServer.hpp: Changed header to GPL version 2 only ndb/include/util/UtilBuffer.hpp: Changed header to GPL version 2 only ndb/include/util/Vector.hpp: Changed header to GPL version 2 only ndb/include/util/basestring_vsnprintf.h: Changed header to GPL version 2 only ndb/include/util/md5_hash.hpp: Changed header to GPL version 2 only ndb/include/util/ndb_opts.h: Changed header to GPL version 2 only ndb/include/util/random.h: Changed header to GPL version 2 only ndb/include/util/socket_io.h: Changed header to GPL version 2 only ndb/include/util/uucode.h: Changed header to GPL version 2 only ndb/include/util/version.h: Changed header to GPL version 2 only ndb/ndbapi-examples/mgmapi_logevent_example/mgmapi_logevent.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_async_example/ndbapi_async.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_async_example1/ndbapi_async1.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_event_example/ndbapi_event.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_retries_example/ndbapi_retries.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_scan_example/ndbapi_scan.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_simple_example/ndbapi_simple.cpp: Changed header to GPL version 2 only ndb/ndbapi-examples/ndbapi_simple_index_example/ndbapi_simple_index.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/BlockNames.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/DebuggerNames.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/EventLogger.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/GrepError.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/SignalLoggerManager.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/AccLock.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/AlterIndx.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/AlterTab.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/AlterTable.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/AlterTrig.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/BackupImpl.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/BackupSignalData.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/CloseComReqConf.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/ContinueB.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/CopyGCI.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/CreateEvnt.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/CreateFragmentation.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/CreateIndx.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/CreateTrig.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DictTabInfo.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DihContinueB.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DihSwitchReplicaReq.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DisconnectRep.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DropIndx.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DropTab.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/DropTrig.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FailRep.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FireTrigOrd.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FsAppendReq.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FsCloseReq.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FsConf.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FsOpenReq.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FsReadWriteReq.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/FsRef.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/GCPSave.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/IndxAttrInfo.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/IndxKeyInfo.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/LCP.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/LqhFrag.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/LqhKey.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/LqhTrans.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/MasterLCP.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/NFCompleteRep.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/NdbSttor.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/NdbfsContinueB.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/PackedSignal.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/PrepDropTab.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/PrepFailReqRef.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/ScanFrag.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/ScanTab.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/SignalDataPrint.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/SignalDroppedRep.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/SignalNames.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/StartRec.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/SumaImpl.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/SystemError.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TcIndx.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TcKeyConf.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TcKeyRef.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TcKeyReq.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TcRollbackRep.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TrigAttrInfo.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TupCommit.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TupKey.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/TuxMaint.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/UtilDelete.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/UtilExecute.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/UtilLock.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/UtilPrepare.cpp: Changed header to GPL version 2 only ndb/src/common/debugger/signaldata/UtilSequence.cpp: Changed header to GPL version 2 only ndb/src/common/logger/ConsoleLogHandler.cpp: Changed header to GPL version 2 only ndb/src/common/logger/FileLogHandler.cpp: Changed header to GPL version 2 only ndb/src/common/logger/LogHandler.cpp: Changed header to GPL version 2 only ndb/src/common/logger/LogHandlerList.cpp: Changed header to GPL version 2 only ndb/src/common/logger/LogHandlerList.hpp: Changed header to GPL version 2 only ndb/src/common/logger/Logger.cpp: Changed header to GPL version 2 only ndb/src/common/logger/SysLogHandler.cpp: Changed header to GPL version 2 only ndb/src/common/logger/listtest/LogHandlerListUnitTest.cpp: Changed header to GPL version 2 only ndb/src/common/logger/listtest/LogHandlerListUnitTest.hpp: Changed header to GPL version 2 only ndb/src/common/logger/loggertest/LoggerUnitTest.cpp: Changed header to GPL version 2 only ndb/src/common/logger/loggertest/LoggerUnitTest.hpp: Changed header to GPL version 2 only ndb/src/common/mgmcommon/ConfigRetriever.cpp: Changed header to GPL version 2 only ndb/src/common/mgmcommon/IPCConfig.cpp: Changed header to GPL version 2 only ndb/src/common/mgmcommon/printConfig/printConfig.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/NdbCondition.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbConfig.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbDaemon.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbEnv.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbHost.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbMem.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbMutex.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbPortLibTest.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/NdbSleep.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbTCP.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/NdbThread.c: Changed header to GPL version 2 only ndb/src/common/portlib/NdbTick.c: Changed header to GPL version 2 only ndb/src/common/portlib/memtest.c: Changed header to GPL version 2 only ndb/src/common/portlib/mmslist.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/mmstest.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/munmaptest.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbCondition.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbConditionOSE.h: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbEnv.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbHost.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbMem.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbMem_SoftOse.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbMutex.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbOut.cpp: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbSleep.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbTCP.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbThread.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/ose/NdbTick.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbCondition.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbDaemon.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbEnv.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbHost.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbMem.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbMutex.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbSleep.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbTCP.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbThread.c: Changed header to GPL version 2 only ndb/src/common/portlib/old_dirs/win32/NdbTick.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbCondition.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbDaemon.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbEnv.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbHost.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbMem.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbMutex.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbSleep.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbTCP.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbThread.c: Changed header to GPL version 2 only ndb/src/common/portlib/win32/NdbTick.c: Changed header to GPL version 2 only ndb/src/common/transporter/OSE_Receiver.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/OSE_Receiver.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/OSE_Signals.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/OSE_Transporter.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/OSE_Transporter.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/Packer.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/Packer.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/SCI_Transporter.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/SCI_Transporter.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/SHM_Buffer.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/SHM_Transporter.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/SHM_Transporter.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/SHM_Transporter.unix.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/SHM_Transporter.win32.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/SendBuffer.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/SendBuffer.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/TCP_Transporter.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/TCP_Transporter.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/Transporter.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/Transporter.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/TransporterInternalDefinitions.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/TransporterRegistry.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/basictest/basicTransporterTest.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/buddy.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/buddy.hpp: Changed header to GPL version 2 only ndb/src/common/transporter/failoverSCI/failoverSCI.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/perftest/perfTransporterTest.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/priotest/prioSCI/prioSCI.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/priotest/prioSHM/prioSHM.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/priotest/prioTCP/prioTCP.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/priotest/prioTransporterTest.cpp: Changed header to GPL version 2 only ndb/src/common/transporter/priotest/prioTransporterTest.hpp: Changed header to GPL version 2 only ndb/src/common/util/BaseString.cpp: Changed header to GPL version 2 only ndb/src/common/util/File.cpp: Changed header to GPL version 2 only ndb/src/common/util/InputStream.cpp: Changed header to GPL version 2 only ndb/src/common/util/NdbErrHnd.cpp: Changed header to GPL version 2 only ndb/src/common/util/NdbOut.cpp: Changed header to GPL version 2 only ndb/src/common/util/NdbSqlUtil.cpp: Changed header to GPL version 2 only ndb/src/common/util/OutputStream.cpp: Changed header to GPL version 2 only ndb/src/common/util/Parser.cpp: Changed header to GPL version 2 only ndb/src/common/util/Properties.cpp: Changed header to GPL version 2 only ndb/src/common/util/SimpleProperties.cpp: Changed header to GPL version 2 only ndb/src/common/util/SocketAuthenticator.cpp: Changed header to GPL version 2 only ndb/src/common/util/SocketClient.cpp: Changed header to GPL version 2 only ndb/src/common/util/SocketServer.cpp: Changed header to GPL version 2 only ndb/src/common/util/basestring_vsnprintf.c: Changed header to GPL version 2 only ndb/src/common/util/filetest/FileUnitTest.cpp: Changed header to GPL version 2 only ndb/src/common/util/filetest/FileUnitTest.hpp: Changed header to GPL version 2 only ndb/src/common/util/md5_hash.cpp: Changed header to GPL version 2 only ndb/src/common/util/ndb_init.c: Changed header to GPL version 2 only ndb/src/common/util/random.c: Changed header to GPL version 2 only ndb/src/common/util/socket_io.cpp: Changed header to GPL version 2 only ndb/src/common/util/strdup.c: Changed header to GPL version 2 only ndb/src/common/util/testProperties/testProperties.cpp: Changed header to GPL version 2 only ndb/src/common/util/testSimpleProperties/sp_test.cpp: Changed header to GPL version 2 only ndb/src/common/util/uucode.c: Changed header to GPL version 2 only ndb/src/common/util/version.c: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/CPC_GUI.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/CPC_GUI.h: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/NdbControls.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/StdAfx.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/StdAfx.h: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/TreeView.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/TreeView.h: Changed header to GPL version 2 only ndb/src/cw/cpcc-win32/C++/resource.h: Changed header to GPL version 2 only ndb/src/cw/cpcd/APIService.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/APIService.hpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/CPCD.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/CPCD.hpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/Monitor.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/Process.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/common.cpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/common.hpp: Changed header to GPL version 2 only ndb/src/cw/cpcd/main.cpp: Changed header to GPL version 2 only ndb/src/cw/test/socketclient/socketClientTest.cpp: Changed header to GPL version 2 only ndb/src/cw/util/ClientInterface.cpp: Changed header to GPL version 2 only ndb/src/cw/util/ClientInterface.hpp: Changed header to GPL version 2 only ndb/src/cw/util/SocketRegistry.cpp: Changed header to GPL version 2 only ndb/src/cw/util/SocketRegistry.hpp: Changed header to GPL version 2 only ndb/src/cw/util/SocketService.cpp: Changed header to GPL version 2 only ndb/src/cw/util/SocketService.hpp: Changed header to GPL version 2 only ndb/src/kernel/SimBlockList.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/backup/Backup.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/backup/Backup.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/backup/BackupFormat.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/backup/BackupInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/backup/FsBuffer.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/backup/read.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbacc/Dbacc.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbacc/DbaccInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbacc/DbaccMain.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/mutexes.hpp: Changed header to GPL version 2 only ndb/src/kernel/main.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdict/Dbdict.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdict/SchemaFile.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdih/Dbdih.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdih/DbdihInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdih/Sysfile.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbdih/printSysfile/printSysfile.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dblqh/Dblqh.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dblqh/DblqhInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dblqh/DblqhMain.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dblqh/redoLogReader/records.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dblqh/redoLogReader/records.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dblqh/redoLogReader/redoLogFileReader.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtc/Dbtc.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtc/DbtcInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/AttributeOffset.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/Dbtup.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupDebug.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupFixAlloc.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupGen.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupLCP.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupScan.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupStoredProcDef.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupSystemRestart.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupTabDesMan.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtup/DbtupUndoLog.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/Dbtux.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxDebug.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxMaint.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxMeta.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxNode.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxSearch.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbtux/DbtuxTree.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbutil/DbUtil.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/dbutil/DbUtil.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbcntr/NdbcntrInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbcntr/NdbcntrSysTable.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/AsyncFileTest/AsyncFileTest.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/CircularIndex.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/CircularIndex.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/Filename.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/Filename.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/MemoryChannel.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/MemoryChannelOSE.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/MemoryChannelTest/MemoryChannelTest.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/Ndbfs.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/OpenFiles.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/Pool.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/ndbfs/VoidFs.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/qmgr/Qmgr.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/qmgr/QmgrInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/qmgr/QmgrMain.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/qmgr/timer.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/suma/Suma.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/suma/Suma.hpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/suma/SumaInit.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/trix/Trix.cpp: Changed header to GPL version 2 only ndb/src/kernel/blocks/trix/Trix.hpp: Changed header to GPL version 2 only ndb/src/kernel/error/ErrorHandlingMacros.hpp: Changed header to GPL version 2 only ndb/src/kernel/error/ErrorReporter.cpp: Changed header to GPL version 2 only ndb/src/kernel/error/ErrorReporter.hpp: Changed header to GPL version 2 only ndb/src/kernel/error/TimeModule.cpp: Changed header to GPL version 2 only ndb/src/kernel/error/TimeModule.hpp: Changed header to GPL version 2 only ndb/src/kernel/error/ndbd_exit_codes.c: Changed header to GPL version 2 only ndb/src/kernel/vm/Array.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ArrayFifoList.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ArrayList.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ArrayPool.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/CArray.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Callback.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ClusterConfiguration.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ClusterConfiguration.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Configuration.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Configuration.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/DLFifoList.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/DLHashTable.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/DLHashTable2.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/DLList.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/DataBuffer.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Emulator.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Emulator.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/FastScheduler.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/FastScheduler.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/GlobalData.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/KeyDescriptor.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/KeyTable.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/KeyTable2.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/LongSignal.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/MetaData.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/MetaData.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Mutex.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Mutex.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/Prio.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/RequestTracker.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SLList.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SafeCounter.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SafeCounter.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SectionReader.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SectionReader.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SignalCounter.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SimBlockList.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SimplePropertiesSection.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SimulatedBlock.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SimulatedBlock.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SuperPool.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/SuperPool.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ThreadConfig.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ThreadConfig.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/TimeQueue.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/TimeQueue.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/TransporterCallback.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/VMSignal.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/VMSignal.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/WaitQueue.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/WatchDog.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/WatchDog.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/al_test/arrayListTest.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/al_test/arrayPoolTest.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/al_test/main.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ndbd_malloc.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/ndbd_malloc.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/pc.hpp: Changed header to GPL version 2 only ndb/src/kernel/vm/testCopy/rr.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/testCopy/testCopy.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/testDataBuffer/testDataBuffer.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/testLongSig/testLongSig.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/testSimplePropertiesSection/test.cpp: Changed header to GPL version 2 only ndb/src/kernel/vm/testSuperPool.cpp: Changed header to GPL version 2 only ndb/src/mgmapi/LocalConfig.cpp: Changed header to GPL version 2 only ndb/src/mgmapi/LocalConfig.hpp: Changed header to GPL version 2 only ndb/src/mgmapi/mgmapi.cpp: Changed header to GPL version 2 only ndb/src/mgmapi/mgmapi_configuration.hpp: Changed header to GPL version 2 only ndb/src/mgmapi/mgmapi_internal.h: Changed header to GPL version 2 only ndb/src/mgmapi/ndb_logevent.cpp: Changed header to GPL version 2 only ndb/src/mgmapi/ndb_logevent.hpp: Changed header to GPL version 2 only ndb/src/mgmapi/test/keso.c: Changed header to GPL version 2 only ndb/src/mgmapi/test/mgmSrvApi.cpp: Changed header to GPL version 2 only ndb/src/mgmclient/CommandInterpreter.cpp: Changed header to GPL version 2 only ndb/src/mgmclient/main.cpp: Changed header to GPL version 2 only ndb/src/mgmclient/ndb_mgmclient.hpp: Changed header to GPL version 2 only ndb/src/mgmclient/ndb_mgmclient.h: Changed header to GPL version 2 only ndb/src/mgmclient/test_cpcd/test_cpcd.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/Config.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/Config.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/ConfigInfo.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/ConfigInfo.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/InitConfigFileParser.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/InitConfigFileParser.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/MgmtSrvr.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/MgmtSrvr.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/MgmtSrvrConfig.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/MgmtSrvrGeneralSignalHandling.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/Services.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/Services.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/SignalQueue.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/SignalQueue.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/convertStrToInt.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/convertStrToInt.hpp: Changed header to GPL version 2 only ndb/src/mgmsrv/main.cpp: Changed header to GPL version 2 only ndb/src/mgmsrv/mkconfig/mkconfig.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/API.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/ClusterMgr.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/ClusterMgr.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/DictCache.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/DictCache.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/Ndb.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbApiSignal.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbApiSignal.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbBlob.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbBlobImpl.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbDictionary.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbDictionaryImpl.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbDictionaryImpl.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbErrorOut.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbEventOperation.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbEventOperationImpl.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbEventOperationImpl.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbImpl.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbIndexOperation.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbLinHash.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbOperation.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbOperationDefine.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbOperationExec.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbOperationInt.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbOperationScan.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbOperationSearch.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbPool.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbPoolImpl.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbPoolImpl.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbRecAttr.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbReceiver.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbScanFilter.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbScanOperation.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbTransaction.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbTransactionScan.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbUtil.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbUtil.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/NdbWaiter.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/Ndberr.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/Ndbif.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/Ndbinit.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/Ndblist.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/ObjectMap.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/SignalSender.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/SignalSender.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/TransporterFacade.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/TransporterFacade.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/ndb_cluster_connection.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/ndb_cluster_connection_impl.hpp: Changed header to GPL version 2 only ndb/src/ndbapi/ndberror.c: Changed header to GPL version 2 only ndb/src/ndbapi/signal-sender/SignalSender.cpp: Changed header to GPL version 2 only ndb/src/ndbapi/signal-sender/SignalSender.hpp: Changed header to GPL version 2 only ndb/test/include/CpcClient.hpp: Changed header to GPL version 2 only ndb/test/include/HugoAsynchTransactions.hpp: Changed header to GPL version 2 only ndb/test/include/HugoCalculator.hpp: Changed header to GPL version 2 only ndb/test/include/HugoOperations.hpp: Changed header to GPL version 2 only ndb/test/include/HugoTransactions.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_DataSet.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_DataSetTransaction.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_Error.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_Output.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_ResultRow.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_ReturnCodes.h: Changed header to GPL version 2 only ndb/test/include/NDBT_Stats.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_Table.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_Tables.hpp: Changed header to GPL version 2 only ndb/test/include/NDBT_Test.hpp: Changed header to GPL version 2 only ndb/test/include/NdbBackup.hpp: Changed header to GPL version 2 only ndb/test/include/NdbConfig.hpp: Changed header to GPL version 2 only ndb/test/include/NdbGrep.hpp: Changed header to GPL version 2 only ndb/test/include/NdbRestarter.hpp: Changed header to GPL version 2 only ndb/test/include/NdbRestarts.hpp: Changed header to GPL version 2 only ndb/test/include/NdbSchemaCon.hpp: Changed header to GPL version 2 only ndb/test/include/NdbSchemaOp.hpp: Changed header to GPL version 2 only ndb/test/include/NdbTest.hpp: Changed header to GPL version 2 only ndb/test/include/NdbTimer.hpp: Changed header to GPL version 2 only ndb/test/include/TestNdbEventOperation.hpp: Changed header to GPL version 2 only ndb/test/include/UtilTransactions.hpp: Changed header to GPL version 2 only ndb/test/include/getarg.h: Changed header to GPL version 2 only ndb/test/ndbapi/InsertRecs.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ScanFilter.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/ScanFunctions.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/ScanInterpretTest.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/TraceNdbApi.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/VerifyNdbApi.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/acid.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/acid2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/adoInsertRecs.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/asyncGenerator.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/benchronja.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bulk_copy.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/cdrserver.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/celloDb.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/create_all_tabs.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/create_tab.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/drop_all_tabs.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flexAsynch.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flexBench.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flexHammer.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flexScan.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flexTT.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flexTimedAsynch.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/flex_bench_mysql.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/index.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/index2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/initronja.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/interpreterInTup.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/mainAsyncGenerator.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/msa.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_async1.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_async2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_populate.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_transaction.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_transaction2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_transaction3.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_transaction4.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_transaction5.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/ndb_user_transaction6.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/restarter.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/restarter2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/restarts.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/size.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testBackup.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testBasic.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testBasicAsynch.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testBlobs.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testDataBuffers.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testDeadlock.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testDict.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testGrepVerify.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testIndex.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testInterpreter.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testMgm.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testNdbApi.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testNodeRestart.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testOIBasic.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testOperations.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testOrderedIndex.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testPartitioning.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testReadPerf.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testRestartGci.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testSRBank.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testScan.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testScanInterpreter.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testScanPerf.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testSystemRestart.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/Bank.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/Bank.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/BankLoad.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/bankCreator.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/bankMakeGL.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/bankSumAccounts.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/bankTimer.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/bankTransactionMaker.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/bankValidateAllGLs.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bank/testBank.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/asyncGenerator.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/dbGenerator.h: Changed header to GPL version 2 only ndb/test/ndbapi/bench/dbPopulate.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/dbPopulate.h: Changed header to GPL version 2 only ndb/test/ndbapi/bench/macros.h: Changed header to GPL version 2 only ndb/test/ndbapi/bench/mainAsyncGenerator.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/mainPopulate.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_async1.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_async2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_error.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_schema.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_user_transaction.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_user_transaction2.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_user_transaction3.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_user_transaction4.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_user_transaction5.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/ndb_user_transaction6.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/testData.h: Changed header to GPL version 2 only ndb/test/ndbapi/bench/testDefinitions.h: Changed header to GPL version 2 only ndb/test/ndbapi/bench/userInterface.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/bench/userInterface.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/acid2/TraceNdbApi.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/acid2/VerifyNdbApi.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/dbGenerator.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/testData.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/userInterface.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/macros.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/ndb_error.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/include/ndb_schema.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/include/testDefinitions.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/dbGenerator.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/dbGenerator.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/mainGenerator.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/include/testData.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/include/userInterface.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/dbPopulate.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/dbPopulate.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/mainPopulate.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/localDbPrepare.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/macros.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/ndb_error.hpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userHandle.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userInterface.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userHandle.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userInterface.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userTransaction.c: Changed header to GPL version 2 only ndb/test/ndbapi/testTimeout.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/testTransactions.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/test_event.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/test_event_merge.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/test_event_multi_table.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/userInterface.cpp: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userTransaction.c: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/vw_test/bcd.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/vw_test/utv.h: Changed header to GPL version 2 only ndb/test/ndbapi/old_dirs/vw_test/vcdrfunc.h: Changed header to GPL version 2 only ndb/test/newtonapi/basic_test/basic/basic.cpp: Changed header to GPL version 2 only ndb/test/newtonapi/basic_test/bulk_read/br_test.cpp: Changed header to GPL version 2 only ndb/test/newtonapi/basic_test/common.cpp: Changed header to GPL version 2 only ndb/test/newtonapi/basic_test/common.hpp: Changed header to GPL version 2 only ndb/test/newtonapi/basic_test/ptr_binding/ptr_binding_test.cpp: Changed header to GPL version 2 only ndb/test/newtonapi/basic_test/too_basic.cpp: Changed header to GPL version 2 only ndb/test/newtonapi/perf_test/perf.cpp: Changed header to GPL version 2 only ndb/test/odbc/SQL99_test/SQL99_test.cpp: Changed header to GPL version 2 only ndb/test/odbc/SQL99_test/SQL99_test.h: Changed header to GPL version 2 only ndb/test/odbc/client/NDBT_ALLOCHANDLE.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/NDBT_ALLOCHANDLE_HDBC.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/NDBT_SQLConnect.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/NDBT_SQLPrepare.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLAllocEnvTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLAllocHandleTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLAllocHandleTest_bf.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLBindColTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLBindParameterTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLCancelTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLCloseCursorTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLColAttributeTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLColAttributeTest1.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLColAttributeTest2.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLColAttributeTest3.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLConnectTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLCopyDescTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLDescribeColTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLDisconnectTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLDriverConnectTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLEndTranTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLErrorTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLExecDirectTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLExecuteTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLFetchScrollTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLFetchTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLFreeHandleTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLFreeStmtTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetConnectAttrTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetCursorNameTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetDataTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetDescFieldTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetDescRecTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetDiagFieldTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetDiagRecSimpleTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetDiagRecTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetEnvAttrTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetFunctionsTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetInfoTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetStmtAttrTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLGetTypeInfoTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLMoreResultsTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLNumResultColsTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLParamDataTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLPrepareTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLPutDataTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLRowCountTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLSetConnectAttrTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLSetCursorNameTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLSetDescFieldTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLSetDescRecTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLSetEnvAttrTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLSetStmtAttrTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLTablesTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/SQLTransactTest.cpp: Changed header to GPL version 2 only ndb/test/odbc/client/common.hpp: Changed header to GPL version 2 only ndb/test/odbc/client/main.cpp: Changed header to GPL version 2 only ndb/test/odbc/driver/testOdbcDriver.cpp: Changed header to GPL version 2 only ndb/test/odbc/test_compiler/test_compiler.cpp: Changed header to GPL version 2 only ndb/test/run-test/main.cpp: Changed header to GPL version 2 only ndb/test/run-test/run-test.hpp: Changed header to GPL version 2 only ndb/test/src/CpcClient.cpp: Changed header to GPL version 2 only ndb/test/src/HugoAsynchTransactions.cpp: Changed header to GPL version 2 only ndb/test/src/HugoCalculator.cpp: Changed header to GPL version 2 only ndb/test/src/HugoOperations.cpp: Changed header to GPL version 2 only ndb/test/src/HugoTransactions.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_Error.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_Output.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_ResultRow.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_ReturnCodes.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_Table.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_Tables.cpp: Changed header to GPL version 2 only ndb/test/src/NDBT_Test.cpp: Changed header to GPL version 2 only ndb/test/src/NdbBackup.cpp: Changed header to GPL version 2 only ndb/test/src/NdbConfig.cpp: Changed header to GPL version 2 only ndb/test/src/NdbGrep.cpp: Changed header to GPL version 2 only ndb/test/src/NdbRestarter.cpp: Changed header to GPL version 2 only ndb/test/src/NdbRestarts.cpp: Changed header to GPL version 2 only ndb/test/src/NdbSchemaCon.cpp: Changed header to GPL version 2 only ndb/test/src/NdbSchemaOp.cpp: Changed header to GPL version 2 only ndb/test/src/UtilTransactions.cpp: Changed header to GPL version 2 only ndb/test/tools/copy_tab.cpp: Changed header to GPL version 2 only ndb/test/tools/cpcc.cpp: Changed header to GPL version 2 only ndb/test/tools/create_index.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoCalculator.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoFill.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoLoad.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoLockRecords.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoPkDelete.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoPkRead.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoPkReadRecord.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoPkUpdate.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoScanRead.cpp: Changed header to GPL version 2 only ndb/test/tools/hugoScanUpdate.cpp: Changed header to GPL version 2 only ndb/test/tools/old_dirs/waiter/waiter.cpp: Changed header to GPL version 2 only ndb/test/tools/restart.cpp: Changed header to GPL version 2 only ndb/test/tools/transproxy.cpp: Changed header to GPL version 2 only ndb/test/tools/verify_index.cpp: Changed header to GPL version 2 only ndb/tools/delete_all.cpp: Changed header to GPL version 2 only ndb/tools/desc.cpp: Changed header to GPL version 2 only ndb/tools/drop_index.cpp: Changed header to GPL version 2 only ndb/tools/drop_tab.cpp: Changed header to GPL version 2 only ndb/tools/listTables.cpp: Changed header to GPL version 2 only ndb/tools/ndb_config.cpp: Changed header to GPL version 2 only ndb/tools/ndb_test_platform.cpp: Changed header to GPL version 2 only ndb/tools/ndbsql.cpp: Changed header to GPL version 2 only ndb/tools/restore/Restore.cpp: Changed header to GPL version 2 only ndb/tools/restore/Restore.hpp: Changed header to GPL version 2 only ndb/tools/restore/consumer.cpp: Changed header to GPL version 2 only ndb/tools/restore/consumer.hpp: Changed header to GPL version 2 only ndb/tools/restore/consumer_printer.cpp: Changed header to GPL version 2 only ndb/tools/restore/consumer_printer.hpp: Changed header to GPL version 2 only ndb/tools/restore/consumer_restore.cpp: Changed header to GPL version 2 only ndb/tools/restore/consumer_restore.hpp: Changed header to GPL version 2 only ndb/tools/select_all.cpp: Changed header to GPL version 2 only ndb/tools/select_count.cpp: Changed header to GPL version 2 only ndb/tools/waiter.cpp: Changed header to GPL version 2 only ndb/tools/restore/consumer_restorem.cpp: Changed header to GPL version 2 only ndb/tools/restore/restore_main.cpp: Changed header to GPL version 2 only netware/mysql_fix_privilege_tables.pl: Changed header to GPL version 2 only netware/mysql_secure_installation.pl: Changed header to GPL version 2 only os2/Makefile.am: Changed header to GPL version 2 only os2/include/Makefile.am: Changed header to GPL version 2 only os2/include/sys/Makefile.am: Changed header to GPL version 2 only pstack/Makefile.am: Changed header to GPL version 2 only regex/Makefile.am: Changed header to GPL version 2 only scripts/Makefile.am: Changed header to GPL version 2 only scripts/fill_help_tables.sh: Changed header to GPL version 2 only scripts/mysql_config.sh: Changed header to GPL version 2 only scripts/mysql_secure_installation.sh: Changed header to GPL version 2 only server-tools/instance-manager/Makefile.am: Changed header to GPL version 2 only server-tools/instance-manager/buffer.cc: Changed header to GPL version 2 only server-tools/instance-manager/buffer.h: Changed header to GPL version 2 only server-tools/instance-manager/command.cc: Changed header to GPL version 2 only server-tools/instance-manager/command.h: Changed header to GPL version 2 only server-tools/instance-manager/commands.cc: Changed header to GPL version 2 only server-tools/instance-manager/commands.h: Changed header to GPL version 2 only server-tools/instance-manager/guardian.cc: Changed header to GPL version 2 only server-tools/instance-manager/guardian.h: Changed header to GPL version 2 only server-tools/instance-manager/instance.cc: Changed header to GPL version 2 only server-tools/instance-manager/instance.h: Changed header to GPL version 2 only server-tools/instance-manager/instance_map.cc: Changed header to GPL version 2 only server-tools/instance-manager/instance_map.h: Changed header to GPL version 2 only server-tools/instance-manager/instance_options.cc: Changed header to GPL version 2 only server-tools/instance-manager/instance_options.h: Changed header to GPL version 2 only server-tools/instance-manager/listener.cc: Changed header to GPL version 2 only server-tools/instance-manager/listener.h: Changed header to GPL version 2 only server-tools/instance-manager/log.cc: Changed header to GPL version 2 only server-tools/instance-manager/log.h: Changed header to GPL version 2 only server-tools/instance-manager/manager.cc: Changed header to GPL version 2 only server-tools/instance-manager/manager.h: Changed header to GPL version 2 only server-tools/instance-manager/messages.cc: Changed header to GPL version 2 only server-tools/instance-manager/messages.h: Changed header to GPL version 2 only server-tools/instance-manager/mysql_connection.cc: Changed header to GPL version 2 only server-tools/instance-manager/mysql_connection.h: Changed header to GPL version 2 only server-tools/instance-manager/mysql_manager_error.h: Changed header to GPL version 2 only server-tools/instance-manager/mysqlmanager.cc: Changed header to GPL version 2 only server-tools/instance-manager/options.cc: Changed header to GPL version 2 only server-tools/instance-manager/options.h: Changed header to GPL version 2 only server-tools/instance-manager/parse.cc: Changed header to GPL version 2 only server-tools/instance-manager/parse.h: Changed header to GPL version 2 only server-tools/instance-manager/parse_output.cc: Changed header to GPL version 2 only server-tools/instance-manager/parse_output.h: Changed header to GPL version 2 only server-tools/instance-manager/priv.cc: Changed header to GPL version 2 only server-tools/instance-manager/priv.h: Changed header to GPL version 2 only server-tools/instance-manager/protocol.cc: Changed header to GPL version 2 only server-tools/instance-manager/protocol.h: Changed header to GPL version 2 only server-tools/instance-manager/thread_registry.cc: Changed header to GPL version 2 only server-tools/instance-manager/thread_registry.h: Changed header to GPL version 2 only server-tools/instance-manager/user_map.cc: Changed header to GPL version 2 only server-tools/instance-manager/user_map.h: Changed header to GPL version 2 only sql/Makefile.am: Changed header to GPL version 2 only sql/client_settings.h: Changed header to GPL version 2 only sql/custom_conf.h: Changed header to GPL version 2 only sql/derror.cc: Changed header to GPL version 2 only sql/des_key_file.cc: Changed header to GPL version 2 only sql/discover.cc: Changed header to GPL version 2 only sql/field.cc: Changed header to GPL version 2 only sql/field.h: Changed header to GPL version 2 only sql/field_conv.cc: Changed header to GPL version 2 only sql/filesort.cc: Changed header to GPL version 2 only sql/frm_crypt.cc: Changed header to GPL version 2 only sql/gen_lex_hash.cc: Changed header to GPL version 2 only sql/gstream.cc: Changed header to GPL version 2 only sql/gstream.h: Changed header to GPL version 2 only sql/ha_archive.cc: Changed header to GPL version 2 only sql/ha_archive.h: Changed header to GPL version 2 only sql/ha_berkeley.cc: Changed header to GPL version 2 only sql/ha_berkeley.h: Changed header to GPL version 2 only sql/ha_blackhole.cc: Changed header to GPL version 2 only sql/ha_blackhole.h: Changed header to GPL version 2 only sql/ha_federated.cc: Changed header to GPL version 2 only sql/ha_federated.h: Changed header to GPL version 2 only sql/ha_heap.cc: Changed header to GPL version 2 only sql/ha_heap.h: Changed header to GPL version 2 only sql/ha_innodb.cc: Changed header to GPL version 2 only sql/ha_innodb.h: Changed header to GPL version 2 only sql/ha_myisam.cc: Changed header to GPL version 2 only sql/ha_myisam.h: Changed header to GPL version 2 only sql/ha_myisammrg.cc: Changed header to GPL version 2 only sql/ha_myisammrg.h: Changed header to GPL version 2 only sql/ha_ndbcluster.cc: Changed header to GPL version 2 only sql/ha_ndbcluster.h: Changed header to GPL version 2 only sql/handler.cc: Changed header to GPL version 2 only sql/handler.h: Changed header to GPL version 2 only sql/hash_filo.cc: Changed header to GPL version 2 only sql/hash_filo.h: Changed header to GPL version 2 only sql/hostname.cc: Changed header to GPL version 2 only sql/init.cc: Changed header to GPL version 2 only sql/item.cc: Changed header to GPL version 2 only sql/item.h: Changed header to GPL version 2 only sql/item_buff.cc: Changed header to GPL version 2 only sql/item_cmpfunc.cc: Changed header to GPL version 2 only sql/item_cmpfunc.h: Changed header to GPL version 2 only sql/item_create.cc: Changed header to GPL version 2 only sql/item_create.h: Changed header to GPL version 2 only sql/item_func.cc: Changed header to GPL version 2 only sql/item_func.h: Changed header to GPL version 2 only sql/item_geofunc.cc: Changed header to GPL version 2 only sql/item_geofunc.h: Changed header to GPL version 2 only sql/item_row.cc: Changed header to GPL version 2 only sql/item_row.h: Changed header to GPL version 2 only sql/item_strfunc.cc: Changed header to GPL version 2 only sql/item_strfunc.h: Changed header to GPL version 2 only sql/item_subselect.cc: Changed header to GPL version 2 only sql/item_subselect.h: Changed header to GPL version 2 only sql/item_sum.cc: Changed header to GPL version 2 only sql/item_sum.h: Changed header to GPL version 2 only sql/item_timefunc.cc: Changed header to GPL version 2 only sql/item_timefunc.h: Changed header to GPL version 2 only sql/item_uniq.cc: Changed header to GPL version 2 only sql/item_uniq.h: Changed header to GPL version 2 only sql/key.cc: Changed header to GPL version 2 only sql/lex.h: Changed header to GPL version 2 only sql/lex_symbol.h: Changed header to GPL version 2 only sql/lock.cc: Changed header to GPL version 2 only sql/log.cc: Changed header to GPL version 2 only sql/log_event.cc: Changed header to GPL version 2 only sql/log_event.h: Changed header to GPL version 2 only sql/matherr.c: Changed header to GPL version 2 only sql/mf_iocache.cc: Changed header to GPL version 2 only sql/my_decimal.cc: Changed header to GPL version 2 only sql/my_decimal.h: Changed header to GPL version 2 only sql/my_lock.c: Changed header to GPL version 2 only sql/mysql_priv.h: Changed header to GPL version 2 only sql/mysqld.cc: Changed header to GPL version 2 only sql/mysqld_suffix.h: Changed header to GPL version 2 only sql/net_serv.cc: Changed header to GPL version 2 only sql/opt_range.cc: Changed header to GPL version 2 only sql/opt_range.h: Changed header to GPL version 2 only sql/opt_sum.cc: Changed header to GPL version 2 only sql/parse_file.cc: Changed header to GPL version 2 only sql/parse_file.h: Changed header to GPL version 2 only sql/password.c: Changed header to GPL version 2 only sql/procedure.cc: Changed header to GPL version 2 only sql/procedure.h: Changed header to GPL version 2 only sql/protocol.cc: Changed header to GPL version 2 only sql/protocol.h: Changed header to GPL version 2 only sql/records.cc: Changed header to GPL version 2 only sql/repl_failsafe.cc: Changed header to GPL version 2 only sql/repl_failsafe.h: Changed header to GPL version 2 only sql/set_var.cc: Changed header to GPL version 2 only sql/set_var.h: Changed header to GPL version 2 only sql/slave.cc: Changed header to GPL version 2 only sql/slave.h: Changed header to GPL version 2 only sql/sp.cc: Changed header to GPL version 2 only sql/sp.h: Changed header to GPL version 2 only sql/sp_cache.cc: Changed header to GPL version 2 only sql/sp_cache.h: Changed header to GPL version 2 only sql/sp_head.cc: Changed header to GPL version 2 only sql/sp_head.h: Changed header to GPL version 2 only sql/sp_pcontext.cc: Changed header to GPL version 2 only sql/sp_pcontext.h: Changed header to GPL version 2 only sql/sp_rcontext.cc: Changed header to GPL version 2 only sql/sp_rcontext.h: Changed header to GPL version 2 only sql/spatial.cc: Changed header to GPL version 2 only sql/spatial.h: Changed header to GPL version 2 only sql/sql_acl.cc: Changed header to GPL version 2 only sql/sql_acl.h: Changed header to GPL version 2 only sql/sql_analyse.cc: Changed header to GPL version 2 only sql/sql_analyse.h: Changed header to GPL version 2 only sql/sql_array.h: Changed header to GPL version 2 only sql/sql_base.cc: Changed header to GPL version 2 only sql/sql_bitmap.h: Changed header to GPL version 2 only sql/sql_cache.cc: Changed header to GPL version 2 only sql/sql_cache.h: Changed header to GPL version 2 only sql/sql_class.cc: Changed header to GPL version 2 only sql/sql_class.h: Changed header to GPL version 2 only sql/sql_client.cc: Changed header to GPL version 2 only sql/sql_crypt.cc: Changed header to GPL version 2 only sql/sql_crypt.h: Changed header to GPL version 2 only sql/sql_cursor.cc: Changed header to GPL version 2 only sql/sql_cursor.h: Changed header to GPL version 2 only sql/sql_db.cc: Changed header to GPL version 2 only sql/sql_delete.cc: Changed header to GPL version 2 only sql/sql_derived.cc: Changed header to GPL version 2 only sql/sql_do.cc: Changed header to GPL version 2 only sql/sql_error.cc: Changed header to GPL version 2 only sql/sql_error.h: Changed header to GPL version 2 only sql/sql_handler.cc: Changed header to GPL version 2 only sql/sql_help.cc: Changed header to GPL version 2 only sql/sql_insert.cc: Changed header to GPL version 2 only sql/sql_lex.cc: Changed header to GPL version 2 only sql/sql_lex.h: Changed header to GPL version 2 only sql/sql_list.cc: Changed header to GPL version 2 only sql/sql_list.h: Changed header to GPL version 2 only sql/sql_load.cc: Changed header to GPL version 2 only sql/sql_locale.cc: Changed header to GPL version 2 only sql/sql_manager.cc: Changed header to GPL version 2 only sql/sql_manager.h: Changed header to GPL version 2 only sql/sql_map.cc: Changed header to GPL version 2 only sql/sql_map.h: Changed header to GPL version 2 only sql/sql_olap.cc: Changed header to GPL version 2 only sql/sql_parse.cc: Changed header to GPL version 2 only sql/sql_prepare.cc: Changed header to GPL version 2 only sql/sql_rename.cc: Changed header to GPL version 2 only sql/sql_repl.cc: Changed header to GPL version 2 only sql/sql_repl.h: Changed header to GPL version 2 only sql/sql_select.cc: Changed header to GPL version 2 only sql/sql_select.h: Changed header to GPL version 2 only sql/sql_show.cc: Changed header to GPL version 2 only sql/sql_sort.h: Changed header to GPL version 2 only sql/sql_state.c: Changed header to GPL version 2 only sql/sql_string.cc: Changed header to GPL version 2 only sql/sql_string.h: Changed header to GPL version 2 only sql/sql_table.cc: Changed header to GPL version 2 only sql/sql_test.cc: Changed header to GPL version 2 only sql/sql_trigger.cc: Changed header to GPL version 2 only sql/sql_trigger.h: Changed header to GPL version 2 only sql/sql_udf.cc: Changed header to GPL version 2 only sql/sql_udf.h: Changed header to GPL version 2 only sql/sql_union.cc: Changed header to GPL version 2 only sql/sql_update.cc: Changed header to GPL version 2 only sql-bench/Makefile.am: Changed header to GPL version 2 only sql-bench/as3ap.sh: Changed header to GPL version 2 only sql-bench/bench-count-distinct.sh: Changed header to GPL version 2 only sql-bench/bench-init.pl.sh: Changed header to GPL version 2 only sql-bench/compare-results.sh: Changed header to GPL version 2 only sql-bench/copy-db.sh: Changed header to GPL version 2 only sql-bench/crash-me.sh: Changed header to GPL version 2 only sql-bench/print-limit-table: Changed header to GPL version 2 only sql-bench/run-all-tests.sh: Changed header to GPL version 2 only sql/examples/ha_example.cc: Changed header to GPL version 2 only sql/examples/ha_example.h: Changed header to GPL version 2 only sql/examples/ha_tina.cc: Changed header to GPL version 2 only sql/examples/ha_tina.h: Changed header to GPL version 2 only sql/share/Makefile.am: Changed header to GPL version 2 only sql/share/charsets/Index.xml: Changed header to GPL version 2 only sql/share/charsets/armscii8.xml: Changed header to GPL version 2 only sql/share/charsets/ascii.xml: Changed header to GPL version 2 only sql/share/charsets/cp1250.xml: Changed header to GPL version 2 only sql/share/charsets/cp1251.xml: Changed header to GPL version 2 only sql/share/charsets/cp1256.xml: Changed header to GPL version 2 only sql/share/charsets/cp1257.xml: Changed header to GPL version 2 only sql/share/charsets/cp850.xml: Changed header to GPL version 2 only sql/share/charsets/cp852.xml: Changed header to GPL version 2 only sql/share/charsets/cp866.xml: Changed header to GPL version 2 only sql/share/charsets/dec8.xml: Changed header to GPL version 2 only sql/share/charsets/geostd8.xml: Changed header to GPL version 2 only sql/share/charsets/greek.xml: Changed header to GPL version 2 only sql/share/charsets/hebrew.xml: Changed header to GPL version 2 only sql/share/charsets/hp8.xml: Changed header to GPL version 2 only sql/share/charsets/keybcs2.xml: Changed header to GPL version 2 only sql/share/charsets/koi8r.xml: Changed header to GPL version 2 only sql/share/charsets/koi8u.xml: Changed header to GPL version 2 only sql/share/charsets/latin1.xml: Changed header to GPL version 2 only sql/share/charsets/latin2.xml: Changed header to GPL version 2 only sql/share/charsets/latin5.xml: Changed header to GPL version 2 only sql/share/charsets/latin7.xml: Changed header to GPL version 2 only sql/share/charsets/macce.xml: Changed header to GPL version 2 only sql/share/charsets/macroman.xml: Changed header to GPL version 2 only sql/share/charsets/swe7.xml: Changed header to GPL version 2 only sql/sql_view.cc: Changed header to GPL version 2 only sql/sql_view.h: Changed header to GPL version 2 only sql/sql_yacc.yy: Changed header to GPL version 2 only sql/stacktrace.c: Changed header to GPL version 2 only sql/stacktrace.h: Changed header to GPL version 2 only sql/strfunc.cc: Changed header to GPL version 2 only sql/structs.h: Changed header to GPL version 2 only sql/table.cc: Changed header to GPL version 2 only sql/table.h: Changed header to GPL version 2 only sql/thr_malloc.cc: Changed header to GPL version 2 only sql/time.cc: Changed header to GPL version 2 only sql/tzfile.h: Changed header to GPL version 2 only sql/tztime.cc: Changed header to GPL version 2 only sql/tztime.h: Changed header to GPL version 2 only sql/udf_example.c: Changed header to GPL version 2 only sql/uniques.cc: Changed header to GPL version 2 only sql/unireg.cc: Changed header to GPL version 2 only sql/unireg.h: Changed header to GPL version 2 only sql-bench/server-cfg.sh: Changed header to GPL version 2 only sql-bench/test-ATIS.sh: Changed header to GPL version 2 only sql-bench/test-alter-table.sh: Changed header to GPL version 2 only sql-bench/test-big-tables.sh: Changed header to GPL version 2 only sql-bench/test-connect.sh: Changed header to GPL version 2 only sql-bench/test-create.sh: Changed header to GPL version 2 only sql-bench/test-insert.sh: Changed header to GPL version 2 only sql-bench/test-select.sh: Changed header to GPL version 2 only sql-bench/test-transactions.sh: Changed header to GPL version 2 only sql-bench/test-wisconsin.sh: Changed header to GPL version 2 only sql-common/Makefile.am: Changed header to GPL version 2 only sql-common/client.c: Changed header to GPL version 2 only sql-common/my_time.c: Changed header to GPL version 2 only sql-common/my_user.c: Changed header to GPL version 2 only sql-common/pack.c: Changed header to GPL version 2 only strings/Makefile.am: Changed header to GPL version 2 only strings/bchange.c: Changed header to GPL version 2 only strings/bcmp.c: Changed header to GPL version 2 only strings/bcopy-duff.c: Changed header to GPL version 2 only strings/bfill.c: Changed header to GPL version 2 only strings/bmove.c: Changed header to GPL version 2 only strings/bmove512.c: Changed header to GPL version 2 only strings/bmove_upp-sparc.s: Changed header to GPL version 2 only strings/bmove_upp.c: Changed header to GPL version 2 only strings/bzero.c: Changed header to GPL version 2 only strings/conf_to_src.c: Changed header to GPL version 2 only strings/ctype-big5.c: Changed header to GPL version 2 only strings/ctype-bin.c: Changed header to GPL version 2 only strings/ctype-cp932.c: Changed header to GPL version 2 only strings/ctype-czech.c: Changed header to GPL version 2 only strings/ctype-euc_kr.c: Changed header to GPL version 2 only strings/ctype-eucjpms.c: Changed header to GPL version 2 only strings/ctype-gb2312.c: Changed header to GPL version 2 only strings/ctype-gbk.c: Changed header to GPL version 2 only strings/ctype-latin1.c: Changed header to GPL version 2 only strings/ctype-mb.c: Changed header to GPL version 2 only strings/ctype-simple.c: Changed header to GPL version 2 only strings/ctype-sjis.c: Changed header to GPL version 2 only strings/ctype-tis620.c: Changed header to GPL version 2 only strings/ctype-uca.c: Changed header to GPL version 2 only strings/ctype-ucs2.c: Changed header to GPL version 2 only strings/ctype-ujis.c: Changed header to GPL version 2 only strings/ctype-utf8.c: Changed header to GPL version 2 only strings/ctype-win1250ch.c: Changed header to GPL version 2 only strings/ctype.c: Changed header to GPL version 2 only strings/decimal.c: Changed header to GPL version 2 only strings/do_ctype.c: Changed header to GPL version 2 only strings/int2str.c: Changed header to GPL version 2 only strings/is_prefix.c: Changed header to GPL version 2 only strings/llstr.c: Changed header to GPL version 2 only strings/longlong2str-x86.s: Changed header to GPL version 2 only strings/longlong2str.c: Changed header to GPL version 2 only strings/longlong2str_asm.c: Changed header to GPL version 2 only strings/macros.asm: Changed header to GPL version 2 only strings/memcmp.c: Changed header to GPL version 2 only strings/memcpy.c: Changed header to GPL version 2 only strings/memset.c: Changed header to GPL version 2 only strings/my_strtoll10-x86.s: Changed header to GPL version 2 only strings/my_strtoll10.c: Changed header to GPL version 2 only strings/my_vsnprintf.c: Changed header to GPL version 2 only strings/ptr_cmp.asm: Changed header to GPL version 2 only strings/r_strinstr.c: Changed header to GPL version 2 only strings/str2int.c: Changed header to GPL version 2 only strings/str_alloc.c: Changed header to GPL version 2 only strings/str_test.c: Changed header to GPL version 2 only strings/strappend-sparc.s: Changed header to GPL version 2 only strings/strappend.c: Changed header to GPL version 2 only strings/strcat.c: Changed header to GPL version 2 only strings/strcend.c: Changed header to GPL version 2 only strings/strchr.c: Changed header to GPL version 2 only strings/strcmp.c: Changed header to GPL version 2 only strings/strcont.c: Changed header to GPL version 2 only strings/strend-sparc.s: Changed header to GPL version 2 only strings/strend.c: Changed header to GPL version 2 only strings/strfill.c: Changed header to GPL version 2 only strings/strings-not-used.h: Changed header to GPL version 2 only strings/strings-x86.s: Changed header to GPL version 2 only strings/strings.asm: Changed header to GPL version 2 only strings/strinstr-sparc.s: Changed header to GPL version 2 only strings/strinstr.c: Changed header to GPL version 2 only strings/strlen.c: Changed header to GPL version 2 only strings/strmake-sparc.s: Changed header to GPL version 2 only strings/strmake.c: Changed header to GPL version 2 only strings/strmov-sparc.s: Changed header to GPL version 2 only strings/strmov.c: Changed header to GPL version 2 only strings/strnlen.c: Changed header to GPL version 2 only strings/strnmov-sparc.s: Changed header to GPL version 2 only strings/strnmov.c: Changed header to GPL version 2 only strings/strrchr.c: Changed header to GPL version 2 only strings/strstr-sparc.s: Changed header to GPL version 2 only strings/strstr.c: Changed header to GPL version 2 only strings/strto.c: Changed header to GPL version 2 only strings/strtol.c: Changed header to GPL version 2 only strings/strtoll.c: Changed header to GPL version 2 only strings/strtoul.c: Changed header to GPL version 2 only strings/strtoull.c: Changed header to GPL version 2 only strings/strxmov-sparc.s: Changed header to GPL version 2 only strings/strxmov.asm: Changed header to GPL version 2 only strings/strxmov.c: Changed header to GPL version 2 only strings/strxnmov.c: Changed header to GPL version 2 only strings/t_ctype.h: Changed header to GPL version 2 only strings/udiv.c: Changed header to GPL version 2 only strings/xml.c: Changed header to GPL version 2 only support-files/MacOSX/Makefile.am: Changed header to GPL version 2 only support-files/Makefile.am: Changed header to GPL version 2 only support-files/MySQL-shared-compat.spec.sh: Changed header to GPL version 2 only tests/Makefile.am: Changed header to GPL version 2 only tests/connect_test.c: Changed header to GPL version 2 only tests/deadlock_test.c: Changed header to GPL version 2 only tests/insert_test.c: Changed header to GPL version 2 only tests/list_test.c: Changed header to GPL version 2 only tests/mysql_client_test.c: Changed header to GPL version 2 only tests/select_test.c: Changed header to GPL version 2 only tests/showdb_test.c: Changed header to GPL version 2 only tests/ssl_test.c: Changed header to GPL version 2 only tests/thread_test.c: Changed header to GPL version 2 only tools/Makefile.am: Changed header to GPL version 2 only tools/mysqlmanager.c: Changed header to GPL version 2 only vio/Makefile.am: Changed header to GPL version 2 only vio/test-ssl.c: Changed header to GPL version 2 only vio/test-sslclient.c: Changed header to GPL version 2 only vio/test-sslserver.c: Changed header to GPL version 2 only vio/vio.c: Changed header to GPL version 2 only vio/vio_priv.h: Changed header to GPL version 2 only vio/viosocket.c: Changed header to GPL version 2 only vio/viossl.c: Changed header to GPL version 2 only vio/viosslfactories.c: Changed header to GPL version 2 only vio/viotest-ssl.c: Changed header to GPL version 2 only win/Makefile.am: Changed header to GPL version 2 only zlib/Makefile.am: Changed header to GPL version 2 only
19 years ago
Added back sql-bench directory, so that one can more easily run benchmarks on a server and add new benchmarks for new optimizations Fixed memory leak in _db_set() (Bug#24497 Valgrind warning: get_one_option) Don't call net_clear() on COM_QUIT. This avoids a warning from net_clear() after shutdown: "skipped ## bytes from file" BUG#21428: skipped 9 bytes from file: socket (3)" on "mysqladmin shutdown" sql-bench/test-wisconsin.sh: Rename: BitKeeper/deleted/.del-test-wisconsin.sh~c0b86821b5f95f26 -> sql-bench/test-wisconsin.sh sql-bench/test-transactions.sh: Rename: BitKeeper/deleted/.del-test-transactions.sh~c1c892f10c40caf -> sql-bench/test-transactions.sh sql-bench/test-insert.sh: Rename: BitKeeper/deleted/.del-test-insert.sh~893bfac9dedb79a7 -> sql-bench/test-insert.sh sql-bench/test-select.sh: Rename: BitKeeper/deleted/.del-test-select.sh~6d5cc770acf11be6 -> sql-bench/test-select.sh sql-bench/test-create.sh: Rename: BitKeeper/deleted/.del-test-create.sh~f9a1ea38c191b17a -> sql-bench/test-create.sh sql-bench/test-big-tables.sh: Rename: BitKeeper/deleted/.del-test-big-tables.sh~5b1b0c5fb623565a -> sql-bench/test-big-tables.sh sql-bench/test-connect.sh: Rename: BitKeeper/deleted/.del-test-connect.sh~382a728c949ee075 -> sql-bench/test-connect.sh sql-bench/test-ATIS.sh: Rename: BitKeeper/deleted/.del-test-ATIS.sh~e8ebff7086c95773 -> sql-bench/test-ATIS.sh sql-bench/test-alter-table.sh: Rename: BitKeeper/deleted/.del-test-alter-table.sh~eba6cfa9972fcced -> sql-bench/test-alter-table.sh sql-bench/innotest2b.sh: Rename: BitKeeper/deleted/.del-innotest2b.sh~7b99ece835e8dff3 -> sql-bench/innotest2b.sh sql-bench/run-all-tests.sh: Rename: BitKeeper/deleted/.del-run-all-tests.sh~41d6da1cf211ee95 -> sql-bench/run-all-tests.sh sql-bench/innotest2.sh: Rename: BitKeeper/deleted/.del-innotest2.sh~9c14df528285603 -> sql-bench/innotest2.sh sql-bench/innotest2a.sh: Rename: BitKeeper/deleted/.del-innotest2a.sh~e01d016a7cafdc0b -> sql-bench/innotest2a.sh sql-bench/innotest1a.sh: Rename: BitKeeper/deleted/.del-innotest1a.sh~c64f4610ae1e26fe -> sql-bench/innotest1a.sh sql-bench/innotest1b.sh: Rename: BitKeeper/deleted/.del-innotest1b.sh~aafd0819ae84da7b -> sql-bench/innotest1b.sh sql-bench/innotest1.sh: Rename: BitKeeper/deleted/.del-innotest1.sh~aa36bce09ca783c7 -> sql-bench/innotest1.sh sql-bench/crash-me.sh: Rename: BitKeeper/deleted/.del-crash-me.sh~2fa881d0b40339c8 -> sql-bench/crash-me.sh sql-bench/graph-compare-results.sh: Rename: BitKeeper/deleted/.del-graph-compare-results.sh~7e4e28b3591b4542 -> sql-bench/graph-compare-results.sh sql-bench/copy-db.sh: Rename: BitKeeper/deleted/.del-copy-db.sh~e8116afb93144ccd -> sql-bench/copy-db.sh sql-bench/compare-results.sh: Rename: BitKeeper/deleted/.del-compare-results.sh~a9e26e2644c694b3 -> sql-bench/compare-results.sh sql-bench/bench-count-distinct.sh: Rename: BitKeeper/deleted/.del-bench-count-distinct.sh~a92f174271a831d7 -> sql-bench/bench-count-distinct.sh sql-bench/as3ap.sh: Rename: BitKeeper/deleted/.del-as3ap.sh~f54eebbd8d34c9b6 -> sql-bench/as3ap.sh sql-bench/Comments/Informix.crash-me: Rename: BitKeeper/deleted/.del-Informix.crash-me~51ab5b717cefe74 -> sql-bench/Comments/Informix.crash-me sql-bench/Comments/postgres.crash-me: Rename: BitKeeper/deleted/.del-postgres.crash-me~eacac145c3e30f17 -> sql-bench/Comments/postgres.crash-me sql-bench/Comments/Empress.crash-me: Rename: BitKeeper/deleted/.del-Empress.crash-me~bdaff0c68ce10f02 -> sql-bench/Comments/Empress.crash-me sql-bench/Comments/Adabas.crash-me: Rename: BitKeeper/deleted/.del-Adabas.crash-me~ce88ba1a540971ac -> sql-bench/Comments/Adabas.crash-me sql-bench/Comments/Access.crash-me: Rename: BitKeeper/deleted/.del-Access.crash-me~bb457ec282d939b6 -> sql-bench/Comments/Access.crash-me sql-bench/Comments/postgres.benchmark: Rename: BitKeeper/deleted/.del-postgres.benchmark~4d30890732b784a -> sql-bench/Comments/postgres.benchmark sql-bench/Comments/mysql.benchmark: Rename: BitKeeper/deleted/.del-mysql.benchmark~4d8729c0937456fc -> sql-bench/Comments/mysql.benchmark sql-bench/Comments/FrontBase.benchmark: Rename: BitKeeper/deleted/.del-FrontBase.benchmark~217041ef18274c2e -> sql-bench/Comments/FrontBase.benchmark sql-bench/Comments/interbase: Rename: BitKeeper/deleted/.del-interbase~cdad59622b4d6f3 -> sql-bench/Comments/interbase sql-bench/uname.bat: Rename: BitKeeper/deleted/.del-uname.bat~a6d933d2ee9314c -> sql-bench/uname.bat sql-bench/pwd.bat: Rename: BitKeeper/deleted/.del-pwd.bat~9b64050849abf51 -> sql-bench/pwd.bat sql-bench/example.bat: Rename: BitKeeper/deleted/.del-example.bat~22d0170bccf0f030 -> sql-bench/example.bat sql-bench/Makefile.am: Rename: BitKeeper/deleted/.del-Makefile.am~7b07da85b2e9375 -> sql-bench/Makefile.am sql-bench/Data/ATIS/transport.txt: Rename: BitKeeper/deleted/.del-transport.txt~fa4ca40735f8354c -> sql-bench/Data/ATIS/transport.txt sql-bench/Data/ATIS/time_zone.txt: Rename: BitKeeper/deleted/.del-time_zone.txt~4171f9ca732f65c0 -> sql-bench/Data/ATIS/time_zone.txt sql-bench/Data/Wisconsin/tenk.data: Rename: BitKeeper/deleted/.del-tenk.data~6aeaebdd534e458e -> sql-bench/Data/Wisconsin/tenk.data sql-bench/Data/Wisconsin/onek.data: Rename: BitKeeper/deleted/.del-onek.data~6cd1edaf596a7f7 -> sql-bench/Data/Wisconsin/onek.data sql-bench/Data/ATIS/stop1.txt: Rename: BitKeeper/deleted/.del-stop1.txt~f09ba164ad44a288 -> sql-bench/Data/ATIS/stop1.txt sql-bench/Data/ATIS/time_interval.txt: Rename: BitKeeper/deleted/.del-time_interval.txt~a1def62e267a59b2 -> sql-bench/Data/ATIS/time_interval.txt sql-bench/Data/ATIS/stop.txt: Rename: BitKeeper/deleted/.del-stop.txt~31fb564e1f415e34 -> sql-bench/Data/ATIS/stop.txt sql-bench/Data/ATIS/restriction.txt: Rename: BitKeeper/deleted/.del-restriction.txt~6ae208924617784a -> sql-bench/Data/ATIS/restriction.txt sql-bench/Data/ATIS/state.txt: Rename: BitKeeper/deleted/.del-state.txt~9dd470ce14075b90 -> sql-bench/Data/ATIS/state.txt sql-bench/Data/ATIS/restrict_class.txt: Rename: BitKeeper/deleted/.del-restrict_class.txt~2f741bf0ea498f84 -> sql-bench/Data/ATIS/restrict_class.txt sql-bench/Data/ATIS/month_name.txt: Rename: BitKeeper/deleted/.del-month_name.txt~4c44f7a323d57d92 -> sql-bench/Data/ATIS/month_name.txt sql-bench/Data/ATIS/restrict_carrier.txt: Rename: BitKeeper/deleted/.del-restrict_carrier.txt~925b5492f3f9cba3 -> sql-bench/Data/ATIS/restrict_carrier.txt sql-bench/Data/ATIS/ground_service.txt: Rename: BitKeeper/deleted/.del-ground_service.txt~1087e477e86e84c -> sql-bench/Data/ATIS/ground_service.txt sql-bench/Data/ATIS/food_service.txt: Rename: BitKeeper/deleted/.del-food_service.txt~66d95a150c28458 -> sql-bench/Data/ATIS/food_service.txt sql-bench/Data/ATIS/flight_day.txt: Rename: BitKeeper/deleted/.del-flight_day.txt~76868d6d265d441e -> sql-bench/Data/ATIS/flight_day.txt sql-bench/Data/ATIS/flight_fare.txt: Rename: BitKeeper/deleted/.del-flight_fare.txt~d7322593c8530487 -> sql-bench/Data/ATIS/flight_fare.txt sql-bench/Data/ATIS/flight_class.txt: Rename: BitKeeper/deleted/.del-flight_class.txt~1801101474c29098 -> sql-bench/Data/ATIS/flight_class.txt sql-bench/Data/ATIS/fconnection.txt: Rename: BitKeeper/deleted/.del-fconnection.txt~e0ef6a8b5560a713 -> sql-bench/Data/ATIS/fconnection.txt sql-bench/Data/ATIS/flight.txt: Rename: BitKeeper/deleted/.del-flight.txt~e5065423760e99eb -> sql-bench/Data/ATIS/flight.txt sql-bench/Data/ATIS/fare.txt: Rename: BitKeeper/deleted/.del-fare.txt~ea0652f490bc24a6 -> sql-bench/Data/ATIS/fare.txt sql-bench/Data/ATIS/day_name.txt: Rename: BitKeeper/deleted/.del-day_name.txt~f813b215955d894c -> sql-bench/Data/ATIS/day_name.txt sql-bench/Data/ATIS/dual_carrier.txt: Rename: BitKeeper/deleted/.del-dual_carrier.txt~a7dd776224fbd92b -> sql-bench/Data/ATIS/dual_carrier.txt sql-bench/Data/ATIS/date_day.txt: Rename: BitKeeper/deleted/.del-date_day.txt~4e9a282fcf54cfd8 -> sql-bench/Data/ATIS/date_day.txt sql-bench/Data/ATIS/compound_class.txt: Rename: BitKeeper/deleted/.del-compound_class.txt~d4a2f1b7f96340b9 -> sql-bench/Data/ATIS/compound_class.txt sql-bench/Data/ATIS/connect_leg.txt: Rename: BitKeeper/deleted/.del-connect_leg.txt~f97b6e94e108bb36 -> sql-bench/Data/ATIS/connect_leg.txt sql-bench/Data/ATIS/code_description.txt: Rename: BitKeeper/deleted/.del-code_description.txt~f9117373e438b0e2 -> sql-bench/Data/ATIS/code_description.txt sql-bench/Data/ATIS/city.txt: Rename: BitKeeper/deleted/.del-city.txt~d96dd6d073344d2e -> sql-bench/Data/ATIS/city.txt sql-bench/Data/ATIS/class_of_service.txt: Rename: BitKeeper/deleted/.del-class_of_service.txt~21f6b9848b8c76d -> sql-bench/Data/ATIS/class_of_service.txt sql-bench/Data/ATIS/airport_service.txt: Rename: BitKeeper/deleted/.del-airport_service.txt~6ee6d5b852b3e38 -> sql-bench/Data/ATIS/airport_service.txt sql-bench/Data/ATIS/airline.txt: Rename: BitKeeper/deleted/.del-airline.txt~a79f8eadf853f2c8 -> sql-bench/Data/ATIS/airline.txt sql-bench/Data/ATIS/airport.txt: Rename: BitKeeper/deleted/.del-airport.txt~59c78514130e1f45 -> sql-bench/Data/ATIS/airport.txt sql-bench/Data/ATIS/aircraft.txt: Rename: BitKeeper/deleted/.del-aircraft.txt~15e4de7ab37c92d3 -> sql-bench/Data/ATIS/aircraft.txt sql-bench/TODO: Rename: BitKeeper/deleted/.del-TODO~cac6d7a63c426ae5 -> sql-bench/TODO sql-bench/limits/sybase.cfg: Rename: BitKeeper/deleted/.del-sybase.cfg~c4636b12767b3f14 -> sql-bench/limits/sybase.cfg sql-bench/limits/solid-nt4.cfg: Rename: BitKeeper/deleted/.del-solid-nt4.cfg~cca779f0c9e29d31 -> sql-bench/limits/solid-nt4.cfg sql-bench/limits/solid.cfg: Rename: BitKeeper/deleted/.del-solid.cfg~5ae0e4342eadb0fb -> sql-bench/limits/solid.cfg sql-bench/limits/pg.cfg: Rename: BitKeeper/deleted/.del-pg.cfg~db59cf39a5d417be -> sql-bench/limits/pg.cfg sql-bench/limits/mysql.cfg: Rename: BitKeeper/deleted/.del-mysql.cfg~9cab20a8771b93cf -> sql-bench/limits/mysql.cfg sql-bench/limits/oracle.cfg: Rename: BitKeeper/deleted/.del-oracle.cfg~affab21af8f438fd -> sql-bench/limits/oracle.cfg sql-bench/limits/mysql-4.1.cfg: Rename: BitKeeper/deleted/.del-mysql-4.1.cfg~b6c5e74aefc99e3c -> sql-bench/limits/mysql-4.1.cfg sql-bench/limits/mysql-3.23.cfg: Rename: BitKeeper/deleted/.del-mysql-3.23.cfg~3cf9d6be54b77a3c -> sql-bench/limits/mysql-3.23.cfg sql-bench/limits/mysql-4.0.cfg: Rename: BitKeeper/deleted/.del-mysql-4.0.cfg~6c9d63c85b5ef574 -> sql-bench/limits/mysql-4.0.cfg sql-bench/limits/mysql-3.22.cfg: Rename: BitKeeper/deleted/.del-mysql-3.22.cfg~e706f26a161175cd -> sql-bench/limits/mysql-3.22.cfg sql-bench/limits/msql.cfg: Rename: BitKeeper/deleted/.del-msql.cfg~52710b12932cceb9 -> sql-bench/limits/msql.cfg sql-bench/limits/ms-sql65.cfg: Rename: BitKeeper/deleted/.del-ms-sql65.cfg~6b9bc3c460dbee05 -> sql-bench/limits/ms-sql65.cfg sql-bench/limits/mimer.cfg: Rename: BitKeeper/deleted/.del-mimer.cfg~234e6c1c3c47b612 -> sql-bench/limits/mimer.cfg sql-bench/limits/ms-sql.cfg: Rename: BitKeeper/deleted/.del-ms-sql.cfg~1907964264d2786a -> sql-bench/limits/ms-sql.cfg sql-bench/limits/interbase.cfg: Rename: BitKeeper/deleted/.del-interbase.cfg~c6951a0376cc6ff3 -> sql-bench/limits/interbase.cfg sql-bench/limits/interbase-dialect3.cfg: Rename: BitKeeper/deleted/.del-interbase-dialect3.cfg~46277bdfc74c667a -> sql-bench/limits/interbase-dialect3.cfg sql-bench/limits/interbase-superserver.cfg: Rename: BitKeeper/deleted/.del-interbase-superserver.cfg~22501198689243b0 -> sql-bench/limits/interbase-superserver.cfg sql-bench/limits/interbase-dialect1.cfg: Rename: BitKeeper/deleted/.del-interbase-dialect1.cfg~659206b5b9a11036 -> sql-bench/limits/interbase-dialect1.cfg sql-bench/limits/empress.cfg: Rename: BitKeeper/deleted/.del-empress.cfg~1f97f34d6560a499 -> sql-bench/limits/empress.cfg sql-bench/limits/frontbase.cfg: Rename: BitKeeper/deleted/.del-frontbase.cfg~71369e9c002696e -> sql-bench/limits/frontbase.cfg sql-bench/limits/db2.cfg: Rename: BitKeeper/deleted/.del-db2.cfg~711099b4d7906959 -> sql-bench/limits/db2.cfg sql-bench/limits/access.cfg: Rename: BitKeeper/deleted/.del-access.cfg~5239ea3655b7bba0 -> sql-bench/limits/access.cfg sql-bench/limits/access_odbc.cfg: Rename: BitKeeper/deleted/.del-access_odbc.cfg~34b4cf0eda56c4b1 -> sql-bench/limits/access_odbc.cfg sql-bench/limits/Informix.cfg: Rename: BitKeeper/deleted/.del-Informix.cfg~b94188e1ececb51b -> sql-bench/limits/Informix.cfg sql-bench/limits/Adabas.cfg: Rename: BitKeeper/deleted/.del-Adabas.cfg~343ed4e7f8b02111 -> sql-bench/limits/Adabas.cfg sql-bench/README: Rename: BitKeeper/deleted/.del-README~b1aa0c1bf9f5eb5e -> sql-bench/README BitKeeper/deleted/.del-create-pg_fast-Linux_2.2.14_my_SMP_i686-crashed: Delete: sql-bench/Results/create-pg_fast-Linux_2.2.14_my_SMP_i686-crashed Makefile.am: Added back sql-bench configure.in: Added back sql-bench dbug/dbug.c: Fixed memory leak in _db_set() This is not a complete fix as we can still get memory leaks if we do any of the following: mysqld --debug --debug CAll DBUG_SET or DBUG_SET_INITIAL more than once in a program Use SET @@global.debug=xxxx At some point we should fix the above, but this is not critical for normal operation (only for debugging) Bug #24497 Valgrind warning: get_one_option Note that all changes to _db_set_ is only a variable access change, and can be ignored while reviewing the bug fix. mysql-test/t/flush_read_lock_kill-master.opt: Added '+' to option, to be able to use this together with --debug mysql-test/valgrind.supp: Removed warning that is now fixed mysys/ptr_cmp.c: Fixed wrong pointer read (probably never used) scripts/make_binary_distribution.sh: Added back sql_bench sql/field.h: Removed class function that was identical in parent class sql/mysqld.cc: Removed some calls to my_thread_init() / my_thread_end() that was not needed. Only call DBUG_SET_INITAL, not DBUG_SET (Fixes memory leak in dbug) Mark some code as deadcode sql/net_serv.cc: Add information about from where error comes sql-bench/bench-init.pl.sh: Cleaned up help text sql-bench/server-cfg.sh: Don't write '/' after server name of no ssl version sql-common/client.c: Don't call net_clear() on COM_QUIT. This avoids a warning from net_clear() after shutdown: "skipped ## bytes from file" BUG#21428: skipped 9 bytes from file: socket (3)" on "mysqladmin shutdown" sql/sql_parse.cc: Added comment sql/table.h: Removed compiler warning
19 years ago
  1. #!/usr/bin/perl
  2. # -*- perl -*-
  3. # Copyright (C) 2000-2006 MySQL AB
  4. #
  5. # This library is free software; you can redistribute it and/or
  6. # modify it under the terms of the GNU Library General Public
  7. # License as published by the Free Software Foundation; version 2
  8. # of the License.
  9. #
  10. # This library is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. # Library General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU Library General Public
  16. # License along with this library; if not, write to the Free
  17. # Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  18. # MA 02111-1307, USA
  19. #
  20. # The configuration file for the DBI/DBD tests on different databases ....
  21. # You will need the DBD module for the database you are running.
  22. # Monty made this bench script and I (Luuk de Boer) rewrote it to DBI/DBD.
  23. # Monty rewrote this again to use packages.
  24. #
  25. # Each database has a different package that has 3 functions:
  26. # new Creates a object with some standard slot
  27. # version Version number of the server
  28. # create Generates commands to create a table
  29. #
  30. #
  31. # First some global functions that help use the packages:
  32. #
  33. sub get_server
  34. {
  35. my ($name,$host,$database,$odbc,$machine,$socket,$connect_options)=@_;
  36. my ($server);
  37. if ($name =~ /mysql/i)
  38. { $server=new db_MySQL($host, $database, $machine, $socket,$connect_options); }
  39. elsif ($name =~ /pg/i)
  40. { $server= new db_Pg($host,$database); }
  41. elsif ($name =~ /msql/i)
  42. { $server= new db_mSQL($host,$database); }
  43. elsif ($name =~ /solid/i)
  44. { $server= new db_Solid($host,$database); }
  45. elsif ($name =~ /Empress/i)
  46. { $server= new db_Empress($host,$database); }
  47. elsif ($name =~ /FrontBase/i)
  48. { $server= new db_FrontBase($host,$database); }
  49. elsif ($name =~ /Oracle/i)
  50. { $server= new db_Oracle($host,$database); }
  51. elsif ($name =~ /Access/i)
  52. { $server= new db_access($host,$database); }
  53. elsif ($name =~ /Informix/i)
  54. { $server= new db_Informix($host,$database); }
  55. elsif ($name =~ /ms-sql/i)
  56. { $server= new db_ms_sql($host,$database); }
  57. elsif ($name =~ /sybase/i)
  58. { $server= new db_sybase($host,$database); }
  59. elsif ($name =~ /Adabas/i) # Adabas has two drivers
  60. {
  61. $server= new db_Adabas($host,$database);
  62. if ($name =~ /AdabasD/i)
  63. {
  64. $server->{'data_source'} =~ s/:Adabas:/:AdabasD:/;
  65. }
  66. }
  67. elsif ($name =~ /DB2/i)
  68. { $server= new db_db2($host,$database); }
  69. elsif ($name =~ /Mimer/i)
  70. { $server= new db_Mimer($host,$database); }
  71. elsif ($name =~ /Sapdb/i)
  72. { $server= new db_sapdb($host,$database); }
  73. elsif ($name =~ /interBase/i)
  74. { $server= new db_interbase($host,$database); }
  75. else
  76. {
  77. die "Unknown sql server name used: $name\nUse one of: Access, Adabas, AdabasD, Empress, FrontBase, Oracle, Informix, InterBase, DB2, mSQL, Mimer, MS-SQL, MySQL, Pg, Solid, SAPDB or Sybase.\nIf the connection is done trough ODBC the name must end with _ODBC\n";
  78. }
  79. if ($name =~ /_ODBC$/i || defined($odbc) && $odbc)
  80. {
  81. if (! ($server->{'data_source'} =~ /^([^:]*):([^:]+):([^:]*)/ ))
  82. {
  83. die "Can't find databasename in data_source: '" .
  84. $server->{'data_source'}. "'\n";
  85. }
  86. if ($3) {
  87. $server->{'data_source'} = "$1:ODBC:$3";
  88. } else {
  89. $server->{'data_source'} = "$1:ODBC:$database";
  90. }
  91. }
  92. return $server;
  93. }
  94. sub all_servers
  95. {
  96. return ["Access", "Adabas", "DB2", "Empress", "FrontBase", "Oracle",
  97. "Informix", "InterBase", "Mimer", "mSQL", "MS-SQL", "MySQL", "Pg","SAPDB",
  98. "Solid", "Sybase"];
  99. }
  100. #############################################################################
  101. # First the configuration for MySQL off course :-)
  102. #############################################################################
  103. package db_MySQL;
  104. sub new
  105. {
  106. my ($type,$host,$database,$machine,$socket,$connect_options)= @_;
  107. my $self= {};
  108. my %limits;
  109. bless $self;
  110. $self->{'cmp_name'} = "mysql";
  111. $self->{'data_source'} = "DBI:mysql:database=$database;host=$host";
  112. $self->{'data_source'} .= ";mysql_socket=$socket" if($socket);
  113. $self->{'data_source'} .= ";$connect_options" if($connect_options);
  114. $self->{'limits'} = \%limits;
  115. $self->{'blob'} = "blob";
  116. $self->{'text'} = "text";
  117. $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
  118. $self->{'vacuum'} = 1; # When using with --fast
  119. $self->{'drop_attr'} = "";
  120. $self->{'transactions'} = 0; # Transactions disabled by default
  121. $limits{'NEG'} = 1; # Supports -id
  122. $limits{'alter_add_multi_col'}= 1; #Have ALTER TABLE t add a int,add b int;
  123. $limits{'alter_table'} = 1; # Have ALTER TABLE
  124. $limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column
  125. $limits{'column_alias'} = 1; # Alias for fields in select statement.
  126. $limits{'func_extra_%'} = 1; # Has % as alias for mod()
  127. $limits{'func_extra_if'} = 1; # Have function if.
  128. $limits{'func_extra_in_num'} = 1; # Has function in
  129. $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
  130. $limits{'func_odbc_mod'} = 1; # Have function mod.
  131. $limits{'functions'} = 1; # Has simple functions (+/-)
  132. $limits{'group_by_position'} = 1; # Can use 'GROUP BY 1'
  133. $limits{'group_distinct_functions'}= 1; # Have count(distinct)
  134. $limits{'group_func_extra_std'} = 1; # Have group function std().
  135. $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
  136. $limits{'group_functions'} = 1; # Have group functions
  137. $limits{'having_with_alias'} = 1; # Can use aliases in HAVING
  138. $limits{'having_with_group'} = 1; # Can use group functions in HAVING
  139. $limits{'insert_multi_value'} = 1; # Have INSERT ... values (1,2),(3,4)
  140. $limits{'insert_select'} = 1;
  141. $limits{'join_optimizer'} = 1; # Can optimize FROM tables
  142. $limits{'left_outer_join'} = 1; # Supports left outer joins
  143. $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
  144. $limits{'limit'} = 1; # supports the limit attribute
  145. $limits{'truncate_table'} = 1;
  146. $limits{'load_data_infile'} = 1; # Has load data infile
  147. $limits{'lock_tables'} = 1; # Has lock tables
  148. $limits{'max_column_name'} = 64; # max table and column name
  149. $limits{'max_columns'} = 2000; # Max number of columns in table
  150. $limits{'max_conditions'} = 9999; # (Actually not a limit)
  151. $limits{'max_index'} = 16; # Max number of keys
  152. $limits{'max_index_parts'} = 16; # Max segments/key
  153. $limits{'max_tables'} = (($machine || '') =~ "^win") ? 5000 : 65000;
  154. $limits{'max_text_size'} = 1000000; # Good enough for tests
  155. $limits{'multi_drop'} = 1; # Drop table can take many tables
  156. $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
  157. $limits{'order_by_unused'} = 1;
  158. $limits{'query_size'} = 1000000; # Max size with default buffers.
  159. $limits{'select_without_from'}= 1; # Can do 'select 1';
  160. $limits{'subqueries'} = 0; # Doesn't support sub-queries.
  161. $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
  162. $limits{'unique_index'} = 1; # Unique index works or not
  163. $limits{'working_all_fields'} = 1;
  164. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  165. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  166. # Some fixes that depends on the environment
  167. if (defined($main::opt_create_options) &&
  168. $main::opt_create_options =~ /engine=heap/i)
  169. {
  170. $limits{'working_blobs'} = 0; # HEAP tables can't handle BLOB's
  171. }
  172. if (defined($main::opt_create_options) &&
  173. $main::opt_create_options =~ /engine=innodb/i)
  174. {
  175. $self->{'transactions'} = 1; # Transactions enabled
  176. }
  177. if (defined($main::opt_create_options) &&
  178. $main::opt_create_options =~ /engine=ndb/i)
  179. {
  180. $self->{'transactions'} = 1; # Transactions enabled
  181. $limits{'max_columns'} = 90; # Max number of columns in table
  182. $limits{'max_tables'} = 32; # No comments
  183. }
  184. if (defined($main::opt_create_options) &&
  185. $main::opt_create_options =~ /engine=bdb/i)
  186. {
  187. $self->{'transactions'} = 1; # Transactions enabled
  188. }
  189. if (defined($main::opt_create_options) &&
  190. $main::opt_create_options =~ /engine=gemini/i)
  191. {
  192. $limits{'working_blobs'} = 0; # Blobs not implemented yet
  193. $limits{'max_tables'} = 500;
  194. $self->{'transactions'} = 1; # Transactions enabled
  195. }
  196. return $self;
  197. }
  198. #
  199. # Get the version number of the database
  200. #
  201. sub version
  202. {
  203. my ($self)=@_;
  204. my ($dbh,$sth,$version,@row);
  205. $dbh=$self->connect();
  206. $sth = $dbh->prepare("select VERSION()") or die $DBI::errstr;
  207. $version="MySQL 3.20.?";
  208. if ($sth->execute && (@row = $sth->fetchrow_array))
  209. {
  210. $row[0] =~ s/-/ /g; # To get better tables with long names
  211. $version="MySQL $row[0]";
  212. }
  213. $sth->finish;
  214. $sth = $dbh->prepare("show status like 'ssl_version'") or die $DBI::errstr;
  215. if ($sth->execute && (@row = $sth->fetchrow_array) && $row[1])
  216. {
  217. $version .= "/$row[1]";
  218. }
  219. $sth->finish;
  220. $dbh->disconnect;
  221. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  222. return $version;
  223. }
  224. #
  225. # Connection with optional disabling of logging
  226. #
  227. sub connect
  228. {
  229. my ($self)=@_;
  230. my ($dbh);
  231. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  232. $main::opt_password,{ PrintError => 0}) ||
  233. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  234. $dbh->do("SET OPTION LOG_OFF=1,UPDATE_LOG=0");
  235. return $dbh;
  236. }
  237. #
  238. # Returns a list of statements to create a table
  239. # The field types are in ANSI SQL format.
  240. #
  241. # If one uses $main::opt_fast then one is allowed to use
  242. # non standard types to get better speed.
  243. #
  244. sub create
  245. {
  246. my($self,$table_name,$fields,$index,$options) = @_;
  247. my($query,@queries);
  248. $query="create table $table_name (";
  249. foreach $field (@$fields)
  250. {
  251. # $field =~ s/ decimal/ double(10,2)/i;
  252. $field =~ s/ big_decimal/ double(10,2)/i;
  253. $query.= $field . ',';
  254. }
  255. foreach $index (@$index)
  256. {
  257. $query.= $index . ',';
  258. }
  259. substr($query,-1)=")"; # Remove last ',';
  260. $query.=" $options" if (defined($options));
  261. $query.=" $main::opt_create_options" if (defined($main::opt_create_options));
  262. push(@queries,$query);
  263. return @queries;
  264. }
  265. sub insert_file {
  266. my ($self,$dbname, $file, $dbh) = @_;
  267. my ($command, $sth);
  268. $file =~ s|\\|/|g; # Change Win32 names to Unix syntax
  269. $command = "load data infile '$file' into table $dbname columns optionally enclosed by '\\'' terminated by ','";
  270. # print "$command\n";
  271. $sth = $dbh->do($command) or die $DBI::errstr;
  272. return $sth; # Contains number of rows
  273. }
  274. #
  275. # Do any conversions to the ANSI SQL query so that the database can handle it
  276. #
  277. sub query {
  278. my($self,$sql) = @_;
  279. return $sql;
  280. }
  281. sub drop_index {
  282. my ($self,$table,$index) = @_;
  283. return "DROP INDEX $index ON $table";
  284. }
  285. #
  286. # Abort if the server has crashed
  287. # return: 0 if ok
  288. # 1 question should be retried
  289. #
  290. sub abort_if_fatal_error
  291. {
  292. return 0;
  293. }
  294. #
  295. # This should return 1 if we to do disconnect / connect when doing
  296. # big batches
  297. #
  298. sub small_rollback_segment
  299. {
  300. return 0;
  301. }
  302. #
  303. # reconnect on errors (needed mainly be crash-me)
  304. #
  305. sub reconnect_on_errors
  306. {
  307. return 0;
  308. }
  309. sub fix_for_insert
  310. {
  311. my ($self,$cmd) = @_;
  312. return $cmd;
  313. }
  314. #
  315. # Optimize tables for better performance
  316. #
  317. sub vacuum
  318. {
  319. my ($self,$full_vacuum,$dbh_ref,@tables)=@_;
  320. my ($loop_time,$end_time,$dbh);
  321. if ($#tables >= 0)
  322. {
  323. $dbh=$$dbh_ref;
  324. $loop_time=new Benchmark;
  325. $dbh->do("OPTIMIZE TABLE " . join(',',@tables)) || die "Got error: $DBI::errstr when executing 'OPTIMIZE TABLE'\n";
  326. $end_time=new Benchmark;
  327. print "Time for book-keeping (1): " .
  328. Benchmark::timestr(Benchmark::timediff($end_time, $loop_time),"all") . "\n\n";
  329. }
  330. }
  331. #############################################################################
  332. # Definitions for mSQL
  333. #############################################################################
  334. package db_mSQL;
  335. sub new
  336. {
  337. my ($type,$host,$database)= @_;
  338. my $self= {};
  339. my %limits;
  340. bless $self;
  341. $self->{'cmp_name'} = "msql";
  342. $self->{'data_source'} = "DBI:mSQL:$database:$host";
  343. $self->{'limits'} = \%limits;
  344. $self->{'double_quotes'} = 0;
  345. $self->{'drop_attr'} = "";
  346. $self->{'transactions'} = 0; # No transactions
  347. $self->{'blob'} = "text(" . $limits{'max_text_size'} .")";
  348. $self->{'text'} = "text(" . $limits{'max_text_size'} .")";
  349. $limits{'max_conditions'} = 74;
  350. $limits{'max_columns'} = 75;
  351. $limits{'max_tables'} = 65000; # Should be big enough
  352. $limits{'max_text_size'} = 32000;
  353. $limits{'query_size'} = 65535;
  354. $limits{'max_index'} = 5;
  355. $limits{'max_index_parts'} = 10;
  356. $limits{'max_column_name'} = 35;
  357. $limits{'join_optimizer'} = 0; # Can't optimize FROM tables
  358. $limits{'load_data_infile'} = 0;
  359. $limits{'lock_tables'} = 0;
  360. $limits{'functions'} = 0;
  361. $limits{'group_functions'} = 0;
  362. $limits{'group_distinct_functions'}= 0; # Have count(distinct)
  363. $limits{'multi_drop'} = 0;
  364. $limits{'select_without_from'}= 0;
  365. $limits{'subqueries'} = 0;
  366. $limits{'left_outer_join'} = 0;
  367. $limits{'table_wildcard'} = 0;
  368. $limits{'having_with_alias'} = 0;
  369. $limits{'having_with_group'} = 0;
  370. $limits{'like_with_column'} = 1;
  371. $limits{'order_by_position'} = 1;
  372. $limits{'group_by_position'} = 1;
  373. $limits{'alter_table'} = 0;
  374. $limits{'alter_add_multi_col'}= 0;
  375. $limits{'alter_table_dropcol'}= 0;
  376. $limits{'group_func_extra_std'} = 0;
  377. $limits{'limit'} = 1; # supports the limit attribute
  378. $limits{'unique_index'} = 1; # Unique index works or not
  379. $limits{'insert_select'} = 0;
  380. $limits{'func_odbc_mod'} = 0;
  381. $limits{'func_extra_%'} = 0;
  382. $limits{'func_odbc_floor'} = 0;
  383. $limits{'func_extra_if'} = 0;
  384. $limits{'column_alias'} = 0;
  385. $limits{'NEG'} = 0;
  386. $limits{'func_extra_in_num'} = 0;
  387. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  388. $limits{'order_by_unused'} = 1;
  389. $limits{'working_all_fields'} = 1;
  390. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  391. return $self;
  392. }
  393. #
  394. # Get the version number of the database
  395. #
  396. sub version
  397. {
  398. my ($tmp,$dir);
  399. foreach $dir ("/usr/local/Hughes", "/usr/local/mSQL","/my/local/mSQL",
  400. "/usr/local")
  401. {
  402. if (-x "$dir/bin/msqladmin")
  403. {
  404. $tmp=`$dir/bin/msqladmin version | grep server`;
  405. if ($tmp =~ /^\s*(.*\w)\s*$/)
  406. { # Strip pre- and endspace
  407. $tmp=$1;
  408. $tmp =~ s/\s+/ /g; # Remove unnecessary spaces
  409. $tmp .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  410. return $tmp;
  411. }
  412. }
  413. }
  414. return "mSQL version ???";
  415. }
  416. sub connect
  417. {
  418. my ($self)=@_;
  419. my ($dbh);
  420. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  421. $main::opt_password,{ PrintError => 0}) ||
  422. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  423. return $dbh;
  424. }
  425. #
  426. # Can't handle many field types, so we map everything to int and real.
  427. #
  428. sub create
  429. {
  430. my($self,$table_name,$fields,$index) = @_;
  431. my($query,@queries,$name,$nr);
  432. $query="create table $table_name (";
  433. foreach $field (@$fields)
  434. {
  435. $field =~ s/varchar/char/i; # mSQL doesn't have VARCHAR()
  436. # mSQL can't handle more than the real basic int types
  437. $field =~ s/tinyint|smallint|mediumint|integer/int/i;
  438. # mSQL can't handle different visual lengths
  439. $field =~ s/int\(\d*\)/int/i;
  440. # mSQL doesn't have float, change it to real
  441. $field =~ s/float(\(\d*,\d*\)){0,1}/real/i;
  442. $field =~ s/double(\(\d*,\d*\)){0,1}/real/i;
  443. # mSQL doesn't have blob, it has text instead
  444. if ($field =~ / blob/i)
  445. {
  446. $name=$self->{'blob'};
  447. $field =~ s/ blob/ $name/;
  448. }
  449. $query.= $field . ',';
  450. }
  451. substr($query,-1)=")"; # Remove last ',';
  452. push(@queries,$query);
  453. $nr=0;
  454. # Prepend table_name to index name because the the name may clash with
  455. # a field name. (Should be diffent name space, but this is mSQL...)
  456. foreach $index (@$index)
  457. {
  458. # Primary key is unique index in mSQL
  459. $index =~ s/primary key/unique index primary/i;
  460. if ($index =~ /^unique\s*\(([^\(]*)\)$/i)
  461. {
  462. $nr++;
  463. push(@queries,"create unique index ${table_name}_$nr on $table_name ($1)");
  464. }
  465. else
  466. {
  467. if (!($index =~ /^(.*index)\s+(\w*)\s+(\(.*\))$/i))
  468. {
  469. die "Can't parse index information in '$index'\n";
  470. }
  471. push(@queries,"create $1 ${table_name}_$2 on $table_name $3");
  472. }
  473. }
  474. return @queries;
  475. }
  476. sub insert_file {
  477. my($self,$dbname, $file) = @_;
  478. print "insert an ascii file isn't supported by mSQL\n";
  479. return 0;
  480. }
  481. sub query {
  482. my($self,$sql) = @_;
  483. return $sql;
  484. }
  485. sub drop_index
  486. {
  487. my ($self,$table,$index) = @_;
  488. return "DROP INDEX $index FROM $table";
  489. }
  490. sub abort_if_fatal_error
  491. {
  492. return 0;
  493. }
  494. sub small_rollback_segment
  495. {
  496. return 0;
  497. }
  498. sub reconnect_on_errors
  499. {
  500. return 0;
  501. }
  502. sub fix_for_insert
  503. {
  504. my ($self,$cmd) = @_;
  505. return $cmd;
  506. }
  507. #############################################################################
  508. # Definitions for PostgreSQL #
  509. #############################################################################
  510. package db_Pg;
  511. sub new
  512. {
  513. my ($type,$host,$database)= @_;
  514. my $self= {};
  515. my %limits;
  516. bless $self;
  517. $self->{'cmp_name'} = "pg";
  518. $self->{'data_source'} = "DBI:Pg:dbname=$database";
  519. $self->{'limits'} = \%limits;
  520. $self->{'blob'} = "text";
  521. $self->{'text'} = "text";
  522. $self->{'double_quotes'} = 1;
  523. $self->{'drop_attr'} = "";
  524. $self->{'transactions'} = 1; # Transactions enabled
  525. $self->{"vacuum"} = 1;
  526. $limits{'join_optimizer'} = 1; # Can optimize FROM tables
  527. $limits{'load_data_infile'} = 0;
  528. $limits{'NEG'} = 1;
  529. $limits{'alter_add_multi_col'}= 0; # alter_add_multi_col ?
  530. $limits{'alter_table'} = 1;
  531. $limits{'alter_table_dropcol'}= 0;
  532. $limits{'column_alias'} = 1;
  533. $limits{'func_extra_%'} = 1;
  534. $limits{'func_extra_if'} = 0;
  535. $limits{'func_extra_in_num'} = 1;
  536. $limits{'func_odbc_floor'} = 1;
  537. $limits{'func_odbc_mod'} = 1; # Has %
  538. $limits{'functions'} = 1;
  539. $limits{'group_by_position'} = 1;
  540. $limits{'group_distinct_functions'}= 1; # Have count(distinct)
  541. $limits{'group_func_extra_std'} = 0;
  542. $limits{'group_func_sql_min_str'}= 1; # Can execute MIN() and MAX() on strings
  543. $limits{'group_functions'} = 1;
  544. $limits{'having_with_alias'} = 0;
  545. $limits{'having_with_group'} = 1;
  546. $limits{'insert_select'} = 1;
  547. $limits{'left_outer_join'} = 1;
  548. $limits{'like_with_column'} = 1;
  549. $limits{'lock_tables'} = 0; # in ATIS gives this a problem
  550. $limits{'max_column_name'} = 128;
  551. $limits{'max_columns'} = 1000; # 500 crashes pg 6.3
  552. $limits{'max_conditions'} = 9999; # This makes Pg real slow
  553. $limits{'max_index'} = 64; # Big enough
  554. $limits{'max_index_parts'} = 16;
  555. $limits{'max_tables'} = 5000; # 10000 crashes pg 7.0.2
  556. $limits{'max_text_size'} = 65000; # Good enough for test
  557. $limits{'multi_drop'} = 1;
  558. $limits{'order_by_position'} = 1;
  559. $limits{'order_by_unused'} = 1;
  560. $limits{'query_size'} = 16777216;
  561. $limits{'select_without_from'}= 1;
  562. $limits{'subqueries'} = 1;
  563. $limits{'table_wildcard'} = 1;
  564. $limits{'truncate_table'} = 1;
  565. $limits{'unique_index'} = 1; # Unique index works or not
  566. $limits{'working_all_fields'} = 1;
  567. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  568. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  569. return $self;
  570. }
  571. # couldn't find the option to get the version number
  572. sub version
  573. {
  574. my ($version,$dir);
  575. $version = "PostgreSQL version ???";
  576. foreach $dir ($ENV{'PGDATA'},"/usr/local/pgsql/data", "/usr/local/pg/data")
  577. {
  578. if ($dir && -e "$dir/PG_VERSION")
  579. {
  580. $version= `cat $dir/PG_VERSION`;
  581. if ($? == 0)
  582. {
  583. chomp($version);
  584. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  585. return "PostgreSQL $version";
  586. }
  587. }
  588. }
  589. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  590. return $version;
  591. }
  592. sub connect
  593. {
  594. my ($self)=@_;
  595. my ($dbh);
  596. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  597. $main::opt_password,{ PrintError => 0}) ||
  598. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  599. return $dbh;
  600. }
  601. sub create
  602. {
  603. my($self,$table_name,$fields,$index) = @_;
  604. my($query,@queries,$name,$in,$indfield,$table,$nr);
  605. $query="create table $table_name (";
  606. foreach $field (@$fields)
  607. {
  608. if ($main::opt_fast)
  609. {
  610. # Allow use of char2, char4, char8 or char16
  611. $field =~ s/char(2|4|8|16)/char$1/;
  612. }
  613. # Pg can't handle more than the real basic int types
  614. $field =~ s/tinyint|smallint|mediumint|integer/int/;
  615. # Pg can't handle different visual lengths
  616. $field =~ s/int\(\d*\)/int/;
  617. $field =~ s/float\(\d*,\d*\)/float/;
  618. $field =~ s/ double/ float/;
  619. # $field =~ s/ decimal/ float/i;
  620. # $field =~ s/ big_decimal/ float/i;
  621. # $field =~ s/ date/ int/i;
  622. # Pg doesn't have blob, it has text instead
  623. $field =~ s/ blob/ text/;
  624. $query.= $field . ',';
  625. }
  626. substr($query,-1)=")"; # Remove last ',';
  627. push(@queries,$query);
  628. foreach $index (@$index)
  629. {
  630. $index =~ s/primary key/unique index primary_key/i;
  631. if ($index =~ /^unique.*\(([^\(]*)\)$/i)
  632. {
  633. # original: $indfield="using btree (" .$1.")";
  634. # using btree doesn�t seem to work with Postgres anymore; it creates
  635. # the table and adds the index, but it isn�t unique
  636. $indfield=" (" .$1.")";
  637. $in="unique index";
  638. $table="index_$nr"; $nr++;
  639. }
  640. elsif ($index =~ /^(.*index)\s+(\w*)\s+(\(.*\))$/i)
  641. {
  642. # original: $indfield="using btree (" .$1.")";
  643. $indfield=" " .$3;
  644. $in="index";
  645. $table="index_$nr"; $nr++;
  646. }
  647. else
  648. {
  649. die "Can't parse index information in '$index'\n";
  650. }
  651. push(@queries,"create $in ${table_name}_$table on $table_name $indfield");
  652. }
  653. $queries[0]=$query;
  654. return @queries;
  655. }
  656. sub insert_file {
  657. my ($self,$dbname, $file, $dbh) = @_;
  658. my ($command, $sth);
  659. # Syntax:
  660. # copy [binary] <class_name> [with oids]
  661. # {to|from} {<filename>|stdin|stdout} [using delimiters <delim>]
  662. print "The ascii files aren't correct for postgres ....!!!\n";
  663. $command = "copy $dbname from '$file' using delimiters ','";
  664. print "$command\n";
  665. $sth = $dbh->do($command) or die $DBI::errstr;
  666. return $sth;
  667. }
  668. #
  669. # As postgreSQL wants A % B instead of standard mod(A,B) we have to map
  670. # This will not handle all cases, but as the benchmarks doesn't use functions
  671. # inside MOD() the following should work
  672. #
  673. # PostgreSQL cant handle count(*) or even count(1), but it can handle
  674. # count(1+1) sometimes. ==> this is solved in PostgreSQL 6.3
  675. #
  676. # PostgreSQL 6.5 is supporting MOD.
  677. sub query {
  678. my($self,$sql) = @_;
  679. my(@select,$change);
  680. # if you use PostgreSQL 6.x and x is lower as 5 then uncomment the line below.
  681. # $sql =~ s/mod\(([^,]*),([^\)]*)\)/\($1 % $2\)/gi;
  682. #
  683. # if you use PostgreSQL 6.1.x uncomment the lines below
  684. # if ($sql =~ /select\s+count\(\*\)\s+from/i) {
  685. # }
  686. # elsif ($sql =~ /count\(\*\)/i)
  687. # {
  688. # if ($sql =~ /select\s+(.*)\s+from/i)
  689. # {
  690. # @select = split(/,/,$1);
  691. # if ($select[0] =~ /(.*)\s+as\s+\w+$/i)
  692. # {
  693. # $change = $1;
  694. # }
  695. # else
  696. # {
  697. # $change = $select[0];
  698. # }
  699. # }
  700. # if (($change =~ /count/i) || ($change eq "")) {
  701. # $change = "1+1";
  702. # }
  703. # $sql =~ s/count\(\*\)/count($change)/gi;
  704. # }
  705. # till here.
  706. return $sql;
  707. }
  708. sub drop_index
  709. {
  710. my ($self,$table,$index) = @_;
  711. return "DROP INDEX $index";
  712. }
  713. sub abort_if_fatal_error
  714. {
  715. return 1 if ($DBI::errstr =~ /sent to backend, but backend closed/i);
  716. return 0;
  717. }
  718. sub small_rollback_segment
  719. {
  720. return 0;
  721. }
  722. sub reconnect_on_errors
  723. {
  724. return 0;
  725. }
  726. sub fix_for_insert
  727. {
  728. my ($self,$cmd) = @_;
  729. return $cmd;
  730. }
  731. sub vacuum
  732. {
  733. my ($self,$full_vacuum,$dbh_ref,@tables)=@_;
  734. my ($loop_time,$end_time,$dbh,$table);
  735. if (defined($full_vacuum))
  736. {
  737. $$dbh_ref->disconnect; $$dbh_ref= $self->connect();
  738. }
  739. $dbh=$$dbh_ref;
  740. $loop_time=new Benchmark;
  741. if ($#tables >= 0)
  742. {
  743. foreach $table (@tables)
  744. {
  745. $dbh->do("vacuum analyze $table") || die "Got error: $DBI::errstr when executing 'vacuum analyze $table'\n";
  746. $dbh->do("vacuum $table") || die "Got error: $DBI::errstr when executing 'vacuum'\n";
  747. }
  748. }
  749. else
  750. {
  751. # $dbh->do("vacuum pg_attributes") || die "Got error: $DBI::errstr when executing 'vacuum'\n";
  752. # $dbh->do("vacuum pg_index") || die "Got error: $DBI::errstr when executing 'vacuum'\n";
  753. $dbh->do("vacuum analyze") || die "Got error: $DBI::errstr when executing 'vacuum analyze'\n";
  754. $dbh->do("vacuum") || die "Got error: $DBI::errstr when executing 'vacuum'\n";
  755. }
  756. $end_time=new Benchmark;
  757. print "Time for book-keeping (1): " .
  758. Benchmark::timestr(Benchmark::timediff($end_time, $loop_time),"all") . "\n\n";
  759. $dbh->disconnect; $$dbh_ref= $self->connect();
  760. }
  761. #############################################################################
  762. # Definitions for Solid
  763. #############################################################################
  764. package db_Solid;
  765. sub new
  766. {
  767. my ($type,$host,$database)= @_;
  768. my $self= {};
  769. my %limits;
  770. bless $self;
  771. $self->{'cmp_name'} = "solid";
  772. $self->{'data_source'} = "DBI:Solid:";
  773. $self->{'limits'} = \%limits;
  774. $self->{'blob'} = "long varchar";
  775. $self->{'text'} = "long varchar";
  776. $self->{'double_quotes'} = 1;
  777. $self->{'drop_attr'} = "";
  778. $self->{'transactions'} = 1; # Transactions enabled
  779. $limits{'max_conditions'} = 9999; # Probably big enough
  780. $limits{'max_columns'} = 2000; # From crash-me
  781. $limits{'max_tables'} = 65000; # Should be big enough
  782. $limits{'max_text_size'} = 65492; # According to tests
  783. $limits{'query_size'} = 65535; # Probably a limit
  784. $limits{'max_index'} = 64; # Probably big enough
  785. $limits{'max_index_parts'} = 64;
  786. $limits{'max_column_name'} = 80;
  787. $limits{'join_optimizer'} = 1;
  788. $limits{'load_data_infile'} = 0;
  789. $limits{'lock_tables'} = 0;
  790. $limits{'functions'} = 1;
  791. $limits{'group_functions'} = 1;
  792. $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
  793. $limits{'group_distinct_functions'}= 1; # Have count(distinct)
  794. $limits{'select_without_from'}= 0; # Can do 'select 1' ?;
  795. $limits{'multi_drop'} = 0;
  796. $limits{'subqueries'} = 1;
  797. $limits{'left_outer_join'} = 1;
  798. $limits{'table_wildcard'} = 1;
  799. $limits{'having_with_alias'} = 0;
  800. $limits{'having_with_group'} = 1;
  801. $limits{'like_with_column'} = 1;
  802. $limits{'order_by_position'} = 0; # 2.30.0018 can this
  803. $limits{'group_by_position'} = 0;
  804. $limits{'alter_table'} = 1;
  805. $limits{'alter_add_multi_col'}= 0;
  806. $limits{'alter_table_dropcol'}= 0;
  807. $limits{'group_func_extra_std'} = 0; # Have group function std().
  808. $limits{'func_odbc_mod'} = 1;
  809. $limits{'func_extra_%'} = 0;
  810. $limits{'func_odbc_floor'} = 1;
  811. $limits{'column_alias'} = 1;
  812. $limits{'NEG'} = 1;
  813. $limits{'func_extra_in_num'} = 1;
  814. $limits{'unique_index'} = 1; # Unique index works or not
  815. $limits{'insert_select'} = 1;
  816. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  817. $limits{'order_by_unused'} = 1;
  818. $limits{'working_all_fields'} = 1;
  819. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  820. return $self;
  821. }
  822. #
  823. # Get the version number of the database
  824. #
  825. sub version
  826. {
  827. my ($version,$dir);
  828. $version="Solid version ??";
  829. foreach $dir ($ENV{'SOLIDDIR'},"/usr/local/solid", "/my/local/solid")
  830. {
  831. if ($dir && -e "$dir/bin/solcon")
  832. {
  833. $version=`$dir/bin/solcon -e"ver" $main::opt_user $main::opt_password | grep Server | sed q`;
  834. if ($? == 0)
  835. {
  836. chomp($version);
  837. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  838. return $version;
  839. }
  840. }
  841. }
  842. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  843. return $version;
  844. }
  845. sub connect
  846. {
  847. my ($self)=@_;
  848. my ($dbh);
  849. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  850. $main::opt_password,{ PrintError => 0}) ||
  851. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  852. return $dbh;
  853. }
  854. #
  855. # Returns a list of statements to create a table
  856. # The field types are in ANSI SQL format.
  857. #
  858. sub create
  859. {
  860. my($self,$table_name,$fields,$index) = @_;
  861. my($query,@queries,$nr);
  862. $query="create table $table_name (";
  863. foreach $field (@$fields)
  864. {
  865. $field =~ s/mediumint/integer/i;
  866. $field =~ s/ double/ float/i;
  867. # Solid doesn't have blob, it has long varchar
  868. $field =~ s/ blob/ long varchar/;
  869. # $field =~ s/ decimal/ float/i;
  870. # $field =~ s/ big_decimal/ float/i;
  871. # $field =~ s/ date/ int/i;
  872. $query.= $field . ',';
  873. }
  874. substr($query,-1)=")"; # Remove last ',';
  875. push(@queries,$query);
  876. $nr=0;
  877. foreach $index (@$index)
  878. {
  879. if ($index =~ /^primary key/i || $index =~ /^unique/i)
  880. { # Add to create statement
  881. substr($queries[0],-1,0)="," . $index;
  882. }
  883. else
  884. {
  885. $index =~ /^(.*)\s+(\(.*\))$/;
  886. push(@queries,"create ${1}$nr on $table_name $2");
  887. $nr++;
  888. }
  889. }
  890. return @queries;
  891. }
  892. # there is no sql statement in solid which can do the load from
  893. # an ascii file in the db ... but there is the speedloader program
  894. # an external program which can load the ascii file in the db ...
  895. # the server must be down before using speedloader !!!!
  896. # (in the standalone version)
  897. # it works also with a control file ... that one must be made ....
  898. sub insert_file {
  899. my ($self, $dbname, $file) = @_;
  900. my ($speedcmd);
  901. $speedcmd = '/usr/local/solid/bin/solload';
  902. print "At this moment not supported - solid server must go down \n";
  903. return 0;
  904. }
  905. # solid can't handle an alias in a having statement so
  906. # select test as foo from tmp group by foo having foor > 2
  907. # becomes
  908. # select test as foo from tmp group by foo having test > 2
  909. #
  910. sub query {
  911. my($self,$sql) = @_;
  912. my(@select,$tmp,$newhaving,$key,%change);
  913. if ($sql =~ /having\s+/i)
  914. {
  915. if ($sql =~ /select (.*) from/i)
  916. {
  917. (@select) = split(/,\s*/, $1);
  918. foreach $tmp (@select)
  919. {
  920. if ($tmp =~ /(.*)\s+as\s+(\w+)/)
  921. {
  922. $change{$2} = $1;
  923. }
  924. }
  925. }
  926. if ($sql =~ /having\s+(\w+)/i)
  927. {
  928. $newhaving = $1;
  929. foreach $key (sort {$a cmp $b} keys %change)
  930. {
  931. if ($newhaving eq $key)
  932. {
  933. $newhaving =~ s/$key/$change{$key}/g;
  934. }
  935. }
  936. }
  937. $sql =~ s/(having)\s+(\w+)/$1 $newhaving/i;
  938. }
  939. return $sql;
  940. }
  941. sub drop_index
  942. {
  943. my ($self,$table,$index) = @_;
  944. return "DROP INDEX $index";
  945. }
  946. sub abort_if_fatal_error
  947. {
  948. return 0;
  949. }
  950. sub small_rollback_segment
  951. {
  952. return 0;
  953. }
  954. sub fix_for_insert
  955. {
  956. my ($self,$cmd) = @_;
  957. return $cmd;
  958. }
  959. sub reconnect_on_errors
  960. {
  961. return 0;
  962. }
  963. #############################################################################
  964. # Definitions for Empress
  965. #
  966. # at this moment DBI:Empress can only handle 200 prepare statements ...
  967. # so Empress can't be tested with the benchmark test :(
  968. #############################################################################
  969. package db_Empress;
  970. sub new
  971. {
  972. my ($type,$host,$database)= @_;
  973. my $self= {};
  974. my %limits;
  975. bless $self;
  976. $self->{'cmp_name'} = "empress";
  977. $self->{'data_source'} = "DBI:EmpressNet:SERVER=$host;Database=/usr/local/empress/rdbms/bin/$database";
  978. $self->{'limits'} = \%limits;
  979. $self->{'blob'} = "text";
  980. $self->{'text'} = "text";
  981. $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
  982. $self->{'drop_attr'} = "";
  983. $self->{'transactions'} = 1; # Transactions enabled
  984. $limits{'max_conditions'} = 1258;
  985. $limits{'max_columns'} = 226; # server is disconnecting????
  986. # above this value .... but can handle 2419 columns
  987. # maybe something for crash-me ... but how to check ???
  988. $limits{'max_tables'} = 65000; # Should be big enough
  989. $limits{'max_text_size'} = 4095; # max returned ....
  990. $limits{'query_size'} = 65535; # Not a limit, big enough
  991. $limits{'max_index'} = 64; # Big enough
  992. $limits{'max_index_parts'} = 64; # Big enough
  993. $limits{'max_column_name'} = 31;
  994. $limits{'join_optimizer'} = 1;
  995. $limits{'load_data_infile'} = 0;
  996. $limits{'lock_tables'} = 1;
  997. $limits{'functions'} = 1;
  998. $limits{'group_functions'} = 1;
  999. $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
  1000. $limits{'group_distinct_functions'}= 1; # Have count(distinct)
  1001. $limits{'select_without_from'}= 0;
  1002. $limits{'multi_drop'} = 0;
  1003. $limits{'subqueries'} = 1;
  1004. $limits{'table_wildcard'} = 0;
  1005. $limits{'having_with_alias'} = 0; # AS isn't supported in a select
  1006. $limits{'having_with_group'} = 1;
  1007. $limits{'like_with_column'} = 1;
  1008. $limits{'order_by_position'} = 1;
  1009. $limits{'group_by_position'} = 0;
  1010. $limits{'alter_table'} = 1;
  1011. $limits{'alter_add_multi_col'}= 0;
  1012. $limits{'alter_table_dropcol'}= 0;
  1013. $limits{'group_func_extra_std'}= 0; # Have group function std().
  1014. $limits{'func_odbc_mod'} = 0;
  1015. $limits{'func_extra_%'} = 1;
  1016. $limits{'func_odbc_floor'} = 1;
  1017. $limits{'func_extra_if'} = 0;
  1018. $limits{'column_alias'} = 0;
  1019. $limits{'NEG'} = 1;
  1020. $limits{'func_extra_in_num'} = 0;
  1021. $limits{'unique_index'} = 1; # Unique index works or not
  1022. $limits{'insert_select'} = 1;
  1023. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  1024. $limits{'order_by_unused'} = 1;
  1025. $limits{'working_all_fields'} = 1;
  1026. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  1027. return $self;
  1028. }
  1029. #
  1030. # Get the version number of the database
  1031. #
  1032. sub version
  1033. {
  1034. my ($self,$dbh)=@_;
  1035. my ($version);
  1036. $version="";
  1037. if (-x "/usr/local/empress/rdbms/bin/empvers")
  1038. {
  1039. $version=`/usr/local/empress/rdbms/bin/empvers | grep Version`;
  1040. }
  1041. if ($version)
  1042. {
  1043. chomp($version);
  1044. }
  1045. else
  1046. {
  1047. $version="Empress version ???";
  1048. }
  1049. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  1050. return $version;
  1051. }
  1052. sub connect
  1053. {
  1054. my ($self)=@_;
  1055. my ($dbh);
  1056. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  1057. $main::opt_password,{ PrintError => 0}) ||
  1058. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  1059. return $dbh;
  1060. }
  1061. sub insert_file {
  1062. my($self,$dbname, $file) = @_;
  1063. my($command,$sth);
  1064. $command = "insert into $dbname from '$file'";
  1065. print "$command\n" if ($opt_debug);
  1066. $sth = $dbh->do($command) or die $DBI::errstr;
  1067. return $sth;
  1068. }
  1069. #
  1070. # Returns a list of statements to create a table
  1071. # The field types are in ANSI SQL format.
  1072. #
  1073. sub create
  1074. {
  1075. my($self,$table_name,$fields,$index) = @_;
  1076. my($query,@queries,$nr);
  1077. $query="create table $table_name (";
  1078. foreach $field (@$fields)
  1079. {
  1080. $field =~ s/mediumint/int/i;
  1081. $field =~ s/tinyint/int/i;
  1082. $field =~ s/smallint/int/i;
  1083. $field =~ s/longint/int/i;
  1084. $field =~ s/integer/int/i;
  1085. $field =~ s/ double/ longfloat/i;
  1086. # Solid doesn't have blob, it has long varchar
  1087. # $field =~ s/ blob/ text(65535,65535,65535,65535)/;
  1088. $field =~ s/ blob/ text/;
  1089. $field =~ s/ varchar\((\d+)\)/ char($1,3)/;
  1090. $field =~ s/ char\((\d+)\)/ char($1,3)/;
  1091. # $field =~ s/ decimal/ float/i;
  1092. # $field =~ s/ big_decimal/ longfloat/i;
  1093. # $field =~ s/ date/ int/i;
  1094. $field =~ s/ float(.*)/ float/i;
  1095. if ($field =~ / int\((\d+)\)/) {
  1096. if ($1 > 4) {
  1097. $field =~ s/ int\(\d+\)/ longinteger/i;
  1098. } else {
  1099. $field =~ s/ int\(\d+\)/ longinteger/i;
  1100. }
  1101. } else {
  1102. $field =~ s/ int/ longinteger/i;
  1103. }
  1104. $query.= $field . ',';
  1105. }
  1106. substr($query,-1)=")"; # Remove last ',';
  1107. push(@queries,$query);
  1108. $nr=1;
  1109. foreach $index (@$index)
  1110. {
  1111. # Primary key is unique index in Empress
  1112. $index =~ s/primary key/unique index/i;
  1113. if ($index =~ /^unique.*\(([^\(]*)\)$/i)
  1114. {
  1115. $nr++;
  1116. push(@queries,"create unique index ${table_name}_$nr on $table_name ($1)");
  1117. }
  1118. else
  1119. {
  1120. if (!($index =~ /^(.*index)\s+(\w*)\s+(\(.*\))$/i))
  1121. {
  1122. die "Can't parse index information in '$index'\n";
  1123. }
  1124. push(@queries,"create $1 ${table_name}_$2 on $table_name $3");
  1125. }
  1126. }
  1127. return @queries;
  1128. }
  1129. # empress can't handle an alias and but can handle the number of the
  1130. # columname - so
  1131. # select test as foo from tmp order by foo
  1132. # becomes
  1133. # select test from tmp order by 1
  1134. #
  1135. sub query {
  1136. my($self,$sql) = @_;
  1137. my(@select,$i,$tmp,$newselect,$neworder,@order,$key,%change);
  1138. my($tmp1,$otmp,$tmp2);
  1139. if ($sql =~ /\s+as\s+/i)
  1140. {
  1141. if ($sql =~ /select\s+(.*)\s+from/i) {
  1142. $newselect = $1;
  1143. (@select) = split(/,\s*/, $1);
  1144. $i = 1;
  1145. foreach $tmp (@select) {
  1146. if ($tmp =~ /\s+as\s+(\w+)/) {
  1147. $change{$1} = $i;
  1148. }
  1149. $i++;
  1150. }
  1151. }
  1152. $newselect =~ s/\s+as\s+(\w+)//gi;
  1153. $tmp2 = 0;
  1154. if ($sql =~ /order\s+by\s+(.*)$/i) {
  1155. (@order) = split(/,\s*/, $1);
  1156. foreach $otmp (@order) {
  1157. foreach $key (sort {$a cmp $b} keys %change) {
  1158. if ($otmp eq $key) {
  1159. $neworder .= "$tmp1"."$change{$key}";
  1160. $tmp1 = ", ";
  1161. $tmp2 = 1;
  1162. } elsif ($otmp =~ /(\w+)\s+(.+)$/) {
  1163. if ($key eq $1) {
  1164. $neworder .= "$tmp1"."$change{$key} $2";
  1165. $tmp2 = 1;
  1166. }
  1167. }
  1168. }
  1169. if ($tmp2 == 0) {
  1170. $neworder .= "$tmp1"."$otmp";
  1171. }
  1172. $tmp2 = 0;
  1173. $tmp1 = ", ";
  1174. }
  1175. }
  1176. $sql =~ s/(select)\s+(.*)\s+(from)/$1 $newselect $3/i;
  1177. $sql =~ s/(order\s+by)\s+(.*)$/$1 $neworder/i;
  1178. }
  1179. return $sql;
  1180. }
  1181. sub fix_for_insert
  1182. {
  1183. my ($self,$cmd) = @_;
  1184. $cmd =~ s/\'\'/\' \'/g;
  1185. return $cmd;
  1186. }
  1187. sub drop_index
  1188. {
  1189. my ($self,$table,$index) = @_;
  1190. return "DROP INDEX $index";
  1191. }
  1192. # This is a because of the 200 statement problem with DBI-Empress
  1193. sub abort_if_fatal_error
  1194. {
  1195. if ($DBI::errstr =~ /Overflow of table of prepared statements/i)
  1196. {
  1197. print "Overflow of prepared statements ... killing the process\n";
  1198. exit 1;
  1199. }
  1200. return 0;
  1201. }
  1202. sub small_rollback_segment
  1203. {
  1204. return 0;
  1205. }
  1206. sub reconnect_on_errors
  1207. {
  1208. return 0;
  1209. }
  1210. #############################################################################
  1211. # Definitions for Oracle
  1212. #############################################################################
  1213. package db_Oracle;
  1214. sub new
  1215. {
  1216. my ($type,$host,$database)= @_;
  1217. my $self= {};
  1218. my %limits;
  1219. bless $self;
  1220. $self->{'cmp_name'} = "Oracle";
  1221. $self->{'data_source'} = "DBI:Oracle:$database";
  1222. $self->{'limits'} = \%limits;
  1223. $self->{'blob'} = "long";
  1224. $self->{'text'} = "long";
  1225. $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
  1226. $self->{'drop_attr'} = "";
  1227. $self->{'transactions'} = 1; # Transactions enabled
  1228. $self->{"vacuum"} = 1;
  1229. $limits{'max_conditions'} = 9999; # (Actually not a limit)
  1230. $limits{'max_columns'} = 254; # Max number of columns in table
  1231. $limits{'max_tables'} = 65000; # Should be big enough
  1232. $limits{'max_text_size'} = 2000; # Limit for blob test-connect
  1233. $limits{'query_size'} = 65525; # Max size with default buffers.
  1234. $limits{'max_index'} = 16; # Max number of keys
  1235. $limits{'max_index_parts'} = 16; # Max segments/key
  1236. $limits{'max_column_name'} = 32; # max table and column name
  1237. $limits{'truncate_table'} = 1;
  1238. $limits{'join_optimizer'} = 1; # Can optimize FROM tables
  1239. $limits{'load_data_infile'} = 0; # Has load data infile
  1240. $limits{'lock_tables'} = 0; # Has lock tables
  1241. $limits{'functions'} = 1; # Has simple functions (+/-)
  1242. $limits{'group_functions'} = 1; # Have group functions
  1243. $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
  1244. $limits{'group_distinct_functions'}= 1; # Have count(distinct)
  1245. $limits{'select_without_from'}= 0;
  1246. $limits{'multi_drop'} = 0;
  1247. $limits{'subqueries'} = 1;
  1248. $limits{'left_outer_join'} = 0; # This may be fixed in the query module
  1249. $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
  1250. $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
  1251. $limits{'having_with_group'} = 1; # Can't use group functions in HAVING
  1252. $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
  1253. $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
  1254. $limits{'group_by_position'} = 0;
  1255. $limits{'alter_table'} = 1;
  1256. $limits{'alter_add_multi_col'}= 0;
  1257. $limits{'alter_table_dropcol'}= 0;
  1258. $limits{'group_func_extra_std'} = 0; # Have group function std().
  1259. $limits{'func_odbc_mod'} = 0; # Oracle has problem with mod()
  1260. $limits{'func_extra_%'} = 0; # Has % as alias for mod()
  1261. $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
  1262. $limits{'func_extra_if'} = 0; # Have function if.
  1263. $limits{'column_alias'} = 1; # Alias for fields in select statement.
  1264. $limits{'NEG'} = 1; # Supports -id
  1265. $limits{'func_extra_in_num'} = 1; # Has function in
  1266. $limits{'unique_index'} = 1; # Unique index works or not
  1267. $limits{'insert_select'} = 1;
  1268. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  1269. $limits{'order_by_unused'} = 1;
  1270. $limits{'working_all_fields'} = 1;
  1271. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  1272. return $self;
  1273. }
  1274. #
  1275. # Get the version number of the database
  1276. #
  1277. sub version
  1278. {
  1279. my ($self)=@_;
  1280. my ($dbh,$sth,$version,@row);
  1281. $dbh=$self->connect();
  1282. $sth = $dbh->prepare("select VERSION from product_component_version WHERE PRODUCT like 'Oracle%'") or die $DBI::errstr;
  1283. $version="Oracle 7.x";
  1284. if ($sth->execute && (@row = $sth->fetchrow_array))
  1285. {
  1286. $version="Oracle $row[0]";
  1287. }
  1288. $sth->finish;
  1289. $dbh->disconnect;
  1290. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  1291. return $version;
  1292. }
  1293. sub connect
  1294. {
  1295. my ($self)=@_;
  1296. my ($dbh);
  1297. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  1298. $main::opt_password,{ PrintError => 0}) ||
  1299. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  1300. return $dbh;
  1301. }
  1302. #
  1303. # Returns a list of statements to create a table
  1304. # The field types are in ANSI SQL format.
  1305. #
  1306. # If one uses $main::opt_fast then one is allowed to use
  1307. # non standard types to get better speed.
  1308. #
  1309. sub create
  1310. {
  1311. my($self,$table_name,$fields,$index) = @_;
  1312. my($query,@queries,$ind,@keys);
  1313. $query="create table $table_name (";
  1314. foreach $field (@$fields)
  1315. {
  1316. $field =~ s/ character\((\d+)\)/ char\($1\)/i;
  1317. $field =~ s/ character varying\((\d+)\)/ varchar\($1\)/i;
  1318. $field =~ s/ char varying\((\d+)\)/ varchar\($1\)/i;
  1319. $field =~ s/ integer/ number\(38\)/i;
  1320. $field =~ s/ int/ number\(38\)/i;
  1321. $field =~ s/ tinyint/ number\(38\)/i;
  1322. $field =~ s/ smallint/ number\(38\)/i;
  1323. $field =~ s/ mediumint/ number\(38\)/i;
  1324. $field =~ s/ tinynumber\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
  1325. $field =~ s/ smallnumber\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
  1326. $field =~ s/ mediumnumber\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
  1327. $field =~ s/ number\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
  1328. $field =~ s/ numeric\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
  1329. $field =~ s/ decimal\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
  1330. $field =~ s/ dec\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
  1331. $field =~ s/ float/ number/;
  1332. $field =~ s/ real/ number/;
  1333. $field =~ s/ double precision/ number/;
  1334. $field =~ s/ double/ number/;
  1335. $field =~ s/ blob/ long/;
  1336. $query.= $field . ',';
  1337. }
  1338. foreach $ind (@$index)
  1339. {
  1340. my @index;
  1341. if ( $ind =~ /\bKEY\b/i ){
  1342. push(@keys,"ALTER TABLE $table_name ADD $ind");
  1343. }else{
  1344. my @fields = split(' ',$index);
  1345. my $query="CREATE INDEX $fields[1] ON $table_name $fields[2]";
  1346. push(@index,$query);
  1347. }
  1348. }
  1349. substr($query,-1)=")"; # Remove last ',';
  1350. push(@queries,$query,@keys,@index);
  1351. #print "query:$query\n";
  1352. return @queries;
  1353. }
  1354. sub insert_file {
  1355. my($self,$dbname, $file) = @_;
  1356. print "insert an ascii file isn't supported by Oracle (?)\n";
  1357. return 0;
  1358. }
  1359. #
  1360. # Do any conversions to the ANSI SQL query so that the database can handle it
  1361. #
  1362. sub query {
  1363. my($self,$sql) = @_;
  1364. return $sql;
  1365. }
  1366. sub fix_for_insert
  1367. {
  1368. my ($self,$cmd) = @_;
  1369. $cmd =~ s/\'\'/\' \'/g;
  1370. return $cmd;
  1371. }
  1372. sub drop_index
  1373. {
  1374. my ($self,$table,$index) = @_;
  1375. return "DROP INDEX $index";
  1376. }
  1377. #
  1378. # Abort if the server has crashed
  1379. # return: 0 if ok
  1380. # 1 question should be retried
  1381. #
  1382. sub abort_if_fatal_error
  1383. {
  1384. return 0;
  1385. }
  1386. sub small_rollback_segment
  1387. {
  1388. return 1;
  1389. }
  1390. sub reconnect_on_errors
  1391. {
  1392. return 0;
  1393. }
  1394. #
  1395. # optimize the tables ....
  1396. #
  1397. sub vacuum
  1398. {
  1399. my ($self,$full_vacuum,$dbh_ref)=@_;
  1400. my ($loop_time,$end_time,$sth,$dbh);
  1401. if (defined($full_vacuum))
  1402. {
  1403. $$dbh_ref->disconnect; $$dbh_ref= $self->connect();
  1404. }
  1405. $dbh=$$dbh_ref;
  1406. $loop_time=new Benchmark;
  1407. # first analyze all tables
  1408. $sth = $dbh->prepare("select table_name from user_tables") || die "Got error: $DBI::errstr";
  1409. $sth->execute || die "Got error: $DBI::errstr when select user_tables";
  1410. while (my @r = $sth->fetchrow_array)
  1411. {
  1412. $dbh->do("analyze table $r[0] compute statistics") || die "Got error: $DBI::errstr when executing 'analyze table'\n";
  1413. }
  1414. # now analyze all indexes ...
  1415. $sth = $dbh->prepare("select index_name from user_indexes") || die "Got error: $DBI::errstr";
  1416. $sth->execute || die "Got error: $DBI::errstr when select user_indexes";
  1417. while (my @r1 = $sth->fetchrow_array)
  1418. {
  1419. $dbh->do("analyze index $r1[0] compute statistics") || die "Got error: $DBI::errstr when executing 'analyze index $r1[0]'\n";
  1420. }
  1421. $end_time=new Benchmark;
  1422. print "Time for book-keeping (1): " .
  1423. Benchmark::timestr(Benchmark::timediff($end_time, $loop_time),"all") . "\n\n";
  1424. $dbh->disconnect; $$dbh_ref= $self->connect();
  1425. }
  1426. #############################################################################
  1427. # Definitions for Informix
  1428. #############################################################################
  1429. package db_Informix;
  1430. sub new
  1431. {
  1432. my ($type,$host,$database)= @_;
  1433. my $self= {};
  1434. my %limits;
  1435. bless $self;
  1436. $self->{'cmp_name'} = "Informix";
  1437. $self->{'data_source'} = "DBI:Informix:$database";
  1438. $self->{'limits'} = \%limits;
  1439. $self->{'blob'} = "byte in table";
  1440. $self->{'text'} = "byte in table";
  1441. $self->{'double_quotes'} = 0; # Can handle: 'Walker''s'
  1442. $self->{'drop_attr'} = "";
  1443. $self->{'transactions'} = 1; # Transactions enabled
  1444. $self->{'host'} = $host;
  1445. $limits{'NEG'} = 1; # Supports -id
  1446. $limits{'alter_table'} = 1;
  1447. $limits{'alter_add_multi_col'}= 0;
  1448. $limits{'alter_table_dropcol'}= 1;
  1449. $limits{'column_alias'} = 1; # Alias for fields in select statement.
  1450. $limits{'func_extra_%'} = 0; # Has % as alias for mod()
  1451. $limits{'func_extra_if'} = 0; # Have function if.
  1452. $limits{'func_extra_in_num'}= 0; # Has function in
  1453. $limits{'func_odbc_floor'} = 0; # Has func_odbc_floor function
  1454. $limits{'func_odbc_mod'} = 1; # Have function mod.
  1455. $limits{'functions'} = 1; # Has simple functions (+/-)
  1456. $limits{'group_by_position'} = 1; # Can use 'GROUP BY 1'
  1457. $limits{'group_by_alias'} = 0; # Can use 'select a as ab from x GROUP BY ab'
  1458. $limits{'group_func_extra_std'} = 0; # Have group function std().
  1459. $limits{'group_functions'} = 1; # Have group functions
  1460. $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
  1461. $limits{'group_distinct_functions'}= 1; # Have count(distinct)
  1462. $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
  1463. $limits{'having_with_group'}= 1; # Can't use group functions in HAVING
  1464. $limits{'join_optimizer'} = 1; # Can optimize FROM tables (always 1 only for msql)
  1465. $limits{'left_outer_join'} = 0; # Supports left outer joins (ANSI)
  1466. $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
  1467. $limits{'load_data_infile'} = 0; # Has load data infile
  1468. $limits{'lock_tables'} = 1; # Has lock tables
  1469. $limits{'max_conditions'} = 1214; # (Actually not a limit)
  1470. $limits{'max_column_name'} = 18; # max table and column name
  1471. $limits{'max_columns'} = 994; # Max number of columns in table
  1472. $limits{'max_tables'} = 65000; # Should be big enough
  1473. $limits{'max_index'} = 64; # Max number of keys
  1474. $limits{'max_index_parts'} = 15; # Max segments/key
  1475. $limits{'max_text_size'} = 65535; # Max size with default buffers. ??
  1476. $limits{'multi_drop'} = 0; # Drop table can take many tables
  1477. $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
  1478. $limits{'query_size'} = 32766; # Max size with default buffers.
  1479. $limits{'select_without_from'}= 0; # Can do 'select 1';
  1480. $limits{'subqueries'} = 1; # Doesn't support sub-queries.
  1481. $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
  1482. $limits{'unique_index'} = 1; # Unique index works or not
  1483. $limits{'insert_select'} = 1;
  1484. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  1485. $limits{'order_by_unused'} = 1;
  1486. $limits{'working_all_fields'} = 1;
  1487. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  1488. return $self;
  1489. }
  1490. #
  1491. # Get the version number of the database
  1492. #
  1493. sub version
  1494. {
  1495. my ($self)=@_;
  1496. my ($dbh,$sth,$version,@row);
  1497. $ENV{'INFORMIXSERVER'} = $self->{'host'};
  1498. $dbh=$self->connect();
  1499. $sth = $dbh->prepare("SELECT owner FROM systables WHERE tabname = ' VERSION'")
  1500. or die $DBI::errstr;
  1501. $version='Informix unknown';
  1502. if ($sth->execute && (@row = $sth->fetchrow_array))
  1503. {
  1504. $version="Informix $row[0]";
  1505. }
  1506. $sth->finish;
  1507. $dbh->disconnect;
  1508. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  1509. return $version;
  1510. }
  1511. sub connect
  1512. {
  1513. my ($self)=@_;
  1514. my ($dbh);
  1515. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  1516. $main::opt_password,{ PrintError => 0}) ||
  1517. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  1518. return $dbh;
  1519. }
  1520. #
  1521. # Create table
  1522. #
  1523. sub create
  1524. {
  1525. my($self,$table_name,$fields,$index) = @_;
  1526. my($query,@queries,$name,$nr);
  1527. $query="create table $table_name (";
  1528. foreach $field (@$fields)
  1529. {
  1530. # $field =~ s/\btransport_description\b/transport_desc/;
  1531. # to overcome limit 18 chars
  1532. $field =~ s/tinyint/smallint/i;
  1533. $field =~ s/tinyint\(\d+\)/smallint/i;
  1534. $field =~ s/mediumint/integer/i;
  1535. $field =~ s/mediumint\(\d+\)/integer/i;
  1536. $field =~ s/smallint\(\d+\)/smallint/i;
  1537. $field =~ s/integer\(\d+\)/integer/i;
  1538. $field =~ s/int\(\d+\)/integer/i;
  1539. # $field =~ s/\b(?:small)?int(?:eger)?\((\d+)\)/decimal($1)/i;
  1540. # $field =~ s/float(\(\d*,\d*\)){0,1}/real/i;
  1541. $field =~ s/(float|double)(\(.*?\))?/float/i;
  1542. if ($field =~ / blob/i)
  1543. {
  1544. $name=$self->{'blob'};
  1545. $field =~ s/ blob/ $name/;
  1546. }
  1547. $query.= $field . ',';
  1548. }
  1549. substr($query,-1)=")"; # Remove last ',';
  1550. push(@queries,$query);
  1551. $nr=0;
  1552. foreach $index (@$index)
  1553. {
  1554. # Primary key is unique index in Informix
  1555. $index =~ s/primary key/unique index primary/i;
  1556. if ($index =~ /^unique\s*\(([^\(]*)\)$/i)
  1557. {
  1558. $nr++;
  1559. push(@queries,"create unique index ${table_name}_$nr on $table_name ($1)");
  1560. }
  1561. else
  1562. {
  1563. if (!($index =~ /^(.*index)\s+(\w*)\s+(\(.*\))$/i))
  1564. {
  1565. die "Can't parse index information in '$index'\n";
  1566. }
  1567. ### push(@queries,"create $1 ${table_name}_$2 on $table_name $3");
  1568. $nr++;
  1569. push(@queries,"create $1 ${table_name}_$nr on $table_name $3");
  1570. }
  1571. }
  1572. return @queries;
  1573. }
  1574. #
  1575. # Some test needed this
  1576. #
  1577. sub query {
  1578. my($self,$sql) = @_;
  1579. return $sql;
  1580. }
  1581. sub fix_for_insert
  1582. {
  1583. my ($self,$cmd) = @_;
  1584. $cmd =~ s/\\\'//g;
  1585. return $cmd;
  1586. }
  1587. sub drop_index
  1588. {
  1589. my ($self,$table,$index) = @_;
  1590. return "DROP INDEX $index";
  1591. }
  1592. #
  1593. # Abort if the server has crashed
  1594. # return: 0 if ok
  1595. # 1 question should be retried
  1596. #
  1597. sub abort_if_fatal_error
  1598. {
  1599. return 0;
  1600. }
  1601. sub small_rollback_segment
  1602. {
  1603. return 0;
  1604. }
  1605. sub reconnect_on_errors
  1606. {
  1607. return 0;
  1608. }
  1609. #############################################################################
  1610. # Configuration for Access
  1611. #############################################################################
  1612. package db_access;
  1613. sub new
  1614. {
  1615. my ($type,$host,$database)= @_;
  1616. my $self= {};
  1617. my %limits;
  1618. bless $self;
  1619. $self->{'cmp_name'} = "access";
  1620. $self->{'data_source'} = "DBI:ODBC:$database";
  1621. if (defined($host) && $host ne "")
  1622. {
  1623. $self->{'data_source'} .= ":$host";
  1624. }
  1625. $self->{'limits'} = \%limits;
  1626. $self->{'blob'} = "blob";
  1627. $self->{'text'} = "blob"; # text ?
  1628. $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
  1629. $self->{'drop_attr'} = "";
  1630. $self->{'transactions'} = 1; # Transactions enabled
  1631. $limits{'max_conditions'} = 97; # We get 'Query is too complex'
  1632. $limits{'max_columns'} = 255; # Max number of columns in table
  1633. $limits{'max_tables'} = 65000; # Should be big enough
  1634. $limits{'max_text_size'} = 255; # Max size with default buffers.
  1635. $limits{'query_size'} = 65535; # Not a limit, big enough
  1636. $limits{'max_index'} = 32; # Max number of keys
  1637. $limits{'max_index_parts'} = 10; # Max segments/key
  1638. $limits{'max_column_name'} = 64; # max table and column name
  1639. $limits{'join_optimizer'} = 1; # Can optimize FROM tables
  1640. $limits{'load_data_infile'} = 0; # Has load data infile
  1641. $limits{'lock_tables'} = 0; # Has lock tables
  1642. $limits{'functions'} = 1; # Has simple functions (+/-)
  1643. $limits{'group_functions'} = 1; # Have group functions
  1644. $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
  1645. $limits{'group_distinct_functions'}= 0; # Have count(distinct)
  1646. $limits{'select_without_from'}= 1; # Can do 'select 1';
  1647. $limits{'multi_drop'} = 0; # Drop table can take many tables
  1648. $limits{'subqueries'} = 1; # Supports sub-queries.
  1649. $limits{'left_outer_join'} = 1; # Supports left outer joins
  1650. $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
  1651. $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
  1652. $limits{'having_with_group'} = 1; # Can use group functions in HAVING
  1653. $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
  1654. $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
  1655. $limits{'group_by_position'} = 0; # Can use 'GROUP BY 1'
  1656. $limits{'alter_table'} = 1;
  1657. $limits{'alter_add_multi_col'}= 2; #Have ALTER TABLE t add a int, b int;
  1658. $limits{'alter_table_dropcol'}= 1;
  1659. $limits{'group_func_extra_std'} = 0; # Have group function std().
  1660. $limits{'func_odbc_mod'} = 0; # Have function mod.
  1661. $limits{'func_extra_%'} = 0; # Has % as alias for mod()
  1662. $limits{'func_odbc_floor'} = 0; # Has func_odbc_floor function
  1663. $limits{'func_extra_if'} = 0; # Have function if.
  1664. $limits{'column_alias'} = 1; # Alias for fields in select statement.
  1665. $limits{'NEG'} = 1; # Supports -id
  1666. $limits{'func_extra_in_num'} = 1; # Has function in
  1667. $limits{'unique_index'} = 1; # Unique index works or not
  1668. $limits{'insert_select'} = 1;
  1669. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  1670. $limits{'order_by_unused'} = 1;
  1671. $limits{'working_all_fields'} = 1;
  1672. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  1673. return $self;
  1674. }
  1675. #
  1676. # Get the version number of the database
  1677. #
  1678. sub version
  1679. {
  1680. my ($self)=@_;
  1681. my $version="Access 2000";
  1682. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  1683. return $version; #DBI/ODBC can't return the server version
  1684. }
  1685. sub connect
  1686. {
  1687. my ($self)=@_;
  1688. my ($dbh);
  1689. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  1690. $main::opt_password,{ PrintError => 0}) ||
  1691. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  1692. return $dbh;
  1693. }
  1694. #
  1695. # Returns a list of statements to create a table
  1696. # The field types are in ANSI SQL format.
  1697. #
  1698. sub create
  1699. {
  1700. my($self,$table_name,$fields,$index) = @_;
  1701. my($query,@queries,$nr);
  1702. $query="create table $table_name (";
  1703. foreach $field (@$fields)
  1704. {
  1705. $field =~ s/mediumint/integer/i;
  1706. $field =~ s/tinyint/smallint/i;
  1707. $field =~ s/float\(\d+,\d+\)/float/i;
  1708. $field =~ s/integer\(\d+\)/integer/i;
  1709. $field =~ s/smallint\(\d+\)/smallint/i;
  1710. $field =~ s/int\(\d+\)/integer/i;
  1711. $field =~ s/blob/text/i;
  1712. $query.= $field . ',';
  1713. }
  1714. substr($query,-1)=")"; # Remove last ',';
  1715. push(@queries,$query);
  1716. $nr=0;
  1717. foreach $index (@$index)
  1718. {
  1719. $ext="WITH DISALLOW NULL";
  1720. if (($index =~ s/primary key/unique index primary_key/i))
  1721. {
  1722. $ext="WITH PRIMARY;"
  1723. }
  1724. if ($index =~ /^unique.*\(([^\(]*)\)$/i)
  1725. {
  1726. $nr++;
  1727. $index="unique index ${table_name}_$nr ($1)";
  1728. }
  1729. $index =~ /^(.*)\s+(\(.*\))$/;
  1730. push(@queries,"create ${1} on $table_name $2");
  1731. }
  1732. return @queries;
  1733. }
  1734. #
  1735. # Do any conversions to the ANSI SQL query so that the database can handle it
  1736. #
  1737. sub query {
  1738. my($self,$sql) = @_;
  1739. return $sql;
  1740. }
  1741. sub drop_index
  1742. {
  1743. my ($self,$table,$index) = @_;
  1744. return "DROP INDEX $index ON $table";
  1745. }
  1746. #
  1747. # Abort if the server has crashed
  1748. # return: 0 if ok
  1749. # 1 question should be retried
  1750. #
  1751. sub abort_if_fatal_error
  1752. {
  1753. return 1 if (($DBI::errstr =~ /The database engine couldn\'t lock table/i) ||
  1754. ($DBI::errstr =~ /niet vergrendelen. De tabel is momenteel in gebruik /i) ||
  1755. ($DBI::errstr =~ /Den anv.* redan av en annan/i) ||
  1756. ($DBI::errstr =~ /non-exclusive access/));
  1757. return 0;
  1758. }
  1759. sub small_rollback_segment
  1760. {
  1761. return 0;
  1762. }
  1763. sub reconnect_on_errors
  1764. {
  1765. return 1;
  1766. }
  1767. sub fix_for_insert
  1768. {
  1769. my ($self,$cmd) = @_;
  1770. return $cmd;
  1771. }
  1772. #############################################################################
  1773. # Configuration for Microsoft SQL server
  1774. #############################################################################
  1775. package db_ms_sql;
  1776. sub new
  1777. {
  1778. my ($type,$host,$database)= @_;
  1779. my $self= {};
  1780. my %limits;
  1781. bless $self;
  1782. $self->{'cmp_name'} = "ms-sql";
  1783. $self->{'data_source'} = "DBI:ODBC:$database";
  1784. if (defined($host) && $host ne "")
  1785. {
  1786. $self->{'data_source'} .= ":$host";
  1787. }
  1788. $self->{'limits'} = \%limits;
  1789. $self->{'blob'} = "text";
  1790. $self->{'text'} = "text";
  1791. $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
  1792. $self->{'drop_attr'} = "";
  1793. $self->{'transactions'} = 1; # Transactions enabled
  1794. $limits{'max_conditions'} = 1030; # We get 'Query is too complex'
  1795. $limits{'max_columns'} = 250; # Max number of columns in table
  1796. $limits{'max_tables'} = 65000; # Should be big enough
  1797. $limits{'max_text_size'} = 9830; # Max size with default buffers.
  1798. $limits{'query_size'} = 9830; # Max size with default buffers.
  1799. $limits{'max_index'} = 64; # Max number of keys
  1800. $limits{'max_index_parts'} = 15; # Max segments/key
  1801. $limits{'max_column_name'} = 30; # max table and column name
  1802. $limits{'join_optimizer'} = 1; # Can optimize FROM tables
  1803. $limits{'load_data_infile'} = 0; # Has load data infile
  1804. $limits{'lock_tables'} = 0; # Has lock tables
  1805. $limits{'functions'} = 1; # Has simple functions (+/-)
  1806. $limits{'group_functions'} = 1; # Have group functions
  1807. $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
  1808. $limits{'group_distinct_functions'}= 1; # Have count(distinct)
  1809. $limits{'select_without_from'}= 1; # Can do 'select 1';
  1810. $limits{'multi_drop'} = 1; # Drop table can take many tables
  1811. $limits{'subqueries'} = 1; # Supports sub-queries.
  1812. $limits{'left_outer_join'} = 1; # Supports left outer joins
  1813. $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
  1814. $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
  1815. $limits{'having_with_group'} = 1; # Can't use group functions in HAVING
  1816. $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
  1817. $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
  1818. $limits{'group_by_position'} = 0; # Can use 'GROUP BY 1'
  1819. $limits{'alter_table'} = 1;
  1820. $limits{'alter_add_multi_col'}= 0;
  1821. $limits{'alter_table_dropcol'}= 0;
  1822. $limits{'group_func_extra_std'} = 0; # Have group function std().
  1823. $limits{'func_odbc_mod'} = 0; # Have function mod.
  1824. $limits{'func_extra_%'} = 1; # Has % as alias for mod()
  1825. $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
  1826. $limits{'func_extra_if'} = 0; # Have function if.
  1827. $limits{'column_alias'} = 1; # Alias for fields in select statement.
  1828. $limits{'NEG'} = 1; # Supports -id
  1829. $limits{'func_extra_in_num'} = 0; # Has function in
  1830. $limits{'unique_index'} = 1; # Unique index works or not
  1831. $limits{'insert_select'} = 1;
  1832. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  1833. $limits{'order_by_unused'} = 1;
  1834. $limits{'working_all_fields'} = 1;
  1835. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  1836. return $self;
  1837. }
  1838. #
  1839. # Get the version number of the database
  1840. #
  1841. sub version
  1842. {
  1843. my ($self)=@_;
  1844. my($sth,@row, $version);
  1845. $version='MS SQL server ?';
  1846. $dbh=$self->connect();
  1847. $sth = $dbh->prepare("SELECT \@\@VERSION") or die $DBI::errstr;
  1848. $sth->execute or die $DBI::errstr;
  1849. @row = $sth->fetchrow_array;
  1850. if ($row[0]) {
  1851. @server = split(/\n/,$row[0]);
  1852. chomp(@server);
  1853. $version= "$server[0]";
  1854. }
  1855. $sth->finish;
  1856. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  1857. return $version;
  1858. }
  1859. sub connect
  1860. {
  1861. my ($self)=@_;
  1862. my ($dbh);
  1863. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  1864. $main::opt_password,{ PrintError => 0}) ||
  1865. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  1866. return $dbh;
  1867. }
  1868. #
  1869. # Returns a list of statements to create a table
  1870. # The field types are in ANSI SQL format.
  1871. #
  1872. sub create
  1873. {
  1874. my($self,$table_name,$fields,$index) = @_;
  1875. my($query,@queries,$nr);
  1876. $query="create table $table_name (";
  1877. foreach $field (@$fields)
  1878. {
  1879. $field =~ s/mediumint/integer/i;
  1880. $field =~ s/float\(\d+,\d+\)/float/i;
  1881. $field =~ s/double\(\d+,\d+\)/float/i;
  1882. $field =~ s/double/float/i;
  1883. $field =~ s/integer\(\d+\)/integer/i;
  1884. $field =~ s/int\(\d+\)/integer/i;
  1885. $field =~ s/smallint\(\d+\)/smallint/i;
  1886. $field =~ s/smallinteger/smallint/i;
  1887. $field =~ s/tinyint\(\d+\)/tinyint/i;
  1888. $field =~ s/tinyinteger/tinyint/i;
  1889. $field =~ s/blob/text/i;
  1890. $query.= $field . ',';
  1891. }
  1892. substr($query,-1)=")"; # Remove last ',';
  1893. push(@queries,$query);
  1894. $nr=0;
  1895. foreach $index (@$index)
  1896. {
  1897. $ext="WITH DISALLOW NULL";
  1898. if (($index =~ s/primary key/unique index primary_key/i))
  1899. {
  1900. $ext="WITH PRIMARY;"
  1901. }
  1902. if ($index =~ /^unique.*\(([^\(]*)\)$/i)
  1903. {
  1904. $nr++;
  1905. $index="unique index ${table_name}_$nr ($1)";
  1906. }
  1907. $index =~ /^(.*)\s+(\(.*\))$/;
  1908. push(@queries,"create ${1} on $table_name $2");
  1909. }
  1910. return @queries;
  1911. }
  1912. #
  1913. # Do any conversions to the ANSI SQL query so that the database can handle it
  1914. #
  1915. sub query {
  1916. my($self,$sql) = @_;
  1917. return $sql;
  1918. }
  1919. sub drop_index
  1920. {
  1921. my ($self,$table,$index) = @_;
  1922. return "DROP INDEX $table.$index";
  1923. }
  1924. #
  1925. # Abort if the server has crashed
  1926. # return: 0 if ok
  1927. # 1 question should be retried
  1928. #
  1929. sub abort_if_fatal_error
  1930. {
  1931. return 0;
  1932. }
  1933. sub small_rollback_segment
  1934. {
  1935. return 0;
  1936. }
  1937. sub reconnect_on_errors
  1938. {
  1939. return 0;
  1940. }
  1941. sub fix_for_insert
  1942. {
  1943. my ($self,$cmd) = @_;
  1944. return $cmd;
  1945. }
  1946. #############################################################################
  1947. # Configuration for Sybase
  1948. #############################################################################
  1949. package db_sybase;
  1950. sub new
  1951. {
  1952. my ($type,$host,$database)= @_;
  1953. my $self= {};
  1954. my %limits;
  1955. bless $self;
  1956. $self->{'cmp_name'} = "sybase";
  1957. $self->{'data_source'} = "DBI:Sybase:database=$database";
  1958. if (defined($host) && $host ne "")
  1959. {
  1960. $self->{'data_source'} .= ";hostname=$host";
  1961. }
  1962. $self->{'limits'} = \%limits;
  1963. $self->{'blob'} = "text";
  1964. $self->{'text'} = "text";
  1965. $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
  1966. $self->{'drop_attr'} = "";
  1967. $self->{'transactions'} = 1; # Transactions enabled
  1968. $self->{"vacuum"} = 1;
  1969. $limits{'max_conditions'} = 1030; # We get 'Query is too complex'
  1970. $limits{'max_columns'} = 250; # Max number of columns in table
  1971. $limits{'max_tables'} = 65000; # Should be big enough
  1972. $limits{'max_text_size'} = 9830; # Max size with default buffers.
  1973. $limits{'query_size'} = 9830; # Max size with default buffers.
  1974. $limits{'max_index'} = 64; # Max number of keys
  1975. $limits{'max_index_parts'} = 15; # Max segments/key
  1976. $limits{'max_column_name'} = 30; # max table and column name
  1977. $limits{'join_optimizer'} = 1; # Can optimize FROM tables
  1978. $limits{'load_data_infile'} = 0; # Has load data infile
  1979. $limits{'lock_tables'} = 0; # Has lock tables
  1980. $limits{'functions'} = 1; # Has simple functions (+/-)
  1981. $limits{'group_functions'} = 1; # Have group functions
  1982. $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
  1983. $limits{'group_distinct_functions'}= 1; # Have count(distinct)
  1984. $limits{'select_without_from'}= 1; # Can do 'select 1';
  1985. $limits{'multi_drop'} = 1; # Drop table can take many tables
  1986. $limits{'subqueries'} = 1; # Supports sub-queries.
  1987. $limits{'left_outer_join'} = 1; # Supports left outer joins
  1988. $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
  1989. $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
  1990. $limits{'having_with_group'} = 1; # Can't use group functions in HAVING
  1991. $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
  1992. $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
  1993. $limits{'group_by_position'} = 0; # Can use 'GROUP BY 1'
  1994. $limits{'alter_table'} = 1;
  1995. $limits{'alter_add_multi_col'}= 0;
  1996. $limits{'alter_table_dropcol'}= 0;
  1997. $limits{'group_func_extra_std'} = 0; # Have group function std().
  1998. $limits{'func_odbc_mod'} = 0; # Have function mod.
  1999. $limits{'func_extra_%'} = 1; # Has % as alias for mod()
  2000. $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
  2001. $limits{'func_extra_if'} = 0; # Have function if.
  2002. $limits{'column_alias'} = 1; # Alias for fields in select statement.
  2003. $limits{'NEG'} = 1; # Supports -id
  2004. $limits{'func_extra_in_num'} = 0; # Has function in
  2005. $limits{'unique_index'} = 1; # Unique index works or not
  2006. $limits{'insert_select'} = 1;
  2007. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  2008. $limits{'order_by_unused'} = 1;
  2009. $limits{'working_all_fields'} = 1;
  2010. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  2011. return $self;
  2012. }
  2013. #
  2014. # Get the version number of the database
  2015. #
  2016. sub version
  2017. {
  2018. my ($self)=@_;
  2019. my ($dbh,$sth,$version,@row);
  2020. $dbh=$self->connect();
  2021. $sth = $dbh->prepare('SELECT @@version') or die $DBI::errstr;
  2022. $version="Sybase (unknown)";
  2023. if ($sth->execute && (@row = $sth->fetchrow_array))
  2024. {
  2025. $version=$row[0];
  2026. }
  2027. $sth->finish;
  2028. $dbh->disconnect;
  2029. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  2030. return $version;
  2031. }
  2032. sub connect
  2033. {
  2034. my ($self)=@_;
  2035. my ($dbh);
  2036. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  2037. $main::opt_password,{ PrintError => 0 , AutoCommit => 1}) ||
  2038. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  2039. return $dbh;
  2040. }
  2041. #
  2042. # Returns a list of statements to create a table
  2043. # The field types are in ANSI SQL format.
  2044. #
  2045. sub create
  2046. {
  2047. my($self,$table_name,$fields,$index) = @_;
  2048. my($query,@queries,$nr);
  2049. $query="create table $table_name (";
  2050. foreach $field (@$fields)
  2051. {
  2052. $field =~ s/mediumint/integer/i;
  2053. $field =~ s/float\(\d+,\d+\)/float/i;
  2054. $field =~ s/int\(\d+\)/int/i;
  2055. $field =~ s/double/float/i;
  2056. $field =~ s/integer\(\d+\)/integer/i;
  2057. $field =~ s/smallint\(\d+\)/smallint/i;
  2058. $field =~ s/tinyint\(\d+\)/tinyint/i;
  2059. $field =~ s/blob/text/i;
  2060. $query.= $field . ',';
  2061. }
  2062. substr($query,-1)=")"; # Remove last ',';
  2063. push(@queries,$query);
  2064. $nr=0;
  2065. foreach $index (@$index)
  2066. {
  2067. # $ext="WITH DISALLOW NULL";
  2068. if (($index =~ s/primary key/unique index primary_key/i))
  2069. {
  2070. # $ext="WITH PRIMARY;"
  2071. }
  2072. if ($index =~ /^unique.*\(([^\(]*)\)$/i)
  2073. {
  2074. $nr++;
  2075. $index="unique index ${table_name}_$nr ($1)";
  2076. }
  2077. $index =~ /^(.*)\s+(\(.*\))$/;
  2078. push(@queries,"create ${1} on $table_name $2");
  2079. }
  2080. return @queries;
  2081. }
  2082. #
  2083. # Do any conversions to the ANSI SQL query so that the database can handle it
  2084. #
  2085. sub query {
  2086. my($self,$sql) = @_;
  2087. return $sql;
  2088. }
  2089. sub drop_index
  2090. {
  2091. my ($self,$table,$index) = @_;
  2092. return "DROP INDEX $table.$index";
  2093. }
  2094. #
  2095. # Abort if the server has crashed
  2096. # return: 0 if ok
  2097. # 1 question should be retried
  2098. #
  2099. sub abort_if_fatal_error
  2100. {
  2101. return 0;
  2102. }
  2103. sub small_rollback_segment
  2104. {
  2105. return 0;
  2106. }
  2107. sub reconnect_on_errors
  2108. {
  2109. return 0;
  2110. }
  2111. sub fix_for_insert
  2112. {
  2113. my ($self,$cmd) = @_;
  2114. return $cmd;
  2115. }
  2116. #
  2117. # optimize the tables ....
  2118. # WARNING (from walrus)! This sub will work only from DBD:sybase
  2119. # driver. Because if we use ODBC we don't know actual database name
  2120. # (but DSN name only)
  2121. sub vacuum
  2122. {
  2123. my ($self,$full_vacuum,$dbh_ref)=@_;
  2124. my ($loop_time,$end_time,$dbh);
  2125. if (defined($full_vacuum))
  2126. {
  2127. $$dbh_ref->disconnect; $$dbh_ref= $self->connect();
  2128. }
  2129. $dbh=$$dbh_ref;
  2130. $loop_time=new Benchmark;
  2131. my (@tables,$sth,$current_table,$current_base);
  2132. $dbh->do("dump tran $database with truncate_only");
  2133. $sth=$dbh->prepare("sp_tables" ) or die "prepere";
  2134. $sth->execute() or die "execute";
  2135. while (@row = $sth->fetchrow_array()) {
  2136. $current_table = $row[2];
  2137. $current_base = $row[0];
  2138. next if ($current_table =~ /^sys/);
  2139. push(@tables,$current_table) if ($database == $current_base);
  2140. }
  2141. $sth->finish();
  2142. foreach $table (@tables) {
  2143. # print "$table: \n";
  2144. $dbh->do("update statistics $table") or print "Oops!";
  2145. }
  2146. # $dbh->do("analyze table ?? compute statistics") || die "Got error: $DBI::errstr when executing 'vacuum'\n";
  2147. $end_time=new Benchmark;
  2148. print "Time for book-keeping (1): " .
  2149. Benchmark::timestr(Benchmark::timediff($end_time, $loop_time),"all") . "\n\n";
  2150. $dbh->disconnect; $$dbh_ref= $self->connect();
  2151. }
  2152. #############################################################################
  2153. # Definitions for Adabas
  2154. #############################################################################
  2155. package db_Adabas;
  2156. sub new
  2157. {
  2158. my ($type,$host,$database)= @_;
  2159. my $self= {};
  2160. my %limits;
  2161. bless $self;
  2162. $self->{'cmp_name'} = "Adabas";
  2163. $self->{'data_source'} = "DBI:Adabas:$database";
  2164. $self->{'limits'} = \%limits;
  2165. $self->{'blob'} = "long";
  2166. $self->{'text'} = "long";
  2167. $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
  2168. $self->{'drop_attr'} = "";
  2169. $self->{'transactions'} = 1; # Transactions enabled
  2170. $limits{'max_conditions'} = 50; # (Actually not a limit)
  2171. $limits{'max_columns'} = 254; # Max number of columns in table
  2172. $limits{'max_tables'} = 65000; # Should be big enough
  2173. $limits{'max_text_size'} = 2000; # Limit for blob test-connect
  2174. $limits{'query_size'} = 65525; # Max size with default buffers.
  2175. $limits{'max_index'} = 16; # Max number of keys
  2176. $limits{'max_index_parts'} = 16; # Max segments/key
  2177. $limits{'max_column_name'} = 32; # max table and column name
  2178. $limits{'join_optimizer'} = 1; # Can optimize FROM tables
  2179. $limits{'load_data_infile'} = 0; # Has load data infile
  2180. $limits{'lock_tables'} = 0; # Has lock tables
  2181. $limits{'functions'} = 1; # Has simple functions (+/-)
  2182. $limits{'group_functions'} = 1; # Have group functions
  2183. $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
  2184. $limits{'group_distinct_functions'}= 1; # Have count(distinct)
  2185. $limits{'select_without_from'}= 0;
  2186. $limits{'multi_drop'} = 0;
  2187. $limits{'subqueries'} = 1;
  2188. $limits{'left_outer_join'} = 0; # This may be fixed in the query module
  2189. $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
  2190. $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
  2191. $limits{'having_with_group'} = 1; # Can't use group functions in HAVING
  2192. $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
  2193. $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
  2194. $limits{'group_by_position'} = 1;
  2195. $limits{'alter_table'} = 1;
  2196. $limits{'alter_add_multi_col'}= 2; #Have ALTER TABLE t add a int, b int;
  2197. $limits{'alter_table_dropcol'}= 1;
  2198. $limits{'group_func_extra_std'} = 0; # Have group function std().
  2199. $limits{'func_odbc_mod'} = 0; # Oracle has problem with mod()
  2200. $limits{'func_extra_%'} = 0; # Has % as alias for mod()
  2201. $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
  2202. $limits{'func_extra_if'} = 0; # Have function if.
  2203. $limits{'column_alias'} = 1; # Alias for fields in select statement.
  2204. $limits{'NEG'} = 1; # Supports -id
  2205. $limits{'func_extra_in_num'} = 1; # Has function in
  2206. $limits{'unique_index'} = 1; # Unique index works or not
  2207. $limits{'insert_select'} = 1;
  2208. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  2209. $limits{'order_by_unused'} = 1;
  2210. $limits{'working_all_fields'} = 1;
  2211. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  2212. return $self;
  2213. }
  2214. #
  2215. # Get the version number of the database
  2216. #
  2217. sub version
  2218. {
  2219. my ($self)=@_;
  2220. my ($dbh,$sth,$version,@row);
  2221. $dbh=$self->connect();
  2222. $sth = $dbh->prepare("SELECT KERNEL FROM VERSIONS") or die $DBI::errstr;
  2223. $version="Adabas (unknown)";
  2224. if ($sth->execute && (@row = $sth->fetchrow_array)
  2225. && $row[0] =~ /([\d\.]+)/)
  2226. {
  2227. $version="Adabas $1";
  2228. }
  2229. $sth->finish;
  2230. $dbh->disconnect;
  2231. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  2232. return $version;
  2233. }
  2234. sub connect
  2235. {
  2236. my ($self)=@_;
  2237. my ($dbh);
  2238. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  2239. $main::opt_password,{ PrintError => 0}) ||
  2240. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  2241. return $dbh;
  2242. }
  2243. #
  2244. # Returns a list of statements to create a table
  2245. # The field types are in ANSI SQL format.
  2246. #
  2247. # If one uses $main::opt_fast then one is allowed to use
  2248. # non standard types to get better speed.
  2249. #
  2250. sub create
  2251. {
  2252. my($self,$table_name,$fields,$index) = @_;
  2253. my($query,@queries,$ind,@keys);
  2254. $query="create table $table_name (";
  2255. foreach $field (@$fields)
  2256. {
  2257. $field =~ s/CHARACTER\s+VARYING/VARCHAR/i;
  2258. $field =~ s/TINYINT/SMALLINT/i;
  2259. $field =~ s/MEDIUMINT/INT/i;
  2260. $field =~ s/SMALLINT\s*\(\d+\)/SMALLINT/i;
  2261. $field =~ s/INT\s*\(\d+\)/INT/i;
  2262. $field =~ s/BLOB/LONG/i;
  2263. $field =~ s/INTEGER\s*\(\d+\)/INTEGER/i;
  2264. $field =~ s/FLOAT\s*\((\d+),\d+\)/FLOAT\($1\)/i;
  2265. $field =~ s/DOUBLE/FLOAT\(38\)/i;
  2266. $field =~ s/DOUBLE\s+PRECISION/FLOAT\(38\)/i;
  2267. $query.= $field . ',';
  2268. }
  2269. foreach $ind (@$index)
  2270. {
  2271. my @index;
  2272. if ( $ind =~ /\bKEY\b/i ){
  2273. push(@keys,"ALTER TABLE $table_name ADD $ind");
  2274. }else{
  2275. my @fields = split(' ',$index);
  2276. my $query="CREATE INDEX $fields[1] ON $table_name $fields[2]";
  2277. push(@index,$query);
  2278. }
  2279. }
  2280. substr($query,-1)=")"; # Remove last ',';
  2281. push(@queries,$query,@keys,@index);
  2282. #print "query:$query\n";
  2283. return @queries;
  2284. }
  2285. sub insert_file {
  2286. my($self,$dbname, $file) = @_;
  2287. print "insert an ascii file isn't supported by Oracle (?)\n";
  2288. return 0;
  2289. }
  2290. #
  2291. # Do any conversions to the ANSI SQL query so that the database can handle it
  2292. #
  2293. sub query {
  2294. my($self,$sql) = @_;
  2295. return $sql;
  2296. }
  2297. sub drop_index
  2298. {
  2299. my ($self,$table,$index) = @_;
  2300. return "DROP INDEX $index";
  2301. }
  2302. #
  2303. # Abort if the server has crashed
  2304. # return: 0 if ok
  2305. # 1 question should be retried
  2306. #
  2307. sub abort_if_fatal_error
  2308. {
  2309. return 0;
  2310. }
  2311. sub small_rollback_segment
  2312. {
  2313. return 0;
  2314. }
  2315. sub reconnect_on_errors
  2316. {
  2317. return 0;
  2318. }
  2319. sub fix_for_insert
  2320. {
  2321. my ($self,$cmd) = @_;
  2322. return $cmd;
  2323. }
  2324. #############################################################################
  2325. # Configuration for IBM DB2
  2326. #############################################################################
  2327. package db_db2;
  2328. sub new
  2329. {
  2330. my ($type,$host,$database)= @_;
  2331. my $self= {};
  2332. my %limits;
  2333. bless $self;
  2334. $self->{'cmp_name'} = "DB2";
  2335. $self->{'data_source'} = "DBI:ODBC:$database";
  2336. if (defined($host) && $host ne "")
  2337. {
  2338. $self->{'data_source'} .= ":$host";
  2339. }
  2340. $self->{'limits'} = \%limits;
  2341. $self->{'blob'} = "varchar(255)";
  2342. $self->{'text'} = "varchar(255)";
  2343. $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
  2344. $self->{'drop_attr'} = "";
  2345. $self->{'transactions'} = 1; # Transactions enabled
  2346. $limits{'max_conditions'} = 418; # We get 'Query is too complex'
  2347. $limits{'max_columns'} = 500; # Max number of columns in table
  2348. $limits{'max_tables'} = 65000; # Should be big enough
  2349. $limits{'max_text_size'} = 254; # Max size with default buffers.
  2350. $limits{'query_size'} = 254; # Max size with default buffers.
  2351. $limits{'max_index'} = 48; # Max number of keys
  2352. $limits{'max_index_parts'} = 15; # Max segments/key
  2353. $limits{'max_column_name'} = 18; # max table and column name
  2354. $limits{'join_optimizer'} = 1; # Can optimize FROM tables
  2355. $limits{'load_data_infile'} = 0; # Has load data infile
  2356. $limits{'lock_tables'} = 0; # Has lock tables
  2357. $limits{'functions'} = 1; # Has simple functions (+/-)
  2358. $limits{'group_functions'} = 1; # Have group functions
  2359. $limits{'group_func_sql_min_str'}= 1;
  2360. $limits{'group_distinct_functions'}= 1; # Have count(distinct)
  2361. $limits{'select_without_from'}= 0; # Can do 'select 1';
  2362. $limits{'multi_drop'} = 0; # Drop table can take many tables
  2363. $limits{'subqueries'} = 1; # Supports sub-queries.
  2364. $limits{'left_outer_join'} = 1; # Supports left outer joins
  2365. $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
  2366. $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
  2367. $limits{'having_with_group'} = 1; # Can't use group functions in HAVING
  2368. $limits{'like_with_column'} = 0; # Can use column1 LIKE column2
  2369. $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
  2370. $limits{'group_by_position'} = 0; # Can use 'GROUP BY 1'
  2371. $limits{'alter_table'} = 1;
  2372. $limits{'alter_add_multi_col'}= 0;
  2373. $limits{'alter_table_dropcol'}= 0;
  2374. $limits{'group_func_extra_std'} = 0; # Have group function std().
  2375. $limits{'func_odbc_mod'} = 1; # Have function mod.
  2376. $limits{'func_extra_%'} = 0; # Has % as alias for mod()
  2377. $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
  2378. $limits{'func_extra_if'} = 0; # Have function if.
  2379. $limits{'column_alias'} = 1; # Alias for fields in select statement.
  2380. $limits{'NEG'} = 1; # Supports -id
  2381. $limits{'func_extra_in_num'} = 0; # Has function in
  2382. $limits{'unique_index'} = 1; # Unique index works or not
  2383. $limits{'insert_select'} = 1;
  2384. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  2385. $limits{'order_by_unused'} = 1;
  2386. $limits{'working_all_fields'} = 1;
  2387. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  2388. return $self;
  2389. }
  2390. #
  2391. # Get the version number of the database
  2392. #
  2393. sub version
  2394. {
  2395. my ($self)=@_;
  2396. return "IBM DB2 5"; #DBI/ODBC can't return the server version
  2397. }
  2398. sub connect
  2399. {
  2400. my ($self)=@_;
  2401. my ($dbh);
  2402. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user, $main::opt_password) ||
  2403. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  2404. return $dbh;
  2405. }
  2406. #
  2407. # Returns a list of statements to create a table
  2408. # The field types are in ANSI SQL format.
  2409. #
  2410. sub create
  2411. {
  2412. my($self,$table_name,$fields,$index) = @_;
  2413. my($query,@queries,$nr);
  2414. $query="create table $table_name (";
  2415. foreach $field (@$fields)
  2416. {
  2417. $field =~ s/mediumint/integer/i;
  2418. $field =~ s/float\(\d+,\d+\)/float/i;
  2419. $field =~ s/integer\(\d+\)/integer/i;
  2420. $field =~ s/int\(\d+\)/integer/i;
  2421. $field =~ s/tinyint\(\d+\)/smallint/i;
  2422. $field =~ s/tinyint/smallint/i;
  2423. $field =~ s/smallint\(\d+\)/smallint/i;
  2424. $field =~ s/smallinteger/smallint/i;
  2425. $field =~ s/blob/varchar(256)/i;
  2426. $query.= $field . ',';
  2427. }
  2428. substr($query,-1)=")"; # Remove last ',';
  2429. push(@queries,$query);
  2430. $nr=0;
  2431. foreach $index (@$index)
  2432. {
  2433. $ext="WITH DISALLOW NULL";
  2434. if (($index =~ s/primary key/unique index primary_key/i))
  2435. {
  2436. $ext="WITH PRIMARY;"
  2437. }
  2438. if ($index =~ /^unique.*\(([^\(]*)\)$/i)
  2439. {
  2440. $nr++;
  2441. $index="unique index ${table_name}_$nr ($1)";
  2442. }
  2443. $index =~ /^(.*)\s+(\(.*\))$/;
  2444. push(@queries,"create ${1} on $table_name $2");
  2445. }
  2446. return @queries;
  2447. }
  2448. #
  2449. # Do any conversions to the ANSI SQL query so that the database can handle it
  2450. #
  2451. sub query {
  2452. my($self,$sql) = @_;
  2453. return $sql;
  2454. }
  2455. sub drop_index
  2456. {
  2457. my ($self,$table,$index) = @_;
  2458. return "DROP INDEX $table.$index";
  2459. }
  2460. #
  2461. # Abort if the server has crashed
  2462. # return: 0 if ok
  2463. # 1 question should be retried
  2464. #
  2465. sub abort_if_fatal_error
  2466. {
  2467. return 0;
  2468. }
  2469. sub small_rollback_segment
  2470. {
  2471. return 1;
  2472. }
  2473. sub reconnect_on_errors
  2474. {
  2475. return 0;
  2476. }
  2477. sub fix_for_insert
  2478. {
  2479. my ($self,$cmd) = @_;
  2480. return $cmd;
  2481. }
  2482. #############################################################################
  2483. # Configuration for MIMER
  2484. #############################################################################
  2485. package db_Mimer;
  2486. sub new
  2487. {
  2488. my ($type,$host,$database)= @_;
  2489. my $self= {};
  2490. my %limits;
  2491. bless $self;
  2492. $self->{'cmp_name'} = "mimer";
  2493. $self->{'data_source'} = "DBI:mimer:$database:$host";
  2494. $self->{'limits'} = \%limits;
  2495. $self->{'blob'} = "binary varying(15000)";
  2496. $self->{'text'} = "character varying(15000)";
  2497. $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
  2498. $self->{'drop_attr'} = "";
  2499. $self->{'transactions'} = 1; # Transactions enabled
  2500. $self->{'char_null'} = "cast(NULL as char(1))";
  2501. $self->{'numeric_null'} = "cast(NULL as int)";
  2502. $limits{'max_conditions'} = 9999; # (Actually not a limit)
  2503. $limits{'max_columns'} = 252; # Max number of columns in table
  2504. $limits{'max_tables'} = 65000; # Should be big enough
  2505. $limits{'max_text_size'} = 15000; # Max size with default buffers.
  2506. $limits{'query_size'} = 1000000; # Max size with default buffers.
  2507. $limits{'max_index'} = 32; # Max number of keys
  2508. $limits{'max_index_parts'} = 16; # Max segments/key
  2509. $limits{'max_column_name'} = 128; # max table and column name
  2510. $limits{'join_optimizer'} = 1; # Can optimize FROM tables
  2511. $limits{'load_data_infile'} = 1; # Has load data infile
  2512. $limits{'lock_tables'} = 0; # Has lock tables
  2513. $limits{'functions'} = 1; # Has simple functions (+/-)
  2514. $limits{'group_functions'} = 1; # Have group functions
  2515. $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
  2516. $limits{'group_distinct_functions'}= 1; # Have count(distinct)
  2517. $limits{'select_without_from'}= 0; # Cannot do 'select 1';
  2518. $limits{'multi_drop'} = 0; # Drop table cannot take many tables
  2519. $limits{'subqueries'} = 1; # Supports sub-queries.
  2520. $limits{'left_outer_join'} = 1; # Supports left outer joins
  2521. $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
  2522. $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
  2523. $limits{'having_with_group'} = 1; # Can use group functions in HAVING
  2524. $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
  2525. $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
  2526. $limits{'group_by_position'} = 0; # Cannot use 'GROUP BY 1'
  2527. $limits{'alter_table'} = 1; # Have ALTER TABLE
  2528. $limits{'alter_add_multi_col'}= 0; # Have ALTER TABLE t add a int,add b int;
  2529. $limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column
  2530. $limits{'insert_multi_value'} = 0; # Does not have INSERT ... values (1,2),(3,4)
  2531. $limits{'multi_distinct'} = 0; # Does not allow select count(distinct a),count(distinct b)..
  2532. $limits{'group_func_extra_std'} = 0; # Does not have group function std().
  2533. $limits{'func_odbc_mod'} = 1; # Have function mod.
  2534. $limits{'func_extra_%'} = 0; # Does not have % as alias for mod()
  2535. $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
  2536. $limits{'func_extra_if'} = 0; # Does not have function if.
  2537. $limits{'column_alias'} = 1; # Alias for fields in select statement.
  2538. $limits{'NEG'} = 1; # Supports -id
  2539. $limits{'func_extra_in_num'} = 1; # Has function in
  2540. $limits{'limit'} = 0; # Does not support the limit attribute
  2541. $limits{'unique_index'} = 1; # Unique index works or not
  2542. $limits{'insert_select'} = 1;
  2543. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  2544. $limits{'order_by_unused'} = 0;
  2545. $limits{'working_all_fields'} = 1;
  2546. return $self;
  2547. }
  2548. #
  2549. # Get the version number of the database
  2550. #
  2551. sub version
  2552. {
  2553. my ($self)=@_;
  2554. my ($dbh,$sth,$version,@row);
  2555. $dbh=$self->connect();
  2556. #
  2557. # Pick up SQLGetInfo option SQL_DBMS_VER (18)
  2558. #
  2559. $version = $dbh->func(18, GetInfo);
  2560. $dbh->disconnect;
  2561. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  2562. return $version;
  2563. }
  2564. #
  2565. # Connection with optional disabling of logging
  2566. #
  2567. sub connect
  2568. {
  2569. my ($self)=@_;
  2570. my ($dbh);
  2571. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  2572. $main::opt_password,{ PrintError => 0}) ||
  2573. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  2574. $dbh->do("SET OPTION LOG_OFF=1,UPDATE_LOG=0");
  2575. return $dbh;
  2576. }
  2577. #
  2578. # Returns a list of statements to create a table
  2579. # The field types are in ANSI SQL format.
  2580. #
  2581. # If one uses $main::opt_fast then one is allowed to use
  2582. # non standard types to get better speed.
  2583. #
  2584. sub create
  2585. {
  2586. my($self,$table_name,$fields,$index,$options) = @_;
  2587. my($query,@queries,@indexes);
  2588. $query="create table $table_name (";
  2589. foreach $field (@$fields)
  2590. {
  2591. # $field =~ s/ decimal/ double(10,2)/i;
  2592. # $field =~ s/ big_decimal/ double(10,2)/i;
  2593. $field =~ s/ double/ double precision/i;
  2594. $field =~ s/ tinyint\(.*\)/ smallint/i;
  2595. $field =~ s/ smallint\(.*\)/ smallint/i;
  2596. $field =~ s/ mediumint/ integer/i;
  2597. $field =~ s/ float\(.*\)/ float/i;
  2598. # $field =~ s/ date/ int/i; # Because of tcp ?
  2599. $query.= $field . ',';
  2600. }
  2601. foreach $index (@$index)
  2602. {
  2603. if ( $index =~ /\bINDEX\b/i )
  2604. {
  2605. my @fields = split(' ',$index);
  2606. my $query="CREATE INDEX $fields[1] ON $table_name $fields[2]";
  2607. push(@indexes,$query);
  2608. } else {
  2609. $query.= $index . ',';
  2610. }
  2611. }
  2612. substr($query,-1)=")"; # Remove last ',';
  2613. $query.=" $options" if (defined($options));
  2614. push(@queries,$query,@indexes);
  2615. return @queries;
  2616. }
  2617. sub insert_file {
  2618. my($self,$dbname, $file) = @_;
  2619. print "insert of an ascii file isn't supported by Mimer\n";
  2620. return 0;
  2621. }
  2622. #
  2623. # Do any conversions to the ANSI SQL query so that the database can handle it
  2624. #
  2625. sub query {
  2626. my($self,$sql) = @_;
  2627. return $sql;
  2628. }
  2629. sub drop_index {
  2630. my ($self,$table,$index) = @_;
  2631. return "DROP INDEX $index";
  2632. }
  2633. #
  2634. # Abort if the server has crashed
  2635. # return: 0 if ok
  2636. # 1 question should be retried
  2637. #
  2638. sub abort_if_fatal_error
  2639. {
  2640. return 1 if ($DBI::errstr =~ /Table locked by another cursor/);
  2641. return 0;
  2642. }
  2643. sub small_rollback_segment
  2644. {
  2645. return 0;
  2646. }
  2647. sub reconnect_on_errors
  2648. {
  2649. return 0;
  2650. }
  2651. sub fix_for_insert
  2652. {
  2653. my ($self,$cmd) = @_;
  2654. return $cmd;
  2655. }
  2656. #############################################################################
  2657. # Configuration for InterBase
  2658. #############################################################################
  2659. package db_interbase;
  2660. sub new
  2661. {
  2662. my ($type,$host,$database)= @_;
  2663. my $self= {};
  2664. my %limits;
  2665. bless $self;
  2666. $self->{'cmp_name'} = "interbase";
  2667. $self->{'data_source'} = "DBI:InterBase:database=$database;ib_dialect=3";
  2668. $self->{'limits'} = \%limits;
  2669. $self->{'blob'} = "blob";
  2670. $self->{'text'} = "";
  2671. $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
  2672. $self->{'drop_attr'} = "";
  2673. $self->{'transactions'} = 1; # Transactions enabled
  2674. $self->{'char_null'} = "";
  2675. $self->{'numeric_null'} = "";
  2676. $limits{'max_conditions'} = 9999; # (Actually not a limit)
  2677. $limits{'max_columns'} = 252; # Max number of columns in table
  2678. $limits{'max_tables'} = 65000; # Should be big enough
  2679. $limits{'max_text_size'} = 15000; # Max size with default buffers.
  2680. $limits{'query_size'} = 1000000; # Max size with default buffers.
  2681. $limits{'max_index'} = 65000; # Max number of keys
  2682. $limits{'max_index_parts'} = 8; # Max segments/key
  2683. $limits{'max_column_name'} = 128; # max table and column name
  2684. $limits{'join_optimizer'} = 1; # Can optimize FROM tables
  2685. $limits{'load_data_infile'} = 0; # Has load data infile
  2686. $limits{'lock_tables'} = 0; # Has lock tables
  2687. $limits{'functions'} = 1; # Has simple functions (+/-)
  2688. $limits{'group_functions'} = 1; # Have group functions
  2689. $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
  2690. $limits{'group_distinct_functions'}= 1; # Have count(distinct)
  2691. $limits{'select_without_from'}= 0; # Cannot do 'select 1';
  2692. $limits{'multi_drop'} = 0; # Drop table cannot take many tables
  2693. $limits{'subqueries'} = 1; # Supports sub-queries.
  2694. $limits{'left_outer_join'} = 1; # Supports left outer joins
  2695. $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
  2696. $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
  2697. $limits{'having_with_group'} = 1; # Can use group functions in HAVING
  2698. $limits{'like_with_column'} = 0; # Can use column1 LIKE column2
  2699. $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
  2700. $limits{'group_by_position'} = 0; # Cannot use 'GROUP BY 1'
  2701. $limits{'alter_table'} = 1; # Have ALTER TABLE
  2702. $limits{'alter_add_multi_col'}= 1; # Have ALTER TABLE t add a int,add b int;
  2703. $limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column
  2704. $limits{'insert_multi_value'} = 0; # Does not have INSERT ... values (1,2),(3,4)
  2705. $limits{'group_func_extra_std'} = 0; # Does not have group function std().
  2706. $limits{'func_odbc_mod'} = 0; # Have function mod.
  2707. $limits{'func_extra_%'} = 0; # Does not have % as alias for mod()
  2708. $limits{'func_odbc_floor'} = 0; # Has func_odbc_floor function
  2709. $limits{'func_extra_if'} = 0; # Does not have function if.
  2710. $limits{'column_alias'} = 1; # Alias for fields in select statement.
  2711. $limits{'NEG'} = 0; # Supports -id
  2712. $limits{'func_extra_in_num'} = 0; # Has function in
  2713. $limits{'limit'} = 0; # Does not support the limit attribute
  2714. $limits{'working_blobs'} = 1; # If big varchar/blobs works
  2715. $limits{'order_by_unused'} = 1;
  2716. $limits{'working_all_fields'} = 1;
  2717. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  2718. return $self;
  2719. }
  2720. #
  2721. # Get the version number of the database
  2722. #
  2723. sub version
  2724. {
  2725. my ($self)=@_;
  2726. my ($dbh,$version);
  2727. $version='Interbase ?';
  2728. $dbh=$self->connect();
  2729. eval { $version = $dbh->func('version','ib_database_info')->{'version'}; };
  2730. $dbh->disconnect;
  2731. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  2732. return $version;
  2733. }
  2734. #
  2735. # Connection with optional disabling of logging
  2736. #
  2737. sub connect
  2738. {
  2739. my ($self)=@_;
  2740. my ($dbh);
  2741. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  2742. $main::opt_password,{ PrintError => 0, AutoCommit => 1}) ||
  2743. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  2744. return $dbh;
  2745. }
  2746. #
  2747. # Returns a list of statements to create a table
  2748. # The field types are in ANSI SQL format.
  2749. #
  2750. # If one uses $main::opt_fast then one is allowed to use
  2751. # non standard types to get better speed.
  2752. #
  2753. sub create
  2754. {
  2755. my($self,$table_name,$fields,$index,$options) = @_;
  2756. my($query,@queries,@keys,@indexes);
  2757. $query="create table $table_name (";
  2758. foreach $field (@$fields)
  2759. {
  2760. # $field =~ s/ big_decimal/ decimal/i;
  2761. $field =~ s/ double/ double precision/i;
  2762. $field =~ s/ tinyint/ smallint/i;
  2763. $field =~ s/ mediumint/ integer/i;
  2764. $field =~ s/\bint\b/integer/i;
  2765. $field =~ s/ float\(\d,\d\)/ float/i;
  2766. $field =~ s/ smallint\(\d\)/ smallint/i;
  2767. $field =~ s/ integer\(\d\)/ integer/i;
  2768. $query.= $field . ',';
  2769. }
  2770. foreach $ind (@$index)
  2771. {
  2772. if ( $ind =~ /(\bKEY\b)|(\bUNIQUE\b)/i ){
  2773. push(@keys,"ALTER TABLE $table_name ADD $ind");
  2774. }else{
  2775. my @fields = split(' ',$ind);
  2776. my $query="CREATE INDEX $fields[1] ON $table_name $fields[2]";
  2777. push(@indexes,$query);
  2778. }
  2779. }
  2780. substr($query,-1)=")"; # Remove last ',';
  2781. $query.=" $options" if (defined($options));
  2782. push(@queries,$query,@keys,@indexes);
  2783. return @queries;
  2784. }
  2785. sub insert_file {
  2786. my($self,$dbname, $file) = @_;
  2787. print "insert of an ascii file isn't supported by InterBase\n";
  2788. return 0;
  2789. }
  2790. #
  2791. # Do any conversions to the ANSI SQL query so that the database can handle it
  2792. #
  2793. sub query {
  2794. my($self,$sql) = @_;
  2795. return $sql;
  2796. }
  2797. sub drop_index {
  2798. my ($self,$table,$index) = @_;
  2799. return "DROP INDEX $index";
  2800. }
  2801. #
  2802. # Abort if the server has crashed
  2803. # return: 0 if ok
  2804. # 1 question should be retried
  2805. #
  2806. sub abort_if_fatal_error
  2807. {
  2808. return 1 if ($DBI::errstr =~ /Table locked by another cursor/);
  2809. return 0;
  2810. }
  2811. sub small_rollback_segment
  2812. {
  2813. return 1;
  2814. }
  2815. sub reconnect_on_errors
  2816. {
  2817. return 1;
  2818. }
  2819. sub fix_for_insert
  2820. {
  2821. my ($self,$cmd) = @_;
  2822. return $cmd;
  2823. }
  2824. #############################################################################
  2825. # Configuration for FrontBase
  2826. #############################################################################
  2827. package db_FrontBase;
  2828. sub new
  2829. {
  2830. my ($type,$host,$database)= @_;
  2831. my $self= {};
  2832. my %limits;
  2833. bless $self;
  2834. $self->{'cmp_name'} = "FrontBase";
  2835. $self->{'data_source'} = "DBI:FB:dbname=$database;host=$host";
  2836. $self->{'limits'} = \%limits;
  2837. $self->{'blob'} = "varchar(8000000)";
  2838. $self->{'text'} = "varchar(8000000)";
  2839. $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
  2840. $self->{'drop_attr'} = ' restrict';
  2841. $self->{'transactions'} = 1; # Transactions enabled
  2842. $self->{'error_on_execute_means_zero_rows'}=1;
  2843. $limits{'max_conditions'} = 5427; # (Actually not a limit)
  2844. # The following should be 8192, but is smaller because Frontbase crashes..
  2845. $limits{'max_columns'} = 150; # Max number of columns in table
  2846. $limits{'max_tables'} = 5000; # 10000 crashed FrontBase
  2847. $limits{'max_text_size'} = 65000; # Max size with default buffers.
  2848. $limits{'query_size'} = 8000000; # Max size with default buffers.
  2849. $limits{'max_index'} = 38; # Max number of keys
  2850. $limits{'max_index_parts'} = 20; # Max segments/key
  2851. $limits{'max_column_name'} = 128; # max table and column name
  2852. $limits{'join_optimizer'} = 1; # Can optimize FROM tables
  2853. $limits{'load_data_infile'} = 1; # Has load data infile
  2854. $limits{'lock_tables'} = 0; # Has lock tables
  2855. $limits{'functions'} = 1; # Has simple functions (+/-)
  2856. $limits{'group_functions'} = 1; # Have group functions
  2857. $limits{'group_distinct_functions'}= 0; # Have count(distinct)
  2858. $limits{'select_without_from'}= 0;
  2859. $limits{'multi_drop'} = 0; # Drop table cannot take many tables
  2860. $limits{'subqueries'} = 1; # Supports sub-queries.
  2861. $limits{'left_outer_join'} = 1; # Supports left outer joins
  2862. $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
  2863. $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
  2864. $limits{'having_with_group'} = 0; # Can use group functions in HAVING
  2865. $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
  2866. $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
  2867. $limits{'group_by_position'} = 0; # Use of 'GROUP BY 1'
  2868. $limits{'alter_table'} = 1; # Have ALTER TABLE
  2869. $limits{'alter_add_multi_col'}= 0; # Have ALTER TABLE t add a int,add b int;
  2870. $limits{'alter_table_dropcol'}= 0; # Have ALTER TABLE DROP column
  2871. $limits{'insert_multi_value'} = 1;
  2872. $limits{'group_func_extra_std'} = 0; # Does not have group function std().
  2873. $limits{'func_odbc_mod'} = 0; # Have function mod.
  2874. $limits{'func_extra_%'} = 0; # Does not have % as alias for mod()
  2875. $limits{'func_odbc_floor'} = 0; # Has func_odbc_floor function
  2876. $limits{'func_extra_if'} = 0; # Does not have function if.
  2877. $limits{'column_alias'} = 1; # Alias for fields in select statement.
  2878. $limits{'NEG'} = 1; # Supports -id
  2879. $limits{'func_extra_in_num'} = 0; # Has function in
  2880. $limits{'limit'} = 0; # Does not support the limit attribute
  2881. $limits{'insert_select'} = 0;
  2882. $limits{'order_by_unused'} = 0;
  2883. # We don't get an error for duplicate row in 'test-insert'
  2884. $limits{'unique_index'} = 0; # Unique index works or not
  2885. # We can't use a blob as a normal string (we got a wierd error)
  2886. $limits{'working_blobs'} = 0;
  2887. # 'select min(region),max(region) from bench1' kills the server after a while
  2888. $limits{'group_func_sql_min_str'} = 0;
  2889. # If you do select f1,f2,f3...f200 from table, Frontbase dies.
  2890. $limits{'working_all_fields'} = 0;
  2891. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  2892. return $self;
  2893. }
  2894. #
  2895. # Get the version number of the database
  2896. #
  2897. sub version
  2898. {
  2899. my ($self)=@_;
  2900. my ($dbh,$sth,$version,@row);
  2901. # $dbh=$self->connect();
  2902. #
  2903. # Pick up SQLGetInfo option SQL_DBMS_VER (18)
  2904. #
  2905. #$version = $dbh->func(18, GetInfo);
  2906. $version="FrontBase 3.3";
  2907. # $dbh->disconnect;
  2908. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  2909. return $version;
  2910. }
  2911. #
  2912. # Connection with optional disabling of logging
  2913. #
  2914. sub connect
  2915. {
  2916. my ($self)=@_;
  2917. my ($dbh);
  2918. $dbh=DBI->connect($self->{'data_source'},
  2919. $main::opt_user,
  2920. $main::opt_password,
  2921. { PrintError => 0 ,
  2922. 'fb_host'=>$main::opt_host
  2923. }) ||
  2924. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  2925. $db->{AutoCommit}=1;
  2926. # $dbh->do("SET OPTION LOG_OFF=1,UPDATE_LOG=0");
  2927. return $dbh;
  2928. }
  2929. #
  2930. # Returns a list of statements to create a table
  2931. # The field types are in ANSI SQL format.
  2932. #
  2933. # If one uses $main::opt_fast then one is allowed to use
  2934. # non standard types to get better speed.
  2935. #
  2936. sub create
  2937. {
  2938. my($self,$table_name,$fields,$index,$options) = @_;
  2939. my($query,@queries,@indexes,@keys);
  2940. $query="create table $table_name (";
  2941. foreach $field (@$fields)
  2942. {
  2943. $field =~ s/ blob/ varchar(32000)/i;
  2944. $field =~ s/ big_decimal/ float/i;
  2945. $field =~ s/ double/ float/i;
  2946. $field =~ s/ tinyint/ smallint/i;
  2947. $field =~ s/ mediumint/ int/i;
  2948. $field =~ s/ integer/ int/i;
  2949. $field =~ s/ float\(\d,\d\)/ float/i;
  2950. $field =~ s/ smallint\(\d\)/ smallint/i;
  2951. $field =~ s/ int\(\d\)/ int/i;
  2952. $query.= $field . ',';
  2953. }
  2954. foreach $ind (@$index)
  2955. {
  2956. # my @index;
  2957. if ( $ind =~ /(\bKEY\b)|(\bUNIQUE\b)/i ){
  2958. push(@keys,"ALTER TABLE $table_name ADD $ind");
  2959. }else{
  2960. my @fields = split(' ',$ind);
  2961. my $query="CREATE INDEX $fields[1] ON $table_name $fields[2]";
  2962. push(@indexes,$query);
  2963. }
  2964. }
  2965. substr($query,-1)=")"; # Remove last ',';
  2966. $query.=" $options" if (defined($options));
  2967. push(@queries,$query,@keys,@indexes);
  2968. return @queries;
  2969. }
  2970. sub insert_file {
  2971. my($self,$dbname, $file) = @_;
  2972. print "insert of an ascii file isn't supported by InterBase\n";
  2973. return 0;
  2974. }
  2975. #
  2976. # Do any conversions to the ANSI SQL query so that the database can handle it
  2977. #
  2978. sub query {
  2979. my($self,$sql) = @_;
  2980. return $sql;
  2981. }
  2982. sub drop_index {
  2983. my ($self,$table,$index) = @_;
  2984. return "DROP INDEX $index";
  2985. }
  2986. #
  2987. # Abort if the server has crashed
  2988. # return: 0 if ok
  2989. # 1 question should be retried
  2990. #
  2991. sub abort_if_fatal_error
  2992. {
  2993. return 0 if ($DBI::errstr =~ /No raw data handle/);
  2994. return 1;
  2995. }
  2996. sub small_rollback_segment
  2997. {
  2998. return 0;
  2999. }
  3000. sub reconnect_on_errors
  3001. {
  3002. return 1;
  3003. }
  3004. sub fix_for_insert
  3005. {
  3006. my ($self,$cmd) = @_;
  3007. return $cmd;
  3008. }
  3009. #############################################################################
  3010. # Configuration for SAPDB
  3011. #############################################################################
  3012. package db_sapdb;
  3013. sub new
  3014. {
  3015. my ($type,$host,$database)= @_;
  3016. my $self= {};
  3017. my %limits;
  3018. bless $self;
  3019. $self->{'cmp_name'} = "sapdb";
  3020. $self->{'data_source'} = "DBI:SAP_DB:$database";
  3021. $self->{'limits'} = \%limits;
  3022. $self->{'blob'} = "LONG"; # *
  3023. $self->{'text'} = "LONG"; # *
  3024. $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
  3025. $self->{'drop_attr'} = "";
  3026. $self->{'transactions'} = 1; # Transactions enabled *
  3027. $self->{'char_null'} = "";
  3028. $self->{'numeric_null'} = "";
  3029. $limits{'max_conditions'} = 9999; # (Actually not a limit) *
  3030. $limits{'max_columns'} = 1023; # Max number of columns in table *
  3031. $limits{'max_tables'} = 65000; # Should be big enough * unlimited actually
  3032. $limits{'max_text_size'} = 15000; # Max size with default buffers.
  3033. $limits{'query_size'} = 64*1024; # Max size with default buffers. *64 kb by default. May be set by system variable
  3034. $limits{'max_index'} = 510; # Max number of keys *
  3035. $limits{'max_index_parts'} = 16; # Max segments/key *
  3036. $limits{'max_column_name'} = 32; # max table and column name *
  3037. $limits{'join_optimizer'} = 1; # Can optimize FROM tables *
  3038. $limits{'load_data_infile'} = 0; # Has load data infile *
  3039. $limits{'lock_tables'} = 1; # Has lock tables
  3040. $limits{'functions'} = 1; # Has simple functions (+/-) *
  3041. $limits{'group_functions'} = 1; # Have group functions *
  3042. $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings *
  3043. $limits{'group_distinct_functions'}= 1; # Have count(distinct) *
  3044. $limits{'select_without_from'}= 0; # Cannot do 'select 1'; *
  3045. $limits{'multi_drop'} = 0; # Drop table cannot take many tables *
  3046. $limits{'subqueries'} = 1; # Supports sub-queries. *
  3047. $limits{'left_outer_join'} = 1; # Supports left outer joins *
  3048. $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
  3049. $limits{'having_with_alias'} = 0; # Can use aliases in HAVING *
  3050. $limits{'having_with_group'} = 1; # Can use group functions in HAVING *
  3051. $limits{'like_with_column'} = 1; # Can use column1 LIKE column2 *
  3052. $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1' *
  3053. $limits{'group_by_position'} = 0; # Cannot use 'GROUP BY 1' *
  3054. $limits{'alter_table'} = 1; # Have ALTER TABLE *
  3055. $limits{'alter_add_multi_col'}= 1; # Have ALTER TABLE t add a int,add b int; *
  3056. $limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column *
  3057. $limits{'insert_multi_value'} = 0; # INSERT ... values (1,2),(3,4) *
  3058. $limits{'group_func_extra_std'} = 0; # Does not have group function std().
  3059. $limits{'func_odbc_mod'} = 0; # Have function mod. *
  3060. $limits{'func_extra_%'} = 0; # Does not have % as alias for mod() *
  3061. $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function *
  3062. $limits{'func_extra_if'} = 0; # Does not have function if. *
  3063. $limits{'column_alias'} = 1; # Alias for fields in select statement. *
  3064. $limits{'NEG'} = 1; # Supports -id *
  3065. $limits{'func_extra_in_num'} = 0; # Has function in *
  3066. $limits{'limit'} = 0; # Does not support the limit attribute *
  3067. $limits{'working_blobs'} = 1; # If big varchar/blobs works *
  3068. $limits{'order_by_unused'} = 1; #
  3069. $limits{'working_all_fields'} = 1; #
  3070. $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
  3071. return $self;
  3072. }
  3073. #
  3074. # Get the version number of the database
  3075. #
  3076. sub version
  3077. {
  3078. my ($self)=@_;
  3079. my ($dbh,$sth,$version,@row);
  3080. $dbh=$self->connect();
  3081. $sth = $dbh->prepare("SELECT KERNEL FROM VERSIONS") or die $DBI::errstr;
  3082. $version="SAP DB (unknown)";
  3083. if ($sth->execute && (@row = $sth->fetchrow_array)
  3084. && $row[0] =~ /([\d\.]+)/)
  3085. {
  3086. $version=$row[0];
  3087. $version =~ s/KERNEL/SAP DB/i;
  3088. }
  3089. $sth->finish;
  3090. $dbh->disconnect;
  3091. $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
  3092. return $version;
  3093. }
  3094. #
  3095. # Connection with optional disabling of logging
  3096. #
  3097. sub connect
  3098. {
  3099. my ($self)=@_;
  3100. my ($dbh);
  3101. $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
  3102. $main::opt_password,{ PrintError => 0, AutoCommit => 1}) ||
  3103. die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
  3104. return $dbh;
  3105. }
  3106. #
  3107. # Returns a list of statements to create a table
  3108. # The field types are in ANSI SQL format.
  3109. #
  3110. sub create
  3111. {
  3112. my($self,$table_name,$fields,$index,$options) = @_;
  3113. my($query,@queries,$nr);
  3114. my @index;
  3115. my @keys;
  3116. $query="create table $table_name (";
  3117. foreach $field (@$fields)
  3118. {
  3119. $field =~ s/\bmediumint\b/int/i;
  3120. $field =~ s/\btinyint\b/int/i;
  3121. $field =~ s/ int\(\d\)/ int/i;
  3122. $field =~ s/BLOB/LONG/i;
  3123. $field =~ s/INTEGER\s*\(\d+\)/INTEGER/i;
  3124. $field =~ s/SMALLINT\s*\(\d+\)/SMALLINT/i;
  3125. $field =~ s/FLOAT\s*\((\d+),\d+\)/FLOAT\($1\)/i;
  3126. $field =~ s/DOUBLE/FLOAT\(38\)/i;
  3127. $field =~ s/DOUBLE\s+PRECISION/FLOAT\(38\)/i;
  3128. $query.= $field . ',';
  3129. }
  3130. $nr=0;
  3131. foreach $ind (@$index)
  3132. {
  3133. if ( $ind =~ /\bKEY\b/i ){
  3134. push(@keys,"ALTER TABLE $table_name ADD $ind");
  3135. } elsif ($ind =~ /^unique.*\(([^\(]*)\)$/i) {
  3136. $nr++;
  3137. my $query="create unique index ${table_name}_$nr on $table_name ($1)";
  3138. push(@index,$query);
  3139. }else{
  3140. my @fields = split(' ',$ind);
  3141. my $query="CREATE INDEX $fields[1] ON $table_name $fields[2]";
  3142. push(@index,$query);
  3143. }
  3144. }
  3145. substr($query,-1)=")"; # Remove last ',';
  3146. $query.=" $options" if (defined($options));
  3147. push(@queries,$query);
  3148. push(@queries,@keys);
  3149. push(@queries,@index);
  3150. return @queries;
  3151. }
  3152. sub insert_file {
  3153. my($self,$dbname, $file) = @_;
  3154. print "insert of an ascii file isn't supported by SAPDB\n";
  3155. return 0;
  3156. }
  3157. #
  3158. # Do any conversions to the ANSI SQL query so that the database can handle it
  3159. #
  3160. sub query {
  3161. my($self,$sql) = @_;
  3162. return $sql;
  3163. }
  3164. sub drop_index {
  3165. my ($self,$table,$index) = @_;
  3166. return "DROP INDEX $index";
  3167. }
  3168. #
  3169. # Abort if the server has crashed
  3170. # return: 0 if ok
  3171. # 1 question should be retried
  3172. #
  3173. sub abort_if_fatal_error
  3174. {
  3175. return 0;
  3176. }
  3177. sub small_rollback_segment
  3178. {
  3179. return 0;
  3180. }
  3181. sub reconnect_on_errors
  3182. {
  3183. return 0;
  3184. }
  3185. sub fix_for_insert
  3186. {
  3187. my ($self,$cmd) = @_;
  3188. return $cmd;
  3189. }
  3190. 1;