mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +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
723 lines
23 KiB
C++
723 lines
23 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 */
|
|
|
|
|
|
/* classes to use when handling where clause */
|
|
|
|
#ifndef _opt_range_h
|
|
#define _opt_range_h
|
|
|
|
#ifdef USE_PRAGMA_INTERFACE
|
|
#pragma interface /* gcc class implementation */
|
|
#endif
|
|
|
|
typedef struct st_key_part {
|
|
uint16 key,part, store_length, length;
|
|
uint8 null_bit, flag;
|
|
Field *field;
|
|
Field::imagetype image_type;
|
|
} KEY_PART;
|
|
|
|
|
|
class QUICK_RANGE :public Sql_alloc {
|
|
public:
|
|
char *min_key,*max_key;
|
|
uint16 min_length,max_length,flag;
|
|
#ifdef HAVE_purify
|
|
uint16 dummy; /* Avoid warnings on 'flag' */
|
|
#endif
|
|
QUICK_RANGE(); /* Full range */
|
|
QUICK_RANGE(const char *min_key_arg,uint min_length_arg,
|
|
const char *max_key_arg,uint max_length_arg,
|
|
uint flag_arg)
|
|
: min_key((char*) sql_memdup(min_key_arg,min_length_arg+1)),
|
|
max_key((char*) sql_memdup(max_key_arg,max_length_arg+1)),
|
|
min_length((uint16) min_length_arg),
|
|
max_length((uint16) max_length_arg),
|
|
flag((uint16) flag_arg)
|
|
{
|
|
#ifdef HAVE_purify
|
|
dummy=0;
|
|
#endif
|
|
}
|
|
};
|
|
|
|
|
|
/*
|
|
Quick select interface.
|
|
This class is a parent for all QUICK_*_SELECT and FT_SELECT classes.
|
|
|
|
The usage scenario is as follows:
|
|
1. Create quick select
|
|
quick= new QUICK_XXX_SELECT(...);
|
|
|
|
2. Perform lightweight initialization. This can be done in 2 ways:
|
|
2.a: Regular initialization
|
|
if (quick->init())
|
|
{
|
|
//the only valid action after failed init() call is delete
|
|
delete quick;
|
|
}
|
|
2.b: Special initialization for quick selects merged by QUICK_ROR_*_SELECT
|
|
if (quick->init_ror_merged_scan())
|
|
delete quick;
|
|
|
|
3. Perform zero, one, or more scans.
|
|
while (...)
|
|
{
|
|
// initialize quick select for scan. This may allocate
|
|
// buffers and/or prefetch rows.
|
|
if (quick->reset())
|
|
{
|
|
//the only valid action after failed reset() call is delete
|
|
delete quick;
|
|
//abort query
|
|
}
|
|
|
|
// perform the scan
|
|
do
|
|
{
|
|
res= quick->get_next();
|
|
} while (res && ...)
|
|
}
|
|
|
|
4. Delete the select:
|
|
delete quick;
|
|
|
|
*/
|
|
|
|
class QUICK_SELECT_I
|
|
{
|
|
public:
|
|
bool sorted;
|
|
ha_rows records; /* estimate of # of records to be retrieved */
|
|
double read_time; /* time to perform this retrieval */
|
|
TABLE *head;
|
|
/*
|
|
Index this quick select uses, or MAX_KEY for quick selects
|
|
that use several indexes
|
|
*/
|
|
uint index;
|
|
|
|
/*
|
|
Total length of first used_key_parts parts of the key.
|
|
Applicable if index!= MAX_KEY.
|
|
*/
|
|
uint max_used_key_length;
|
|
|
|
/*
|
|
Max. number of (first) key parts this quick select uses for retrieval.
|
|
eg. for "(key1p1=c1 AND key1p2=c2) OR key1p1=c2" used_key_parts == 2.
|
|
Applicable if index!= MAX_KEY.
|
|
*/
|
|
uint used_key_parts;
|
|
|
|
QUICK_SELECT_I();
|
|
virtual ~QUICK_SELECT_I(){};
|
|
|
|
/*
|
|
Do post-constructor initialization.
|
|
SYNOPSIS
|
|
init()
|
|
|
|
init() performs initializations that should have been in constructor if
|
|
it was possible to return errors from constructors. The join optimizer may
|
|
create and then delete quick selects without retrieving any rows so init()
|
|
must not contain any IO or CPU intensive code.
|
|
|
|
If init() call fails the only valid action is to delete this quick select,
|
|
reset() and get_next() must not be called.
|
|
|
|
RETURN
|
|
0 OK
|
|
other Error code
|
|
*/
|
|
virtual int init() = 0;
|
|
|
|
/*
|
|
Initialize quick select for row retrieval.
|
|
SYNOPSIS
|
|
reset()
|
|
|
|
reset() should be called when it is certain that row retrieval will be
|
|
necessary. This call may do heavyweight initialization like buffering first
|
|
N records etc. If reset() call fails get_next() must not be called.
|
|
Note that reset() may be called several times if
|
|
* the quick select is executed in a subselect
|
|
* a JOIN buffer is used
|
|
|
|
RETURN
|
|
0 OK
|
|
other Error code
|
|
*/
|
|
virtual int reset(void) = 0;
|
|
|
|
virtual int get_next() = 0; /* get next record to retrieve */
|
|
|
|
/* Range end should be called when we have looped over the whole index */
|
|
virtual void range_end() {}
|
|
|
|
virtual bool reverse_sorted() = 0;
|
|
virtual bool unique_key_range() { return false; }
|
|
|
|
enum {
|
|
QS_TYPE_RANGE = 0,
|
|
QS_TYPE_INDEX_MERGE = 1,
|
|
QS_TYPE_RANGE_DESC = 2,
|
|
QS_TYPE_FULLTEXT = 3,
|
|
QS_TYPE_ROR_INTERSECT = 4,
|
|
QS_TYPE_ROR_UNION = 5,
|
|
QS_TYPE_GROUP_MIN_MAX = 6
|
|
};
|
|
|
|
/* Get type of this quick select - one of the QS_TYPE_* values */
|
|
virtual int get_type() = 0;
|
|
|
|
/*
|
|
Initialize this quick select as a merged scan inside a ROR-union or a ROR-
|
|
intersection scan. The caller must not additionally call init() if this
|
|
function is called.
|
|
SYNOPSIS
|
|
init_ror_merged_scan()
|
|
reuse_handler If true, the quick select may use table->handler, otherwise
|
|
it must create and use a separate handler object.
|
|
RETURN
|
|
0 Ok
|
|
other Error
|
|
*/
|
|
virtual int init_ror_merged_scan(bool reuse_handler)
|
|
{ DBUG_ASSERT(0); return 1; }
|
|
|
|
/*
|
|
Save ROWID of last retrieved row in file->ref. This used in ROR-merging.
|
|
*/
|
|
virtual void save_last_pos(){};
|
|
|
|
/*
|
|
Append comma-separated list of keys this quick select uses to key_names;
|
|
append comma-separated list of corresponding used lengths to used_lengths.
|
|
This is used by select_describe.
|
|
*/
|
|
virtual void add_keys_and_lengths(String *key_names,
|
|
String *used_lengths)=0;
|
|
|
|
/*
|
|
Append text representation of quick select structure (what and how is
|
|
merged) to str. The result is added to "Extra" field in EXPLAIN output.
|
|
This function is implemented only by quick selects that merge other quick
|
|
selects output and/or can produce output suitable for merging.
|
|
*/
|
|
virtual void add_info_string(String *str) {};
|
|
/*
|
|
Return 1 if any index used by this quick select
|
|
a) uses field that is listed in passed field list or
|
|
b) is automatically updated (like a timestamp)
|
|
c) can be updated by one of before update triggers defined on table
|
|
*/
|
|
virtual bool is_keys_used(List<Item> *fields);
|
|
|
|
/*
|
|
rowid of last row retrieved by this quick select. This is used only when
|
|
doing ROR-index_merge selects
|
|
*/
|
|
byte *last_rowid;
|
|
|
|
/*
|
|
Table record buffer used by this quick select.
|
|
*/
|
|
byte *record;
|
|
#ifndef DBUG_OFF
|
|
/*
|
|
Print quick select information to DBUG_FILE. Caller is responsible
|
|
for locking DBUG_FILE before this call and unlocking it afterwards.
|
|
*/
|
|
virtual void dbug_dump(int indent, bool verbose)= 0;
|
|
#endif
|
|
};
|
|
|
|
|
|
struct st_qsel_param;
|
|
class SEL_ARG;
|
|
|
|
/*
|
|
Quick select that does a range scan on a single key. The records are
|
|
returned in key order.
|
|
*/
|
|
class QUICK_RANGE_SELECT : public QUICK_SELECT_I
|
|
{
|
|
protected:
|
|
bool next,dont_free;
|
|
public:
|
|
int error;
|
|
protected:
|
|
handler *file;
|
|
/*
|
|
If true, this quick select has its "own" handler object which should be
|
|
closed no later then this quick select is deleted.
|
|
*/
|
|
bool free_file;
|
|
bool in_range;
|
|
uint multi_range_count; /* copy from thd->variables.multi_range_count */
|
|
uint multi_range_length; /* the allocated length for the array */
|
|
uint multi_range_bufsiz; /* copy from thd->variables.read_rnd_buff_size */
|
|
KEY_MULTI_RANGE *multi_range; /* the multi-range array (allocated and
|
|
freed by QUICK_RANGE_SELECT) */
|
|
HANDLER_BUFFER *multi_range_buff; /* the handler buffer (allocated and
|
|
freed by QUICK_RANGE_SELECT) */
|
|
|
|
protected:
|
|
friend class TRP_ROR_INTERSECT;
|
|
friend
|
|
QUICK_RANGE_SELECT *get_quick_select_for_ref(THD *thd, TABLE *table,
|
|
struct st_table_ref *ref,
|
|
ha_rows records);
|
|
friend bool get_quick_keys(struct st_qsel_param *param,
|
|
QUICK_RANGE_SELECT *quick,KEY_PART *key,
|
|
SEL_ARG *key_tree,
|
|
char *min_key, uint min_key_flag,
|
|
char *max_key, uint max_key_flag);
|
|
friend QUICK_RANGE_SELECT *get_quick_select(struct st_qsel_param*,uint idx,
|
|
SEL_ARG *key_tree,
|
|
MEM_ROOT *alloc);
|
|
friend class QUICK_SELECT_DESC;
|
|
friend class QUICK_INDEX_MERGE_SELECT;
|
|
friend class QUICK_ROR_INTERSECT_SELECT;
|
|
friend class QUICK_GROUP_MIN_MAX_SELECT;
|
|
|
|
DYNAMIC_ARRAY ranges; /* ordered array of range ptrs */
|
|
QUICK_RANGE **cur_range; /* current element in ranges */
|
|
|
|
QUICK_RANGE *range;
|
|
KEY_PART *key_parts;
|
|
KEY_PART_INFO *key_part_info;
|
|
int cmp_next(QUICK_RANGE *range);
|
|
int cmp_prev(QUICK_RANGE *range);
|
|
bool row_in_ranges();
|
|
public:
|
|
MEM_ROOT alloc;
|
|
|
|
QUICK_RANGE_SELECT(THD *thd, TABLE *table,uint index_arg,bool no_alloc=0,
|
|
MEM_ROOT *parent_alloc=NULL);
|
|
~QUICK_RANGE_SELECT();
|
|
|
|
int init();
|
|
int reset(void);
|
|
int get_next();
|
|
void range_end();
|
|
int get_next_prefix(uint prefix_length, byte *cur_prefix);
|
|
bool reverse_sorted() { return 0; }
|
|
bool unique_key_range();
|
|
int init_ror_merged_scan(bool reuse_handler);
|
|
void save_last_pos()
|
|
{ file->position(record); }
|
|
int get_type() { return QS_TYPE_RANGE; }
|
|
void add_keys_and_lengths(String *key_names, String *used_lengths);
|
|
void add_info_string(String *str);
|
|
#ifndef DBUG_OFF
|
|
void dbug_dump(int indent, bool verbose);
|
|
#endif
|
|
private:
|
|
/* Used only by QUICK_SELECT_DESC */
|
|
QUICK_RANGE_SELECT(const QUICK_RANGE_SELECT& org) : QUICK_SELECT_I()
|
|
{
|
|
bcopy(&org, this, sizeof(*this));
|
|
multi_range_length= 0;
|
|
multi_range= NULL;
|
|
multi_range_buff= NULL;
|
|
}
|
|
};
|
|
|
|
|
|
class QUICK_RANGE_SELECT_GEOM: public QUICK_RANGE_SELECT
|
|
{
|
|
public:
|
|
QUICK_RANGE_SELECT_GEOM(THD *thd, TABLE *table, uint index_arg,
|
|
bool no_alloc, MEM_ROOT *parent_alloc)
|
|
:QUICK_RANGE_SELECT(thd, table, index_arg, no_alloc, parent_alloc)
|
|
{};
|
|
virtual int get_next();
|
|
};
|
|
|
|
|
|
/*
|
|
QUICK_INDEX_MERGE_SELECT - index_merge access method quick select.
|
|
|
|
QUICK_INDEX_MERGE_SELECT uses
|
|
* QUICK_RANGE_SELECTs to get rows
|
|
* Unique class to remove duplicate rows
|
|
|
|
INDEX MERGE OPTIMIZER
|
|
Current implementation doesn't detect all cases where index_merge could
|
|
be used, in particular:
|
|
* index_merge will never be used if range scan is possible (even if
|
|
range scan is more expensive)
|
|
|
|
* index_merge+'using index' is not supported (this the consequence of
|
|
the above restriction)
|
|
|
|
* If WHERE part contains complex nested AND and OR conditions, some ways
|
|
to retrieve rows using index_merge will not be considered. The choice
|
|
of read plan may depend on the order of conjuncts/disjuncts in WHERE
|
|
part of the query, see comments near imerge_list_or_list and
|
|
SEL_IMERGE::or_sel_tree_with_checks functions for details.
|
|
|
|
* There is no "index_merge_ref" method (but index_merge on non-first
|
|
table in join is possible with 'range checked for each record').
|
|
|
|
See comments around SEL_IMERGE class and test_quick_select for more
|
|
details.
|
|
|
|
ROW RETRIEVAL ALGORITHM
|
|
|
|
index_merge uses Unique class for duplicates removal. index_merge takes
|
|
advantage of Clustered Primary Key (CPK) if the table has one.
|
|
The index_merge algorithm consists of two phases:
|
|
|
|
Phase 1 (implemented in QUICK_INDEX_MERGE_SELECT::prepare_unique):
|
|
prepare()
|
|
{
|
|
activate 'index only';
|
|
while(retrieve next row for non-CPK scan)
|
|
{
|
|
if (there is a CPK scan and row will be retrieved by it)
|
|
skip this row;
|
|
else
|
|
put its rowid into Unique;
|
|
}
|
|
deactivate 'index only';
|
|
}
|
|
|
|
Phase 2 (implemented as sequence of QUICK_INDEX_MERGE_SELECT::get_next
|
|
calls):
|
|
|
|
fetch()
|
|
{
|
|
retrieve all rows from row pointers stored in Unique;
|
|
free Unique;
|
|
retrieve all rows for CPK scan;
|
|
}
|
|
*/
|
|
|
|
class QUICK_INDEX_MERGE_SELECT : public QUICK_SELECT_I
|
|
{
|
|
public:
|
|
QUICK_INDEX_MERGE_SELECT(THD *thd, TABLE *table);
|
|
~QUICK_INDEX_MERGE_SELECT();
|
|
|
|
int init();
|
|
int reset(void);
|
|
int get_next();
|
|
bool reverse_sorted() { return false; }
|
|
bool unique_key_range() { return false; }
|
|
int get_type() { return QS_TYPE_INDEX_MERGE; }
|
|
void add_keys_and_lengths(String *key_names, String *used_lengths);
|
|
void add_info_string(String *str);
|
|
bool is_keys_used(List<Item> *fields);
|
|
#ifndef DBUG_OFF
|
|
void dbug_dump(int indent, bool verbose);
|
|
#endif
|
|
|
|
bool push_quick_back(QUICK_RANGE_SELECT *quick_sel_range);
|
|
|
|
/* range quick selects this index_merge read consists of */
|
|
List<QUICK_RANGE_SELECT> quick_selects;
|
|
|
|
/* quick select that uses clustered primary key (NULL if none) */
|
|
QUICK_RANGE_SELECT* pk_quick_select;
|
|
|
|
/* true if this select is currently doing a clustered PK scan */
|
|
bool doing_pk_scan;
|
|
|
|
MEM_ROOT alloc;
|
|
THD *thd;
|
|
int read_keys_and_merge();
|
|
|
|
/* used to get rows collected in Unique */
|
|
READ_RECORD read_record;
|
|
};
|
|
|
|
|
|
/*
|
|
Rowid-Ordered Retrieval (ROR) index intersection quick select.
|
|
This quick select produces intersection of row sequences returned
|
|
by several QUICK_RANGE_SELECTs it "merges".
|
|
|
|
All merged QUICK_RANGE_SELECTs must return rowids in rowid order.
|
|
QUICK_ROR_INTERSECT_SELECT will return rows in rowid order, too.
|
|
|
|
All merged quick selects retrieve {rowid, covered_fields} tuples (not full
|
|
table records).
|
|
QUICK_ROR_INTERSECT_SELECT retrieves full records if it is not being used
|
|
by QUICK_ROR_INTERSECT_SELECT and all merged quick selects together don't
|
|
cover needed all fields.
|
|
|
|
If one of the merged quick selects is a Clustered PK range scan, it is
|
|
used only to filter rowid sequence produced by other merged quick selects.
|
|
*/
|
|
|
|
class QUICK_ROR_INTERSECT_SELECT : public QUICK_SELECT_I
|
|
{
|
|
public:
|
|
QUICK_ROR_INTERSECT_SELECT(THD *thd, TABLE *table,
|
|
bool retrieve_full_rows,
|
|
MEM_ROOT *parent_alloc);
|
|
~QUICK_ROR_INTERSECT_SELECT();
|
|
|
|
int init();
|
|
int reset(void);
|
|
int get_next();
|
|
bool reverse_sorted() { return false; }
|
|
bool unique_key_range() { return false; }
|
|
int get_type() { return QS_TYPE_ROR_INTERSECT; }
|
|
void add_keys_and_lengths(String *key_names, String *used_lengths);
|
|
void add_info_string(String *str);
|
|
bool is_keys_used(List<Item> *fields);
|
|
#ifndef DBUG_OFF
|
|
void dbug_dump(int indent, bool verbose);
|
|
#endif
|
|
int init_ror_merged_scan(bool reuse_handler);
|
|
bool push_quick_back(QUICK_RANGE_SELECT *quick_sel_range);
|
|
|
|
/*
|
|
Range quick selects this intersection consists of, not including
|
|
cpk_quick.
|
|
*/
|
|
List<QUICK_RANGE_SELECT> quick_selects;
|
|
|
|
/*
|
|
Merged quick select that uses Clustered PK, if there is one. This quick
|
|
select is not used for row retrieval, it is used for row retrieval.
|
|
*/
|
|
QUICK_RANGE_SELECT *cpk_quick;
|
|
|
|
MEM_ROOT alloc; /* Memory pool for this and merged quick selects data. */
|
|
THD *thd; /* current thread */
|
|
bool need_to_fetch_row; /* if true, do retrieve full table records. */
|
|
/* in top-level quick select, true if merged scans where initialized */
|
|
bool scans_inited;
|
|
};
|
|
|
|
|
|
/*
|
|
Rowid-Ordered Retrieval index union select.
|
|
This quick select produces union of row sequences returned by several
|
|
quick select it "merges".
|
|
|
|
All merged quick selects must return rowids in rowid order.
|
|
QUICK_ROR_UNION_SELECT will return rows in rowid order, too.
|
|
|
|
All merged quick selects are set not to retrieve full table records.
|
|
ROR-union quick select always retrieves full records.
|
|
|
|
*/
|
|
|
|
class QUICK_ROR_UNION_SELECT : public QUICK_SELECT_I
|
|
{
|
|
public:
|
|
QUICK_ROR_UNION_SELECT(THD *thd, TABLE *table);
|
|
~QUICK_ROR_UNION_SELECT();
|
|
|
|
int init();
|
|
int reset(void);
|
|
int get_next();
|
|
bool reverse_sorted() { return false; }
|
|
bool unique_key_range() { return false; }
|
|
int get_type() { return QS_TYPE_ROR_UNION; }
|
|
void add_keys_and_lengths(String *key_names, String *used_lengths);
|
|
void add_info_string(String *str);
|
|
bool is_keys_used(List<Item> *fields);
|
|
#ifndef DBUG_OFF
|
|
void dbug_dump(int indent, bool verbose);
|
|
#endif
|
|
|
|
bool push_quick_back(QUICK_SELECT_I *quick_sel_range);
|
|
|
|
List<QUICK_SELECT_I> quick_selects; /* Merged quick selects */
|
|
|
|
QUEUE queue; /* Priority queue for merge operation */
|
|
MEM_ROOT alloc; /* Memory pool for this and merged quick selects data. */
|
|
|
|
THD *thd; /* current thread */
|
|
byte *cur_rowid; /* buffer used in get_next() */
|
|
byte *prev_rowid; /* rowid of last row returned by get_next() */
|
|
bool have_prev_rowid; /* true if prev_rowid has valid data */
|
|
uint rowid_length; /* table rowid length */
|
|
private:
|
|
static int queue_cmp(void *arg, byte *val1, byte *val2);
|
|
bool scans_inited;
|
|
};
|
|
|
|
|
|
/*
|
|
Index scan for GROUP-BY queries with MIN/MAX aggregate functions.
|
|
|
|
This class provides a specialized index access method for GROUP-BY queries
|
|
of the forms:
|
|
|
|
SELECT A_1,...,A_k, [B_1,...,B_m], [MIN(C)], [MAX(C)]
|
|
FROM T
|
|
WHERE [RNG(A_1,...,A_p ; where p <= k)]
|
|
[AND EQ(B_1,...,B_m)]
|
|
[AND PC(C)]
|
|
[AND PA(A_i1,...,A_iq)]
|
|
GROUP BY A_1,...,A_k;
|
|
|
|
or
|
|
|
|
SELECT DISTINCT A_i1,...,A_ik
|
|
FROM T
|
|
WHERE [RNG(A_1,...,A_p ; where p <= k)]
|
|
[AND PA(A_i1,...,A_iq)];
|
|
|
|
where all selected fields are parts of the same index.
|
|
The class of queries that can be processed by this quick select is fully
|
|
specified in the description of get_best_trp_group_min_max() in opt_range.cc.
|
|
|
|
The get_next() method directly produces result tuples, thus obviating the
|
|
need to call end_send_group() because all grouping is already done inside
|
|
get_next().
|
|
|
|
Since one of the requirements is that all select fields are part of the same
|
|
index, this class produces only index keys, and not complete records.
|
|
*/
|
|
|
|
class QUICK_GROUP_MIN_MAX_SELECT : public QUICK_SELECT_I
|
|
{
|
|
private:
|
|
handler *file; /* The handler used to get data. */
|
|
JOIN *join; /* Descriptor of the current query */
|
|
KEY *index_info; /* The index chosen for data access */
|
|
byte *record; /* Buffer where the next record is returned. */
|
|
byte *tmp_record; /* Temporary storage for next_min(), next_max(). */
|
|
byte *group_prefix; /* Key prefix consisting of the GROUP fields. */
|
|
uint group_prefix_len; /* Length of the group prefix. */
|
|
byte *last_prefix; /* Prefix of the last group for detecting EOF. */
|
|
bool have_min; /* Specify whether we are computing */
|
|
bool have_max; /* a MIN, a MAX, or both. */
|
|
bool seen_first_key; /* Denotes whether the first key was retrieved.*/
|
|
KEY_PART_INFO *min_max_arg_part; /* The keypart of the only argument field */
|
|
/* of all MIN/MAX functions. */
|
|
uint min_max_arg_len; /* The length of the MIN/MAX argument field */
|
|
byte *key_infix; /* Infix of constants from equality predicates. */
|
|
uint key_infix_len;
|
|
DYNAMIC_ARRAY min_max_ranges; /* Array of range ptrs for the MIN/MAX field. */
|
|
uint real_prefix_len; /* Length of key prefix extended with key_infix. */
|
|
List<Item_sum> *min_functions;
|
|
List<Item_sum> *max_functions;
|
|
List_iterator<Item_sum> *min_functions_it;
|
|
List_iterator<Item_sum> *max_functions_it;
|
|
public:
|
|
/*
|
|
The following two members are public to allow easy access from
|
|
TRP_GROUP_MIN_MAX::make_quick()
|
|
*/
|
|
MEM_ROOT alloc; /* Memory pool for this and quick_prefix_select data. */
|
|
QUICK_RANGE_SELECT *quick_prefix_select;/* For retrieval of group prefixes. */
|
|
private:
|
|
int next_prefix();
|
|
int next_min_in_range();
|
|
int next_max_in_range();
|
|
int next_min();
|
|
int next_max();
|
|
void update_min_result();
|
|
void update_max_result();
|
|
public:
|
|
QUICK_GROUP_MIN_MAX_SELECT(TABLE *table, JOIN *join, bool have_min,
|
|
bool have_max, KEY_PART_INFO *min_max_arg_part,
|
|
uint group_prefix_len, uint used_key_parts,
|
|
KEY *index_info, uint use_index, double read_cost,
|
|
ha_rows records, uint key_infix_len,
|
|
byte *key_infix, MEM_ROOT *parent_alloc);
|
|
~QUICK_GROUP_MIN_MAX_SELECT();
|
|
bool add_range(SEL_ARG *sel_range);
|
|
void update_key_stat();
|
|
void adjust_prefix_ranges();
|
|
bool alloc_buffers();
|
|
int init();
|
|
int reset();
|
|
int get_next();
|
|
bool reverse_sorted() { return false; }
|
|
bool unique_key_range() { return false; }
|
|
int get_type() { return QS_TYPE_GROUP_MIN_MAX; }
|
|
void add_keys_and_lengths(String *key_names, String *used_lengths);
|
|
#ifndef DBUG_OFF
|
|
void dbug_dump(int indent, bool verbose);
|
|
#endif
|
|
};
|
|
|
|
|
|
class QUICK_SELECT_DESC: public QUICK_RANGE_SELECT
|
|
{
|
|
public:
|
|
QUICK_SELECT_DESC(QUICK_RANGE_SELECT *q, uint used_key_parts);
|
|
int get_next();
|
|
bool reverse_sorted() { return 1; }
|
|
int get_type() { return QS_TYPE_RANGE_DESC; }
|
|
private:
|
|
bool range_reads_after_key(QUICK_RANGE *range);
|
|
#ifdef NOT_USED
|
|
bool test_if_null_range(QUICK_RANGE *range, uint used_key_parts);
|
|
#endif
|
|
int reset(void) { rev_it.rewind(); return QUICK_RANGE_SELECT::reset(); }
|
|
List<QUICK_RANGE> rev_ranges;
|
|
List_iterator<QUICK_RANGE> rev_it;
|
|
};
|
|
|
|
|
|
class SQL_SELECT :public Sql_alloc {
|
|
public:
|
|
QUICK_SELECT_I *quick; // If quick-select used
|
|
COND *cond; // where condition
|
|
TABLE *head;
|
|
IO_CACHE file; // Positions to used records
|
|
ha_rows records; // Records in use if read from file
|
|
double read_time; // Time to read rows
|
|
key_map quick_keys; // Possible quick keys
|
|
key_map needed_reg; // Possible quick keys after prev tables.
|
|
table_map const_tables,read_tables;
|
|
bool free_cond;
|
|
|
|
SQL_SELECT();
|
|
~SQL_SELECT();
|
|
void cleanup();
|
|
bool check_quick(THD *thd, bool force_quick_range, ha_rows limit)
|
|
{
|
|
key_map tmp;
|
|
tmp.set_all();
|
|
return test_quick_select(thd, tmp, 0, limit, force_quick_range) < 0;
|
|
}
|
|
inline bool skip_record() { return cond ? cond->val_int() == 0 : 0; }
|
|
int test_quick_select(THD *thd, key_map keys, table_map prev_tables,
|
|
ha_rows limit, bool force_quick_range);
|
|
};
|
|
|
|
|
|
class FT_SELECT: public QUICK_RANGE_SELECT {
|
|
public:
|
|
FT_SELECT(THD *thd, TABLE *table, uint key) :
|
|
QUICK_RANGE_SELECT (thd, table, key, 1) { VOID(init()); }
|
|
~FT_SELECT() { file->ft_end(); }
|
|
int init() { return error=file->ft_init(); }
|
|
int reset() { return 0; }
|
|
int get_next() { return error=file->ft_read(record); }
|
|
int get_type() { return QS_TYPE_FULLTEXT; }
|
|
};
|
|
|
|
QUICK_RANGE_SELECT *get_quick_select_for_ref(THD *thd, TABLE *table,
|
|
struct st_table_ref *ref,
|
|
ha_rows records);
|
|
uint get_index_for_order(TABLE *table, ORDER *order, ha_rows limit);
|
|
|
|
#endif
|