mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
e2765a84b1
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
995 lines
27 KiB
C
995 lines
27 KiB
C
/* Copyright (C) 2000-2006 MySQL AB
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
|
|
|
/* The hash functions used for saveing keys */
|
|
|
|
#include "heapdef.h"
|
|
#include <m_ctype.h>
|
|
|
|
|
|
|
|
/*
|
|
Find out how many rows there is in the given range
|
|
|
|
SYNOPSIS
|
|
hp_rb_records_in_range()
|
|
info HEAP handler
|
|
inx Index to use
|
|
min_key Min key. Is = 0 if no min range
|
|
max_key Max key. Is = 0 if no max range
|
|
|
|
NOTES
|
|
min_key.flag can have one of the following values:
|
|
HA_READ_KEY_EXACT Include the key in the range
|
|
HA_READ_AFTER_KEY Don't include key in range
|
|
|
|
max_key.flag can have one of the following values:
|
|
HA_READ_BEFORE_KEY Don't include key in range
|
|
HA_READ_AFTER_KEY Include all 'end_key' values in the range
|
|
|
|
RETURN
|
|
HA_POS_ERROR Something is wrong with the index tree.
|
|
0 There is no matching keys in the given range
|
|
number > 0 There is approximately 'number' matching rows in
|
|
the range.
|
|
*/
|
|
|
|
ha_rows hp_rb_records_in_range(HP_INFO *info, int inx, key_range *min_key,
|
|
key_range *max_key)
|
|
{
|
|
ha_rows start_pos, end_pos;
|
|
HP_KEYDEF *keyinfo= info->s->keydef + inx;
|
|
TREE *rb_tree = &keyinfo->rb_tree;
|
|
heap_rb_param custom_arg;
|
|
DBUG_ENTER("hp_rb_records_in_range");
|
|
|
|
info->lastinx= inx;
|
|
custom_arg.keyseg= keyinfo->seg;
|
|
custom_arg.search_flag= SEARCH_FIND | SEARCH_SAME;
|
|
if (min_key)
|
|
{
|
|
custom_arg.key_length= hp_rb_pack_key(keyinfo, (uchar*) info->recbuf,
|
|
(uchar*) min_key->key,
|
|
min_key->length);
|
|
start_pos= tree_record_pos(rb_tree, info->recbuf, min_key->flag,
|
|
&custom_arg);
|
|
}
|
|
else
|
|
{
|
|
start_pos= 0;
|
|
}
|
|
|
|
if (max_key)
|
|
{
|
|
custom_arg.key_length= hp_rb_pack_key(keyinfo, (uchar*) info->recbuf,
|
|
(uchar*) max_key->key,
|
|
max_key->length);
|
|
end_pos= tree_record_pos(rb_tree, info->recbuf, max_key->flag,
|
|
&custom_arg);
|
|
}
|
|
else
|
|
{
|
|
end_pos= rb_tree->elements_in_tree + (ha_rows)1;
|
|
}
|
|
|
|
DBUG_PRINT("info",("start_pos: %lu end_pos: %lu", (ulong) start_pos,
|
|
(ulong) end_pos));
|
|
if (start_pos == HA_POS_ERROR || end_pos == HA_POS_ERROR)
|
|
DBUG_RETURN(HA_POS_ERROR);
|
|
DBUG_RETURN(end_pos < start_pos ? (ha_rows) 0 :
|
|
(end_pos == start_pos ? (ha_rows) 1 : end_pos - start_pos));
|
|
}
|
|
|
|
|
|
/* Search after a record based on a key */
|
|
/* Sets info->current_ptr to found record */
|
|
/* next_flag: Search=0, next=1, prev =2, same =3 */
|
|
|
|
byte *hp_search(HP_INFO *info, HP_KEYDEF *keyinfo, const byte *key,
|
|
uint nextflag)
|
|
{
|
|
reg1 HASH_INFO *pos,*prev_ptr;
|
|
int flag;
|
|
uint old_nextflag;
|
|
HP_SHARE *share=info->s;
|
|
DBUG_ENTER("hp_search");
|
|
old_nextflag=nextflag;
|
|
flag=1;
|
|
prev_ptr=0;
|
|
|
|
if (share->records)
|
|
{
|
|
pos=hp_find_hash(&keyinfo->block, hp_mask(hp_hashnr(keyinfo, key),
|
|
share->blength, share->records));
|
|
do
|
|
{
|
|
if (!hp_key_cmp(keyinfo, pos->ptr_to_rec, key))
|
|
{
|
|
switch (nextflag) {
|
|
case 0: /* Search after key */
|
|
DBUG_PRINT("exit", ("found key at 0x%lx", (long) pos->ptr_to_rec));
|
|
info->current_hash_ptr=pos;
|
|
DBUG_RETURN(info->current_ptr= pos->ptr_to_rec);
|
|
case 1: /* Search next */
|
|
if (pos->ptr_to_rec == info->current_ptr)
|
|
nextflag=0;
|
|
break;
|
|
case 2: /* Search previous */
|
|
if (pos->ptr_to_rec == info->current_ptr)
|
|
{
|
|
my_errno=HA_ERR_KEY_NOT_FOUND; /* If gpos == 0 */
|
|
info->current_hash_ptr=prev_ptr;
|
|
DBUG_RETURN(info->current_ptr=prev_ptr ? prev_ptr->ptr_to_rec : 0);
|
|
}
|
|
prev_ptr=pos; /* Prev. record found */
|
|
break;
|
|
case 3: /* Search same */
|
|
if (pos->ptr_to_rec == info->current_ptr)
|
|
{
|
|
info->current_hash_ptr=pos;
|
|
DBUG_RETURN(info->current_ptr);
|
|
}
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
flag=0; /* Reset flag */
|
|
if (hp_find_hash(&keyinfo->block,
|
|
hp_mask(hp_rec_hashnr(keyinfo, pos->ptr_to_rec),
|
|
share->blength, share->records)) != pos)
|
|
break; /* Wrong link */
|
|
}
|
|
}
|
|
while ((pos=pos->next_key));
|
|
}
|
|
my_errno=HA_ERR_KEY_NOT_FOUND;
|
|
if (nextflag == 2 && ! info->current_ptr)
|
|
{
|
|
/* Do a previous from end */
|
|
info->current_hash_ptr=prev_ptr;
|
|
DBUG_RETURN(info->current_ptr=prev_ptr ? prev_ptr->ptr_to_rec : 0);
|
|
}
|
|
|
|
if (old_nextflag && nextflag)
|
|
my_errno=HA_ERR_RECORD_CHANGED; /* Didn't find old record */
|
|
DBUG_PRINT("exit",("Error: %d",my_errno));
|
|
info->current_hash_ptr=0;
|
|
DBUG_RETURN((info->current_ptr= 0));
|
|
}
|
|
|
|
|
|
/*
|
|
Search next after last read; Assumes that the table hasn't changed
|
|
since last read !
|
|
*/
|
|
|
|
byte *hp_search_next(HP_INFO *info, HP_KEYDEF *keyinfo, const byte *key,
|
|
HASH_INFO *pos)
|
|
{
|
|
DBUG_ENTER("hp_search_next");
|
|
|
|
while ((pos= pos->next_key))
|
|
{
|
|
if (! hp_key_cmp(keyinfo, pos->ptr_to_rec, key))
|
|
{
|
|
info->current_hash_ptr=pos;
|
|
DBUG_RETURN (info->current_ptr= pos->ptr_to_rec);
|
|
}
|
|
}
|
|
my_errno=HA_ERR_KEY_NOT_FOUND;
|
|
DBUG_PRINT("exit",("Error: %d",my_errno));
|
|
info->current_hash_ptr=0;
|
|
DBUG_RETURN ((info->current_ptr= 0));
|
|
}
|
|
|
|
|
|
/*
|
|
Calculate position number for hash value.
|
|
SYNOPSIS
|
|
hp_mask()
|
|
hashnr Hash value
|
|
buffmax Value such that
|
|
2^(n-1) < maxlength <= 2^n = buffmax
|
|
maxlength
|
|
|
|
RETURN
|
|
Array index, in [0..maxlength)
|
|
*/
|
|
|
|
ulong hp_mask(ulong hashnr, ulong buffmax, ulong maxlength)
|
|
{
|
|
if ((hashnr & (buffmax-1)) < maxlength) return (hashnr & (buffmax-1));
|
|
return (hashnr & ((buffmax >> 1) -1));
|
|
}
|
|
|
|
|
|
/*
|
|
Change
|
|
next_link -> ... -> X -> pos
|
|
to
|
|
next_link -> ... -> X -> newlink
|
|
*/
|
|
|
|
void hp_movelink(HASH_INFO *pos, HASH_INFO *next_link, HASH_INFO *newlink)
|
|
{
|
|
HASH_INFO *old_link;
|
|
do
|
|
{
|
|
old_link=next_link;
|
|
}
|
|
while ((next_link=next_link->next_key) != pos);
|
|
old_link->next_key=newlink;
|
|
return;
|
|
}
|
|
|
|
#ifndef NEW_HASH_FUNCTION
|
|
|
|
/* Calc hashvalue for a key */
|
|
|
|
ulong hp_hashnr(register HP_KEYDEF *keydef, register const byte *key)
|
|
{
|
|
/*register*/
|
|
ulong nr=1, nr2=4;
|
|
HA_KEYSEG *seg,*endseg;
|
|
|
|
for (seg=keydef->seg,endseg=seg+keydef->keysegs ; seg < endseg ; seg++)
|
|
{
|
|
uchar *pos=(uchar*) key;
|
|
key+=seg->length;
|
|
if (seg->null_bit)
|
|
{
|
|
key++; /* Skip null byte */
|
|
if (*pos) /* Found null */
|
|
{
|
|
nr^= (nr << 1) | 1;
|
|
/* Add key pack length (2) to key for VARCHAR segments */
|
|
if (seg->type == HA_KEYTYPE_VARTEXT1)
|
|
key+= 2;
|
|
continue;
|
|
}
|
|
pos++;
|
|
}
|
|
if (seg->type == HA_KEYTYPE_TEXT)
|
|
{
|
|
CHARSET_INFO *cs= seg->charset;
|
|
uint length= seg->length;
|
|
if (cs->mbmaxlen > 1)
|
|
{
|
|
uint char_length;
|
|
char_length= my_charpos(cs, pos, pos + length, length/cs->mbmaxlen);
|
|
set_if_smaller(length, char_length);
|
|
}
|
|
cs->coll->hash_sort(cs, pos, length, &nr, &nr2);
|
|
}
|
|
else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */
|
|
{
|
|
CHARSET_INFO *cs= seg->charset;
|
|
uint pack_length= 2; /* Key packing is constant */
|
|
uint length= uint2korr(pos);
|
|
if (cs->mbmaxlen > 1)
|
|
{
|
|
uint char_length;
|
|
char_length= my_charpos(cs, pos +pack_length,
|
|
pos +pack_length + length,
|
|
seg->length/cs->mbmaxlen);
|
|
set_if_smaller(length, char_length);
|
|
}
|
|
cs->coll->hash_sort(cs, pos+pack_length, length, &nr, &nr2);
|
|
key+= pack_length;
|
|
}
|
|
else
|
|
{
|
|
for (; pos < (uchar*) key ; pos++)
|
|
{
|
|
nr^=(ulong) ((((uint) nr & 63)+nr2)*((uint) *pos)) + (nr << 8);
|
|
nr2+=3;
|
|
}
|
|
}
|
|
}
|
|
DBUG_PRINT("exit", ("hash: 0x%lx", nr));
|
|
return((ulong) nr);
|
|
}
|
|
|
|
/* Calc hashvalue for a key in a record */
|
|
|
|
ulong hp_rec_hashnr(register HP_KEYDEF *keydef, register const byte *rec)
|
|
{
|
|
ulong nr=1, nr2=4;
|
|
HA_KEYSEG *seg,*endseg;
|
|
|
|
for (seg=keydef->seg,endseg=seg+keydef->keysegs ; seg < endseg ; seg++)
|
|
{
|
|
uchar *pos=(uchar*) rec+seg->start,*end=pos+seg->length;
|
|
if (seg->null_bit)
|
|
{
|
|
if (rec[seg->null_pos] & seg->null_bit)
|
|
{
|
|
nr^= (nr << 1) | 1;
|
|
continue;
|
|
}
|
|
}
|
|
if (seg->type == HA_KEYTYPE_TEXT)
|
|
{
|
|
CHARSET_INFO *cs= seg->charset;
|
|
uint char_length= seg->length;
|
|
if (cs->mbmaxlen > 1)
|
|
{
|
|
char_length= my_charpos(cs, pos, pos + char_length,
|
|
char_length / cs->mbmaxlen);
|
|
set_if_smaller(char_length, seg->length); /* QQ: ok to remove? */
|
|
}
|
|
cs->coll->hash_sort(cs, pos, char_length, &nr, &nr2);
|
|
}
|
|
else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */
|
|
{
|
|
CHARSET_INFO *cs= seg->charset;
|
|
uint pack_length= seg->bit_start;
|
|
uint length= (pack_length == 1 ? (uint) *(uchar*) pos : uint2korr(pos));
|
|
if (cs->mbmaxlen > 1)
|
|
{
|
|
uint char_length;
|
|
char_length= my_charpos(cs, pos + pack_length,
|
|
pos + pack_length + length,
|
|
seg->length/cs->mbmaxlen);
|
|
set_if_smaller(length, char_length);
|
|
}
|
|
cs->coll->hash_sort(cs, pos+pack_length, length, &nr, &nr2);
|
|
}
|
|
else
|
|
{
|
|
for (; pos < end ; pos++)
|
|
{
|
|
nr^=(ulong) ((((uint) nr & 63)+nr2)*((uint) *pos))+ (nr << 8);
|
|
nr2+=3;
|
|
}
|
|
}
|
|
}
|
|
DBUG_PRINT("exit", ("hash: 0x%lx", nr));
|
|
return(nr);
|
|
}
|
|
|
|
#else
|
|
|
|
/*
|
|
* Fowler/Noll/Vo hash
|
|
*
|
|
* The basis of the hash algorithm was taken from an idea sent by email to the
|
|
* IEEE Posix P1003.2 mailing list from Phong Vo (kpv@research.att.com) and
|
|
* Glenn Fowler (gsf@research.att.com). Landon Curt Noll (chongo@toad.com)
|
|
* later improved on their algorithm.
|
|
*
|
|
* The magic is in the interesting relationship between the special prime
|
|
* 16777619 (2^24 + 403) and 2^32 and 2^8.
|
|
*
|
|
* This hash produces the fewest collisions of any function that we've seen so
|
|
* far, and works well on both numbers and strings.
|
|
*/
|
|
|
|
ulong hp_hashnr(register HP_KEYDEF *keydef, register const byte *key)
|
|
{
|
|
register ulong nr=0;
|
|
HA_KEYSEG *seg,*endseg;
|
|
|
|
for (seg=keydef->seg,endseg=seg+keydef->keysegs ; seg < endseg ; seg++)
|
|
{
|
|
uchar *pos=(uchar*) key;
|
|
key+=seg->length;
|
|
if (seg->null_bit)
|
|
{
|
|
key++;
|
|
if (*pos)
|
|
{
|
|
nr^= (nr << 1) | 1;
|
|
/* Add key pack length (2) to key for VARCHAR segments */
|
|
if (seg->type == HA_KEYTYPE_VARTEXT1)
|
|
key+= 2;
|
|
continue;
|
|
}
|
|
pos++;
|
|
}
|
|
if (seg->type == HA_KEYTYPE_TEXT)
|
|
{
|
|
seg->charset->hash_sort(seg->charset,pos,((uchar*)key)-pos,&nr,NULL);
|
|
}
|
|
else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */
|
|
{
|
|
uint pack_length= 2; /* Key packing is constant */
|
|
uint length= uint2korr(pos);
|
|
seg->charset->hash_sort(seg->charset, pos+pack_length, length, &nr,
|
|
NULL);
|
|
key+= pack_length;
|
|
}
|
|
else
|
|
{
|
|
for ( ; pos < (uchar*) key ; pos++)
|
|
{
|
|
nr *=16777619;
|
|
nr ^=(uint) *pos;
|
|
}
|
|
}
|
|
}
|
|
DBUG_PRINT("exit", ("hash: 0x%lx", nr));
|
|
return(nr);
|
|
}
|
|
|
|
/* Calc hashvalue for a key in a record */
|
|
|
|
ulong hp_rec_hashnr(register HP_KEYDEF *keydef, register const byte *rec)
|
|
{
|
|
register ulong nr=0;
|
|
HA_KEYSEG *seg,*endseg;
|
|
|
|
for (seg=keydef->seg,endseg=seg+keydef->keysegs ; seg < endseg ; seg++)
|
|
{
|
|
uchar *pos=(uchar*) rec+seg->start;
|
|
if (seg->null_bit)
|
|
{
|
|
if (rec[seg->null_pos] & seg->null_bit)
|
|
{
|
|
nr^= (nr << 1) | 1;
|
|
continue;
|
|
}
|
|
}
|
|
if (seg->type == HA_KEYTYPE_TEXT)
|
|
{
|
|
seg->charset->hash_sort(seg->charset,pos,((uchar*)key)-pos,&nr,NULL);
|
|
}
|
|
else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */
|
|
{
|
|
uint pack_length= seg->bit_start;
|
|
uint length= (pack_length == 1 ? (uint) *(uchar*) pos : uint2korr(pos));
|
|
seg->charset->hash_sort(seg->charset, pos+pack_length,
|
|
length, &nr, NULL);
|
|
}
|
|
else
|
|
{
|
|
uchar *end= pos+seg->length;
|
|
for ( ; pos < end ; pos++)
|
|
{
|
|
nr *=16777619;
|
|
nr ^=(uint) *pos;
|
|
}
|
|
}
|
|
}
|
|
DBUG_PRINT("exit", ("hash: 0x%lx", nr));
|
|
return(nr);
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
Compare keys for two records. Returns 0 if they are identical
|
|
|
|
SYNOPSIS
|
|
hp_rec_key_cmp()
|
|
keydef Key definition
|
|
rec1 Record to compare
|
|
rec2 Other record to compare
|
|
diff_if_only_endspace_difference
|
|
Different number of end space is significant
|
|
|
|
NOTES
|
|
diff_if_only_endspace_difference is used to allow us to insert
|
|
'a' and 'a ' when there is an an unique key.
|
|
|
|
RETURN
|
|
0 Key is identical
|
|
<> 0 Key differes
|
|
*/
|
|
|
|
int hp_rec_key_cmp(HP_KEYDEF *keydef, const byte *rec1, const byte *rec2,
|
|
my_bool diff_if_only_endspace_difference)
|
|
{
|
|
HA_KEYSEG *seg,*endseg;
|
|
|
|
for (seg=keydef->seg,endseg=seg+keydef->keysegs ; seg < endseg ; seg++)
|
|
{
|
|
if (seg->null_bit)
|
|
{
|
|
if ((rec1[seg->null_pos] & seg->null_bit) !=
|
|
(rec2[seg->null_pos] & seg->null_bit))
|
|
return 1;
|
|
if (rec1[seg->null_pos] & seg->null_bit)
|
|
continue;
|
|
}
|
|
if (seg->type == HA_KEYTYPE_TEXT)
|
|
{
|
|
CHARSET_INFO *cs= seg->charset;
|
|
uint char_length1;
|
|
uint char_length2;
|
|
uchar *pos1= (uchar*)rec1 + seg->start;
|
|
uchar *pos2= (uchar*)rec2 + seg->start;
|
|
if (cs->mbmaxlen > 1)
|
|
{
|
|
uint char_length= seg->length / cs->mbmaxlen;
|
|
char_length1= my_charpos(cs, pos1, pos1 + seg->length, char_length);
|
|
set_if_smaller(char_length1, seg->length);
|
|
char_length2= my_charpos(cs, pos2, pos2 + seg->length, char_length);
|
|
set_if_smaller(char_length2, seg->length);
|
|
}
|
|
else
|
|
{
|
|
char_length1= char_length2= seg->length;
|
|
}
|
|
if (seg->charset->coll->strnncollsp(seg->charset,
|
|
pos1,char_length1,
|
|
pos2,char_length2, 0))
|
|
return 1;
|
|
}
|
|
else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */
|
|
{
|
|
uchar *pos1= (uchar*) rec1 + seg->start;
|
|
uchar *pos2= (uchar*) rec2 + seg->start;
|
|
uint char_length1, char_length2;
|
|
uint pack_length= seg->bit_start;
|
|
CHARSET_INFO *cs= seg->charset;
|
|
if (pack_length == 1)
|
|
{
|
|
char_length1= (uint) *(uchar*) pos1++;
|
|
char_length2= (uint) *(uchar*) pos2++;
|
|
}
|
|
else
|
|
{
|
|
char_length1= uint2korr(pos1);
|
|
char_length2= uint2korr(pos2);
|
|
pos1+= 2;
|
|
pos2+= 2;
|
|
}
|
|
if (cs->mbmaxlen > 1)
|
|
{
|
|
uint safe_length1= char_length1;
|
|
uint safe_length2= char_length2;
|
|
uint char_length= seg->length / cs->mbmaxlen;
|
|
char_length1= my_charpos(cs, pos1, pos1 + char_length1, char_length);
|
|
set_if_smaller(char_length1, safe_length1);
|
|
char_length2= my_charpos(cs, pos2, pos2 + char_length2, char_length);
|
|
set_if_smaller(char_length2, safe_length2);
|
|
}
|
|
|
|
if (cs->coll->strnncollsp(seg->charset,
|
|
pos1, char_length1,
|
|
pos2, char_length2,
|
|
seg->flag & HA_END_SPACE_ARE_EQUAL ?
|
|
0 : diff_if_only_endspace_difference))
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
if (bcmp(rec1+seg->start,rec2+seg->start,seg->length))
|
|
return 1;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/* Compare a key in a record to a whole key */
|
|
|
|
int hp_key_cmp(HP_KEYDEF *keydef, const byte *rec, const byte *key)
|
|
{
|
|
HA_KEYSEG *seg,*endseg;
|
|
|
|
for (seg=keydef->seg,endseg=seg+keydef->keysegs ;
|
|
seg < endseg ;
|
|
key+= (seg++)->length)
|
|
{
|
|
if (seg->null_bit)
|
|
{
|
|
int found_null=test(rec[seg->null_pos] & seg->null_bit);
|
|
if (found_null != (int) *key++)
|
|
return 1;
|
|
if (found_null)
|
|
{
|
|
/* Add key pack length (2) to key for VARCHAR segments */
|
|
if (seg->type == HA_KEYTYPE_VARTEXT1)
|
|
key+= 2;
|
|
continue;
|
|
}
|
|
}
|
|
if (seg->type == HA_KEYTYPE_TEXT)
|
|
{
|
|
CHARSET_INFO *cs= seg->charset;
|
|
uint char_length_key;
|
|
uint char_length_rec;
|
|
uchar *pos= (uchar*) rec + seg->start;
|
|
if (cs->mbmaxlen > 1)
|
|
{
|
|
uint char_length= seg->length / cs->mbmaxlen;
|
|
char_length_key= my_charpos(cs, key, key + seg->length, char_length);
|
|
set_if_smaller(char_length_key, seg->length);
|
|
char_length_rec= my_charpos(cs, pos, pos + seg->length, char_length);
|
|
set_if_smaller(char_length_rec, seg->length);
|
|
}
|
|
else
|
|
{
|
|
char_length_key= seg->length;
|
|
char_length_rec= seg->length;
|
|
}
|
|
|
|
if (seg->charset->coll->strnncollsp(seg->charset,
|
|
(uchar*) pos, char_length_rec,
|
|
(uchar*) key, char_length_key, 0))
|
|
return 1;
|
|
}
|
|
else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */
|
|
{
|
|
uchar *pos= (uchar*) rec + seg->start;
|
|
CHARSET_INFO *cs= seg->charset;
|
|
uint pack_length= seg->bit_start;
|
|
uint char_length_rec= (pack_length == 1 ? (uint) *(uchar*) pos :
|
|
uint2korr(pos));
|
|
/* Key segments are always packed with 2 bytes */
|
|
uint char_length_key= uint2korr(key);
|
|
pos+= pack_length;
|
|
key+= 2; /* skip key pack length */
|
|
if (cs->mbmaxlen > 1)
|
|
{
|
|
uint char_length1, char_length2;
|
|
char_length1= char_length2= seg->length / cs->mbmaxlen;
|
|
char_length1= my_charpos(cs, key, key + char_length_key, char_length1);
|
|
set_if_smaller(char_length_key, char_length1);
|
|
char_length2= my_charpos(cs, pos, pos + char_length_rec, char_length2);
|
|
set_if_smaller(char_length_rec, char_length2);
|
|
}
|
|
|
|
if (cs->coll->strnncollsp(seg->charset,
|
|
(uchar*) pos, char_length_rec,
|
|
(uchar*) key, char_length_key, 0))
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
if (bcmp(rec+seg->start,key,seg->length))
|
|
return 1;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
/* Copy a key from a record to a keybuffer */
|
|
|
|
void hp_make_key(HP_KEYDEF *keydef, byte *key, const byte *rec)
|
|
{
|
|
HA_KEYSEG *seg,*endseg;
|
|
|
|
for (seg=keydef->seg,endseg=seg+keydef->keysegs ; seg < endseg ; seg++)
|
|
{
|
|
CHARSET_INFO *cs= seg->charset;
|
|
uint char_length= seg->length;
|
|
uchar *pos= (uchar*) rec + seg->start;
|
|
if (seg->null_bit)
|
|
*key++= test(rec[seg->null_pos] & seg->null_bit);
|
|
if (cs->mbmaxlen > 1)
|
|
{
|
|
char_length= my_charpos(cs, pos, pos + seg->length,
|
|
char_length / cs->mbmaxlen);
|
|
set_if_smaller(char_length, seg->length); /* QQ: ok to remove? */
|
|
}
|
|
if (seg->type == HA_KEYTYPE_VARTEXT1)
|
|
char_length+= seg->bit_start; /* Copy also length */
|
|
memcpy(key,rec+seg->start,(size_t) char_length);
|
|
key+= char_length;
|
|
}
|
|
}
|
|
|
|
#define FIX_LENGTH(cs, pos, length, char_length) \
|
|
do { \
|
|
if (length > char_length) \
|
|
char_length= my_charpos(cs, pos, pos+length, char_length); \
|
|
set_if_smaller(char_length,length); \
|
|
} while(0)
|
|
|
|
|
|
uint hp_rb_make_key(HP_KEYDEF *keydef, byte *key,
|
|
const byte *rec, byte *recpos)
|
|
{
|
|
byte *start_key= key;
|
|
HA_KEYSEG *seg, *endseg;
|
|
|
|
for (seg= keydef->seg, endseg= seg + keydef->keysegs; seg < endseg; seg++)
|
|
{
|
|
uint char_length;
|
|
if (seg->null_bit)
|
|
{
|
|
if (!(*key++= 1 - test(rec[seg->null_pos] & seg->null_bit)))
|
|
continue;
|
|
}
|
|
if (seg->flag & HA_SWAP_KEY)
|
|
{
|
|
uint length= seg->length;
|
|
byte *pos= (byte*) rec + seg->start;
|
|
|
|
#ifdef HAVE_ISNAN
|
|
if (seg->type == HA_KEYTYPE_FLOAT)
|
|
{
|
|
float nr;
|
|
float4get(nr, pos);
|
|
if (isnan(nr))
|
|
{
|
|
/* Replace NAN with zero */
|
|
bzero(key, length);
|
|
key+= length;
|
|
continue;
|
|
}
|
|
}
|
|
else if (seg->type == HA_KEYTYPE_DOUBLE)
|
|
{
|
|
double nr;
|
|
float8get(nr, pos);
|
|
if (isnan(nr))
|
|
{
|
|
bzero(key, length);
|
|
key+= length;
|
|
continue;
|
|
}
|
|
}
|
|
#endif
|
|
pos+= length;
|
|
while (length--)
|
|
{
|
|
*key++= *--pos;
|
|
}
|
|
continue;
|
|
}
|
|
|
|
if (seg->flag & HA_VAR_LENGTH_PART)
|
|
{
|
|
uchar *pos= (uchar*) rec + seg->start;
|
|
uint length= seg->length;
|
|
uint pack_length= seg->bit_start;
|
|
uint tmp_length= (pack_length == 1 ? (uint) *(uchar*) pos :
|
|
uint2korr(pos));
|
|
CHARSET_INFO *cs= seg->charset;
|
|
char_length= length/cs->mbmaxlen;
|
|
|
|
pos+= pack_length; /* Skip VARCHAR length */
|
|
set_if_smaller(length,tmp_length);
|
|
FIX_LENGTH(cs, pos, length, char_length);
|
|
store_key_length_inc(key,char_length);
|
|
memcpy((byte*) key,(byte*) pos,(size_t) char_length);
|
|
key+= char_length;
|
|
continue;
|
|
}
|
|
|
|
char_length= seg->length;
|
|
if (seg->charset->mbmaxlen > 1)
|
|
{
|
|
char_length= my_charpos(seg->charset,
|
|
rec + seg->start, rec + seg->start + char_length,
|
|
char_length / seg->charset->mbmaxlen);
|
|
set_if_smaller(char_length, seg->length); /* QQ: ok to remove? */
|
|
if (char_length < seg->length)
|
|
seg->charset->cset->fill(seg->charset, (char*) key + char_length,
|
|
seg->length - char_length, ' ');
|
|
}
|
|
memcpy(key, rec + seg->start, (size_t) char_length);
|
|
key+= seg->length;
|
|
}
|
|
memcpy(key, &recpos, sizeof(byte*));
|
|
return (uint) (key - start_key);
|
|
}
|
|
|
|
|
|
uint hp_rb_pack_key(HP_KEYDEF *keydef, uchar *key, const uchar *old,
|
|
uint k_len)
|
|
{
|
|
HA_KEYSEG *seg, *endseg;
|
|
uchar *start_key= key;
|
|
|
|
for (seg= keydef->seg, endseg= seg + keydef->keysegs;
|
|
seg < endseg && (int) k_len > 0; old+= seg->length, seg++)
|
|
{
|
|
uint char_length;
|
|
if (seg->null_bit)
|
|
{
|
|
k_len--;
|
|
if (!(*key++= (char) 1 - *old++))
|
|
{
|
|
k_len-= seg->length;
|
|
continue;
|
|
}
|
|
}
|
|
if (seg->flag & HA_SWAP_KEY)
|
|
{
|
|
uint length= seg->length;
|
|
byte *pos= (byte*) old + length;
|
|
|
|
k_len-= length;
|
|
while (length--)
|
|
{
|
|
*key++= *--pos;
|
|
}
|
|
continue;
|
|
}
|
|
if (seg->flag & (HA_VAR_LENGTH_PART | HA_BLOB_PART))
|
|
{
|
|
/* Length of key-part used with heap_rkey() always 2 */
|
|
uint tmp_length=uint2korr(old);
|
|
uint length= seg->length;
|
|
CHARSET_INFO *cs= seg->charset;
|
|
char_length= length/cs->mbmaxlen;
|
|
|
|
k_len-= 2+length;
|
|
old+= 2;
|
|
set_if_smaller(length,tmp_length); /* Safety */
|
|
FIX_LENGTH(cs, old, length, char_length);
|
|
store_key_length_inc(key,char_length);
|
|
memcpy((byte*) key, old,(size_t) char_length);
|
|
key+= char_length;
|
|
continue;
|
|
}
|
|
char_length= seg->length;
|
|
if (seg->charset->mbmaxlen > 1)
|
|
{
|
|
char_length= my_charpos(seg->charset, old, old+char_length,
|
|
char_length / seg->charset->mbmaxlen);
|
|
set_if_smaller(char_length, seg->length); /* QQ: ok to remove? */
|
|
if (char_length < seg->length)
|
|
seg->charset->cset->fill(seg->charset, (char*) key + char_length,
|
|
seg->length - char_length, ' ');
|
|
}
|
|
memcpy(key, old, (size_t) char_length);
|
|
key+= seg->length;
|
|
k_len-= seg->length;
|
|
}
|
|
return (uint) (key - start_key);
|
|
}
|
|
|
|
|
|
uint hp_rb_key_length(HP_KEYDEF *keydef,
|
|
const byte *key __attribute__((unused)))
|
|
{
|
|
return keydef->length;
|
|
}
|
|
|
|
|
|
uint hp_rb_null_key_length(HP_KEYDEF *keydef, const byte *key)
|
|
{
|
|
const byte *start_key= key;
|
|
HA_KEYSEG *seg, *endseg;
|
|
|
|
for (seg= keydef->seg, endseg= seg + keydef->keysegs; seg < endseg; seg++)
|
|
{
|
|
if (seg->null_bit && !*key++)
|
|
continue;
|
|
key+= seg->length;
|
|
}
|
|
return (uint) (key - start_key);
|
|
}
|
|
|
|
|
|
uint hp_rb_var_key_length(HP_KEYDEF *keydef, const byte *key)
|
|
{
|
|
const byte *start_key= key;
|
|
HA_KEYSEG *seg, *endseg;
|
|
|
|
for (seg= keydef->seg, endseg= seg + keydef->keysegs; seg < endseg; seg++)
|
|
{
|
|
uint length= seg->length;
|
|
if (seg->null_bit && !*key++)
|
|
continue;
|
|
if (seg->flag & (HA_VAR_LENGTH_PART | HA_BLOB_PART))
|
|
{
|
|
get_key_length(length, key);
|
|
}
|
|
key+= length;
|
|
}
|
|
return (uint) (key - start_key);
|
|
}
|
|
|
|
|
|
/*
|
|
Test if any of the key parts are NULL.
|
|
Return:
|
|
1 if any of the key parts was NULL
|
|
0 otherwise
|
|
*/
|
|
|
|
my_bool hp_if_null_in_key(HP_KEYDEF *keydef, const byte *record)
|
|
{
|
|
HA_KEYSEG *seg,*endseg;
|
|
for (seg=keydef->seg,endseg=seg+keydef->keysegs ; seg < endseg ; seg++)
|
|
{
|
|
if (seg->null_bit && (record[seg->null_pos] & seg->null_bit))
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
/*
|
|
Update auto_increment info
|
|
|
|
SYNOPSIS
|
|
update_auto_increment()
|
|
info MyISAM handler
|
|
record Row to update
|
|
|
|
IMPLEMENTATION
|
|
Only replace the auto_increment value if it is higher than the previous
|
|
one. For signed columns we don't update the auto increment value if it's
|
|
less than zero.
|
|
*/
|
|
|
|
void heap_update_auto_increment(HP_INFO *info, const byte *record)
|
|
{
|
|
ulonglong value= 0; /* Store unsigned values here */
|
|
longlong s_value= 0; /* Store signed values here */
|
|
|
|
HA_KEYSEG *keyseg= info->s->keydef[info->s->auto_key - 1].seg;
|
|
const uchar *key= (uchar*) record + keyseg->start;
|
|
|
|
switch (info->s->auto_key_type) {
|
|
case HA_KEYTYPE_INT8:
|
|
s_value= (longlong) *(char*)key;
|
|
break;
|
|
case HA_KEYTYPE_BINARY:
|
|
value=(ulonglong) *(uchar*) key;
|
|
break;
|
|
case HA_KEYTYPE_SHORT_INT:
|
|
s_value= (longlong) sint2korr(key);
|
|
break;
|
|
case HA_KEYTYPE_USHORT_INT:
|
|
value=(ulonglong) uint2korr(key);
|
|
break;
|
|
case HA_KEYTYPE_LONG_INT:
|
|
s_value= (longlong) sint4korr(key);
|
|
break;
|
|
case HA_KEYTYPE_ULONG_INT:
|
|
value=(ulonglong) uint4korr(key);
|
|
break;
|
|
case HA_KEYTYPE_INT24:
|
|
s_value= (longlong) sint3korr(key);
|
|
break;
|
|
case HA_KEYTYPE_UINT24:
|
|
value=(ulonglong) uint3korr(key);
|
|
break;
|
|
case HA_KEYTYPE_FLOAT: /* This shouldn't be used */
|
|
{
|
|
float f_1;
|
|
float4get(f_1,key);
|
|
/* Ignore negative values */
|
|
value = (f_1 < (float) 0.0) ? 0 : (ulonglong) f_1;
|
|
break;
|
|
}
|
|
case HA_KEYTYPE_DOUBLE: /* This shouldn't be used */
|
|
{
|
|
double f_1;
|
|
float8get(f_1,key);
|
|
/* Ignore negative values */
|
|
value = (f_1 < 0.0) ? 0 : (ulonglong) f_1;
|
|
break;
|
|
}
|
|
case HA_KEYTYPE_LONGLONG:
|
|
s_value= sint8korr(key);
|
|
break;
|
|
case HA_KEYTYPE_ULONGLONG:
|
|
value= uint8korr(key);
|
|
break;
|
|
default:
|
|
DBUG_ASSERT(0);
|
|
value=0; /* Error */
|
|
break;
|
|
}
|
|
|
|
/*
|
|
The following code works becasue if s_value < 0 then value is 0
|
|
and if s_value == 0 then value will contain either s_value or the
|
|
correct value.
|
|
*/
|
|
set_if_bigger(info->s->auto_increment,
|
|
(s_value > 0) ? (ulonglong) s_value : value);
|
|
}
|