Merge from the latest mariadb-10.0.

added:
  include/mysql/service_kill_statement.h
  libmysql/libmysql_rpm_version.in
  libmysql/rpm_support.cc
  libservices/kill_statement_service.c
  mysql-test/include/ctype_heap.inc
  mysql-test/include/ctype_strtoll10.inc
  mysql-test/r/change_user_notembedded.result
  mysql-test/r/create_delayed.result
  mysql-test/r/ctype_utf16le.result
  mysql-test/r/failed_auth_3909.result
  mysql-test/r/gis2.result
  mysql-test/r/grant_lowercase.result
  mysql-test/r/group_by_innodb.result
  mysql-test/r/information_schema2.result
  mysql-test/suite/innodb/r/innodb_bug14704286.result
  mysql-test/suite/innodb/t/innodb_bug14704286.test
  mysql-test/suite/plugins/r/audit_null_debug.result
  mysql-test/suite/plugins/r/cassandra.result
  mysql-test/suite/plugins/r/cassandra_qcache.result
  mysql-test/suite/plugins/t/audit_null_debug.test
  mysql-test/suite/plugins/t/cassandra.opt
  mysql-test/suite/plugins/t/cassandra.test
  mysql-test/suite/plugins/t/cassandra_qcache.opt
  mysql-test/suite/plugins/t/cassandra_qcache.test
  mysql-test/suite/rpl/r/rpl_password_boundaries.result
  mysql-test/suite/rpl/t/rpl_password_boundaries.test
  mysql-test/suite/sys_vars/r/innodb_locking_fake_changes_basic.result
  mysql-test/suite/sys_vars/r/innodb_max_bitmap_file_size_basic.result
  mysql-test/suite/sys_vars/t/innodb_locking_fake_changes_basic.test
  mysql-test/suite/sys_vars/t/innodb_max_bitmap_file_size_basic.test
  mysql-test/t/change_user_notembedded.test
  mysql-test/t/create_delayed.test
  mysql-test/t/ctype_utf16le.test
  mysql-test/t/failed_auth_3909.test
  mysql-test/t/gis2.test
  mysql-test/t/grant_lowercase.opt
  mysql-test/t/grant_lowercase.test
  mysql-test/t/group_by_innodb.test
  mysql-test/t/information_schema2.test
  packaging/rpm-uln/
  packaging/rpm-uln/CMakeLists.txt
  packaging/rpm-uln/README-ULN
  packaging/rpm-uln/README.mysql-docs
  packaging/rpm-uln/filter-requires-mysql.sh
  packaging/rpm-uln/generate-tarball.sh
  packaging/rpm-uln/my.cnf
  packaging/rpm-uln/my_config.h
  packaging/rpm-uln/mysql-5.5-errno.patch
  packaging/rpm-uln/mysql-5.5-fix-tests.patch
  packaging/rpm-uln/mysql-5.5-libdir.patch
  packaging/rpm-uln/mysql-5.5-mtr1.patch
  packaging/rpm-uln/mysql-5.5-stack-guard.patch
  packaging/rpm-uln/mysql-5.5-testing.patch
  packaging/rpm-uln/mysql-chain-certs.patch
  packaging/rpm-uln/mysql-embedded-check.c
  packaging/rpm-uln/mysql-expired-certs.patch
  packaging/rpm-uln/mysql-install-test.patch
  packaging/rpm-uln/mysql-strmov.patch
  packaging/rpm-uln/mysql.init
  packaging/rpm-uln/mysql.spec.sh
  packaging/rpm-uln/scriptstub.c
  scripts/mysql_performance_tables.sql
  storage/cassandra/
  storage/cassandra/CMakeLists.txt
  storage/cassandra/cassandra.cnf
  storage/cassandra/cassandra_se.cc
  storage/cassandra/cassandra_se.h
  storage/cassandra/gen-cpp/
  storage/cassandra/gen-cpp/Cassandra.cpp
  storage/cassandra/gen-cpp/Cassandra.h
  storage/cassandra/gen-cpp/Cassandra_server.skeleton.cpp
  storage/cassandra/gen-cpp/cassandra_constants.cpp
  storage/cassandra/gen-cpp/cassandra_constants.h
  storage/cassandra/gen-cpp/cassandra_types.cpp
  storage/cassandra/gen-cpp/cassandra_types.h
  storage/cassandra/ha_cassandra.cc
  storage/cassandra/ha_cassandra.h
  storage/innobase/mysql-test/storage_engine/alter_tablespace.rdiff
renamed:
  mysql-test/include/mysqlbinlog_row_engine.inc => mysql-test/extra/binlog_tests/mysqlbinlog_row_engine.inc
  mysql-test/r/mysqlbinlog-cp932.result => mysql-test/suite/binlog/r/binlog_mysqlbinlog-cp932.result
  mysql-test/r/mysqlbinlog2.result => mysql-test/suite/binlog/r/binlog_mysqlbinlog2.result
  mysql-test/r/mysqlbinlog_base64.result => mysql-test/suite/binlog/r/binlog_mysqlbinlog_base64.result
  mysql-test/r/mysqlbinlog_row.result => mysql-test/suite/binlog/r/binlog_mysqlbinlog_row.result
  mysql-test/r/mysqlbinlog_row_innodb.result => mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_innodb.result
  mysql-test/r/mysqlbinlog_row_myisam.result => mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_myisam.result
  mysql-test/r/mysqlbinlog_row_trans.result => mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_trans.result
  mysql-test/suite/innodb/t/innodb-autoinc-master.opt => mysql-test/suite/innodb/t/innodb-autoinc.opt
  mysql-test/t/mysqlbinlog-cp932-master.opt => mysql-test/suite/binlog/t/binlog_mysqlbinlog-cp932-master.opt
  mysql-test/t/mysqlbinlog-cp932.test => mysql-test/suite/binlog/t/binlog_mysqlbinlog-cp932.test
  mysql-test/t/mysqlbinlog2-master.opt => mysql-test/suite/binlog/t/binlog_mysqlbinlog2-master.opt
  mysql-test/t/mysqlbinlog2.test => mysql-test/suite/binlog/t/binlog_mysqlbinlog2.test
  mysql-test/t/mysqlbinlog_base64.test => mysql-test/suite/binlog/t/binlog_mysqlbinlog_base64.test
  mysql-test/t/mysqlbinlog_row-master.opt => mysql-test/suite/binlog/t/binlog_mysqlbinlog_row-master.opt
  mysql-test/t/mysqlbinlog_row.test => mysql-test/suite/binlog/t/binlog_mysqlbinlog_row.test
  mysql-test/t/mysqlbinlog_row_innodb-master.opt => mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_innodb-master.opt
  mysql-test/t/mysqlbinlog_row_innodb.test => mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_innodb.test
  mysql-test/t/mysqlbinlog_row_myisam-master.opt => mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_myisam-master.opt
  mysql-test/t/mysqlbinlog_row_myisam.test => mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_myisam.test
  mysql-test/t/mysqlbinlog_row_trans-master.opt => mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_trans-master.opt
  mysql-test/t/mysqlbinlog_row_trans.test => mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_trans.test
  mysql-test/t/plugin_load_option-master.opt => mysql-test/t/plugin_load_option.opt
modified:
  BUILD/FINISH.sh
  BUILD/SETUP.sh
  CMakeLists.txt
  TODO
  VERSION
  client/completion_hash.cc
  client/mysql.cc
  client/mysql_upgrade.c
  client/mysqlbinlog.cc
  client/mysqlcheck.c
  client/mysqldump.c
  client/mysqltest.cc
  cmake/build_configurations/mysql_release.cmake
  cmake/character_sets.cmake
  cmake/configure.pl
  cmake/cpack_rpm.cmake
  cmake/create_initial_db.cmake.in
  cmake/info_macros.cmake.in
  cmake/install_layout.cmake
  cmake/mysql_version.cmake
  cmake/package_name.cmake
  cmake/plugin.cmake
  debian/dist/Debian/mariadb-server-10.0.files
  debian/dist/Debian/rules
  debian/dist/Ubuntu/mariadb-server-10.0.files
  debian/dist/Ubuntu/rules
  debian/patches/38_scripts__mysqld_safe.sh__signals.dpatch
  extra/comp_err.c
  extra/replace.c
  extra/resolve_stack_dump.c
  include/hash.h
  include/heap.h
  include/m_ctype.h
  include/ma_dyncol.h
  include/my_dir.h
  include/my_global.h
  include/my_pthread.h
  include/my_sys.h
  include/my_tree.h
  include/myisamchk.h
  include/mysql.h.pp
  include/mysql/plugin.h
  include/mysql/plugin_audit.h.pp
  include/mysql/plugin_auth.h.pp
  include/mysql/plugin_ftparser.h.pp
  include/mysql/service_thd_wait.h
  include/mysql/services.h
  include/mysql_com.h
  include/service_versions.h
  include/violite.h
  libmysql/CMakeLists.txt
  libmysql/libmysql.c
  libmysqld/CMakeLists.txt
  libmysqld/emb_qcache.cc
  libmysqld/lib_sql.cc
  libservices/CMakeLists.txt
  mysql-test/extra/binlog_tests/binlog.test
  mysql-test/include/have_dbi_dbd-mysql.inc
  mysql-test/include/plugin.defs
  mysql-test/include/rpl_start_server.inc
  mysql-test/lib/v1/mysql-test-run.pl
  mysql-test/mysql-test-run.pl
  mysql-test/r/alias.result
  mysql-test/r/contributors.result
  mysql-test/r/create.result
  mysql-test/r/ctype_ucs.result
  mysql-test/r/ctype_utf16.result
  mysql-test/r/ctype_utf32.result
  mysql-test/r/ctype_utf8.result
  mysql-test/r/datetime_456.result
  mysql-test/r/derived_view.result
  mysql-test/r/distinct.result
  mysql-test/r/dyncol.result
  mysql-test/r/func_encrypt_ucs2.result
  mysql-test/r/func_gconcat.result
  mysql-test/r/func_misc.result
  mysql-test/r/func_time.result
  mysql-test/r/group_by.result
  mysql-test/r/group_min_max.result
  mysql-test/r/handlersocket.result
  mysql-test/r/loaddata.result
  mysql-test/r/mysql.result
  mysql-test/r/mysqltest.result
  mysql-test/r/plugin.result
  mysql-test/r/plugin_auth.result
  mysql-test/r/show_check.result
  mysql-test/r/show_explain.result
  mysql-test/r/sp.result
  mysql-test/r/sp_notembedded.result
  mysql-test/r/stat_tables_par.result
  mysql-test/r/stat_tables_par_innodb.result
  mysql-test/r/subselect.result
  mysql-test/r/subselect3.result
  mysql-test/r/subselect3_jcl6.result
  mysql-test/r/subselect4.result
  mysql-test/r/subselect_innodb.result
  mysql-test/r/subselect_mat_cost.result
  mysql-test/r/subselect_no_mat.result
  mysql-test/r/subselect_no_opts.result
  mysql-test/r/subselect_no_scache.result
  mysql-test/r/subselect_sj.result
  mysql-test/r/subselect_sj_jcl6.result
  mysql-test/r/sum_distinct-big.result
  mysql-test/r/type_year.result
  mysql-test/r/user_var.result
  mysql-test/r/view.result
  mysql-test/suite.pm
  mysql-test/suite/binlog/r/binlog_database.result
  mysql-test/suite/binlog/r/binlog_row_annotate.result
  mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_options.result
  mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_verbose.result
  mysql-test/suite/engines/funcs/r/tc_rename_error.result
  mysql-test/suite/engines/iuds/r/insert_time.result
  mysql-test/suite/funcs_1/datadict/processlist_priv.inc
  mysql-test/suite/funcs_1/datadict/processlist_val.inc
  mysql-test/suite/funcs_1/r/innodb_func_view.result
  mysql-test/suite/funcs_1/r/is_columns_is.result
  mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
  mysql-test/suite/funcs_1/r/memory_func_view.result
  mysql-test/suite/funcs_1/r/myisam_func_view.result
  mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result
  mysql-test/suite/funcs_1/r/processlist_priv_ps.result
  mysql-test/suite/funcs_1/r/processlist_val_no_prot.result
  mysql-test/suite/funcs_1/r/processlist_val_ps.result
  mysql-test/suite/innodb/r/binlog_consistent.result
  mysql-test/suite/innodb/r/innodb-autoinc.result
  mysql-test/suite/innodb/r/innodb-zip.result
  mysql-test/suite/innodb/r/innodb.result
  mysql-test/suite/innodb/r/innodb_bug53591.result
  mysql-test/suite/innodb/r/innodb_prefix_index_liftedlimit.result
  mysql-test/suite/innodb/t/innodb-autoinc.test
  mysql-test/suite/innodb/t/innodb-zip.test
  mysql-test/suite/innodb/t/innodb.test
  mysql-test/suite/innodb/t/innodb_bug53591.test
  mysql-test/suite/innodb/t/innodb_prefix_index_liftedlimit.test
  mysql-test/suite/maria/truncate.result
  mysql-test/suite/maria/truncate.test
  mysql-test/suite/multi_source/multisource.result
  mysql-test/suite/multi_source/multisource.test
  mysql-test/suite/perfschema/include/upgrade_check.inc
  mysql-test/suite/perfschema/r/digest_table_full.result
  mysql-test/suite/perfschema/r/func_file_io.result
  mysql-test/suite/perfschema/r/func_mutex.result
  mysql-test/suite/perfschema/r/pfs_upgrade.result
  mysql-test/suite/perfschema/r/statement_digest.result
  mysql-test/suite/perfschema/r/statement_digest_consumers.result
  mysql-test/suite/perfschema/r/statement_digest_long_query.result
  mysql-test/suite/perfschema/t/func_file_io.test
  mysql-test/suite/perfschema/t/func_mutex.test
  mysql-test/suite/plugins/suite.pm
  mysql-test/suite/rpl/r/rpl_semi_sync.result
  mysql-test/suite/rpl/t/rpl_semi_sync.test
  mysql-test/suite/sphinx/sphinx.result
  mysql-test/suite/storage_engine/misc.result
  mysql-test/suite/sys_vars/r/character_set_client_basic.result
  mysql-test/suite/sys_vars/r/character_set_connection_basic.result
  mysql-test/suite/sys_vars/r/character_set_database_basic.result
  mysql-test/suite/sys_vars/r/character_set_filesystem_basic.result
  mysql-test/suite/sys_vars/r/character_set_results_basic.result
  mysql-test/suite/sys_vars/r/innodb_change_buffering_debug_basic.result
  mysql-test/suite/sys_vars/r/innodb_changed_pages_limit_basic.result
  mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result
  mysql-test/suite/sys_vars/t/innodb_change_buffering_debug_basic.test
  mysql-test/suite/sys_vars/t/innodb_changed_pages_limit_basic.test
  mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test
  mysql-test/suite/vcol/r/vcol_misc.result
  mysql-test/suite/vcol/t/vcol_misc.test
  mysql-test/t/alias.test
  mysql-test/t/ctype_ucs.test
  mysql-test/t/ctype_utf16.test
  mysql-test/t/ctype_utf32.test
  mysql-test/t/ctype_utf8.test
  mysql-test/t/derived_view.test
  mysql-test/t/distinct.test
  mysql-test/t/dyncol.test
  mysql-test/t/file_contents.test
  mysql-test/t/func_gconcat.test
  mysql-test/t/func_misc.test
  mysql-test/t/group_by.test
  mysql-test/t/group_min_max.test
  mysql-test/t/loaddata.test
  mysql-test/t/mysql.test
  mysql-test/t/plugin.test
  mysql-test/t/plugin_auth.test
  mysql-test/t/show_check.test
  mysql-test/t/show_explain.test
  mysql-test/t/sp.test
  mysql-test/t/sp_notembedded.test
  mysql-test/t/stat_tables_par.test
  mysql-test/t/subselect4.test
  mysql-test/t/subselect_innodb.test
  mysql-test/t/subselect_sj.test
  mysql-test/t/sum_distinct-big.test
  mysql-test/t/user_var.test
  mysql-test/t/view.test
  mysql-test/valgrind.supp
  mysys/array.c
  mysys/charset-def.c
  mysys/default.c
  mysys/hash.c
  mysys/ma_dyncol.c
  mysys/mf_tempdir.c
  mysys/my_alloc.c
  mysys/my_chmod.c
  mysys/my_chsize.c
  mysys/my_copy.c
  mysys/my_create.c
  mysys/my_delete.c
  mysys/my_error.c
  mysys/my_fopen.c
  mysys/my_fstream.c
  mysys/my_getwd.c
  mysys/my_lib.c
  mysys/my_lock.c
  mysys/my_malloc.c
  mysys/my_open.c
  mysys/my_pread.c
  mysys/my_read.c
  mysys/my_redel.c
  mysys/my_rename.c
  mysys/my_seek.c
  mysys/my_sync.c
  mysys/my_thr_init.c
  mysys/my_write.c
  mysys/mysys_priv.h
  mysys/safemalloc.c
  mysys/string.c
  mysys/tree.c
  mysys/waiting_threads.c
  plugin/feedback/utils.cc
  scripts/CMakeLists.txt
  scripts/mysql_install_db.pl.in
  scripts/mysql_install_db.sh
  scripts/mysql_system_tables.sql
  scripts/mysql_system_tables_fix.sql
  scripts/mysqlaccess.sh
  scripts/mysqld_multi.sh
  scripts/mysqld_safe.sh
  sql-common/client.c
  sql-common/client_plugin.c
  sql/CMakeLists.txt
  sql/debug_sync.cc
  sql/event_data_objects.cc
  sql/event_db_repository.cc
  sql/event_scheduler.cc
  sql/events.cc
  sql/field.cc
  sql/field.h
  sql/filesort.cc
  sql/filesort_utils.cc
  sql/ha_ndbcluster.cc
  sql/ha_ndbcluster_binlog.cc
  sql/ha_partition.cc
  sql/ha_partition.h
  sql/handler.cc
  sql/handler.h
  sql/hostname.cc
  sql/item.cc
  sql/item.h
  sql/item_cmpfunc.cc
  sql/item_cmpfunc.h
  sql/item_create.cc
  sql/item_create.h
  sql/item_func.cc
  sql/item_func.h
  sql/item_geofunc.cc
  sql/item_geofunc.h
  sql/item_row.cc
  sql/item_strfunc.cc
  sql/item_strfunc.h
  sql/item_subselect.cc
  sql/item_sum.cc
  sql/item_sum.h
  sql/item_timefunc.cc
  sql/item_timefunc.h
  sql/item_xmlfunc.cc
  sql/item_xmlfunc.h
  sql/lex.h
  sql/log.cc
  sql/log_event.cc
  sql/log_event.h
  sql/log_event_old.cc
  sql/mdl.cc
  sql/mysqld.cc
  sql/mysqld.h
  sql/net_serv.cc
  sql/opt_range.cc
  sql/opt_range_mrr.cc
  sql/opt_subselect.cc
  sql/protocol.cc
  sql/records.cc
  sql/rpl_filter.cc
  sql/rpl_handler.cc
  sql/rpl_handler.h
  sql/rpl_mi.cc
  sql/rpl_mi.h
  sql/rpl_rli.cc
  sql/rpl_tblmap.cc
  sql/rpl_utility.cc
  sql/scheduler.cc
  sql/set_var.cc
  sql/set_var.h
  sql/slave.cc
  sql/sp.cc
  sql/sp_head.cc
  sql/sp_pcontext.cc
  sql/sp_rcontext.cc
  sql/sp_rcontext.h
  sql/sql_acl.cc
  sql/sql_analyse.h
  sql/sql_array.h
  sql/sql_audit.cc
  sql/sql_audit.h
  sql/sql_base.cc
  sql/sql_base.h
  sql/sql_cache.cc
  sql/sql_class.cc
  sql/sql_class.h
  sql/sql_connect.cc
  sql/sql_const.h
  sql/sql_db.cc
  sql/sql_delete.cc
  sql/sql_error.cc
  sql/sql_error.h
  sql/sql_handler.cc
  sql/sql_help.cc
  sql/sql_insert.cc
  sql/sql_join_cache.cc
  sql/sql_lex.cc
  sql/sql_lex.h
  sql/sql_list.h
  sql/sql_load.cc
  sql/sql_parse.cc
  sql/sql_plugin.cc
  sql/sql_plugin_services.h
  sql/sql_prepare.cc
  sql/sql_priv.h
  sql/sql_profile.cc
  sql/sql_profile.h
  sql/sql_reload.cc
  sql/sql_repl.cc
  sql/sql_repl.h
  sql/sql_select.cc
  sql/sql_servers.cc
  sql/sql_show.cc
  sql/sql_signal.cc
  sql/sql_statistics.cc
  sql/sql_string.cc
  sql/sql_string.h
  sql/sql_table.cc
  sql/sql_test.cc
  sql/sql_time.cc
  sql/sql_trigger.cc
  sql/sql_truncate.cc
  sql/sql_udf.cc
  sql/sql_union.cc
  sql/sql_update.cc
  sql/sql_yacc.yy
  sql/sys_vars.cc
  sql/sys_vars.h
  sql/table.cc
  sql/table.h
  sql/thr_malloc.cc
  sql/thr_malloc.h
  sql/tztime.cc
  sql/uniques.cc
  sql/unireg.cc
  storage/archive/ha_archive.cc
  storage/archive/ha_archive.h
  storage/csv/ha_tina.cc
  storage/federated/ha_federated.cc
  storage/federated/ha_federated.h
  storage/federatedx/federatedx_io_mysql.cc
  storage/federatedx/ha_federatedx.cc
  storage/federatedx/ha_federatedx.h
  storage/heap/ha_heap.cc
  storage/heap/heapdef.h
  storage/heap/hp_block.c
  storage/heap/hp_create.c
  storage/heap/hp_open.c
  storage/heap/hp_write.c
  storage/innobase/btr/btr0btr.cc
  storage/innobase/btr/btr0cur.cc
  storage/innobase/buf/buf0buf.cc
  storage/innobase/buf/buf0lru.cc
  storage/innobase/dict/dict0dict.cc
  storage/innobase/fil/fil0fil.cc
  storage/innobase/fts/fts0fts.cc
  storage/innobase/handler/ha_innodb.cc
  storage/innobase/handler/ha_innodb.h
  storage/innobase/handler/handler0alter.cc
  storage/innobase/ibuf/ibuf0ibuf.cc
  storage/innobase/include/btr0cur.h
  storage/innobase/include/dict0mem.h
  storage/innobase/include/fil0fil.h
  storage/innobase/include/lock0lock.h
  storage/innobase/include/page0zip.h
  storage/innobase/include/row0undo.h
  storage/innobase/include/row0upd.ic
  storage/innobase/lock/lock0lock.cc
  storage/innobase/log/log0recv.cc
  storage/innobase/mysql-test/storage_engine/tbl_opt_row_format.rdiff
  storage/innobase/os/os0file.cc
  storage/innobase/page/page0cur.cc
  storage/innobase/page/page0page.cc
  storage/innobase/page/page0zip.cc
  storage/innobase/row/row0mysql.cc
  storage/innobase/row/row0sel.cc
  storage/innobase/row/row0umod.cc
  storage/innobase/row/row0undo.cc
  storage/maria/ha_maria.cc
  storage/maria/ma_bitmap.c
  storage/maria/ma_blockrec.c
  storage/maria/ma_check.c
  storage/maria/ma_ft_boolean_search.c
  storage/maria/ma_ft_nlq_search.c
  storage/maria/ma_ft_parser.c
  storage/maria/ma_loghandler.c
  storage/maria/ma_open.c
  storage/maria/ma_sort.c
  storage/maria/ma_write.c
  storage/maria/maria_pack.c
  storage/maria/unittest/sequence_storage.c
  storage/myisam/ft_boolean_search.c
  storage/myisam/ft_nlq_search.c
  storage/myisam/ft_parser.c
  storage/myisam/ft_stopwords.c
  storage/myisam/mi_check.c
  storage/myisam/mi_open.c
  storage/myisam/mi_write.c
  storage/myisam/myisamchk.c
  storage/myisam/myisamlog.c
  storage/myisam/myisampack.c
  storage/myisam/sort.c
  storage/myisammrg/ha_myisammrg.cc
  storage/myisammrg/mysql-test/storage_engine/vcol.rdiff
  storage/perfschema/pfs.cc
  storage/perfschema/pfs_check.cc
  storage/perfschema/pfs_instr.cc
  storage/perfschema/pfs_server.cc
  storage/sphinx/ha_sphinx.cc
  storage/xtradb/btr/btr0cur.c
  storage/xtradb/btr/btr0pcur.c
  storage/xtradb/buf/buf0lru.c
  storage/xtradb/buf/buf0rea.c
  storage/xtradb/fsp/fsp0fsp.c
  storage/xtradb/handler/ha_innodb.cc
  storage/xtradb/handler/ha_innodb.h
  storage/xtradb/handler/i_s.cc
  storage/xtradb/ibuf/ibuf0ibuf.c
  storage/xtradb/include/btr0btr.h
  storage/xtradb/include/btr0cur.h
  storage/xtradb/include/log0online.h
  storage/xtradb/include/srv0srv.h
  storage/xtradb/include/univ.i
  storage/xtradb/include/ut0ut.h
  storage/xtradb/include/ut0ut.ic
  storage/xtradb/lock/lock0lock.c
  storage/xtradb/log/log0log.c
  storage/xtradb/log/log0online.c
  storage/xtradb/os/os0file.c
  storage/xtradb/row/row0ins.c
  storage/xtradb/row/row0mysql.c
  storage/xtradb/row/row0upd.c
  storage/xtradb/srv/srv0srv.c
  storage/xtradb/srv/srv0start.c
  strings/ctype-latin1.c
  strings/ctype-ucs2.c
  strings/my_vsnprintf.c
  support-files/compiler_warnings.supp
  support-files/mysql.spec.sh
  tests/mysql_client_test.c
  vio/viosocket.c
  win/create_def_file.js
  mysql-test/suite/binlog/r/binlog_mysqlbinlog_row.result
  mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_innodb.result
  mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_myisam.result
  mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_trans.result
  mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_innodb.test
  mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_myisam.test
pending merges:
  Sergei Golubchik 2013-03-28 MDEV-4207 Invalid code in fts_savepoint_rele...
    Alexander Barkov 2013-03-28 Fixing test failure in the previous comm...
    Alexander Barkov 2013-03-28 Merging utf16le from MySQL-5.6
    Vladislav Vaintroub 2013-02-19 MDEV-156 Threadpool - add thd_wait_be...
    Michael Widenius 2013-02-15 [merge] Automatic merge
    Elena Stepanova 2013-02-08 Fix for MDEV-4149, backport from 10.0:
    timour@askmonty.org 2013-02-07 MDEV-537 Make multi-column non-top le...
    Sergei Golubchik 2013-02-05 set THR_THD key and current_thd=NULL as ...
    sanja@askmonty.org 2013-02-04 [merge] merge
    sanja@askmonty.org 2013-02-04 MDEV-3873: post-merge fix.
    Sergei Golubchik 2013-02-04 missing cast added
    Sergey Petrunya 2013-02-04 Skip cassandra_qcache.test if there is no...
    Sergey Petrunya 2013-02-04 [merge] Merge fix for MDEV-3997.
    Sergey Petrunya 2013-02-04 MDEV-3997: Querying a Cassandra table on ...
    Sergey Petrunya 2013-02-04 Fix mysql-test/suite/plugins/suite.pm to ...
    sanja@askmonty.org 2013-02-04 [merge] merge
    sanja@askmonty.org 2013-02-04 MDEV-4091: Dynamic columns C functions...
    knielsen@knielse... 2013-01-31 MDEV-4121: binlog.binlog_row_binlog s...
    Sergei Golubchik 2013-02-02 remove "invisible sysvars" oxymoron
    Sergei Golubchik 2013-01-31 fix for a valgrind builds.
    Sergei Golubchik 2013-01-31 avoid mtr errors for --plugin-add=EXAMPL...
    Sergei Golubchik 2013-01-31 skip cassandra.test unless cassandra is ...
    Sergei Golubchik 2013-01-31 [merge] 10.0-base merge
    Sergei Golubchik 2013-01-30 don't disable the cassandra engine by de...
    knielsen@knielse... 2013-01-30 MDEV-3984: Double free of Master_info...
    Sergei Golubchik 2013-01-29 move cassandra-related code from cmake/c...
    Sergei Golubchik 2013-01-29 buildbot fixes for storage/cassandra/CMa...
    Sergei Golubchik 2013-01-29 [merge] 5.5 merge
    Sergei Golubchik 2013-01-29 more changes for fedora18
    Sergei Golubchik 2013-01-29 fix 'compat' rpm for fedora18
    Vladislav Vaintroub 2013-01-28 fix embedded build with for cmake 2.6...
    timour@askmonty.org 2013-01-28 Fix for MDEV-3948, and backport of th...
    Sergei Golubchik 2013-01-28 [merge] 5.3 merge
    Sergei Golubchik 2013-01-28 [merge] 5.2 merge
    Sergei Golubchik 2013-01-28 compilation error with -Wuninitialized -...
    Sergei Golubchik 2013-01-25 [merge] 5.1 merge
    Sergei Golubchik 2013-01-25 MDEV-729 lp:998028 - Server crashes on n...
    Sergei Golubchik 2013-01-25 MDEV-759 lp:998340 - Valgrind complains ...
    Sergei Golubchik 2013-01-26 MDEV-3875 Wrong result (missing row) on ...
    sanja@askmonty.org 2013-01-25 The problem was that expression with f...
    sanja@askmonty.org 2013-01-28 MDEV-4091: Dynamic columns C functions...
    Vladislav Vaintroub 2013-01-26 [merge] Merge MDEV-3842, MDEV-3923, M...
    Vladislav Vaintroub 2013-01-25 fix embedded
    Vladislav Vaintroub 2013-01-25 Fix embedded build
    Vladislav Vaintroub 2013-01-25 MDEV-3842,  MDEV-3923 :
    Vladislav Vaintroub 2013-01-25 MDEV-3971  : problems installing Mari...
    Michael Widenius 2013-01-26 [merge] Automatic merge
    Michael Widenius 2013-01-25 Fixed MDEV-3890: Server crash inserting ...
    Sergei Golubchik 2013-01-25 [merge] 5.3 merge
    Sergei Golubchik 2013-01-25 [merge] 5.2 merge
    Sergei Golubchik 2013-01-25 MDEV-4040 Replace deprecated SET OPTION ...
    Sergei Golubchik 2013-01-25 MDEV-3909 remote user enumeration
    Sergei Golubchik 2013-01-25 report "using password: YES/NO" correctl...
    Sergei Golubchik 2013-01-25 MDEV-3915 COM_CHANGE_USER allows fast pa...
    Igor Babaev 2013-01-23 [merge] Merge 5.3->5.5
    Igor Babaev 2013-01-21 [merge] Merge 5.2->5.3
    Igor Babaev 2013-01-21 [merge] Merge 5.1->5.2
    Igor Babaev 2013-01-21 [merge] Merge.
    Igor Babaev 2013-01-21 Fixed bug mdev-4063 (bug #56927).
    Sergei Golubchik 2013-01-21 MDEV-4029 SELECT on information_schema u...
    Igor Babaev 2013-01-19 Corrected the test case for bug mdev-3938.
    Igor Babaev 2013-01-16 Corrected the fix for bug mdev-3938.
    Igor Babaev 2013-01-15 Fixed bug mdev-3938.
    sanja@montyprogr... 2013-01-16 MDEV-4056 fix.
    timour@askmonty.org 2013-01-17 MDEV-3900 Optimizer difference betwee...
    sanja@montyprogr... 2013-01-17 backport of:
    sanja@montyprogr... 2013-01-16 MDEV-3988 fix.
    Igor Babaev 2013-01-11 Fixed bug mdev-4025.
    Vladislav Vaintroub 2013-01-11 MDEV-4020 : Make sure strmov symbol i...
    Sergei Golubchik 2013-01-23 remove one particularly stupid test 
    Sergei Golubchik 2013-01-21 MDEV-4069 thd_wait_end does not called i...
    sanja@montyprogr... 2013-01-22 Fixed typo in the function name.
    sanja@montyprogr... 2013-01-21 MDEV-3873: fixed functions absend in ...
    Sergei Golubchik 2013-01-20 fix a strict aliasing warning - remove a...
    Sergei Golubchik 2013-01-20 MDEV-3952 Incompatible change in MariaDB...
    Sergei Golubchik 2013-01-20 MDEV-3934 Assertion `((keypart_map+1) & ...
    Sergei Golubchik 2013-01-20 MDEV-4029 SELECT on information_schema u...
    Sergei Golubchik 2013-01-19 MDEV-3832 MariaDB conflicts with package...
    Sergei Golubchik 2013-01-18 MDEV-633 lp:1024058 - mysqld XA crash in...
    Sergei Golubchik 2013-01-18 simplify THD::binlog_setup_trx_data() usage
    Sergei Golubchik 2013-01-18 MDEV-3908 crash in multi-table delete an...
    Sergei Golubchik 2013-01-18 MDEV-4065 thd_kill_statement service
    Vladislav Vaintroub 2013-01-18 Fix Windows installers' bootstrapper ...
    Michael Widenius 2013-01-17 Don't reset maybe_null in update_used_ta...
    Michael Widenius 2013-01-17 Fixed compiler warning
    Sergei Golubchik 2013-01-16 [merge] xtradb merge. Percona-Server-5.5...
    Sergei Golubchik 2013-01-15 Percona-Server-5.5.28-rel29.3
    Sergei Golubchik 2013-01-15 Test case and a different fix for MySQL ...
    Sergei Golubchik 2013-01-15 small cleanups
    Sergei Golubchik 2013-01-15 backport a test case for a 5.5 bug fix f...
    Sergei Golubchik 2013-01-15 [merge] mysql-5.5.29 merge
    Dmitry Lenev 2012-12-10 Bug #15954896 "SP, MULTI-TABLE DELETE AND LO...
    mysql-builder@or... 2012-12-07 
    Harin Vadodaria 2012-12-06 Bug#15912213: BUFFER OVERFLOW IN ACL_GET()
    Gleb Shchepa 2012-12-05 Bug #15948123: SERVER WORKS INCORRECT WITH L...
    Gleb Shchepa 2012-12-05 Bug #15948123: SERVER WORKS INCORRECT WITH L...
    Joerg Bruehe 2012-11-08 Building RPMs for ULN:
    Joerg Bruehe 2012-11-08 Placement change:
    Tor Didriksen 2012-11-01 [merge] merge 5.1 => 5.5
    Venkata Sidagam 2012-10-31 BUG#13556441: CHECK AND REPAIR TABLE SHOU...
    Ashish Agarwal 2012-10-31 [merge] BUG#14485479: Merge into mysql-5.5...
    Ashish Agarwal 2012-10-31 BUG#14485479: INSTALL AUDIT PLUGIN HANGS I...
    Anirudh Mangipudi 2012-10-30 [merge] BUG#11754894: MYISAMCHK ERROR H...
    Anirudh Mangipudi 2012-10-30 [merge] BUG#11754894: MYISAMCHK ERROR H...
    Anirudh Mangipudi 2012-10-30 BUG#11754894: MYISAMCHK ERROR HAS INCOR...
    Shivji Kumar Jha 2012-10-30 [merge] BUG#14659685: main.mysqlbinlog_r...
    mysql-builder@or... 2012-10-29 
    mysql-builder@or... 2012-10-29 [merge] 
    mysql-builder@or... 2012-10-29 
    Alexander Nozdrin 2012-10-29 [merge] Merge from 5.1.
    Tor Didriksen 2012-10-24 Bug#14737559 BZR JOIN PLUGIN TREES INTO INT...
    Tor Didriksen 2012-10-23 [merge] local merge
    Tor Didriksen 2012-10-23 Use MESSAGE(STATUS ...) as we don't want an...
    Marko Mäkelä 2012-10-22 [merge] Merge mysql-5.1 to mysql-5.5.
    Nuno Carvalho 2012-10-21 [merge] BUG#14629727: USER_VAR_EVENT IS MIS...
    Nuno Carvalho 2012-10-21 [merge] BUG#14629727: USER_VAR_EVENT IS MIS...
    Nuno Carvalho 2012-10-21 [merge] BUG#14629727: USER_VAR_EVENT IS MIS...
    Nuno Carvalho 2012-10-12 [merge] BUG#14629727: USER_VAR_EVENT IS MIS...
    Joerg Bruehe 2012-10-19 Fix formatting in 'INFO_BIN' on Windows - ba...
    Joerg Bruehe 2012-10-19 [merge] Upmerge a backport - empty
    Annamalai Gurusami 2012-10-19 Bug #14226171  EXCESSIVE ROW LOCKING W...
    Neeraj Bisht 2012-10-18 [merge] Bug#13726751 - 8 BYTE MEMORY LEAK IN...
    Marko Mäkelä 2012-10-18 [merge] Merge mysql-5.1 to mysql-5.5.
    Krunal Bauskar 2012-10-17 [merge] merge from mysql-5.1 -> mysql-5.5
    Krunal Bauskar 2012-10-17 removing .... will re-add using merge. for...
    Tatjana Azundris... 2012-10-17 [merge] NULL merge
    mysql-builder@or... 2012-10-17 [merge] 
    mysql-builder@or... 2012-08-27 
    mysql-builder@or... 2012-08-22 
    mysql-builder@or... 2012-08-22 
    mysql-builder@or... 2012-08-09 
    mysql-builder@or... 2012-08-09 
    mysql-builder@or... 2012-08-08 
    mysql-builder@or... 2012-07-25 
    mysql-builder@or... 2012-07-24 
    mysql-builder@or... 2012-07-23 
    mysql-builder@or... 2012-07-23 
    mysql-builder@or... 2012-07-20 
    mysql-builder@or... 2012-07-19 
    mysql-builder@or... 2012-07-19 
    mysql-builder@or... 2012-07-18 
    mysql-builder@or... 2012-07-17 
    mysql-builder@or... 2012-06-28 
    mysql-builder@or... 2012-06-22 
    mysql-builder@or... 2012-06-21 
    mysql-builder@or... 2012-06-20 
    mysql-builder@or... 2012-06-20 
    mysql-builder@or... 2012-06-19 
    mysql-builder@or... 2012-06-11 
    mysql-builder@or... 2012-06-08 
    mysql-builder@or... 2012-06-04 
    mysql-builder@or... 2012-04-28 
    mysql-builder@or... 2012-02-16 
    mysql-builder@or... 2011-06-28 
    mysql-builder@or... 2011-06-09 
    mysql-builder@or... 2011-04-18 
    mysql-builder@or... 2011-03-18 
    mysql-builder@or... 2011-03-11 
    mysql-builder@or... 2011-03-05 
    mysql-builder@or... 2011-03-04 
    mysql-builder@or... 2011-03-02 
    mysql-builder@or... 2011-03-02 
    mysql-builder@or... 2011-03-02 
    mysql-builder@or... 2011-03-01 
    mysql-builder@or... 2011-02-22 
    mysql-builder@or... 2011-02-22 
    mysql-builder@or... 2011-02-14 
    mysql-builder@or... 2011-02-09 [merge] 
    mysql-builder@or... 2011-02-09 
    mysql-builder@or... 2011-02-09 
    mysql-builder@or... 2011-02-08 
    mysql-builder@or... 2011-02-08 
    mysql-builder@or... 2011-02-09 
    mysql-builder@or... 2011-02-05 
    mysql-builder@or... 2010-12-29 
    mysql-builder@or... 2010-12-29 
    mysql-builder@or... 2010-12-28 
    mysql-builder@or... 2010-12-27 
    mysql-builder@or... 2010-09-06 
    mysql-builder@or... 2010-08-09 
    mysql-builder@or... 2010-06-23 
    mysql-builder@or... 2010-06-09 
    mysql-builder@or... 2010-06-08 
    mysql-builder@or... 2012-02-16 
    mysql-builder@or... 2012-01-31 
    mysql-builder@or... 2012-01-26 
    mysql-builder@or... 2011-09-08 
    mysql-builder@or... 2011-09-08 
    mysql-builder@or... 2011-09-28 
    mysql-builder@or... 2011-09-01 
    mysql-builder@or... 2011-08-30 
    mysql-builder@or... 2011-08-26 
    mysql-builder@or... 2011-08-24 
    mysql-builder@or... 2011-08-18 
    mysql-builder@or... 2011-07-22 
    mysql-builder@or... 2011-05-20 
    mysql-builder@or... 2011-03-22 
    mysql-builder@or... 2011-01-21 
    mysql-builder@or... 2011-01-20 
    mysql-builder@or... 2011-01-19 
    mysql-builder@or... 2011-01-19 
    mysql-builder@or... 2011-01-19 
    mysql-builder@or... 2011-01-13 
    mysql-builder@or... 2011-01-13 
    mysql-builder@or... 2011-01-07 [merge] 
    mysql-builder@or... 2011-01-06 
    mysql-builder@or... 2011-01-06 
    mysql-builder@or... 2010-11-30 
    mysql-builder@or... 2010-11-25 
    mysql-builder@or... 2010-11-25 
    mysql-builder@or... 2010-11-25 
    mysql-builder@or... 2010-11-25 
    mysql-builder@or... 2012-08-28 
    mysql-builder@or... 2012-07-25 
    mysql-builder@or... 2012-03-19 
    mysql-builder@or... 2011-12-21 
    mysql-builder@or... 2011-09-21 [merge] 
    mysql-builder@or... 2011-08-19 [merge] 
    mysql-builder@or... 2011-08-18 
    mysql-builder@or... 2011-08-15 
    mysql-builder@or... 2011-07-28 
    mysql-builder@or... 2011-07-26 
    mysql-builder@or... 2011-07-26 
    mysql-builder@or... 2011-06-20 
    mysql-builder@or... 2011-06-14 
    mysql-builder@or... 2011-06-11 
    mysql-builder@or... 2011-06-10 
    mysql-builder@or... 2011-06-10 
    mysql-builder@or... 2011-06-10 
    mysql-builder@or... 2011-06-09 
    mysql-builder@or... 2011-06-06 
    mysql-builder@or... 2011-06-03 
    mysql-builder@or... 2011-06-02 
    mysql-builder@or... 2011-06-01 
    mysql-builder@or... 2011-06-01 
    mysql-builder@or... 2011-06-01 
    mysql-builder@or... 2011-06-01 
    mysql-builder@or... 2011-06-01 
    mysql-builder@or... 2011-06-01 
    mysql-builder@or... 2011-06-01 
    mysql-builder@or... 2011-05-30 
    mysql-builder@or... 2011-05-30 
    mysql-builder@or... 2011-05-30 
    mysql-builder@or... 2011-05-30 
    mysql-builder@or... 2011-05-30 
    mysql-builder@or... 2011-05-26 
    mysql-builder@or... 2011-05-26 
    mysql-builder@or... 2011-05-26 
    mysql-builder@or... 2011-05-26 
    mysql-builder@or... 2011-05-26 
    mysql-builder@or... 2011-05-25 
    mysql-builder@or... 2011-05-25 
    mysql-builder@or... 2011-05-25 
    mysql-builder@or... 2011-05-25 
    mysql-builder@or... 2011-05-25 
    mysql-builder@or... 2011-05-25 
    mysql-builder@or... 2012-10-17 
    mysql-builder@or... 2012-10-16 
    mysql-builder@or... 2012-09-21 
    mysql-builder@or... 2011-11-17 
    mysql-builder@or... 2011-09-28 
    mysql-builder@or... 2011-09-28 
    mysql-builder@or... 2011-09-21 [merge] 
    mysql-builder@or... 2011-09-08 
    mysql-builder@or... 2011-09-07 
    mysql-builder@or... 2011-09-07 
    mysql-builder@or... 2011-09-07 [merge] 
    mysql-builder@or... 2011-09-02 
    mysql-builder@or... 2011-09-01 
    mysql-builder@or... 2011-09-01 
    mysql-builder@or... 2011-05-20 
    mysql-builder@or... 2011-04-28 
    mysql-builder@or... 2011-04-28 
    mysql-builder@or... 2011-02-04 
    mysql-builder@or... 2010-11-29 
    mysql-builder@or... 2010-11-27 
    mysql-builder@or... 2010-11-23 
    mysql-builder@or... 2010-11-18 
    mysql-builder@or... 2010-11-18 
    mysql-builder@or... 2010-11-18 
    mysql-builder@or... 2010-11-18 
    mysql-builder@or... 2010-10-29 
    mysql-builder@or... 2010-10-29 
    mysql-builder@or... 2010-10-16 
    mysql-builder@or... 2010-10-16 
    mysql-builder@or... 2010-10-16 
    mysql-builder@or... 2010-10-15 
    mysql-builder@or... 2010-10-15 
    mysql-builder@or... 2010-10-15 
    mysql-builder@or... 2010-10-15 
    mysql-builder@or... 2010-10-14 
    mysql-builder@or... 2010-10-14 
    mysql-builder@or... 2010-10-13 
    mysql-builder@or... 2010-10-12 
    mysql-builder@or... 2010-10-12 
    mysql-builder@or... 2010-10-12 
    Yasufumi Kinoshita 2012-10-17 [merge] Bug #13702112 : WAIT_FOR_READ ...
    Tatjana Azundris... 2012-10-17 [merge] Bug#11764559: UMASK IS IGNORE...
    Neeraj Bisht 2012-10-16 [merge] Bug#11745891 - LAST_INSERT(ID) DOES ...
    mysql-builder@or... 2012-10-16 
    Marko Mäkelä 2012-10-16 [merge] Merge mysql-5.1 to mysql-5.5.
    Krunal Bauskar 2012-10-15 removed warning message as they have chang...
    Krunal Bauskar 2012-10-15 bug#14704286
    Marc Alff 2012-10-12 [merge] Merge mysql-5.1 --> mysql-5.5
    Vasil Dimov 2012-10-10 [merge] Null merge mysql-5.1 -> mysql-5.5 (th...
    Vasil Dimov 2012-10-09 [merge] Merge mysql-5.1 -> mysql-5.5
    Harin Vadodaria 2012-10-09 Bug #14211140: CRASH WHEN GRANTING OR REV...
    Annamalai Gurusami 2012-10-09 Fixing a compilation issue. 
    Praveenkumar Hul... 2012-10-08 Bug#11756600 - SLAVE THREAD CAN CRASH...
    Annamalai Gurusami 2012-10-08 Bug #14036214 MYSQLD CRASHES WHEN EXEC...
    Marko Mäkelä 2012-10-08 [merge] Merge mysql-5.1 to mysql-5.5.
    Jon Olav Hauglid 2012-10-04 Bug#14640599 MEMORY LEAK WHEN EXECUTING ...
    Tor Didriksen 2012-10-03 Bug#13713525 CREATE_INITIAL_DB.CMAKE IS FAI...
    Jon Olav Hauglid 2012-10-03 Bug#14495351: CRASH IN HA_PARTITION::HAN...
    Mattias Jonsson 2012-09-10 Bug#14495351: CRASH IN HA_PARTITION::HAND...
    Serge Kozlov 2012-10-02 BUG#12604949. Increased timeout for switchin...
    Tor Didriksen 2012-10-01 [merge] merge 5.1 => 5.5
    Joerg Bruehe 2012-10-01 [merge] Empty upmerge of 5.1.66 into 5.5
    hery.ramilison@o... 2012-10-01 Merge from mysql-5.5.28-release
    Annamalai Gurusami 2012-09-28 [merge] Merge from mysql-5.1 to mysql-...
    mysql-builder@or... 2012-09-27 
    Akhila Maddukuri 2012-09-27 Description:
    mysql-builder@or... 2012-09-26 [merge] 
    Akhila Maddukuri 2012-09-26 [merge] Description:
    Tor Didriksen 2012-09-25 [merge] merge 5.1 => 5.5
    mysql-builder@or... 2012-09-25 [merge] 
    mysql-builder@or... 2012-09-25 [merge] 
    Jon Olav Hauglid 2012-09-25 [merge] Merge from mysql-5.1 to mysql-5.5
    Raghav Kapoor 2012-09-25 [merge] BUG#13864642: DROP/CREATE USER BEHA...
    Rohit Kalhans 2012-09-23 [merge] bug#14548159: upmerge from mysql-5....
    Rohit Kalhans 2012-09-22 [merge] upmerge to bug#14548159
    Nirbhay Choubey 2012-09-21 [merge] Merge of fix for Bug#14645196 fro...
    Joerg Bruehe 2012-09-21 [merge] Merge changes for ULN RPMs into main...
    Joerg Bruehe 2012-09-18 Spec file for ULN RPMs:
    Joerg Bruehe 2012-07-26 Spec file: Declare conflicts with the ULN RPMs.
    Joerg Bruehe 2012-07-26 ULN spec file: Some comment or message text ...
    Joerg Bruehe 2012-07-26 Spec file: transfer the 'runselftest' macro ...
    Joerg Bruehe 2012-07-26 Spec file for ULN RPMs:
    Joerg Bruehe 2012-07-26 Spec file polishing: Handle 'MySQL-*' and 'm...
    Joerg Bruehe 2012-07-25 [merge] Merge 5.5.27 into the tree for ULN R...
    Joerg Bruehe 2012-06-14 Copyright text in the spec file for ULN RPMs.
    Joerg Bruehe 2012-06-12 One file still missing for ULN RPMs.
    Joerg Bruehe 2012-06-12 Still work on getting the "SPECIFIC-ULN/" fi...
    Joerg Bruehe 2012-06-11 Protect traditional RPMs that "SPECIFIC-ULN/...
    Joerg Bruehe 2012-06-11 cmake syntax error: missed ${...}
    Joerg Bruehe 2012-06-11 Files in "SPECIFIC-ULN" need to be mentioned...
    Joerg Bruehe 2012-06-11 Adape "SPECIFIC-ULN/mysql-5.5-libdir.patch" ...
    Joerg Bruehe 2012-06-11 More changes to supporting the build of RPMs...
    Joerg Bruehe 2012-06-08 First version of supporting the build of RPM...
    Inaam Rana 2012-09-20 Bug#14594600 ASSERT FROM DROP TABLE CONCURRENT...
    mysql-builder@or... 2012-09-20 
    Marko Mäkelä 2012-09-20 [merge] Null merge mysql-5.1 to mysql-5.5.
    Marko Mäkelä 2012-09-20 Do not try innodb_change_buffering_debug=2.
    Marko Mäkelä 2012-09-19 [merge] Merge mysql-5.1 to mysql-5.5.
    Tor Didriksen 2012-09-18 Bug#14542543 FIX BUG #12694872 IN 5.5
    Marko Mäkelä 2012-09-17 [merge] Null merge mysql-5.1 to mysql-5.5.
    Marko Mäkelä 2012-09-17 [merge] Merge mysql-5.5 to working copy.
    Harin Vadodaria 2012-09-17 [merge] Bug#11753779: MAX_CONNECT_ERRORS ...
    Marko Mäkelä 2012-09-17 [merge] Merge mysql-5.1 to mysql-5.5.
    Sujatha Sivakumar 2012-09-17 [merge] merge from 5.1 to 5.5
    mysql-builder@or... 2012-09-12 [merge] 
    Tor Didriksen 2012-09-12 [merge] merge 5.1 => 5.5
    Georgi Kodinov 2012-09-11 [merge] merge
    Jon Olav Hauglid 2012-09-11 WL#6454: Deprecate SHOW AUTHORS and SHOW...
    Georgi Kodinov 2012-08-27 Bug #13548161: MYSQLD_SAFE IMPROVEMENTS FO...
    Georgi Kodinov 2012-08-24 Bug #14181049: MYSQL_INSTALL_DB.PL CREATES...
    Andrei Elkin 2012-09-10 [merge] merge bug14597605 to 5.5.
    Marc Alff 2012-09-07 [merge] Local merge
    Marc Alff 2012-09-07 [merge] local merge
    Akhil Mohan 2012-09-07 [merge] Empty version change upmerge
    Marc Alff 2012-09-07 Bug#14072995 - PERFSCHEMA.FUNC_FILE_IO FAILS WI...
    Marc Alff 2012-09-07 Bug#14100113 - PERFSCHEMA.FUNC_MUTEX FAILS WITH...
    Tor Didriksen 2012-09-07 Bug#14593123 CONFIGURE.PL WITH CMAKE2.8 BRE...
    Tor Didriksen 2012-09-05 [merge] merge 5.1 => 5.5
    Annamalai Gurusami 2012-09-04 Bug #14500557 CRASH WHEN USING LONG IN...
    Annamalai Gurusami 2012-09-03 [merge] Merge from mysql-5.1 to mysql-...
    Annamalai Gurusami 2012-09-01 [merge] Merge from mysql-5.1 to mysql-...
    mysql-builder@or... 2012-08-31 [merge] 
    Marko Mäkelä 2012-08-30 [merge] Merge mysql-5.1 to mysql-5.5.
    Jorgen Loland 2012-08-30 [merge] Null-merge from 5.1
    mysql-builder@or... 2012-08-29 
    Tor Didriksen 2012-08-28 [merge] merge 5.5.28-release => 5.5
    mysql-builder@or... 2012-08-27 
    Aditya A 2012-08-27 Bug#14145950 AUTO_INCREMENT ON DOUBLE WILL FAIL ...
    hery.ramilison@o... 2012-08-24 Raise version number after cloning 5....
    Sergei Golubchik 2013-01-15 update debian patch to apply
    Sergei Golubchik 2013-01-15 [merge] 5.3 merge
    Sergei Golubchik 2013-01-10 [merge] 5.2->5.3 merge
    Sergei Golubchik 2013-01-10 [merge] 5.1 merge
    Sergei Golubchik 2013-01-09 [merge] mysql-5.1.67 merge
    Joerg Bruehe 2012-12-07 Last-minute fix to 5.1.67,
    akhil.mohan@orac... 2012-11-29 applying patch for BUG15912213
    Tor Didriksen 2012-11-01 Bug#14840488 VALGRIND ERRORS IN MYSQL_CLIEN...
    Anirudh Mangipudi 2012-10-30 BUG#11754894: MYISAMCHK ERROR HAS INCOR...
    Shivji Kumar Jha 2012-10-30 BUG#14659685 - main.mysqlbinlog_row_myis...
    mysql-builder@or... 2012-10-29 
    Alexander Nozdrin 2012-10-29 Fix sp_notembedded.test.
    Marko Mäkelä 2012-10-22 Backport from 5.6: Bug#14769820 ASSERT FLEN ...
    Nuno Carvalho 2012-10-21 BUG#14629727: USER_VAR_EVENT IS MISSING RAN...
    Nuno Carvalho 2012-10-21 [merge] BUG#14629727: USER_VAR_EVENT IS MIS...
    Nuno Carvalho 2012-10-12 BUG#14629727: USER_VAR_EVENT IS MISSING RAN...
    Joerg Bruehe 2012-10-19 [merge] Automerge into main 5.1
    Joerg Bruehe 2012-09-11 Backport this change from MySQL 5.5 to 5.1:
    Neeraj Bisht 2012-10-18 Bug#13726751 - 8 BYTE MEMORY LEAK IN DO_SAVE...
    Marko Mäkelä 2012-10-18 Bug#14758405: ALTER TABLE: ADDING SERIAL NUL...
    Krunal Bauskar 2012-10-17 bug#14765606: ensure select is active befo...
    Tatjana Azundris... 2012-10-17 [merge] Bug#11764559: UMASK IS IGNORE...
    Tatjana Azundris... 2012-10-17 Bug#11764559: UMASK IS IGNORED BY ERR...
    Yasufumi Kinoshita 2012-10-17 Bug #13702112 : WAIT_FOR_READ IS STUCK...
    Neeraj Bisht 2012-10-16 Bug#11745891 - LAST_INSERT(ID) DOES NOT SUPP...
    Marko Mäkelä 2012-10-16 Bug#14729221 IN-PLACE ALTER TABLE REPORTS ''...
    Krunal Bauskar 2012-10-15 bug#14704286
    Marc Alff 2012-10-12 Bug#14629232 SECURITY VULNERABILITY WITH SHOW P...
    Vasil Dimov 2012-10-10 Fix compilation error in debug mode:
    Vasil Dimov 2012-10-09 Port the test for Bug#14708715 from 5.1/innod...
    Vasil Dimov 2012-10-09 Update the ChangeLog with the fix of Bug#1470...
    Vasil Dimov 2012-10-09 Fix Bug#14708715 CREATE TABLE MEMORY LEAK ON ...
    Marko Mäkelä 2012-10-08 Bug#14731482 UPDATE OR DELETE CORRUPTS A REC...
    Tor Didriksen 2012-10-01 Bug#14683676 ENDLESS MEMORY CONSUMPTION IN ...
    Joerg Bruehe 2012-10-01 [merge] Merge 5.1.66 into main 5.1
    Annamalai Gurusami 2012-09-28 Bug #13249921 ASSERT !BPAGE->FILE_PAGE...
    mysql-builder@or... 2012-09-26 
    Akhila Maddukuri 2012-09-26 Description:
    Tor Didriksen 2012-09-25 Backport
    mysql-builder@or... 2012-09-25 
    mysql-builder@or... 2012-09-25 
    Jon Olav Hauglid 2012-09-25 Bug#14621627 THREAD CACHE IS UNFAIR
    Raghav Kapoor 2012-09-25 BUG#13864642: DROP/CREATE USER BEHAVING ODDLY 
    Rohit Kalhans 2012-09-23 BUG#14548159: Followup patch to fix some is...
    Rohit Kalhans 2012-09-22 BUG#14548159: NUMEROUS CASES OF INCORRECT I...
    Nirbhay Choubey 2012-09-21 Bug#14645196 MYSQL CLIENT'S USE COMMAND F...
    mysql-builder@or... 2012-09-20 
    Marko Mäkelä 2012-09-19 Bug#14636528 INNODB CHANGE BUFFERING IS NOT ...
    Marko Mäkelä 2012-09-17 [merge] Merge mysql-5.1 to working copy.
    Harin Vadodaria 2012-09-17 Bug#11753779: MAX_CONNECT_ERRORS WORKS ON...
    Marko Mäkelä 2012-09-17 Bug#12701488 ASSERT PAGE_ZIP_VALIDATE, UNIV_...
    Sujatha Sivakumar 2012-09-17 Bug#11750014:ASSERTION TRX_DATA->EMPTY(...
    mysql-builder@or... 2012-09-12 
    Tor Didriksen 2012-09-12 Backport Bug#13724099
    Andrei Elkin 2012-09-10 [merge] merge bug14597605 to the main repo.
    Andrei Elkin 2012-09-10 Bug#14597605 Issue with Null-value user on s...
    akhil.mohan@orac... 2012-09-07 Raise version number after cloning 5....
    Sergei Golubchik 2012-12-04 proactive s/strmov/strnmov/ in sql_acl.c...
    Vladislav Vaintroub 2012-12-21 [merge] merge
    Vladislav Vaintroub 2012-12-21 Support VS2012. Exclude compiler-defi...
    Vladislav Vaintroub 2012-12-21 [merge] merge
    Vladislav Vaintroub 2012-12-06 MDEV-3918: myisamchk  bogus error for...
    Sergei Golubchik 2012-12-11 one-byte overflow with old passwords
    Vladislav Vaintroub 2012-11-26 Fix broken feedback plugin after MDEV...
    Vladislav Vaintroub 2012-11-23 MDEV-712  -  LP:1024239 - Mysqlclient...
    Vladislav Vaintroub 2012-11-22 [merge] merge 5.1
    Vladislav Vaintroub 2012-11-22 Feedback plugin now recognizes  Windo...
    Sergei Golubchik 2013-01-08 MDEV-3942 FROM_DAYS(<timestamp column>) ...
    sanja@askmonty.org 2012-12-28 MDEV-3873 & MDEV-3876 & MDEV-3912 : Wr...
    timour@askmonty.org 2012-12-19 MDEV-3928: Assertion `example' failed...
    sanja@montyprogr... 2012-12-05 MDEV-3914 fix.
    Sergei Golubchik 2012-11-23 bump the version to 5.3.11
    Igor Babaev 2012-11-22 [merge] Merge
    Igor Babaev 2012-11-21 Fixed LP bug #1002146 (bug mdev-645).
    Sergei Golubchik 2013-01-15 remove thd_mark_as_hard_kill()
    timour@askmonty.org 2013-01-15 Fix for bug MDEV-3992, second attempt
    timour@askmonty.org 2013-01-14 Fix for bug MDEV-3992
    Michael Widenius 2013-01-11 Buildbot fixes and cleanups:
    Michael Widenius 2013-01-11 Fixed crashing bug in GROUP_CONCAT with ...
    Michael Widenius 2013-01-11 Fixed problem with failing mysql_upgrade...
    Michael Widenius 2013-01-11 Fixed MDEV-4013: Password length in repl...
    Michael Widenius 2013-01-11 Fixed some race conditons and bugs relat...
    Michael Widenius 2013-01-10 Fix for MDEV-4009: main.delayed sporadic...
    Sergei Golubchik 2013-01-09 MDEV-3846 REFRESH_CHECKPOINT and REFRESH...
    Sergei Golubchik 2013-01-09 MDEV-3985 crash: uninstall soname 'a'
    Sergei Golubchik 2013-01-08 MDEV-3883 Show global status not in order
    Sergei Golubchik 2013-01-08 MDEV-3987 uninitialized read in Item_con...
    Sergei Golubchik 2013-01-07 non-functional cleanup, clarifying CONVE...
    Sergei Golubchik 2013-01-28 my_alloca() when it's mapped to malloc()...
    Sergei Golubchik 2013-01-24 fix ha_cassandra to compile
    Sergei Golubchik 2013-01-24 workaround for incorrectly (?) generated...
    Sergei Golubchik 2013-01-24 race conditions in show_explain.test
    Sergei Golubchik 2013-01-23 main.partition_myisam crashes in embedded.
    Sergei Golubchik 2013-01-23 fix the failing federated.federated_inno...
    Sergei Golubchik 2013-01-23 32-bit fix: first cast the value to a si...
    Sergei Golubchik 2013-01-23 test suite fixes
    Sergei Golubchik 2013-01-23 cleanup:
    Sergei Golubchik 2013-01-23 cleanup:
    Sergei Golubchik 2013-01-23 cleanup: remove unused init_dynamic_arra...
    Sergei Golubchik 2013-01-23 cleanup: use MYF() for mysys flags
    Michael Widenius 2013-01-23 MDEV-4011 Added per thread memory counti...
    Jani Tolonen 2013-01-23 MDEV-3931 Cassandra SE packaging
    knielsen@knielse... 2013-01-21 Fix uninitialised variable in binlog ...
    knielsen@knielse... 2013-01-16 Fix missing #include
    Elena Stepanova 2013-01-16 [merge] MDEV-3990: engine tests went out ...
    Elena Stepanova 2013-01-13 MDEV-3990: engine tests went out of sync ...
    sanja@askmonty.org 2013-01-14 Compiler warning fixed.
    Igor Babaev 2013-01-13 [merge] Merged the fix for bug mdev-4019.
    Igor Babaev 2013-01-13 Fixed bug mdev-4019.
    sanja@askmonty.org 2013-01-11 Windows compiler warnings fix.
    sanja@askmonty.org 2013-01-11 Fix windows compiler warnings.
    sanja@askmonty.org 2013-01-10 fixed crossplatform double values repr...
    Sergey Petrunya 2013-01-10 MDEV-3982: show_explain.test fails, times...
    sanja@askmonty.org 2013-01-10 32 bit systems warnings fixed.
    sanja@askmonty.org 2013-01-10 append_identifier() declaration fixed.
    sanja@askmonty.org 2013-01-10 fix cassandra SE test to be working in...
    sanja@askmonty.org 2013-01-10 Make cassandra not built by default
    sanja@askmonty.org 2013-01-10 [merge] Cassandra SE merge
    sanja@askmonty.org 2013-01-10 Make cassandra module and do not load ...
    sanja@askmonty.org 2013-01-09 fixed feature counter.
    sanja@askmonty.org 2013-01-09 The library interface fixed.
    sanja@askmonty.org 2013-01-09 MDEV-4005 fix.
    Sergey Petrunya 2012-12-24 Post-merge fixes:
    sanja@askmonty.org 2012-12-23 [merge] pre-merge
    sanja@askmonty.org 2012-12-23 Post-post review fixes.
    sanja@askmonty.org 2012-12-23 backport to 5.5 dyncol changes and nam...
    Sergey Petrunya 2012-12-20 Cassandra Storage Engine: Address review ...
    Sergey Petrunya 2012-12-20 Cassandra Storage Engine: Address review ...
    Sergey Petrunya 2012-12-20 Cassandra Storage Engine: 
    sanja@montyprogr... 2012-09-30 Check of deleting whole dynamic columns.
    sanja@montyprogr... 2012-09-29 Fix of MDEV-565: Server crashes in ha...
    Sergey Petrunya 2012-09-28 Include cassandra storage engine in tarballs
    Sergey Petrunya 2012-09-28 Fix compile: expect Thrift where it is at...
    Sergey Petrunya 2012-09-28 Fix compile warnings
    sanja@montyprogr... 2012-09-28 Ending spaces removed.
    sanja@montyprogr... 2012-09-28 MDEV-506 Cassandra dynamic columns ac...
    sanja@montyprogr... 2012-09-28 MDEV-377 Name support for dynamic col...
    Sergey Petrunya 2012-09-27 Cassandra SE: lazy connections
    Sergey Petrunya 2012-09-27 Cassandra SE
    Sergey Petrunya 2012-09-26 - Update testcases
    Sergey Petrunya 2012-09-26 Cassandra SE:
    Sergey Petrunya 2012-09-26 Cassandra SE: Add capability to retry fai...
    Sergey Petrunya 2012-09-25 Cassandra SE: more datatypes support
    Sergey Petrunya 2012-09-24 Cassandra SE: varint datatype support: 
    Sergey Petrunya 2012-09-24 Cassandra SE
    Sergey Petrunya 2012-09-22 Cassandra SE: make consistency settings u...
    Sergey Petrunya 2012-09-20 Cassandra SE:
    Sergey Petrunya 2012-09-16 Cassandra SE: 
    Sergey Petrunya 2012-09-14 MDEV-530: Cassandra SE: Locking is incorrect
    Sergey Petrunya 2012-09-14 Cassandra SE
    Sergey Petrunya 2012-09-14 Cassandra SE
    Sergey Petrunya 2012-09-12 Cassandra SE: small optimization: StringC...
    Sergey Petrunya 2012-09-12 Update test results after last cset
    Sergey Petrunya 2012-09-10 Cassandra SE: add support for reading cou...
    Sergey Petrunya 2012-09-10 Cassandra SE
    Sergey Petrunya 2012-09-07 Cassandra SE: added support for boolean t...
    Sergey Petrunya 2012-08-31 MDEV-498: Cassandra: Inserting a timestam...
    Sergey Petrunya 2012-08-31 Cassandra SE
    Sergey Petrunya 2012-08-29 Cassandra SE: fix batched insert to flush...
    Sergey Petrunya 2012-08-29 Fix for the previous cset: Field::store_T...
    Sergey Petrunya 2012-08-29 Cassandra SE: Timestamp data type support.
    Sergey Petrunya 2012-08-29 Cassandra SE
    Sergey Petrunya 2012-08-29 Cassandra storage engine: add @@rnd_batch...
    Sergey Petrunya 2012-08-28 MDEV-494, part #1: phantom row for big fu...
    Sergey Petrunya 2012-08-28 MDEV-480: TRUNCATE TABLE on a Cassandra t...
    Sergey Petrunya 2012-08-27 Cassandra storage engine: BKA support
    Sergey Petrunya 2012-08-26 Cassandra storage engine: bulk INSERT sup...
    Sergey Petrunya 2012-08-23 - Enable mapping of CHAR(n)
    Sergey Petrunya 2012-08-23 # MDEV-476: Cassandra: Server crashes in ...
    Sergey Petrunya 2012-08-21 Make ha_cassandra work with filesort().
    Sergey Petrunya 2012-08-20 Read records in batches when doing full t...
    Sergey Petrunya 2012-08-19 position() and rnd_pos() implementations.
    Sergey Petrunya 2012-08-19 MDEV-431: Cassandra storage engine
    Sergey Petrunya 2012-08-19 MDEV-431: Cassandra storage engine
    Sergey Petrunya 2012-08-18 MDEV-431: Cassandra storage engine
    Sergey Petrunya 2012-08-18 MDEV-431: Cassandra storage engine
    Sergey Petrunya 2012-08-18 MDEV-431: Cassandra storage engine
    Sergey Petrunya 2012-08-17 Initial commit for Cassandra storage engine.
This commit is contained in:
Alexander Barkov 2013-03-29 11:33:42 +04:00
commit 73d39bba95
572 changed files with 51149 additions and 6954 deletions

View File

@ -27,6 +27,11 @@ then
configure="$configure --print"
fi
if test "$AM_EXTRA_MAKEFLAGS" = "VERBOSE=1" -o "$verbose_make" = "1"
then
configure="$configure --verbose"
fi
commands="\
/bin/rm -rf configure;
/bin/rm -rf CMakeCache.txt CMakeFiles/
@ -45,7 +50,7 @@ if [ -z "$just_configure" -a -z "$just_clean" ]
then
commands="$commands
$make $AM_MAKEFLAGS $AM_EXTRA_MAKEFLAGS $EXTRA_MAKEFLAGS"
$make $AM_MAKEFLAGS $AM_EXTRA_MAKEFLAGS"
if [ "x$strip" = "xyes" ]
then

View File

@ -30,6 +30,11 @@ Usage: $0 [-h|-n] [configure-options]
-h, --help Show this help message.
-n, --just-print Don't actually run any commands; just print them.
-c, --just-configure Stop after running configure.
--extra-configs=xxx Add this to configure options
--extra-flags=xxx Add this C and CXX flags
--extra-cflags=xxx Add this to C flags
--extra-cxxflags=xxx Add this to CXX flags
--verbose Print out full compile lines
--with-debug=full Build with full debug(no optimizations, keep call stack).
--warning-mode=[old|pedantic|maintainer]
Influences the debug flags. Old is default.
@ -64,6 +69,8 @@ parse_options()
just_configure=1;;
-n | --just-print | --print)
just_print=1;;
--verbose)
verbose_make=1;;
-h | --help)
usage
exit 0;;
@ -89,6 +96,7 @@ just_configure=
warning_mode=
maintainer_mode=
full_debug=
verbose_make=
parse_options "$@"

View File

@ -20,6 +20,7 @@ if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 2.6)
CMAKE_POLICY(VERSION 2.8)
endif()
MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}")
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
@ -324,6 +325,7 @@ IF(NOT WITHOUT_SERVER)
IF(EXISTS ${CMAKE_SOURCE_DIR}/internal/CMakeLists.txt)
ADD_SUBDIRECTORY(internal)
ENDIF()
ADD_SUBDIRECTORY(packaging/rpm-uln)
ENDIF()
IF(UNIX)

1
TODO
View File

@ -52,7 +52,6 @@ Sergei's notes:
anders.song@greatopensource.com-20110105052107-zoab0bsf5a6xxk2y (don't binlog rolled back changes)
mysql-test/suite/perfschema/disabled.def
why --source include/have_innodb.inc in lots of tests? (with no other changes)
WTF "invisible sysvars" ?
Sys_var_tx_read_only not needed (must be the same as Sys_var_tx_isolation)
SIGNAL/RESIGNAL ?
fix mysql-test to know the difference between compiled-in innodb and compiled-in xtradb

View File

@ -4,5 +4,5 @@
#
MYSQL_VERSION_MAJOR=10
MYSQL_VERSION_MINOR=0
MYSQL_VERSION_PATCH=0
MYSQL_VERSION_PATCH=1
MYSQL_VERSION_EXTRA=

View File

@ -49,7 +49,7 @@ int completion_hash_init(HashTable *ht, uint nSize)
ht->initialized = 0;
return FAILURE;
}
init_alloc_root(&ht->mem_root, 8192, 0);
init_alloc_root(&ht->mem_root, 8192, 0, MYF(0));
ht->pHashFunction = hashpjw;
ht->nTableSize = nSize;
ht->initialized = 1;

View File

@ -1157,7 +1157,7 @@ int main(int argc,char *argv[])
}
glob_buffer.realloc(512);
completion_hash_init(&ht, 128);
init_alloc_root(&hash_mem_root, 16384, 0);
init_alloc_root(&hash_mem_root, 16384, 0, MYF(0));
bzero((char*) &mysql, sizeof(mysql));
if (sql_connect(current_host,current_db,current_user,opt_password,
opt_silent))

View File

@ -22,7 +22,7 @@
#include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
#define VER "1.2"
#define VER "1.3"
#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
@ -148,6 +148,8 @@ static struct my_option my_long_options[]=
&opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"verbose", 'v', "Display more output about the process.",
&opt_not_used, &opt_not_used, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit.", 0, 0, 0,
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"write-binlog", OPT_WRITE_BINLOG,
"All commands including mysqlcheck are binlogged. Enabled by default;"
"use --skip-write-binlog when commands should not be sent to replication slaves.",
@ -298,6 +300,11 @@ get_one_option(int optid, const struct my_option *opt,
}
add_option= 0;
break;
case 'V':
printf("%s Ver %s Distrib %s, for %s (%s)\n",
my_progname, VER, MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE);
die(0);
break;
case OPT_SILENT:
opt_verbose= 0;
add_option= 0;

View File

@ -278,8 +278,8 @@ public:
int init()
{
return init_dynamic_array(&file_names, sizeof(File_name_record),
100, 100);
return my_init_dynamic_array(&file_names, sizeof(File_name_record),
100, 100, MYF(0));
}
void init_by_dir_name(const char *dir)
@ -2393,7 +2393,7 @@ int main(int argc, char** argv)
my_init_time(); // for time functions
init_alloc_root(&s_mem_root, 16384, 0);
init_alloc_root(&s_mem_root, 16384, 0, MYF(0));
if (load_defaults("my", load_groups, &argc, &argv))
exit(1);

View File

@ -998,8 +998,10 @@ int main(int argc, char **argv)
}
if (opt_auto_repair &&
(my_init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16,64) ||
my_init_dynamic_array(&tables4rebuild, sizeof(char)*(NAME_LEN*2+2),16,64)))
(my_init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16,
64, MYF(0)) ||
my_init_dynamic_array(&tables4rebuild, sizeof(char)*(NAME_LEN*2+2),16,
64, MYF(0))))
goto end;
if (opt_alldbs)

View File

@ -1,6 +1,6 @@
/*
Copyright (c) 2000, 2012, Oracle and/or its affiliates.
Copyright (c) 2010, 2012, Monty Program Ab.
Copyright (c) 2010, 2013, Monty Program 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
@ -1182,13 +1182,13 @@ check_consistent_binlog_pos(char *binlog_pos_file, char *binlog_pos_offset)
found= 0;
while ((row= mysql_fetch_row(res)))
{
if (0 == strcmp(row[0], "binlog_snapshot_file"))
if (0 == strcmp(row[0], "Binlog_snapshot_file"))
{
if (binlog_pos_file)
strmake(binlog_pos_file, row[1], FN_REFLEN-1);
found++;
}
else if (0 == strcmp(row[0], "binlog_snapshot_position"))
else if (0 == strcmp(row[0], "Binlog_snapshot_position"))
{
if (binlog_pos_offset)
strmake(binlog_pos_offset, row[1], LONGLONG_LEN);
@ -4587,7 +4587,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
if (init_dumping(db, init_dumping_tables))
DBUG_RETURN(1);
init_alloc_root(&root, 8192, 0);
init_alloc_root(&root, 8192, 0, MYF(0));
if (!(dump_tables= pos= (char**) alloc_root(&root, tables * sizeof(char *))))
die(EX_EOM, "alloc_root failure.");

View File

@ -1660,12 +1660,12 @@ int cat_file(DYNAMIC_STRING* ds, const char* filename)
{
int fd;
size_t len;
char buff[512];
char buff[16384];
if ((fd= my_open(filename, O_RDONLY, MYF(0))) < 0)
return 1;
while((len= my_read(fd, (uchar*)&buff,
sizeof(buff), MYF(0))) > 0)
sizeof(buff)-1, MYF(0))) > 0)
{
char *p= buff, *start= buff;
while (p < buff+len)
@ -1676,7 +1676,8 @@ int cat_file(DYNAMIC_STRING* ds, const char* filename)
/* Add fake newline instead of cr and output the line */
*p= '\n';
p++; /* Step past the "fake" newline */
dynstr_append_mem(ds, start, p-start);
*p= 0;
replace_dynstr_append_mem(ds, start, p-start);
p++; /* Step past the "fake" newline */
start= p;
}
@ -1684,7 +1685,8 @@ int cat_file(DYNAMIC_STRING* ds, const char* filename)
p++;
}
/* Output any chars that migh be left */
dynstr_append_mem(ds, start, p-start);
*p= 0;
replace_dynstr_append_mem(ds, start, p-start);
}
my_close(fd, MYF(0));
return 0;
@ -4397,7 +4399,10 @@ void do_change_user(struct st_command *command)
cur_con->name, ds_user.str, ds_passwd.str, ds_db.str));
if (mysql_change_user(mysql, ds_user.str, ds_passwd.str, ds_db.str))
die("change user failed: %s", mysql_error(mysql));
handle_error(command, mysql_errno(mysql), mysql_error(mysql),
mysql_sqlstate(mysql), &ds_res);
else
handle_no_error(command);
dynstr_free(&ds_user);
dynstr_free(&ds_passwd);
@ -5174,7 +5179,7 @@ typedef struct
static st_error global_error_names[] =
{
{ "<No error>", -1U, "" },
{ "<No error>", ~0U, "" },
#include <mysqld_ername.h>
{ 0, 0, 0 }
};
@ -7288,7 +7293,7 @@ void init_win_path_patterns()
DBUG_ENTER("init_win_path_patterns");
my_init_dynamic_array(&patterns, sizeof(const char*), 16, 16);
my_init_dynamic_array(&patterns, sizeof(const char*), 16, 16, MYF(0));
/* Loop through all paths in the array */
for (i= 0; i < num_paths; i++)
@ -8901,7 +8906,7 @@ int main(int argc, char **argv)
cur_block->ok= TRUE; /* Outer block should always be executed */
cur_block->cmd= cmd_none;
my_init_dynamic_array(&q_lines, sizeof(struct st_command*), 1024, 1024);
my_init_dynamic_array(&q_lines, sizeof(struct st_command*), 1024, 1024, MYF(0));
if (my_hash_init2(&var_hash, 64, charset_info,
128, 0, 0, get_var_key, var_free, MYF(0)))
@ -8931,7 +8936,7 @@ int main(int argc, char **argv)
#endif
init_dynamic_string(&ds_res, "", 2048, 2048);
init_alloc_root(&require_file_root, 1024, 1024);
init_alloc_root(&require_file_root, 1024, 1024, MYF(0));
parse_args(argc, argv);
@ -9877,7 +9882,7 @@ struct st_replace_regex* init_replace_regex(char* expr)
/* my_malloc() will die on fail with MY_FAE */
res=(struct st_replace_regex*)my_malloc(
sizeof(*res)+expr_len ,MYF(MY_FAE+MY_WME));
my_init_dynamic_array(&res->regex_arr,sizeof(struct st_regex),128,128);
my_init_dynamic_array(&res->regex_arr,sizeof(struct st_regex), 128, 128, MYF(0));
buf= (char*)res + sizeof(*res);
expr_end= expr + expr_len;
@ -10932,7 +10937,7 @@ void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING *ds_input,
if (!*start)
DBUG_VOID_RETURN; /* No input */
my_init_dynamic_array(&lines, sizeof(const char*), 32, 32);
my_init_dynamic_array(&lines, sizeof(const char*), 32, 32, MYF(0));
if (keep_header)
{

View File

@ -46,6 +46,8 @@ SET(FEATURE_SET_large 5)
SET(FEATURE_SET_xlarge 6)
SET(FEATURE_SET_community 7)
#SET(WITH_CASSANDRA_STORAGE_ENGINE ON)
IF(FEATURE_SET)
STRING(TOLOWER ${FEATURE_SET} feature_set)
SET(num ${FEATURE_SET_${feature_set}})

View File

@ -25,14 +25,14 @@ ENDIF()
SET(CHARSETS ${DEFAULT_CHARSET} latin1 utf8 utf8mb4)
SET(CHARSETS_COMPLEX
big5 cp1250 cp932 eucjpms euckr gb2312 gbk latin1 latin2
sjis tis620 ucs2 ujis utf8 utf8mb4 utf16 utf32)
sjis tis620 ucs2 ujis utf8 utf8mb4 utf16 utf16le utf32)
SET(CHARSETS_AVAILABLE
binary armscii8 ascii big5 cp1250 cp1251 cp1256 cp1257
cp850 cp852 cp866 cp932 dec8 eucjpms euckr gb2312 gbk geostd8
greek hebrew hp8 keybcs2 koi8r koi8u
latin1 latin2 latin5 latin7 macce macroman
sjis swe7 tis620 ucs2 ujis utf8 utf8mb4 utf16 utf32)
sjis swe7 tis620 ucs2 ujis utf8 utf8mb4 utf16 utf16le utf32)
SET (EXTRA_CHARSETS "all")

View File

@ -222,6 +222,21 @@ foreach my $option (@ARGV)
$cmakeargs = $cmakeargs." -DENABLE_GCOV=ON";
next;
}
if ($option =~ /verbose/)
{
$cmakeargs = $cmakeargs." -DCMAKE_VERBOSE_MAKEFILE=1";
next;
}
if ($option =~ /with-client-ldflags/)
{
print("configure.pl : ignoring $option\n");
next;
}
if ($option =~ /with-mysqld-ldflags=/)
{
print("configure.pl : ignoring $option\n");
next;
}
$option = uc($option);
$option =~ s/-/_/g;

View File

@ -64,10 +64,31 @@ SET(CPACK_RPM_SPEC_MORE_DEFINE "${CPACK_RPM_SPEC_MORE_DEFINE}
SET(CPACK_RPM_PACKAGE_REQUIRES "MariaDB-common")
SET(CPACK_RPM_server_USER_FILELIST "%ignore /etc" "%ignore /etc/init.d" "%config(noreplace) /etc/my.cnf.d/*")
SET(CPACK_RPM_common_USER_FILELIST "%config(noreplace) /etc/my.cnf")
SET(CPACK_RPM_shared_USER_FILELIST "%config(noreplace) /etc/my.cnf.d/*")
SET(CPACK_RPM_client_USER_FILELIST "%config(noreplace) /etc/my.cnf.d/*")
SET(ignored
"%ignore /etc"
"%ignore /etc/init.d"
"%ignore /etc/logrotate.d"
"%ignore /usr"
"%ignore /usr/bin"
"%ignore /usr/include"
"%ignore /usr/lib"
"%ignore /usr/lib64"
"%ignore /usr/sbin"
"%ignore /usr/share"
"%ignore /usr/share/aclocal"
"%ignore /usr/share/doc"
"%ignore /usr/share/man"
"%ignore /usr/share/man/man1*"
"%ignore /usr/share/man/man8*"
)
SET(CPACK_RPM_server_USER_FILELIST ${ignored} "%config(noreplace) /etc/my.cnf.d/*")
SET(CPACK_RPM_common_USER_FILELIST ${ignored} "%config(noreplace) /etc/my.cnf")
SET(CPACK_RPM_shared_USER_FILELIST ${ignored} "%config(noreplace) /etc/my.cnf.d/*")
SET(CPACK_RPM_client_USER_FILELIST ${ignored} "%config(noreplace) /etc/my.cnf.d/*")
SET(CPACK_RPM_compat_USER_FILELIST ${ignored})
SET(CPACK_RPM_devel_USER_FILELIST ${ignored})
SET(CPACK_RPM_test_USER_FILELIST ${ignored})
SET(CPACK_RPM_client_PACKAGE_OBSOLETES "mysql-client MySQL-client MySQL-OurDelta-client")
SET(CPACK_RPM_client_PACKAGE_PROVIDES "MariaDB-client MySQL-client mysql-client")
@ -88,8 +109,8 @@ SET(CPACK_RPM_server_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files
SET(CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postin.sh)
SET(CPACK_RPM_server_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postun.sh)
SET(CPACK_RPM_shared_PACKAGE_OBSOLETES "mysql-shared MySQL-shared-standard MySQL-shared-pro MySQL-shared-pro-cert MySQL-shared-pro-gpl MySQL-shared-pro-gpl-cert MySQL-shared MySQL-OurDelta-shared")
SET(CPACK_RPM_shared_PACKAGE_PROVIDES "MariaDB-shared MySQL-shared mysql-shared libmysqlclient.so.18 libmysqlclient.so.18(libmysqlclient_16) libmysqlclient.so.18(libmysqlclient_18) libmysqlclient_r.so.18 libmysqlclient_r.so.18(libmysqlclient_18)")
SET(CPACK_RPM_shared_PACKAGE_OBSOLETES "mysql-shared MySQL-shared-standard MySQL-shared-pro MySQL-shared-pro-cert MySQL-shared-pro-gpl MySQL-shared-pro-gpl-cert MySQL-shared MySQL-OurDelta-shared mysql-libs")
SET(CPACK_RPM_shared_PACKAGE_PROVIDES "MariaDB-shared MySQL-shared mysql-shared libmysqlclient.so.18 libmysqlclient.so.18(libmysqlclient_16) libmysqlclient.so.18(libmysqlclient_18) libmysqlclient_r.so.18 libmysqlclient_r.so.18(libmysqlclient_18) mysql-libs")
SET(CPACK_RPM_shared_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
SET(CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
@ -97,7 +118,7 @@ SET(CPACK_RPM_test_PACKAGE_OBSOLETES "mysql-test MySQL-test MySQL-OurDelta-test"
SET(CPACK_RPM_test_PACKAGE_PROVIDES "MariaDB-test MySQL-test mysql-test")
# workaround for lots of perl dependencies added by rpmbuild
SET(CPACK_RPM_test_PACKAGE_PROVIDES "${CPACK_RPM_test_PACKAGE_PROVIDES} perl(lib::mtr_gcov.pl) perl(lib::mtr_gprof.pl) perl(lib::mtr_io.pl) perl(lib::mtr_misc.pl) perl(lib::mtr_process.pl) perl(lib::v1/mtr_cases.pl) perl(lib::v1/mtr_gcov.pl) perl(lib::v1/mtr_gprof.pl) perl(lib::v1/mtr_im.pl) perl(lib::v1/mtr_io.pl) perl(lib::v1/mtr_match.pl) perl(lib::v1/mtr_misc.pl) perl(lib::v1/mtr_process.pl) perl(lib::v1/mtr_report.pl) perl(lib::v1/mtr_stress.pl) perl(lib::v1/mtr_timer.pl) perl(lib::v1/mtr_unique.pl) perl(mtr_misc.pl)")
SET(CPACK_RPM_test_PACKAGE_PROVIDES "${CPACK_RPM_test_PACKAGE_PROVIDES} perl(lib::mtr_gcov.pl) perl(lib::mtr_gprof.pl) perl(lib::mtr_io.pl) perl(lib::mtr_misc.pl) perl(lib::mtr_process.pl) perl(lib::v1/mtr_cases.pl) perl(lib::v1/mtr_gcov.pl) perl(lib::v1/mtr_gprof.pl) perl(lib::v1/mtr_im.pl) perl(lib::v1/mtr_io.pl) perl(lib::v1/mtr_match.pl) perl(lib::v1/mtr_misc.pl) perl(lib::v1/mtr_process.pl) perl(lib::v1/mtr_report.pl) perl(lib::v1/mtr_stress.pl) perl(lib::v1/mtr_timer.pl) perl(lib::v1/mtr_unique.pl) perl(mtr_cases) perl(mtr_io.pl) perl(mtr_match) perl(mtr_misc.pl) perl(mtr_report) perl(mtr_results) perl(mtr_unique)")
# If we want to build build MariaDB-shared-compat,
# extract compat libraries from MariaDB-shared-5.3 rpm

View File

@ -31,7 +31,7 @@ ENDIF()
# Create bootstrapper SQL script
FILE(WRITE bootstrap.sql "use mysql;\n" )
FOREACH(FILENAME mysql_system_tables.sql mysql_system_tables_data.sql)
FOREACH(FILENAME mysql_system_tables.sql mysql_system_tables_data.sql mysql_performance_tables.sql)
FILE(STRINGS ${CMAKE_SOURCE_DIR}/scripts/${FILENAME} CONTENTS)
FOREACH(STR ${CONTENTS})
IF(NOT STR MATCHES "@current_hostname")
@ -68,10 +68,13 @@ EXECUTE_PROCESS(
COMMAND "@CMAKE_COMMAND@" -E echo Executing ${BOOTSTRAP_COMMAND}
)
EXECUTE_PROCESS (
COMMAND "@CMAKE_COMMAND@" -E echo input file bootstrap.sql, current directory ${CWD}
COMMAND "@CMAKE_COMMAND@" -E
echo input file bootstrap.sql, current directory ${CWD}
)
EXECUTE_PROCESS (
COMMAND ${BOOTSTRAP_COMMAND} INPUT_FILE bootstrap.sql OUTPUT_VARIABLE OUT
COMMAND ${BOOTSTRAP_COMMAND}
INPUT_FILE bootstrap.sql
OUTPUT_VARIABLE OUT
ERROR_VARIABLE ERR
RESULT_VARIABLE RESULT
)
@ -80,3 +83,6 @@ IF(NOT RESULT EQUAL 0)
MESSAGE(FATAL_ERROR "Could not create initial database \n ${OUT} \n ${ERR}")
ENDIF()
EXECUTE_PROCESS (
COMMAND "@CMAKE_COMMAND@" -E touch ${CMAKE_CURRENT_BINARY_DIR}/initdb.dep
)

View File

@ -1,4 +1,4 @@
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
#
# 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
@ -82,9 +82,11 @@ MACRO(CREATE_INFO_BIN)
FILE(WRITE ${INFO_BIN} "===== Information about the build process: =====\n")
IF (WIN32)
EXECUTE_PROCESS(COMMAND cmd /c date /T OUTPUT_VARIABLE TMP_DATE)
EXECUTE_PROCESS(COMMAND cmd /c date /T
OUTPUT_VARIABLE TMP_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
ELSEIF(UNIX)
EXECUTE_PROCESS(COMMAND date "+%Y-%m-%d %H:%M:%S" OUTPUT_VARIABLE TMP_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
EXECUTE_PROCESS(COMMAND date "+%Y-%m-%d %H:%M:%S"
OUTPUT_VARIABLE TMP_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
ELSE()
SET(TMP_DATE "(no date command known for this platform)")
ENDIF()

View File

@ -1,4 +1,4 @@
# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
#
# 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
@ -100,7 +100,10 @@ ENDIF()
# just use if(INSTALL_PLUGINTESTDIR).
# The plugin must set its own install path for tests
#
FILE(GLOB plugin_tests ${CMAKE_SOURCE_DIR}/plugin/*/tests)
FILE(GLOB plugin_tests
${CMAKE_SOURCE_DIR}/plugin/*/tests
${CMAKE_SOURCE_DIR}/internal/plugin/*/tests
)
#
# STANDALONE layout

View File

@ -56,7 +56,7 @@ IF(NOT "${MAJOR_VERSION}" MATCHES "[0-9]+" OR
ENDIF()
SET(VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}${EXTRA_VERSION}")
MESSAGE("-- MariaDB ${VERSION}")
MESSAGE(STATUS "MariaDB ${VERSION}")
SET(MYSQL_BASE_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}" CACHE INTERNAL "MySQL Base version")
SET(MYSQL_NO_DASH_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}")
# Use NDBVERSION irregardless of whether this is Cluster or not, if not

View File

@ -130,7 +130,7 @@ IF(NOT VERSION)
SET(package_name "mariadb${PRODUCT_TAG}-${VERSION}-${SYSTEM_NAME_AND_PROCESSOR}")
ENDIF()
MESSAGE("-- Packaging as: ${package_name}")
MESSAGE(STATUS "Packaging as: ${package_name}")
# Sometimes package suffix is added (something like "-icc-glibc23")
IF(PACKAGE_SUFFIX)

View File

@ -39,6 +39,7 @@ MACRO(PLUGIN_APPEND_COLLECTIONS plugin)
GET_FILENAME_COMPONENT(fname ${cfile} NAME)
FILE(APPEND ${CMAKE_SOURCE_DIR}/mysql-test/collections/${fname} "${contents}")
FILE(APPEND ${fcopied} "${fname}\n")
MESSAGE(STATUS "Appended ${cfile}")
ENDFOREACH()
ENDIF()
ENDMACRO()

View File

@ -61,4 +61,5 @@ usr/share/mysql/errmsg-utf8.txt
usr/share/mysql/fill_help_tables.sql
usr/share/mysql/mysql_system_tables_data.sql
usr/share/mysql/mysql_system_tables.sql
usr/share/mysql/mysql_performance_tables.sql
usr/share/mysql/mysql_test_data_timezone.sql

View File

@ -84,7 +84,7 @@ build-stamp: configure
@echo "RULES.$@"
dh_testdir
cd $(builddir) && $(MAKE) $(MAKE_J)
cd $(builddir) && $(MAKE) $(MAKE_J) $(AM_EXTRA_MAKEFLAGS)
ifeq ($(findstring nocheck,$(DEB_BUILD_OPTIONS)),)
# Don't know why the following is necessary...

View File

@ -63,4 +63,5 @@ usr/share/mysql/errmsg-utf8.txt
usr/share/mysql/fill_help_tables.sql
usr/share/mysql/mysql_system_tables_data.sql
usr/share/mysql/mysql_system_tables.sql
usr/share/mysql/mysql_performance_tables.sql
usr/share/mysql/mysql_test_data_timezone.sql

View File

@ -84,7 +84,7 @@ build-stamp: configure
@echo "RULES.$@"
dh_testdir
cd $(builddir) && $(MAKE) $(MAKE_J)
cd $(builddir) && $(MAKE) $(MAKE_J) $(AM_EXTRA_MAKEFLAGS)
ifeq ($(findstring nocheck,$(DEB_BUILD_OPTIONS)),)
# Don't know why the following is necessary...

View File

@ -7,18 +7,17 @@
@DPATCH@
--- old/scripts/mysqld_safe.sh 2006-07-29 13:12:34.000000000 +0200
+++ old/scripts/mysqld_safe.sh 2006-07-29 13:14:08.000000000 +0200
@@ -16,8 +16,6 @@
# This command can be used as pipe to syslog. With "-s" it also logs to stderr.
ERR_LOGGER="logger -p daemon.err -t mysqld_safe -i"
--- a/scripts/mysqld_safe.sh 2013-01-11 16:02:41 +0000
+++ b/scripts/mysqld_safe.sh 2013-01-11 16:03:14 +0000
@@ -30,7 +30,6 @@
syslog_tag_mysqld=mysqld
syslog_tag_mysqld_safe=mysqld_safe
-trap '' 1 2 3 15 # we shouldn't let anyone kill us
-
umask 007
defaults=
@@ -122,7 +122,7 @@
# MySQL-specific environment variable. First off, it's not really a umask,
# it's the desired mode. Second, it follows umask(2), not umask(3) in that
@@ -156,7 +155,7 @@
# sed buffers output (only GNU sed supports a -u (unbuffered) option)
# which means that messages may not get sent to syslog until the
# mysqld process quits.
@ -27,7 +26,7 @@
;;
*)
echo "Internal program error (non-fatal):" \
@@ -352,6 +350,13 @@
@@ -758,6 +757,13 @@
fi
#
@ -41,3 +40,4 @@
# Uncomment the following lines if you want all tables to be automatically
# checked and repaired during startup. You should add sensible key_buffer
# and sort_buffer values to my.cnf to improve check performance or require

View File

@ -894,7 +894,7 @@ static struct errors *generate_empty_message(uint d_code)
if (!(new_error= (struct errors *) my_malloc(sizeof(*new_error),
MYF(MY_WME))))
return(0);
if (my_init_dynamic_array(&new_error->msg, sizeof(struct message), 0, 1))
if (my_init_dynamic_array(&new_error->msg, sizeof(struct message), 0, 1, MYF(0)))
return(0); /* OOM: Fatal error */
new_error->er_name= NULL;
@ -928,7 +928,7 @@ static struct errors *parse_error_string(char *str, int er_count)
MYF(MY_WME))))
DBUG_RETURN(0);
if (my_init_dynamic_array(&new_error->msg, sizeof(struct message), 0, 0))
if (my_init_dynamic_array(&new_error->msg, sizeof(struct message), 0, 0, MYF(0)))
DBUG_RETURN(0); /* OOM: Fatal error */
/* getting the error name */

View File

@ -265,7 +265,7 @@ static int insert_pointer_name(reg1 POINTER_ARRAY *pa,char * name)
if (!(pa->str= (uchar*) my_malloc((uint) (PS_MALLOC-MALLOC_OVERHEAD),
MYF(MY_WME))))
{
my_free(pa->typelib.type_names);
my_free((char*) pa->typelib.type_names);
DBUG_RETURN (-1);
}
pa->max_count=(PC_MALLOC-MALLOC_OVERHEAD)/(sizeof(uchar*)+
@ -327,7 +327,7 @@ static void free_pointer_array(reg1 POINTER_ARRAY *pa)
if (pa->typelib.count)
{
pa->typelib.count=0;
my_free(pa->typelib.type_names);
my_free((char*) pa->typelib.type_names);
pa->typelib.type_names=0;
my_free(pa->str);
}

View File

@ -223,7 +223,7 @@ static void init_sym_table()
{
char buf[512];
if (my_init_dynamic_array(&sym_table, sizeof(SYM_ENTRY), INIT_SYM_TABLE,
INC_SYM_TABLE))
INC_SYM_TABLE, MYF(0)))
die("Failed in my_init_dynamic_array() -- looks like out of memory problem");
while (fgets(buf, sizeof(buf), fp_sym))

View File

@ -39,6 +39,7 @@ extern "C" {
/* flags for hash_init */
#define HASH_UNIQUE 1 /* hash_insert fails on duplicate key */
#define HASH_THREAD_SPECIFIC 2 /* Mark allocated memory THREAD_SPECIFIC */
typedef uint my_hash_value_type;
typedef uchar *(*my_hash_get_key)(const uchar *,size_t*,my_bool);

View File

@ -153,6 +153,7 @@ typedef struct st_heap_share
THR_LOCK lock;
mysql_mutex_t intern_lock; /* Locking for use with _locking */
my_bool delete_on_close;
my_bool internal; /* Internal temporary table */
LIST open_list;
uint auto_key;
uint auto_key_type; /* real type of the auto key segment */

View File

@ -362,6 +362,8 @@ extern struct charset_info_st my_charset_ujis_japanese_ci;
extern struct charset_info_st my_charset_utf16_bin;
extern struct charset_info_st my_charset_utf16_general_ci;
extern struct charset_info_st my_charset_utf16_unicode_ci;
extern struct charset_info_st my_charset_utf16le_bin;
extern struct charset_info_st my_charset_utf16le_general_ci;
extern struct charset_info_st my_charset_utf32_bin;
extern struct charset_info_st my_charset_utf32_general_ci;
extern struct charset_info_st my_charset_utf32_unicode_ci;

View File

@ -34,10 +34,10 @@
#include <mysql_time.h>
/*
Max length for data in a dynamic colums. This comes from how the
how the offset are stored.
Limits of implementation
*/
#define MAX_DYNAMIC_COLUMN_LENGTH 0X1FFFFFFFL
#define MAX_TOTAL_NAME_LENGTH 65535
#define MAX_NAME_LENGTH (MAX_TOTAL_NAME_LENGTH/4)
/* NO and OK is the same used just to show semantics */
#define ER_DYNCOL_NO ER_DYNCOL_OK
@ -50,7 +50,8 @@ enum enum_dyncol_func_result
ER_DYNCOL_LIMIT= -2, /* Some limit reached */
ER_DYNCOL_RESOURCE= -3, /* Out of resourses */
ER_DYNCOL_DATA= -4, /* Incorrect input data */
ER_DYNCOL_UNKNOWN_CHARSET= -5 /* Unknown character set */
ER_DYNCOL_UNKNOWN_CHARSET= -5, /* Unknown character set */
ER_DYNCOL_TRUNCATED= 2 /* OK, but data was truncated */
};
typedef DYNAMIC_STRING DYNAMIC_COLUMN;
@ -65,7 +66,8 @@ enum enum_dynamic_column_type
DYN_COL_DECIMAL,
DYN_COL_DATETIME,
DYN_COL_DATE,
DYN_COL_TIME
DYN_COL_TIME,
DYN_COL_DYNCOL
};
typedef enum enum_dynamic_column_type DYNAMIC_COLUMN_TYPE;
@ -79,7 +81,7 @@ struct st_dynamic_column_value
unsigned long long ulong_value;
double double_value;
struct {
LEX_STRING value;
MYSQL_LEX_STRING value;
CHARSET_INFO *charset;
} string;
struct {
@ -92,6 +94,7 @@ struct st_dynamic_column_value
typedef struct st_dynamic_column_value DYNAMIC_COLUMN_VALUE;
#ifdef MADYNCOL_DEPRECATED
enum enum_dyncol_func_result
dynamic_column_create(DYNAMIC_COLUMN *str,
uint column_nr, DYNAMIC_COLUMN_VALUE *value);
@ -101,7 +104,6 @@ dynamic_column_create_many(DYNAMIC_COLUMN *str,
uint column_count,
uint *column_numbers,
DYNAMIC_COLUMN_VALUE *values);
enum enum_dyncol_func_result
dynamic_column_update(DYNAMIC_COLUMN *org, uint column_nr,
DYNAMIC_COLUMN_VALUE *value);
@ -112,36 +114,102 @@ dynamic_column_update_many(DYNAMIC_COLUMN *str,
DYNAMIC_COLUMN_VALUE *values);
enum enum_dyncol_func_result
dynamic_column_delete(DYNAMIC_COLUMN *org, uint column_nr);
dynamic_column_exists(DYNAMIC_COLUMN *org, uint column_nr);
enum enum_dyncol_func_result
dynamic_column_exists(DYNAMIC_COLUMN *org, uint column_nr);
dynamic_column_list(DYNAMIC_COLUMN *org, DYNAMIC_ARRAY *array_of_uint);
enum enum_dyncol_func_result
dynamic_column_get(DYNAMIC_COLUMN *org, uint column_nr,
DYNAMIC_COLUMN_VALUE *store_it_here);
#endif
/* new functions */
enum enum_dyncol_func_result
mariadb_dyncol_create_many(DYNAMIC_COLUMN *str,
uint column_count,
uint *column_numbers,
DYNAMIC_COLUMN_VALUE *values,
my_bool new_string);
enum enum_dyncol_func_result
mariadb_dyncol_create_many_named(DYNAMIC_COLUMN *str,
uint column_count,
MYSQL_LEX_STRING *column_keys,
DYNAMIC_COLUMN_VALUE *values,
my_bool new_string);
enum enum_dyncol_func_result
mariadb_dyncol_update_many(DYNAMIC_COLUMN *str,
uint add_column_count,
uint *column_keys,
DYNAMIC_COLUMN_VALUE *values);
enum enum_dyncol_func_result
mariadb_dyncol_update_many_named(DYNAMIC_COLUMN *str,
uint add_column_count,
MYSQL_LEX_STRING *column_keys,
DYNAMIC_COLUMN_VALUE *values);
enum enum_dyncol_func_result
mariadb_dyncol_exists(DYNAMIC_COLUMN *org, uint column_nr);
enum enum_dyncol_func_result
mariadb_dyncol_exists_named(DYNAMIC_COLUMN *str, MYSQL_LEX_STRING *name);
/* List of not NULL columns */
enum enum_dyncol_func_result
dynamic_column_list(DYNAMIC_COLUMN *org, DYNAMIC_ARRAY *array_of_uint);
mariadb_dyncol_list(DYNAMIC_COLUMN *str, uint *count, uint **nums);
enum enum_dyncol_func_result
mariadb_dyncol_list_named(DYNAMIC_COLUMN *str, uint *count,
MYSQL_LEX_STRING **names);
/*
if the column do not exists it is NULL
*/
enum enum_dyncol_func_result
dynamic_column_get(DYNAMIC_COLUMN *org, uint column_nr,
mariadb_dyncol_get(DYNAMIC_COLUMN *org, uint column_nr,
DYNAMIC_COLUMN_VALUE *store_it_here);
enum enum_dyncol_func_result
mariadb_dyncol_get_named(DYNAMIC_COLUMN *str, MYSQL_LEX_STRING *name,
DYNAMIC_COLUMN_VALUE *store_it_here);
my_bool mariadb_dyncol_has_names(DYNAMIC_COLUMN *str);
enum enum_dyncol_func_result
mariadb_dyncol_check(DYNAMIC_COLUMN *str);
enum enum_dyncol_func_result
mariadb_dyncol_json(DYNAMIC_COLUMN *str, DYNAMIC_STRING *json);
#define dynamic_column_initialize(A) memset((A), 0, sizeof(*(A)))
#define dynamic_column_column_free(V) dynstr_free(V)
/***************************************************************************
Internal functions, don't use if you don't know what you are doing...
***************************************************************************/
/* conversion of values to 3 base types */
enum enum_dyncol_func_result
mariadb_dyncol_val_str(DYNAMIC_STRING *str, DYNAMIC_COLUMN_VALUE *val,
CHARSET_INFO *cs, my_bool quote);
enum enum_dyncol_func_result
mariadb_dyncol_val_long(longlong *ll, DYNAMIC_COLUMN_VALUE *val);
enum enum_dyncol_func_result
mariadb_dyncol_val_double(double *dbl, DYNAMIC_COLUMN_VALUE *val);
#define dynamic_column_reassociate(V,P,L, A) dynstr_reassociate((V),(P),(L),(A))
#define dynamic_column_value_init(V) (V)->type= DYN_COL_NULL
enum enum_dyncol_func_result
mariadb_dyncol_unpack(DYNAMIC_COLUMN *str,
uint *count,
MYSQL_LEX_STRING **names, DYNAMIC_COLUMN_VALUE **vals);
int mariadb_dyncol_column_cmp_named(const MYSQL_LEX_STRING *s1,
const MYSQL_LEX_STRING *s2);
enum enum_dyncol_func_result
mariadb_dyncol_column_count(DYNAMIC_COLUMN *str, uint *column_count);
#define mariadb_dyncol_value_init(V) (V)->type= DYN_COL_NULL
/*
Prepare value for using as decimal
*/
void dynamic_column_prepare_decimal(DYNAMIC_COLUMN_VALUE *value);
void mariadb_dyncol_prepare_decimal(DYNAMIC_COLUMN_VALUE *value);
#endif

View File

@ -45,8 +45,9 @@ extern "C" {
#define MY_S_ISREG(m) (((m) & MY_S_IFMT) == MY_S_IFREG)
#define MY_S_ISFIFO(m) (((m) & MY_S_IFMT) == MY_S_IFIFO)
#define MY_DONT_SORT 512 /* my_lib; Don't sort files */
#define MY_WANT_STAT 1024 /* my_lib; stat files */
/* Ensure these dosn't clash with anything in my_sys.h */
#define MY_DONT_SORT 8192 /* my_lib; Don't sort files */
#define MY_WANT_STAT 16384 /* my_lib; stat files */
/* typedefs for my_dir & my_stat */

View File

@ -994,7 +994,7 @@ typedef struct st_mysql_lex_string LEX_STRING;
#define SOCKET_EMFILE EMFILE
#endif
typedef int myf; /* Type of MyFlags in my_funcs */
typedef ulong myf; /* Type of MyFlags in my_funcs */
typedef char my_bool; /* Small bool */
/* Macros for converting *constants* to the right type */

View File

@ -350,9 +350,9 @@ int my_pthread_mutex_trylock(pthread_mutex_t *mutex);
#ifndef set_timespec_time_nsec
#define set_timespec_time_nsec(ABSTIME,NSEC) do { \
ulonglong now= (NSEC); \
(ABSTIME).MY_tv_sec= (now / 1000000000ULL); \
(ABSTIME).MY_tv_nsec= (now % 1000000000ULL); \
ulonglong _now_= (NSEC); \
(ABSTIME).MY_tv_sec= (_now_ / 1000000000ULL); \
(ABSTIME).MY_tv_nsec= (_now_ % 1000000000ULL); \
} while(0)
#endif /* !set_timespec_time_nsec */

View File

@ -86,6 +86,10 @@ typedef struct my_aio_result {
#define MY_SYNC 4096 /* my_copy(): sync dst file */
#define MY_SYNC_DIR 32768 /* my_create/delete/rename: sync directory */
#define MY_SYNC_FILESIZE 65536 /* my_sync(): safe sync when file is extended */
#define MY_THREAD_SPECIFIC 0x10000 /* my_malloc(): thread specific */
#define MY_THREAD_MOVE 0x20000 /* realloc(); Memory can move */
/* Tree that should delete things automaticly */
#define MY_TREE_WITH_DELETE 0x40000
#define MY_CHECK_ERROR 1 /* Params to my_end; Check open-close */
#define MY_GIVE_INFO 2 /* Give time info about process*/
@ -148,6 +152,18 @@ typedef struct my_aio_result {
/* Extra length needed for filename if one calls my_create_backup_name */
#define MY_BACKUP_NAME_EXTRA_LENGTH 17
/* If we have our own safemalloc (for debugging) */
#if defined(SAFEMALLOC)
void sf_report_leaked_memory(my_thread_id id);
extern my_thread_id (*sf_malloc_dbug_id)(void);
#define SAFEMALLOC_REPORT_MEMORY(X) sf_report_leaked_memory(X)
#else
#define SAFEMALLOC_REPORT_MEMORY(X) do {} while(0)
#endif
typedef void (*MALLOC_SIZE_CB) (long long size, my_bool is_thread_specific);
extern void set_malloc_size_cb(MALLOC_SIZE_CB func);
/* defines when allocating data */
extern void *my_malloc(size_t Size,myf MyFlags);
extern void *my_multi_malloc(myf MyFlags, ...);
@ -323,6 +339,7 @@ typedef struct st_dynamic_array
uint elements,max_element;
uint alloc_increment;
uint size_of_element;
myf malloc_flags;
} DYNAMIC_ARRAY;
typedef struct st_my_tmpdir
@ -773,16 +790,10 @@ extern my_bool real_open_cached_file(IO_CACHE *cache);
extern void close_cached_file(IO_CACHE *cache);
File create_temp_file(char *to, const char *dir, const char *pfx,
int mode, myf MyFlags);
#define my_init_dynamic_array(A,B,C,D) init_dynamic_array2(A,B,NULL,C,D)
#define my_init_dynamic_array_ci(A,B,C,D) init_dynamic_array2(A,B,NULL,C,D)
#define my_init_dynamic_array2(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E)
#define my_init_dynamic_array2_ci(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E)
extern my_bool init_dynamic_array2(DYNAMIC_ARRAY *array, uint element_size,
#define my_init_dynamic_array(A,B,C,D,E) my_init_dynamic_array2(A,B,NULL,C,D,E)
extern my_bool my_init_dynamic_array2(DYNAMIC_ARRAY *array, uint element_size,
void *init_buffer, uint init_alloc,
uint alloc_increment);
/* init_dynamic_array() function is deprecated */
extern my_bool init_dynamic_array(DYNAMIC_ARRAY *array, uint element_size,
uint init_alloc, uint alloc_increment);
uint alloc_increment, myf my_flags);
extern my_bool insert_dynamic(DYNAMIC_ARRAY *array, const void* element);
extern void *alloc_dynamic(DYNAMIC_ARRAY *array);
extern void *pop_dynamic(DYNAMIC_ARRAY*);
@ -807,12 +818,23 @@ my_bool dynstr_append_mem(DYNAMIC_STRING *str, const char *append,
size_t length);
extern my_bool dynstr_append_os_quoted(DYNAMIC_STRING *str, const char *append,
...);
extern my_bool dynstr_append_quoted(DYNAMIC_STRING *str,
const char *append, size_t len,
char quote);
extern my_bool dynstr_set(DYNAMIC_STRING *str, const char *init_str);
extern my_bool dynstr_realloc(DYNAMIC_STRING *str, size_t additional_size);
extern my_bool dynstr_trunc(DYNAMIC_STRING *str, size_t n);
extern void dynstr_free(DYNAMIC_STRING *str);
extern uint32 copy_and_convert_extended(char *to, uint32 to_length,
CHARSET_INFO *to_cs,
const char *from, uint32 from_length,
CHARSET_INFO *from_cs, uint *errors);
extern void dynstr_reassociate(DYNAMIC_STRING *str, char **res, size_t *length,
size_t *alloc_length);
extern uint32 copy_and_convert_extended(char *to, uint32 to_length,
CHARSET_INFO *to_cs,
const char *from, uint32 from_length,
CHARSET_INFO *from_cs, uint *errors);
#ifdef HAVE_MLOCK
extern void *my_malloc_lock(size_t length,myf flags);
extern void my_free_lock(void *ptr);
@ -824,7 +846,7 @@ extern void my_free_lock(void *ptr);
#define ALLOC_ROOT_MIN_BLOCK_SIZE (MALLOC_OVERHEAD + sizeof(USED_MEM) + 8)
#define clear_alloc_root(A) do { (A)->free= (A)->used= (A)->pre_alloc= 0; (A)->min_malloc=0;} while(0)
extern void init_alloc_root(MEM_ROOT *mem_root, size_t block_size,
size_t pre_alloc_size);
size_t pre_alloc_size, myf my_flags);
extern void *alloc_root(MEM_ROOT *mem_root, size_t Size);
extern void *multi_alloc_root(MEM_ROOT *mem_root, ...);
extern void free_root(MEM_ROOT *root, myf MyFLAGS);

View File

@ -68,13 +68,15 @@ typedef struct st_tree {
MEM_ROOT mem_root;
my_bool with_delete;
tree_element_free free;
myf my_flags;
uint flag;
} TREE;
/* Functions on whole tree */
void init_tree(TREE *tree, size_t default_alloc_size, size_t memory_limit,
int size, qsort_cmp2 compare, my_bool with_delete,
tree_element_free free_element, void *custom_arg);
int size, qsort_cmp2 compare,
tree_element_free free_element, void *custom_arg,
myf my_flags);
void delete_tree(TREE*);
void reset_tree(TREE*);

View File

@ -164,6 +164,7 @@ typedef struct st_handler_check_param
mysql_mutex_t print_msg_mutex;
my_bool need_print_msg_lock;
myf malloc_flags;
} HA_CHECK;

View File

@ -28,7 +28,7 @@ typedef struct st_net {
unsigned char reading_or_writing;
char save_char;
char net_skip_rest_factor;
my_bool unused1;
my_bool thread_specific_malloc;
my_bool compress;
my_bool unused3;
unsigned char *unused;
@ -80,7 +80,7 @@ enum enum_mysql_set_option
MYSQL_OPTION_MULTI_STATEMENTS_ON,
MYSQL_OPTION_MULTI_STATEMENTS_OFF
};
my_bool my_net_init(NET *net, Vio* vio);
my_bool my_net_init(NET *net, Vio* vio, unsigned int my_flags);
void my_net_local_init(NET *net);
void net_end(NET *net);
void net_clear(NET *net, my_bool clear_buffer);

View File

@ -72,7 +72,7 @@ typedef struct st_mysql_xid MYSQL_XID;
#define MYSQL_PLUGIN_INTERFACE_VERSION 0x0103
/* MariaDB plugin interface version */
#define MARIA_PLUGIN_INTERFACE_VERSION 0x0103
#define MARIA_PLUGIN_INTERFACE_VERSION 0x0104
/*
The allowable types of plugins
@ -625,23 +625,6 @@ void thd_inc_row_count(MYSQL_THD thd);
*/
int mysql_tmpfile(const char *prefix);
/**
Check the killed state of a connection
@details
In MySQL support for the KILL statement is cooperative. The KILL
statement only sets a "killed" flag. This function returns the value
of that flag. A thread should check it often, especially inside
time-consuming loops, and gracefully abort the operation if it is
non-zero.
@param thd user thread connection handle
@retval 0 the connection is active
@retval 1 the connection has been killed
*/
int thd_killed(const MYSQL_THD thd);
/**
Return the thread id of a user thread

View File

@ -43,7 +43,8 @@ typedef enum _thd_wait_type_e {
THD_WAIT_BINLOG= 8,
THD_WAIT_GROUP_COMMIT= 9,
THD_WAIT_SYNC= 10,
THD_WAIT_LAST= 11
THD_WAIT_NET= 11,
THD_WAIT_LAST= 12
} thd_wait_type;
extern struct thd_wait_service_st {
void (*thd_wait_begin_func)(void*, int);
@ -82,6 +83,16 @@ const char *set_thd_proc_info(void*, const char * info, const char *func,
const char *file, unsigned int line);
#include <mysql/service_debug_sync.h>
extern void (*debug_sync_C_callback_ptr)(void*, const char *, size_t);
#include <mysql/service_kill_statement.h>
enum thd_kill_levels {
THD_IS_NOT_KILLED=0,
THD_ABORT_SOFTLY=50,
THD_ABORT_ASAP=100,
};
extern struct kill_statement_service_st {
enum thd_kill_levels (*thd_kill_level_func)(const void*);
} *thd_kill_statement_service;
enum thd_kill_levels thd_kill_level(const void*);
struct st_mysql_xid {
long formatID;
long gtrid_length;
@ -226,7 +237,6 @@ char *thd_security_context(void* thd, char *buffer, unsigned int length,
unsigned int max_query_len);
void thd_inc_row_count(void* thd);
int mysql_tmpfile(const char *prefix);
int thd_killed(const void* thd);
unsigned long thd_get_thread_id(const void* thd);
void thd_get_xid(const void* thd, MYSQL_XID *xid);
void mysql_query_cache_invalidate4(void* thd,

View File

@ -43,7 +43,8 @@ typedef enum _thd_wait_type_e {
THD_WAIT_BINLOG= 8,
THD_WAIT_GROUP_COMMIT= 9,
THD_WAIT_SYNC= 10,
THD_WAIT_LAST= 11
THD_WAIT_NET= 11,
THD_WAIT_LAST= 12
} thd_wait_type;
extern struct thd_wait_service_st {
void (*thd_wait_begin_func)(void*, int);
@ -82,6 +83,16 @@ const char *set_thd_proc_info(void*, const char * info, const char *func,
const char *file, unsigned int line);
#include <mysql/service_debug_sync.h>
extern void (*debug_sync_C_callback_ptr)(void*, const char *, size_t);
#include <mysql/service_kill_statement.h>
enum thd_kill_levels {
THD_IS_NOT_KILLED=0,
THD_ABORT_SOFTLY=50,
THD_ABORT_ASAP=100,
};
extern struct kill_statement_service_st {
enum thd_kill_levels (*thd_kill_level_func)(const void*);
} *thd_kill_statement_service;
enum thd_kill_levels thd_kill_level(const void*);
struct st_mysql_xid {
long formatID;
long gtrid_length;
@ -226,7 +237,6 @@ char *thd_security_context(void* thd, char *buffer, unsigned int length,
unsigned int max_query_len);
void thd_inc_row_count(void* thd);
int mysql_tmpfile(const char *prefix);
int thd_killed(const void* thd);
unsigned long thd_get_thread_id(const void* thd);
void thd_get_xid(const void* thd, MYSQL_XID *xid);
void mysql_query_cache_invalidate4(void* thd,

View File

@ -43,7 +43,8 @@ typedef enum _thd_wait_type_e {
THD_WAIT_BINLOG= 8,
THD_WAIT_GROUP_COMMIT= 9,
THD_WAIT_SYNC= 10,
THD_WAIT_LAST= 11
THD_WAIT_NET= 11,
THD_WAIT_LAST= 12
} thd_wait_type;
extern struct thd_wait_service_st {
void (*thd_wait_begin_func)(void*, int);
@ -82,6 +83,16 @@ const char *set_thd_proc_info(void*, const char * info, const char *func,
const char *file, unsigned int line);
#include <mysql/service_debug_sync.h>
extern void (*debug_sync_C_callback_ptr)(void*, const char *, size_t);
#include <mysql/service_kill_statement.h>
enum thd_kill_levels {
THD_IS_NOT_KILLED=0,
THD_ABORT_SOFTLY=50,
THD_ABORT_ASAP=100,
};
extern struct kill_statement_service_st {
enum thd_kill_levels (*thd_kill_level_func)(const void*);
} *thd_kill_statement_service;
enum thd_kill_levels thd_kill_level(const void*);
struct st_mysql_xid {
long formatID;
long gtrid_length;
@ -179,7 +190,6 @@ char *thd_security_context(void* thd, char *buffer, unsigned int length,
unsigned int max_query_len);
void thd_inc_row_count(void* thd);
int mysql_tmpfile(const char *prefix);
int thd_killed(const void* thd);
unsigned long thd_get_thread_id(const void* thd);
void thd_get_xid(const void* thd, MYSQL_XID *xid);
void mysql_query_cache_invalidate4(void* thd,

View File

@ -0,0 +1,71 @@
/* Copyright (c) 2013, Monty Program 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#ifndef MYSQL_SERVICE_KILL_STATEMENT_INCLUDED
#define MYSQL_SERVICE_KILL_STATEMENT_INCLUDED
/**
@file
This service provides functions that allow plugins to support
the KILL statement.
In MySQL support for the KILL statement is cooperative. The KILL
statement only sets a "killed" flag. This function returns the value
of that flag. A thread should check it often, especially inside
time-consuming loops, and gracefully abort the operation if it is
non-zero.
thd_is_killed(thd)
@return 0 - no KILL statement was issued, continue normally
@return 1 - there was a KILL statement, abort the execution.
thd_kill_level(thd)
@return thd_kill_levels_enum values
*/
#ifdef __cplusplus
extern "C" {
#endif
enum thd_kill_levels {
THD_IS_NOT_KILLED=0,
THD_ABORT_SOFTLY=50, /**< abort when possible, don't leave tables corrupted */
THD_ABORT_ASAP=100, /**< abort asap */
};
extern struct kill_statement_service_st {
enum thd_kill_levels (*thd_kill_level_func)(const MYSQL_THD);
} *thd_kill_statement_service;
/* backward compatibility helper */
#define thd_killed(THD) (thd_kill_level(THD) == THD_ABORT_ASAP)
#ifdef MYSQL_DYNAMIC_PLUGIN
#define thd_kill_level(THD) \
thd_kill_statement_service->thd_kill_level_func(THD)
#else
enum thd_kill_levels thd_kill_level(const MYSQL_THD);
#endif
#ifdef __cplusplus
}
#endif
#endif

View File

@ -74,7 +74,8 @@ typedef enum _thd_wait_type_e {
THD_WAIT_BINLOG= 8,
THD_WAIT_GROUP_COMMIT= 9,
THD_WAIT_SYNC= 10,
THD_WAIT_LAST= 11
THD_WAIT_NET= 11,
THD_WAIT_LAST= 12
} thd_wait_type;
extern struct thd_wait_service_st {

View File

@ -24,6 +24,7 @@ extern "C" {
#include <mysql/service_thread_scheduler.h>
#include <mysql/service_progress_report.h>
#include <mysql/service_debug_sync.h>
#include <mysql/service_kill_statement.h>
#ifdef __cplusplus
}

View File

@ -1,5 +1,5 @@
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates.
Copyright (c) 2010, 2011, Monty Program Ab
Copyright (c) 2010, 2013, Monty Program 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
@ -128,39 +128,39 @@ enum enum_server_command
#define HAS_EXPLICIT_VALUE (1 << 26) /* An INSERT/UPDATE operation supplied
an explicit default value */
#define REFRESH_GRANT 1 /* Refresh grant tables */
#define REFRESH_LOG 2 /* Start on new log file */
#define REFRESH_TABLES 4 /* close all tables */
#define REFRESH_HOSTS 8 /* Flush host cache */
#define REFRESH_STATUS 16 /* Flush status variables */
#define REFRESH_THREADS 32 /* Flush thread cache */
#define REFRESH_SLAVE 64 /* Reset master info and restart slave
thread */
#define REFRESH_MASTER 128 /* Remove all bin logs in the index
and truncate the index */
#define REFRESH_GRANT (1UL << 0) /* Refresh grant tables */
#define REFRESH_LOG (1UL << 1) /* Start on new log file */
#define REFRESH_TABLES (1UL << 2) /* close all tables */
#define REFRESH_HOSTS (1UL << 3) /* Flush host cache */
#define REFRESH_STATUS (1UL << 4) /* Flush status variables */
#define REFRESH_THREADS (1UL << 5) /* Flush thread cache */
#define REFRESH_SLAVE (1UL << 6) /* Reset master info and restart slave
thread */
#define REFRESH_MASTER (1UL << 7) /* Remove all bin logs in the index
and truncate the index */
/* The following can't be set with mysql_refresh() */
#define REFRESH_ERROR_LOG 256 /* Rotate only the erorr log */
#define REFRESH_ENGINE_LOG 512 /* Flush all storage engine logs */
#define REFRESH_BINARY_LOG 1024 /* Flush the binary log */
#define REFRESH_RELAY_LOG 2048 /* Flush the relay log */
#define REFRESH_GENERAL_LOG 4096 /* Flush the general log */
#define REFRESH_SLOW_LOG 8192 /* Flush the slow query log */
#define REFRESH_ERROR_LOG (1UL << 8) /* Rotate only the erorr log */
#define REFRESH_ENGINE_LOG (1UL << 9) /* Flush all storage engine logs */
#define REFRESH_BINARY_LOG (1UL << 10) /* Flush the binary log */
#define REFRESH_RELAY_LOG (1UL << 11) /* Flush the relay log */
#define REFRESH_GENERAL_LOG (1UL << 12) /* Flush the general log */
#define REFRESH_SLOW_LOG (1UL << 13) /* Flush the slow query log */
#define REFRESH_READ_LOCK 16384 /* Lock tables for read */
#define REFRESH_FAST 32768 /* Intern flag */
#define REFRESH_READ_LOCK (1UL << 14) /* Lock tables for read */
#define REFRESH_CHECKPOINT (1UL << 15) /* With REFRESH_READ_LOCK: block checkpoints too */
/* RESET (remove all queries) from query cache */
#define REFRESH_QUERY_CACHE 65536
#define REFRESH_QUERY_CACHE_FREE 0x20000L /* pack query cache */
#define REFRESH_DES_KEY_FILE 0x40000L
#define REFRESH_USER_RESOURCES 0x80000L
#define REFRESH_CHECKPOINT 0x100000L /* Don't do checkpoints */
#define REFRESH_QUERY_CACHE (1UL << 16) /* clear the query cache */
#define REFRESH_QUERY_CACHE_FREE (1UL << 17) /* pack query cache */
#define REFRESH_DES_KEY_FILE (1UL << 18)
#define REFRESH_USER_RESOURCES (1UL << 19)
#define REFRESH_TABLE_STATS (1L << 20) /* Refresh table stats hash table */
#define REFRESH_INDEX_STATS (1L << 21) /* Refresh index stats hash table */
#define REFRESH_USER_STATS (1L << 22) /* Refresh user stats hash table */
#define REFRESH_CLIENT_STATS (1L << 23) /* Refresh client stats hash table */
#define REFRESH_TABLE_STATS (1UL << 20) /* Refresh table stats hash table */
#define REFRESH_INDEX_STATS (1UL << 21) /* Refresh index stats hash table */
#define REFRESH_USER_STATS (1UL << 22) /* Refresh user stats hash table */
#define REFRESH_CLIENT_STATS (1UL << 23) /* Refresh client stats hash table */
#define REFRESH_FAST (1UL << 31) /* Intern flag */
#define CLIENT_LONG_PASSWORD 1 /* new more secure passwords */
#define CLIENT_FOUND_ROWS 2 /* Found instead of affected rows */
@ -340,7 +340,7 @@ typedef struct st_net {
unsigned char reading_or_writing;
char save_char;
char net_skip_rest_factor;
my_bool unused1; /* Please remove with the next incompatible ABI change */
my_bool thread_specific_malloc;
my_bool compress;
my_bool unused3; /* Please remove with the next incompatible ABI change. */
/*
@ -475,10 +475,10 @@ enum enum_mysql_set_option
extern "C" {
#endif
my_bool my_net_init(NET *net, Vio* vio);
my_bool my_net_init(NET *net, Vio* vio, unsigned int my_flags);
void my_net_local_init(NET *net);
void net_end(NET *net);
void net_clear(NET *net, my_bool clear_buffer);
void net_clear(NET *net, my_bool clear_buffer);
my_bool net_realloc(NET *net, size_t length);
my_bool net_flush(NET *net);
my_bool my_net_write(NET *net,const unsigned char *packet, size_t len);

View File

@ -19,9 +19,11 @@
#define SERVICE_VERSION void *
#endif
#define VERSION_my_snprintf 0x0100
#define VERSION_thd_alloc 0x0100
#define VERSION_thd_wait 0x0100
#define VERSION_my_thread_scheduler 0x0100
#define VERSION_progress_report 0x0100
#define VERSION_debug_sync 0x1000
#define VERSION_my_snprintf 0x0100
#define VERSION_thd_alloc 0x0100
#define VERSION_thd_wait 0x0100
#define VERSION_my_thread_scheduler 0x0100
#define VERSION_progress_report 0x0100
#define VERSION_debug_sync 0x1000
#define VERSION_kill_statement 0x1000

View File

@ -105,7 +105,9 @@ my_bool vio_is_connected(Vio *vio);
ssize_t vio_pending(Vio *vio);
#endif
/* Set timeout for a network operation. */
int vio_timeout(Vio *vio, uint which, int timeout_sec);
extern int vio_timeout(Vio *vio, uint which, int timeout_sec);
extern void vio_set_wait_callback(void (*before_wait)(void),
void (*after_wait)(void));
/* Connect to a peer. */
my_bool vio_socket_connect(Vio *vio, struct sockaddr *addr, socklen_t len,
int timeout);

View File

@ -23,7 +23,7 @@ INCLUDE_DIRECTORIES(
${ZLIB_INCLUDE_DIR})
ADD_DEFINITIONS(${SSL_DEFINES})
SET(CLIENT_API_FUNCTIONS
SET(CLIENT_API_FUNCTIONS_5_1
get_tty_password
handle_options
load_defaults
@ -58,6 +58,7 @@ mysql_field_count
mysql_field_seek
mysql_field_tell
mysql_free_result
mysql_get_parameters
mysql_get_client_info
mysql_get_host_info
mysql_get_proto_info
@ -129,12 +130,193 @@ mysql_server_init
mysql_server_end
mysql_set_character_set
mysql_get_character_set_info
mysql_stmt_next_result
CACHE INTERNAL "Functions exported by client API"
)
SET(CLIENT_API_FUNCTIONS_5_5
mysql_stmt_next_result
# Client plugins
mysql_client_find_plugin
mysql_client_register_plugin
mysql_load_plugin
mysql_load_plugin_v
mysql_plugin_options
# Async API
mysql_autocommit_cont
mysql_autocommit_start
mysql_change_user_cont
mysql_change_user_start
mysql_close_cont
mysql_close_slow_part_cont
mysql_close_slow_part_start
mysql_close_start
mysql_commit_cont
mysql_commit_start
mysql_fetch_row_cont
mysql_fetch_row_start
mysql_free_result_cont
mysql_free_result_start
mysql_kill_cont
mysql_kill_start
mysql_list_dbs_cont
mysql_list_dbs_start
mysql_list_fields_cont
mysql_list_fields_start
mysql_list_processes_cont
mysql_list_processes_start
mysql_list_tables_cont
mysql_list_tables_start
mysql_next_result_cont
mysql_next_result_start
mysql_ping_cont
mysql_ping_start
mysql_query_cont
mysql_query_start
mysql_read_query_result_cont
mysql_read_query_result_start
mysql_real_connect_cont
mysql_real_connect_start
mysql_real_query_cont
mysql_real_query_start
mysql_refresh_cont
mysql_refresh_start
mysql_rollback_cont
mysql_rollback_start
mysql_select_db_cont
mysql_select_db_start
mysql_send_query_cont
mysql_send_query_start
mysql_set_character_set_cont
mysql_set_character_set_start
mysql_set_server_option_cont
mysql_set_server_option_start
mysql_shutdown_cont
mysql_shutdown_start
mysql_stat_cont
mysql_stat_start
mysql_stmt_close_cont
mysql_stmt_close_start
mysql_stmt_execute_cont
mysql_stmt_execute_start
mysql_stmt_fetch_cont
mysql_stmt_fetch_start
mysql_stmt_free_result_cont
mysql_stmt_free_result_start
mysql_stmt_next_result_cont
mysql_stmt_next_result_start
mysql_stmt_prepare_cont
mysql_stmt_prepare_start
mysql_stmt_reset_cont
mysql_stmt_reset_start
mysql_stmt_send_long_data_cont
mysql_stmt_send_long_data_start
mysql_stmt_store_result_cont
mysql_stmt_store_result_start
mysql_store_result_cont
mysql_store_result_start
#dynamic columns api
dynamic_column_create
dynamic_column_create_many
dynamic_column_update
dynamic_column_update_many
dynamic_column_exists
dynamic_column_list
dynamic_column_get
dynamic_column_prepare_decimal
mariadb_dyncol_create_many
mariadb_dyncol_create_many_named
mariadb_dyncol_update_many
mariadb_dyncol_update_many_named
mariadb_dyncol_exists
mariadb_dyncol_exists_named
mariadb_dyncol_list
mariadb_dyncol_list_named
mariadb_dyncol_get
mariadb_dyncol_get_named
mariadb_dyncol_has_names
mariadb_dyncol_check
mariadb_dyncol_json
mariadb_dyncol_val_str
mariadb_dyncol_val_long
mariadb_dyncol_val_double
mariadb_dyncol_unpack
mariadb_dyncol_column_cmp_named
mariadb_dyncol_column_count
mariadb_dyncol_prepare_decimal
)
SET(CLIENT_API_FUNCTIONS
${CLIENT_API_FUNCTIONS_5_1}
${CLIENT_API_FUNCTIONS_5_5}
CACHE INTERNAL
"Client functions"
)
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
# When building RPM, or DEB package on Debian, use ELF symbol versioning
# for compatibility with distribution packages, so client shared library can
# painlessly replace the one supplied by the distribution.
# Also list of exported symbols in distributions may differ from what is considered
# official API. Define CLIENT_API_EXTRA for the set of symbols, that required to
# be exported on different platforms.
IF(RPM)
# Fedora & Co declared following functions as part of API
# These functions are alias of another function (given mysql_ prefix=. The
# renaming is handled in rpm_support.cc below
SET(CLIENT_API_EXTRA
mysql_default_charset_info
mysql_get_charset
mysql_get_charset_by_csname
mysql_net_realloc
mysql_client_errors
)
# Add special script to fix symbols renames by Fedora
SET(CLIENT_SOURCES_EXTRA ${CLIENT_SOURCES} rpm_support.cc)
SET(VERSION_SCRIPT_TEMPLATE
${CMAKE_CURRENT_SOURCE_DIR}/libmysql_rpm_version.in)
ELSEIF(DEB)
# libmyodbc on Ubuntu is using functions below
# If we don't export them, linker would just remove
# them (they are not used inside libmysqlclient)
SET(CLIENT_API_EXTRA
strfill
init_dynamic_string
)
# MySQL supplied with Ubuntu does not have versioning, bug Debian does.
IF(DEB MATCHES "debian")
SET(VERSION_SCRIPT_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/libmysql.ver.in)
ENDIF()
ENDIF()
IF(VERSION_SCRIPT_TEMPLATE)
# Generate version script.
# Create semicolon separated lists of functions to export from
# Since RPM packages use separate versioning for 5.1 API
# and 5.5 API (libmysqlclient_16 vs libmysqlclient_18),
# we need 2 lists.
SET (CLIENT_API_5_1_LIST)
FOREACH (f ${CLIENT_API_FUNCTIONS_5_1})
SET(CLIENT_API_5_1_LIST "${CLIENT_API_5_1_LIST}\n${f};")
ENDFOREACH()
SET (CLIENT_API_5_5_LIST)
FOREACH (f ${CLIENT_API_FUNCTIONS_5_5})
SET(CLIENT_API_5_5_LIST "${CLIENT_API_5_5_LIST}\n${f};")
ENDFOREACH()
CONFIGURE_FILE(
${VERSION_SCRIPT_TEMPLATE}
${CMAKE_CURRENT_BINARY_DIR}/libmysql.version
@ONLY@
)
SET(VERSION_SCRIPT_LINK_FLAGS
"-Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/libmysql.version")
ENDIF()
ENDIF()
SET(CLIENT_SOURCES
get_password.c
libmysql.c
@ -146,6 +328,7 @@ SET(CLIENT_SOURCES
../sql/net_serv.cc
../sql-common/pack.c
../sql/password.c
${CLIENT_SOURCES_EXTRA}
)
ADD_CONVENIENCE_LIBRARY(clientlib ${CLIENT_SOURCES})
DTRACE_INSTRUMENT(clientlib)
@ -193,13 +376,13 @@ IF(NOT DISABLE_SHARED)
OUTPUT_NAME mysqlclient
VERSION "${OS_SHARED_LIB_VERSION}"
SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
IF(LINK_FLAG_NO_UNDEFINED)
IF(LINK_FLAG_NO_UNDEFINED OR VERSION_SCRIPT_LINK_FLAGS)
GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS)
IF(NOT libmysql_link_flag)
SET(libmysql_link_flags)
ENDIF()
SET_TARGET_PROPERTIES(libmysql PROPERTIES LINK_FLAGS
"${libmysql_link_flags} ${LINK_FLAG_NO_UNDEFINED}")
"${libmysql_link_flags} ${LINK_FLAG_NO_UNDEFINED} ${VERSION_SCRIPT_LINK_FLAGS}")
ENDIF()
# clean direct output needs to be set several targets have the same name
#(mysqlclient in this case)

View File

@ -1520,8 +1520,8 @@ mysql_stmt_init(MYSQL *mysql)
DBUG_RETURN(NULL);
}
init_alloc_root(&stmt->mem_root, 2048, 2048);
init_alloc_root(&stmt->result.alloc, 4096, 4096);
init_alloc_root(&stmt->mem_root, 2048, 2048, MYF(MY_THREAD_SPECIFIC));
init_alloc_root(&stmt->result.alloc, 4096, 4096, MYF(MY_THREAD_SPECIFIC));
stmt->result.alloc.min_malloc= sizeof(MYSQL_ROWS);
mysql->stmts= list_add(mysql->stmts, &stmt->list);
stmt->list.data= stmt;
@ -1532,7 +1532,8 @@ mysql_stmt_init(MYSQL *mysql)
strmov(stmt->sqlstate, not_error_sqlstate);
/* The rest of statement members was bzeroed inside malloc */
init_alloc_root(&stmt->extension->fields_mem_root, 2048, 0);
init_alloc_root(&stmt->extension->fields_mem_root, 2048, 0,
MYF(MY_THREAD_SPECIFIC));
DBUG_RETURN(stmt);
}

View File

@ -0,0 +1,48 @@
# This version script is heavily inspired by Fedora's and Mageia's version scripts for
# MySQL client shared library. It is used in MariaDB for building RPMs.
libmysqlclient_16 {
global:
@CLIENT_API_5_1_LIST@
# some stuff from Mageia, I have no idea why it is there
# But too afraid to throw anything away
_fini;
_init;
my_init;
my_progname;
myodbc_remove_escape;
# These are documented in Paul DuBois' MySQL book, so we treat them as part
# of the de-facto API.
free_defaults;
handle_options;
load_defaults;
my_print_help;
# pure-ftpd requires this
my_make_scrambled_password;
# hydra requires this
scramble;
# DBD::mysql requires this
is_prefix;
local:
*;
};
libmysqlclient_18 {
global:
@CLIENT_API_5_5_LIST@
#
# Ideally the following symbols wouldn't be exported, but various applications
# require them. We limit the namespace damage by prefixing mysql_
# (see mysql-dubious-exports.patch), which means the symbols are not present
# in libmysqlclient_16.
#
# mysql-connector-odbc requires these
mysql_default_charset_info;
mysql_get_charset;
mysql_get_charset_by_csname;
mysql_net_realloc;
# PHP's mysqli.so requires this (via the ER() macro)
mysql_client_errors;
};

41
libmysql/rpm_support.cc Normal file
View File

@ -0,0 +1,41 @@
/*
Provide aliases for several symbols, to support drop-in replacement for
MariaDB on Fedora and several derives distributions.
These distributions redefine several symbols (in a way that is no compatible
with either MySQL or MariaDB) and export it from the client library ( as seen
e.g from this patch)
http://lists.fedoraproject.org/pipermail/scm-commits/2010-December/537257.html
MariaDB handles compatibility distribution by providing the same symbols from
the client library if it is built with -DRPM
*/
#include <errmsg.h>
#include <my_sys.h>
#include <mysql.h>
extern "C" {
CHARSET_INFO *mysql_default_charset_info = default_charset_info;
CHARSET_INFO *mysql_get_charset(uint cs_number, myf flags)
{
return get_charset(cs_number, flags);
}
CHARSET_INFO *mysql_get_charset_by_csname(const char *cs_name,
uint cs_flags, myf my_flags)
{
return get_charset_by_csname(cs_name, cs_flags, my_flags);
}
my_bool mysql_net_realloc(NET *net, size_t length)
{
return net_realloc(net,length);
}
const char **mysql_client_errors = client_errors;
} /*extern "C" */

View File

@ -150,8 +150,21 @@ IF(UNIX)
${CMAKE_STATIC_LIBRARY_PREFIX}mysqld-debug)
ENDIF()
# List of exported functions in embedded (client api except client plugin or
# async (*_start/*_cont functions)
SET(EMBEDDED_API)
FOREACH(f ${CLIENT_API_FUNCTIONS})
IF(f MATCHES "plugin|_start$|_cont$")
# Ignore functions, embedded does not export them
ELSE()
SET(EMBEDDED_API ${EMBEDDED_API} ${f})
ENDIF()
ENDFOREACH()
IF(NOT DISABLE_SHARED)
MERGE_LIBRARIES(libmysqld SHARED mysqlserver EXPORTS ${CLIENT_API_FUNCTIONS}
MERGE_LIBRARIES(libmysqld SHARED mysqlserver EXPORTS ${EMBEDDED_API}
COMPONENT Server)
IF(UNIX)
# Name the shared library, handle versioning (provides same api as client

View File

@ -415,7 +415,7 @@ int emb_load_querycache_result(THD *thd, Querycache_stream *src)
if (!data)
goto err;
init_alloc_root(&data->alloc, 8192,0);
init_alloc_root(&data->alloc, 8192,0,MYF(0));
f_alloc= &data->alloc;
data->fields= src->load_int();

View File

@ -520,7 +520,8 @@ int init_embedded_server(int argc, char **argv, char **groups)
if (!groups)
groups= (char**) fake_groups;
my_progname= (char *)"mysql_embedded";
if (!my_progname)
my_progname= (char *)"mysql_embedded";
/*
Perform basic logger initialization logger. Should be called after
@ -634,7 +635,7 @@ void init_embedded_mysql(MYSQL *mysql, int client_flag)
mysql->server_version= server_version;
mysql->client_flag= client_flag;
//mysql->server_capabilities= client_flag;
init_alloc_root(&mysql->field_alloc, 8192, 0);
init_alloc_root(&mysql->field_alloc, 8192, 0, MYF(0));
}
/**
@ -906,8 +907,9 @@ int Protocol::begin_dataset()
if (!data)
return 1;
alloc= &data->alloc;
init_alloc_root(alloc,8192,0); /* Assume rowlength < 8192 */
alloc->min_malloc=sizeof(MYSQL_ROWS);
/* Assume rowlength < 8192 */
init_alloc_root(alloc, 8192, 0, MYF(0));
alloc->min_malloc= sizeof(MYSQL_ROWS);
return 0;
}

View File

@ -21,7 +21,8 @@ SET(MYSQLSERVICES_SOURCES
thd_wait_service.c
my_thread_scheduler_service.c
progress_report_service.c
debug_sync_service.c)
debug_sync_service.c
kill_statement_service.c)
ADD_CONVENIENCE_LIBRARY(mysqlservices ${MYSQLSERVICES_SOURCES})
INSTALL(TARGETS mysqlservices DESTINATION ${INSTALL_LIBDIR} COMPONENT Development)

View File

@ -0,0 +1,18 @@
/* Copyright (c) 2013, Monty Program Ab.
Use is subject to license terms.
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#include <service_versions.h>
SERVICE_VERSION thd_kill_statement_service= (void*)VERSION_kill_statement;

View File

@ -40,6 +40,9 @@ while ($1)
}
--enable_query_log
commit;
# Make sure binlog checkpoint is logged before DROP TABLE to avoid random
# result difference.
--source include/wait_for_binlog_checkpoint.inc
drop table t1;
--source include/show_binlog_events.inc
--let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1)

View File

@ -0,0 +1,14 @@
--echo #
--echo # Test that cs->coll->hash_sort() ignores trailing spaces
--echo #
SELECT @@collation_connection;
CREATE TABLE t1 ENGINE=HEAP AS SELECT REPEAT (' ', 10) AS a LIMIT 0;
ALTER TABLE t1 ADD KEY (a);
CREATE TABLE t2 (a VARCHAR(10));
INSERT INTO t2 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
INSERT INTO t2 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
INSERT INTO t1 SELECT CONCAT('a',t21.a,t22.a) FROM t2 t21, t2 t22 ORDER BY 1;
DROP TABLE t2;
INSERT INTO t1 VALUES ('a ');
SELECT a, HEX(a) FROM t1 WHERE a='a';
DROP TABLE t1;

View File

@ -0,0 +1,49 @@
--echo #
--echo # Testing cs->cset->strtoll10()
--echo #
SELECT @@character_set_connection;
SELECT CAST('1' AS UNSIGNED);
SELECT CAST('12' AS UNSIGNED);
SELECT CAST('123' AS UNSIGNED);
SELECT CAST('1234' AS UNSIGNED);
SELECT CAST('12345' AS UNSIGNED);
SELECT CAST('123456' AS UNSIGNED);
SELECT CAST('1234567' AS UNSIGNED);
SELECT CAST('12345678' AS UNSIGNED);
SELECT CAST('123456789' AS UNSIGNED);
SELECT CAST('1234567891' AS UNSIGNED);
SELECT CAST('12345678912' AS UNSIGNED);
SELECT CAST('123456789123' AS UNSIGNED);
SELECT CAST('1234567891234' AS UNSIGNED);
SELECT CAST('12345678912345' AS UNSIGNED);
SELECT CAST('123456789123456' AS UNSIGNED);
SELECT CAST('1234567891234567' AS UNSIGNED);
SELECT CAST('12345678912345678' AS UNSIGNED);
SELECT CAST('123456789123456789' AS UNSIGNED);
SELECT CAST('1234567891234567891' AS UNSIGNED);
SELECT CAST('12345678912345678912' AS UNSIGNED);
SELECT CAST('123456789123456789123' AS UNSIGNED);
SELECT CAST('1x' AS UNSIGNED);
SELECT CAST('12x' AS UNSIGNED);
SELECT CAST('123x' AS UNSIGNED);
SELECT CAST('1234x' AS UNSIGNED);
SELECT CAST('12345x' AS UNSIGNED);
SELECT CAST('123456x' AS UNSIGNED);
SELECT CAST('1234567x' AS UNSIGNED);
SELECT CAST('12345678x' AS UNSIGNED);
SELECT CAST('123456789x' AS UNSIGNED);
SELECT CAST('1234567891x' AS UNSIGNED);
SELECT CAST('12345678912x' AS UNSIGNED);
SELECT CAST('123456789123x' AS UNSIGNED);
SELECT CAST('1234567891234x' AS UNSIGNED);
SELECT CAST('12345678912345x' AS UNSIGNED);
SELECT CAST('123456789123456x' AS UNSIGNED);
SELECT CAST('1234567891234567x' AS UNSIGNED);
SELECT CAST('12345678912345678x' AS UNSIGNED);
SELECT CAST('123456789123456789x' AS UNSIGNED);
SELECT CAST('1234567891234567891x' AS UNSIGNED);
SELECT CAST('12345678912345678912x' AS UNSIGNED);
SELECT CAST('123456789123456789123x' AS UNSIGNED);

View File

@ -58,9 +58,7 @@
--let $perlChecker= $MYSQLTEST_VARDIR/std_data/checkDBI_DBD-mysql.pl
--let $resultFile= $MYSQL_TMP_DIR/dbidbd-mysql.txt
# Make the script executable and execute it.
--chmod 0755 $perlChecker
--exec $perlChecker
--exec perl $perlChecker
# Source the resulting temporary file and look for a variable being set.
--source $resultFile

View File

@ -41,3 +41,4 @@ ha_blackhole storage/blackhole BLACKHOLE_PLUGIN
ha_federated storage/federated FEDERATED_PLUGIN
mypluglib plugin/fulltext SIMPLE_PARSER
libdaemon_example plugin/daemon_example DAEMONEXAMPLE
adt_null plugin/audit_null AUDIT_NULL

View File

@ -8,6 +8,7 @@
# --let $rpl_server_number= N
# [--let $rpl_server_parameters= --flag1 --flag2 ...]
# [--let $rpl_debug= 1]
# [--let $rpl_server_error= 0]
# --source include/rpl_start_server.inc
#
# Parameters:
@ -21,6 +22,9 @@
# If set, extra parameters given by this variable are passed to
# mysqld.
#
# $rpl_server_error
# If set, failure of the server startup is expected.
#
# $rpl_debug
# See include/rpl_init.inc
#
@ -47,8 +51,9 @@ if ($rpl_server_parameters)
# Write file to make mysql-test-run.pl start up the server again
--exec echo "$_rpl_start_server_command" > $MYSQLTEST_VARDIR/tmp/mysqld.$rpl_server_number.expect
--source include/rpl_reconnect.inc
--let $include_filename= rpl_start_server.inc $_rpl_start_server_args
--source include/end_include_file.inc
if (!$rpl_server_error)
{
--source include/rpl_reconnect.inc
--let $include_filename= rpl_start_server.inc $_rpl_start_server_args
--source include/end_include_file.inc
}

View File

@ -3229,6 +3229,8 @@ sub install_db ($$) {
# for a production system
mtr_appendfile_to_file("$path_sql_dir/mysql_system_tables.sql",
$bootstrap_sql_file);
mtr_appendfile_to_file("$path_sql_dir/mysql_performance_tables.sql",
$bootstrap_sql_file);
# Add the mysql system tables initial data
# for a production system

View File

@ -3525,6 +3525,11 @@ sub mysql_install_db {
mtr_appendfile_to_file("$sql_dir/mysql_system_tables.sql",
$bootstrap_sql_file);
# Add the performance tables
# for a production system
mtr_appendfile_to_file("$sql_dir/mysql_performance_tables.sql",
$bootstrap_sql_file);
# Add the mysql system tables initial data
# for a production system
mtr_appendfile_to_file("$sql_dir/mysql_system_tables_data.sql",
@ -3593,9 +3598,10 @@ sub mysql_install_db {
verbose => $opt_verbose,
) != 0)
{
my $data= mtr_grab_file($path_bootstrap_log);
mtr_error("Error executing mysqld --bootstrap\n" .
"Could not install system database from $bootstrap_sql_file\n" .
"see $path_bootstrap_log for errors");
"The $path_bootstrap_log file contains:\n$data\n");
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,5 @@
ERROR 28000: Access denied for user 'foo'@'localhost' (using password: YES)
ERROR 28000: Access denied for user 'foo'@'localhost' (using password: NO)
ERROR 28000: Access denied for user 'foo'@'localhost' (using password: YES)
ERROR 08S01: Unknown command
ERROR 08S01: Unknown command

View File

@ -3,3 +3,5 @@ Name Location Comment
Ronald Bradford Brisbane, Australia EFF contribution for UC2006 Auction
Sheeri Kritzer Boston, Mass. USA EFF contribution for UC2006 Auction
Mark Shuttleworth London, UK. EFF contribution for UC2006 Auction
Warnings:
Warning 1681 'SHOW CONTRIBUTORS' is deprecated and will be removed in a future release.

View File

@ -1762,7 +1762,9 @@ t1 CREATE TABLE `t1` (
`TIME_MS` decimal(22,3) NOT NULL DEFAULT '0.000',
`STAGE` tinyint(2) NOT NULL DEFAULT '0',
`MAX_STAGE` tinyint(2) NOT NULL DEFAULT '0',
`PROGRESS` decimal(7,3) NOT NULL DEFAULT '0.000'
`PROGRESS` decimal(7,3) NOT NULL DEFAULT '0.000',
`MEMORY_USED` int(7) NOT NULL DEFAULT '0',
`EXAMINED_ROWS` int(7) NOT NULL DEFAULT '0'
) DEFAULT CHARSET=utf8
drop table t1;
create temporary table t1 like information_schema.processlist;
@ -1780,7 +1782,9 @@ t1 CREATE TEMPORARY TABLE `t1` (
`TIME_MS` decimal(22,3) NOT NULL DEFAULT '0.000',
`STAGE` tinyint(2) NOT NULL DEFAULT '0',
`MAX_STAGE` tinyint(2) NOT NULL DEFAULT '0',
`PROGRESS` decimal(7,3) NOT NULL DEFAULT '0.000'
`PROGRESS` decimal(7,3) NOT NULL DEFAULT '0.000',
`MEMORY_USED` int(7) NOT NULL DEFAULT '0',
`EXAMINED_ROWS` int(7) NOT NULL DEFAULT '0'
) DEFAULT CHARSET=utf8
drop table t1;
create table t1 like information_schema.character_sets;

View File

@ -0,0 +1,3 @@
drop table if exists t1;
Starting test
# All done

View File

@ -191,6 +191,32 @@ t1 CREATE TABLE `t1` (
`r` varchar(10) CHARACTER SET ucs2 NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# Bug #51876 : crash/memory underrun when loading data with ucs2
# and reverse() function
#
# Problem # 1 (original report): wrong parsing of ucs2 data
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt';
CREATE TABLE t1(a INT);
LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2
(@b) SET a=REVERSE(@b);
# should return 2 zeroes (as the value is truncated)
SELECT * FROM t1;
a
0
1
DROP TABLE t1;
# Problem # 2 : if you write and read ucs2 data to a file they're lost
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2;
CREATE TABLE t1(a INT);
LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2
(@b) SET a=REVERSE(@b);
# should return 0 and 1 (10 reversed)
SELECT * FROM t1;
a
0
1
DROP TABLE t1;
create table t2(f1 Char(30));
insert into t2 values ("103000"), ("22720000"), ("3401200"), ("78000");
select lpad(f1, 12, "-o-/") from t2;
@ -1248,7 +1274,7 @@ SELECT CONVERT(QUOTE(CHAR(0xf5 using ucs2)), SIGNED);
CONVERT(QUOTE(CHAR(0xf5 using ucs2)), SIGNED)
0
Warnings:
Warning 1292 Truncated incorrect INTEGER value: ''
Warning 1292 Truncated incorrect INTEGER value: ''õ''
End of 5.0 tests
#
# Start of 5.1 tests
@ -4174,3 +4200,22 @@ DROP TABLE t1;
#
# End of 5.5 tests
#
#
# Start of 5.6 tests
#
#
# Bug#59145 valgrind warnings for uninitialized values in my_strtoll10_mb2
#
SET NAMES latin1;
SELECT CONVERT(CHAR(NULL USING ucs2), UNSIGNED);
CONVERT(CHAR(NULL USING ucs2), UNSIGNED)
0
Warnings:
Warning 1292 Truncated incorrect INTEGER value: ''
DO IFNULL(CHAR(NULL USING ucs2), '');
DO CAST(CONVERT('' USING ucs2) AS UNSIGNED);
Warnings:
Warning 1292 Truncated incorrect INTEGER value: ''
#
# End of 5.6 tests
#

View File

@ -921,6 +921,182 @@ Warning 1292 Truncated incorrect DOUBLE value: '1.2xxx'
select left('aaa','1');
left('aaa','1')
a
#
# Testing cs->cset->strtoll10()
#
SELECT @@character_set_connection;
@@character_set_connection
utf16
SELECT CAST('1' AS UNSIGNED);
CAST('1' AS UNSIGNED)
1
SELECT CAST('12' AS UNSIGNED);
CAST('12' AS UNSIGNED)
12
SELECT CAST('123' AS UNSIGNED);
CAST('123' AS UNSIGNED)
123
SELECT CAST('1234' AS UNSIGNED);
CAST('1234' AS UNSIGNED)
1234
SELECT CAST('12345' AS UNSIGNED);
CAST('12345' AS UNSIGNED)
12345
SELECT CAST('123456' AS UNSIGNED);
CAST('123456' AS UNSIGNED)
123456
SELECT CAST('1234567' AS UNSIGNED);
CAST('1234567' AS UNSIGNED)
1234567
SELECT CAST('12345678' AS UNSIGNED);
CAST('12345678' AS UNSIGNED)
12345678
SELECT CAST('123456789' AS UNSIGNED);
CAST('123456789' AS UNSIGNED)
123456789
SELECT CAST('1234567891' AS UNSIGNED);
CAST('1234567891' AS UNSIGNED)
1234567891
SELECT CAST('12345678912' AS UNSIGNED);
CAST('12345678912' AS UNSIGNED)
12345678912
SELECT CAST('123456789123' AS UNSIGNED);
CAST('123456789123' AS UNSIGNED)
123456789123
SELECT CAST('1234567891234' AS UNSIGNED);
CAST('1234567891234' AS UNSIGNED)
1234567891234
SELECT CAST('12345678912345' AS UNSIGNED);
CAST('12345678912345' AS UNSIGNED)
12345678912345
SELECT CAST('123456789123456' AS UNSIGNED);
CAST('123456789123456' AS UNSIGNED)
123456789123456
SELECT CAST('1234567891234567' AS UNSIGNED);
CAST('1234567891234567' AS UNSIGNED)
1234567891234567
SELECT CAST('12345678912345678' AS UNSIGNED);
CAST('12345678912345678' AS UNSIGNED)
12345678912345678
SELECT CAST('123456789123456789' AS UNSIGNED);
CAST('123456789123456789' AS UNSIGNED)
123456789123456789
SELECT CAST('1234567891234567891' AS UNSIGNED);
CAST('1234567891234567891' AS UNSIGNED)
1234567891234567891
SELECT CAST('12345678912345678912' AS UNSIGNED);
CAST('12345678912345678912' AS UNSIGNED)
12345678912345678912
SELECT CAST('123456789123456789123' AS UNSIGNED);
CAST('123456789123456789123' AS UNSIGNED)
18446744073709551615
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456789123456789123'
SELECT CAST('1x' AS UNSIGNED);
CAST('1x' AS UNSIGNED)
1
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1x'
SELECT CAST('12x' AS UNSIGNED);
CAST('12x' AS UNSIGNED)
12
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12x'
SELECT CAST('123x' AS UNSIGNED);
CAST('123x' AS UNSIGNED)
123
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123x'
SELECT CAST('1234x' AS UNSIGNED);
CAST('1234x' AS UNSIGNED)
1234
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1234x'
SELECT CAST('12345x' AS UNSIGNED);
CAST('12345x' AS UNSIGNED)
12345
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12345x'
SELECT CAST('123456x' AS UNSIGNED);
CAST('123456x' AS UNSIGNED)
123456
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456x'
SELECT CAST('1234567x' AS UNSIGNED);
CAST('1234567x' AS UNSIGNED)
1234567
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1234567x'
SELECT CAST('12345678x' AS UNSIGNED);
CAST('12345678x' AS UNSIGNED)
12345678
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12345678x'
SELECT CAST('123456789x' AS UNSIGNED);
CAST('123456789x' AS UNSIGNED)
123456789
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456789x'
SELECT CAST('1234567891x' AS UNSIGNED);
CAST('1234567891x' AS UNSIGNED)
1234567891
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1234567891x'
SELECT CAST('12345678912x' AS UNSIGNED);
CAST('12345678912x' AS UNSIGNED)
12345678912
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12345678912x'
SELECT CAST('123456789123x' AS UNSIGNED);
CAST('123456789123x' AS UNSIGNED)
123456789123
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456789123x'
SELECT CAST('1234567891234x' AS UNSIGNED);
CAST('1234567891234x' AS UNSIGNED)
1234567891234
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1234567891234x'
SELECT CAST('12345678912345x' AS UNSIGNED);
CAST('12345678912345x' AS UNSIGNED)
12345678912345
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12345678912345x'
SELECT CAST('123456789123456x' AS UNSIGNED);
CAST('123456789123456x' AS UNSIGNED)
123456789123456
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456789123456x'
SELECT CAST('1234567891234567x' AS UNSIGNED);
CAST('1234567891234567x' AS UNSIGNED)
1234567891234567
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1234567891234567x'
SELECT CAST('12345678912345678x' AS UNSIGNED);
CAST('12345678912345678x' AS UNSIGNED)
12345678912345678
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12345678912345678x'
SELECT CAST('123456789123456789x' AS UNSIGNED);
CAST('123456789123456789x' AS UNSIGNED)
123456789123456789
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456789123456789x'
SELECT CAST('1234567891234567891x' AS UNSIGNED);
CAST('1234567891234567891x' AS UNSIGNED)
1234567891234567891
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1234567891234567891x'
SELECT CAST('12345678912345678912x' AS UNSIGNED);
CAST('12345678912345678912x' AS UNSIGNED)
12345678912345678912
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12345678912345678912x'
SELECT CAST('123456789123456789123x' AS UNSIGNED);
CAST('123456789123456789123x' AS UNSIGNED)
18446744073709551615
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456789123456789123x'
create table t1 (a int);
insert into t1 values ('-1234.1e2');
insert into t1 values ('-1234.1e2xxxx');
@ -1140,6 +1316,14 @@ id l
a 512
Warnings:
Warning 1260 Row 1 was cut by GROUP_CONCAT()
SELECT id, CHAR_LENGTH(GROUP_CONCAT(body)) AS l
FROM (SELECT 'a' AS id, REPEAT('foo bar', 100) AS body
UNION ALL
SELECT 'a' AS id, REPEAT('bla bla', 100) AS body) t1;
id l
a 512
Warnings:
Warning 1260 Row 1 was cut by GROUP_CONCAT()
#
# End of 5.5 tests
#

File diff suppressed because it is too large Load Diff

View File

@ -919,6 +919,182 @@ Warning 1292 Truncated incorrect DOUBLE value: '1.2xxx'
select left('aaa','1');
left('aaa','1')
a
#
# Testing cs->cset->strtoll10()
#
SELECT @@character_set_connection;
@@character_set_connection
utf32
SELECT CAST('1' AS UNSIGNED);
CAST('1' AS UNSIGNED)
1
SELECT CAST('12' AS UNSIGNED);
CAST('12' AS UNSIGNED)
12
SELECT CAST('123' AS UNSIGNED);
CAST('123' AS UNSIGNED)
123
SELECT CAST('1234' AS UNSIGNED);
CAST('1234' AS UNSIGNED)
1234
SELECT CAST('12345' AS UNSIGNED);
CAST('12345' AS UNSIGNED)
12345
SELECT CAST('123456' AS UNSIGNED);
CAST('123456' AS UNSIGNED)
123456
SELECT CAST('1234567' AS UNSIGNED);
CAST('1234567' AS UNSIGNED)
1234567
SELECT CAST('12345678' AS UNSIGNED);
CAST('12345678' AS UNSIGNED)
12345678
SELECT CAST('123456789' AS UNSIGNED);
CAST('123456789' AS UNSIGNED)
123456789
SELECT CAST('1234567891' AS UNSIGNED);
CAST('1234567891' AS UNSIGNED)
1234567891
SELECT CAST('12345678912' AS UNSIGNED);
CAST('12345678912' AS UNSIGNED)
12345678912
SELECT CAST('123456789123' AS UNSIGNED);
CAST('123456789123' AS UNSIGNED)
123456789123
SELECT CAST('1234567891234' AS UNSIGNED);
CAST('1234567891234' AS UNSIGNED)
1234567891234
SELECT CAST('12345678912345' AS UNSIGNED);
CAST('12345678912345' AS UNSIGNED)
12345678912345
SELECT CAST('123456789123456' AS UNSIGNED);
CAST('123456789123456' AS UNSIGNED)
123456789123456
SELECT CAST('1234567891234567' AS UNSIGNED);
CAST('1234567891234567' AS UNSIGNED)
1234567891234567
SELECT CAST('12345678912345678' AS UNSIGNED);
CAST('12345678912345678' AS UNSIGNED)
12345678912345678
SELECT CAST('123456789123456789' AS UNSIGNED);
CAST('123456789123456789' AS UNSIGNED)
123456789123456789
SELECT CAST('1234567891234567891' AS UNSIGNED);
CAST('1234567891234567891' AS UNSIGNED)
1234567891234567891
SELECT CAST('12345678912345678912' AS UNSIGNED);
CAST('12345678912345678912' AS UNSIGNED)
12345678912345678912
SELECT CAST('123456789123456789123' AS UNSIGNED);
CAST('123456789123456789123' AS UNSIGNED)
18446744073709551615
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456789123456789123'
SELECT CAST('1x' AS UNSIGNED);
CAST('1x' AS UNSIGNED)
1
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1x'
SELECT CAST('12x' AS UNSIGNED);
CAST('12x' AS UNSIGNED)
12
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12x'
SELECT CAST('123x' AS UNSIGNED);
CAST('123x' AS UNSIGNED)
123
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123x'
SELECT CAST('1234x' AS UNSIGNED);
CAST('1234x' AS UNSIGNED)
1234
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1234x'
SELECT CAST('12345x' AS UNSIGNED);
CAST('12345x' AS UNSIGNED)
12345
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12345x'
SELECT CAST('123456x' AS UNSIGNED);
CAST('123456x' AS UNSIGNED)
123456
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456x'
SELECT CAST('1234567x' AS UNSIGNED);
CAST('1234567x' AS UNSIGNED)
1234567
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1234567x'
SELECT CAST('12345678x' AS UNSIGNED);
CAST('12345678x' AS UNSIGNED)
12345678
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12345678x'
SELECT CAST('123456789x' AS UNSIGNED);
CAST('123456789x' AS UNSIGNED)
123456789
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456789x'
SELECT CAST('1234567891x' AS UNSIGNED);
CAST('1234567891x' AS UNSIGNED)
1234567891
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1234567891x'
SELECT CAST('12345678912x' AS UNSIGNED);
CAST('12345678912x' AS UNSIGNED)
12345678912
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12345678912x'
SELECT CAST('123456789123x' AS UNSIGNED);
CAST('123456789123x' AS UNSIGNED)
123456789123
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456789123x'
SELECT CAST('1234567891234x' AS UNSIGNED);
CAST('1234567891234x' AS UNSIGNED)
1234567891234
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1234567891234x'
SELECT CAST('12345678912345x' AS UNSIGNED);
CAST('12345678912345x' AS UNSIGNED)
12345678912345
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12345678912345x'
SELECT CAST('123456789123456x' AS UNSIGNED);
CAST('123456789123456x' AS UNSIGNED)
123456789123456
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456789123456x'
SELECT CAST('1234567891234567x' AS UNSIGNED);
CAST('1234567891234567x' AS UNSIGNED)
1234567891234567
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1234567891234567x'
SELECT CAST('12345678912345678x' AS UNSIGNED);
CAST('12345678912345678x' AS UNSIGNED)
12345678912345678
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12345678912345678x'
SELECT CAST('123456789123456789x' AS UNSIGNED);
CAST('123456789123456789x' AS UNSIGNED)
123456789123456789
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456789123456789x'
SELECT CAST('1234567891234567891x' AS UNSIGNED);
CAST('1234567891234567891x' AS UNSIGNED)
1234567891234567891
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '1234567891234567891x'
SELECT CAST('12345678912345678912x' AS UNSIGNED);
CAST('12345678912345678912x' AS UNSIGNED)
12345678912345678912
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '12345678912345678912x'
SELECT CAST('123456789123456789123x' AS UNSIGNED);
CAST('123456789123456789123x' AS UNSIGNED)
18446744073709551615
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '123456789123456789123x'
create table t1 (a int);
insert into t1 values ('-1234.1e2');
insert into t1 values ('-1234.1e2xxxx');
@ -1126,6 +1302,20 @@ my_col
00
DROP TABLE t1;
#
# Bug#32859 Character sets: no warning with non-fitting chariot wheel
#
CREATE TABLE t1 (utf32 CHAR(5) CHARACTER SET utf32, latin1 CHAR(5) CHARACTER SET latin1);
INSERT INTO t1 (utf32) VALUES (0xc581);
UPDATE t1 SET latin1 = utf32;
Warnings:
Warning 1366 Incorrect string value: '\x00\x00\xC5\x81' for column 'latin1' at row 1
DELETE FROM t1;
INSERT INTO t1 (utf32) VALUES (0x100cc);
UPDATE t1 SET latin1 = utf32;
Warnings:
Warning 1366 Incorrect string value: '\x00\x01\x00\xCC' for column 'latin1' at row 1
DROP TABLE t1;
#
# Bug#55912 FORMAT with locale set fails for numbers < 1000
#
SET collation_connection=utf32_general_ci;

View File

@ -5055,6 +5055,14 @@ id l
a 1024
Warnings:
Warning 1260 Row 2 was cut by GROUP_CONCAT()
SELECT id, CHAR_LENGTH(GROUP_CONCAT(body)) AS l
FROM (SELECT 'a' AS id, REPEAT('foo bar', 100) AS body
UNION ALL
SELECT 'a' AS id, REPEAT('bla bla', 100) AS body) t1;
id l
a 1024
Warnings:
Warning 1260 Row 2 was cut by GROUP_CONCAT()
#
# End of 5.5 tests
#

View File

@ -4,5 +4,5 @@ insert t1 values (addtime('9999-12-31 23:59:59', '00:00:01')),
select * from t1;
d
NULL
NULL
0000-00-00 00:00:00
drop table t1;

View File

@ -1468,14 +1468,14 @@ WHERE (t2.a ,t1.b) NOT IN (SELECT DISTINCT c,a FROM t3 t);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
2 DEPENDENT SUBQUERY t eq_ref PRIMARY,c PRIMARY 4 func 1 Using where
2 DEPENDENT SUBQUERY t unique_subquery PRIMARY,c PRIMARY 4 func 1 Using where
EXPLAIN
SELECT * FROM t1 , t2
WHERE (t2.a ,t1.b) NOT IN (SELECT DISTINCT c,a FROM (SELECT * FROM t3) t);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
2 DEPENDENT SUBQUERY t3 eq_ref PRIMARY,c PRIMARY 4 func 1 Using where
2 DEPENDENT SUBQUERY t3 unique_subquery PRIMARY,c PRIMARY 4 func 1 Using where
SELECT * FROM t1 , t2
WHERE (t2.a ,t1.b) NOT IN (SELECT DISTINCT c,a FROM (SELECT * FROM t3) t);
b a
@ -2115,6 +2115,55 @@ a
4
drop table t1,t2;
#
# MDEV-3873: Wrong result (extra rows) with NOT IN and
# a subquery from a MERGE view
#
CREATE TABLE t1 (a INT NOT NULL) ENGINE=MyISAM;
INSERT INTO t1 VALUES (4),(7),(0);
CREATE TABLE t2 (b INT NOT NULL) ENGINE=MyISAM;
INSERT INTO t2 VALUES (1),(2);
CREATE TABLE t3 (c INT NOT NULL) ENGINE=MyISAM;
INSERT INTO t3 VALUES (4),(6),(3);
CREATE TABLE t4 (d INT NOT NULL) ENGINE=MyISAM;
INSERT INTO t4 VALUES (4),(5),(3);
CREATE TABLE tv (e INT NOT NULL) ENGINE=MyISAM;
INSERT INTO tv VALUES (1),(3);
CREATE ALGORITHM=TEMPTABLE VIEW v_temptable AS SELECT * FROM tv;
CREATE ALGORITHM=MERGE VIEW v_merge AS SELECT * FROM tv;
SELECT * FROM t1, t2
WHERE a NOT IN ( SELECT e FROM t3 LEFT JOIN v_temptable ON (c = e) WHERE c <> b ) AND a < b;
a b
SELECT * FROM t1, t2
WHERE a NOT IN ( SELECT e FROM t3 LEFT JOIN v_merge ON (c = e) WHERE c <> b ) AND a < b;
a b
SELECT * FROM t1, t2
WHERE a NOT IN ( SELECT e FROM t3 LEFT JOIN (SELECT * FROM tv) as derived ON (c = e) WHERE c <> b ) AND a < b;
a b
drop view v_temptable, v_merge;
drop table t1,t2,t3,t4,tv;
#
# MDEV-3912: Wrong result (extra rows) with FROM subquery inside
# ALL subquery, LEFT JOIN, derived_merge.
# (duplicate of MDEV-3873 (above))
#
SET @save3912_optimizer_switch=@@optimizer_switch;
SET optimizer_switch = 'derived_merge=on,in_to_exists=on';
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (4),(8);
CREATE TABLE t2 (b INT) ENGINE=MyISAM;
INSERT INTO t2 VALUES (7),(0);
CREATE TABLE t3 (c INT, d INT NOT NULL) ENGINE=MyISAM;
INSERT INTO t3 VALUES (0,4),(8,6);
SELECT * FROM t1
WHERE a >= ALL (
SELECT d FROM t2 LEFT JOIN ( SELECT * FROM t3 ) AS alias ON ( c = b )
WHERE b >= a
);
a
8
set optimizer_switch=@save3912_optimizer_switch;
drop table t1, t2, t3;
#
# end of 5.3 tests
#
set optimizer_switch=@exit_optimizer_switch;

View File

@ -847,6 +847,38 @@ time(f1)
00:00:00.000200
00:00:00.000300
drop table t1;
create table t1(i int, g int);
insert into t1 values (null, 1), (0, 2);
select distinct i from t1 group by g;
i
NULL
0
drop table t1;
create table t1(i int, g blob);
insert into t1 values (null, 1), (0, 2);
select distinct i from t1 group by g;
i
NULL
0
drop table t1;
create table t1 (a int) engine=myisam;
insert into t1 values (0),(7);
create table t2 (b int) engine=myisam;
insert into t2 values (7),(0),(3);
create algorithm=temptable view v as
select distinct (select max(a) from t1 where alias.b = a) as field1 from t2 as alias group by field1;
select * from v;
field1
NULL
0
7
select distinct (select max(a) from t1 where alias.b = a) as field1 from t2 as alias group by field1;
field1
NULL
0
7
drop view v;
drop table t1, t2;
#
# Bug #11744875: 4082: integer lengths cause truncation with distinct concat and innodb
#

View File

@ -1088,7 +1088,7 @@ column_list(column_add(column_create(1, 1), 1, null))
select column_list(column_add(column_create(1, 1), 1, ""));
column_list(column_add(column_create(1, 1), 1, ""))
1
`1`
select hex(column_add("", 1, 1));
hex(column_add("", 1, 1))
00010001000002
@ -1133,10 +1133,10 @@ column_exists(column_create(1, 1212 as integer, 2, 1212 as integer), 4)
# column list
select column_list(column_create(1, 1212 as integer, 2, 1212 as integer));
column_list(column_create(1, 1212 as integer, 2, 1212 as integer))
1,2
`1`,`2`
select column_list(column_create(1, 1212 as integer));
column_list(column_create(1, 1212 as integer))
1
`1`
select column_list(column_create(1, NULL as integer));
column_list(column_create(1, NULL as integer))
@ -1218,35 +1218,35 @@ sum(column_get(str, 1 as int))
11
select id, column_list(str) from t1 where id= 5;
id column_list(str)
5 1,2,3,10
5 `1`,`2`,`3`,`10`
update t1 set str=column_delete(str, 3, 4, 2) where id= 5;
select id, length(str), column_list(str), column_get(str, 1 as int), column_get(str, 2 as char), column_get(str, 3 as int) from t1;
id length(str) column_list(str) column_get(str, 1 as int) column_get(str, 2 as char) column_get(str, 3 as int)
1 12 1,2 1 a NULL
2 12 1,2 2 a NULL
3 12 2,3 NULL c 100
4 16 1,2,3 5 c 100
5 15 1,10 6 NULL NULL
6 21 2,3,10 NULL c 100
1 12 `1`,`2` 1 a NULL
2 12 `1`,`2` 2 a NULL
3 12 `2`,`3` NULL c 100
4 16 `1`,`2`,`3` 5 c 100
5 15 `1`,`10` 6 NULL NULL
6 21 `2`,`3`,`10` NULL c 100
update t1 set str=column_add(str, 4, 45 as char, 2, 'c') where id= 5;
select id, length(str), column_list(str), column_get(str, 1 as int), column_get(str, 2 as char), column_get(str, 3 as int) from t1 where id = 5;
id length(str) column_list(str) column_get(str, 1 as int) column_get(str, 2 as char) column_get(str, 3 as int)
5 26 1,2,4,10 6 c NULL
5 26 `1`,`2`,`4`,`10` 6 c NULL
select id, length(str), column_list(str), column_exists(str, 4) from t1;
id length(str) column_list(str) column_exists(str, 4)
1 12 1,2 0
2 12 1,2 0
3 12 2,3 0
4 16 1,2,3 0
5 26 1,2,4,10 1
6 21 2,3,10 0
1 12 `1`,`2` 0
2 12 `1`,`2` 0
3 12 `2`,`3` 0
4 16 `1`,`2`,`3` 0
5 26 `1`,`2`,`4`,`10` 1
6 21 `2`,`3`,`10` 0
select sum(column_get(str, 1 as int)), column_list(str) from t1 group by 2;
sum(column_get(str, 1 as int)) column_list(str)
3 1,2
5 1,2,3
6 1,2,4,10
NULL 2,3
NULL 2,3,10
3 `1`,`2`
5 `1`,`2`,`3`
6 `1`,`2`,`4`,`10`
NULL `2`,`3`
NULL `2`,`3`,`10`
select id, hex(str) from t1;
id hex(str)
1 00020001000002000B020861
@ -1282,11 +1282,11 @@ id
5
select id, column_list(str), length(str) from t1 where id=5;
id column_list(str) length(str)
5 1,2,4,5,10 100048
5 `1`,`2`,`4`,`5`,`10` 100048
update t1 set str=column_delete(str, 5) where id=5;
select id, column_list(str), length(str) from t1 where id=5;
id column_list(str) length(str)
5 1,2,4,10 34
5 `1`,`2`,`4`,`10` 34
drop table t1;
#
# LP#778905: Assertion `value->year <= 9999' failed in
@ -1306,7 +1306,7 @@ INSERT INTO t1 SET f1 = COLUMN_CREATE( 2 , 'cde' );
SELECT HEX(COLUMN_ADD(f1, 1, 'abc')), COLUMN_LIST(f1) FROM t1;
HEX(COLUMN_ADD(f1, 1, 'abc')) COLUMN_LIST(f1)
NULL NULL
0002000100030200230861626308636465 2
0002000100030200230861626308636465 `2`
SELECT COLUMN_ADD(f1, 1, 'abc'), COLUMN_LIST(f1) FROM t1;
DROP TABLE t1;
#
@ -1335,3 +1335,305 @@ hex(COLUMN_CREATE(0, COLUMN_GET(COLUMN_CREATE(0, 0.0 as decimal), 0 as decimal))
select hex(COLUMN_CREATE(0, 0.0 as decimal));
hex(COLUMN_CREATE(0, 0.0 as decimal))
000100000004
#
# test of symbolic names
#
# creation test (names)
set names utf8;
select hex(column_create("адын", 1212));
hex(column_create("адын", 1212))
040100080000000000D0B0D0B4D18BD0BD7809
select hex(column_create("1212", 1212));
hex(column_create("1212", 1212))
040100040000000000313231327809
select hex(column_create(1212, 2, "www", 3));
hex(column_create(1212, 2, "www", 3))
04020007000000000003001000777777313231320604
select hex(column_create("1212", 2, "www", 3));
hex(column_create("1212", 2, "www", 3))
04020007000000000003001000777777313231320604
select hex(column_create("1212", 2, 3, 3));
hex(column_create("1212", 2, 3, 3))
0402000500000000000100100033313231320604
select hex(column_create("1212", 2, "адын", 1, 3, 3));
hex(column_create("1212", 2, "адын", 1, 3, 3))
0403000D000000000001001000050020003331323132D0B0D0B4D18BD0BD060402
set names default;
# fetching column test (names)
set names utf8;
select column_get(column_create("адын", 1212), "адын" as int);
column_get(column_create("адын", 1212), "адын" as int)
1212
select column_get(column_create("1212", 2, "адын", 1, 3, 3), "адын" as int);
column_get(column_create("1212", 2, "адын", 1, 3, 3), "адын" as int)
1
select column_get(column_create("1212", 2, "адын", 1, 3, 3), 1212 as int);
column_get(column_create("1212", 2, "адын", 1, 3, 3), 1212 as int)
2
select column_get(column_create("1212", 2, "адын", 1, 3, 3), "3" as int);
column_get(column_create("1212", 2, "адын", 1, 3, 3), "3" as int)
3
select column_get(column_create("1212", 2, "адын", 1, 3, 3), 3 as int);
column_get(column_create("1212", 2, "адын", 1, 3, 3), 3 as int)
3
select column_get(column_create("1212", 2, "адын", 1, 3, 3), 4 as int);
column_get(column_create("1212", 2, "адын", 1, 3, 3), 4 as int)
NULL
select column_get(column_create("1212", 2, "адын", 1, 3, 3), "4" as int);
column_get(column_create("1212", 2, "адын", 1, 3, 3), "4" as int)
NULL
set names default;
# column existance test (names)
set names utf8;
select column_exists(column_create("адын", 1212), "адын");
column_exists(column_create("адын", 1212), "адын")
1
select column_exists(column_create("адын", 1212), "aады");
column_exists(column_create("адын", 1212), "aады")
0
select column_exists(column_create("1212", 2, "адын", 1, 3, 3), "адын");
column_exists(column_create("1212", 2, "адын", 1, 3, 3), "адын")
1
select column_exists(column_create("1212", 2, "адын", 1, 3, 3), 1212);
column_exists(column_create("1212", 2, "адын", 1, 3, 3), 1212)
1
select column_exists(column_create("1212", 2, "адын", 1, 3, 3), "3");
column_exists(column_create("1212", 2, "адын", 1, 3, 3), "3")
1
select column_exists(column_create("1212", 2, "адын", 1, 3, 3), 3);
column_exists(column_create("1212", 2, "адын", 1, 3, 3), 3)
1
select column_exists(column_create("1212", 2, "адын", 1, 3, 3), 4);
column_exists(column_create("1212", 2, "адын", 1, 3, 3), 4)
0
select column_exists(column_create("1212", 2, "адын", 1, 3, 3), "4");
column_exists(column_create("1212", 2, "адын", 1, 3, 3), "4")
0
set names default;
# column changing test (names)
select hex(column_add(column_create(1, "AAA"), "b", "BBB"));
hex(column_add(column_create(1, "AAA"), "b", "BBB"))
0402000200000003000100430031620841414108424242
select hex(column_add(column_create("1", "AAA"), "b", "BBB"));
hex(column_add(column_create("1", "AAA"), "b", "BBB"))
0402000200000003000100430031620841414108424242
select column_get(column_add(column_create(1, "AAA"), "b", "BBB"), 1 as char);
column_get(column_add(column_create(1, "AAA"), "b", "BBB"), 1 as char)
AAA
select column_get(column_add(column_create(1, "AAA"), "b", "BBB"), "b" as char);
column_get(column_add(column_create(1, "AAA"), "b", "BBB"), "b" as char)
BBB
select hex(column_add(column_create("a", "AAA"), 1, "BBB"));
hex(column_add(column_create("a", "AAA"), 1, "BBB"))
0402000200000003000100430031610842424208414141
select hex(column_add(column_create("a", "AAA"), "1", "BBB"));
hex(column_add(column_create("a", "AAA"), "1", "BBB"))
0402000200000003000100430031610842424208414141
select hex(column_add(column_create("a", 1212 as integer), "b", "1212" as integer));
hex(column_add(column_create("a", 1212 as integer), "b", "1212" as integer))
04020002000000000001002000616278097809
select hex(column_add(column_create("a", 1212 as integer), "a", "1212" as integer));
hex(column_add(column_create("a", 1212 as integer), "a", "1212" as integer))
040100010000000000617809
select hex(column_add(column_create("a", 1212 as integer), "a", NULL as integer));
hex(column_add(column_create("a", 1212 as integer), "a", NULL as integer))
0400000000
select hex(column_add(column_create("a", 1212 as integer), "b", NULL as integer));
hex(column_add(column_create("a", 1212 as integer), "b", NULL as integer))
040100010000000000617809
select hex(column_add(column_create("a", 1212 as integer), "b", 1212 as integer, "a", 11 as integer));
hex(column_add(column_create("a", 1212 as integer), "b", 1212 as integer, "a", 11 as integer))
040200020000000000010010006162167809
select column_get(column_add(column_create("a", 1212 as integer), "b", 1212 as integer, "a", 11 as integer), "a" as integer);
column_get(column_add(column_create("a", 1212 as integer), "b", 1212 as integer, "a", 11 as integer), "a" as integer)
11
select column_get(column_add(column_create("a", 1212 as integer), "b", 1212 as integer, "a", 11 as integer), "b" as integer);
column_get(column_add(column_create("a", 1212 as integer), "b", 1212 as integer, "a", 11 as integer), "b" as integer)
1212
select hex(column_add(column_create("a", 1212 as integer), "a", 1212 as integer, "b", 11 as integer));
hex(column_add(column_create("a", 1212 as integer), "a", 1212 as integer, "b", 11 as integer))
040200020000000000010020006162780916
select hex(column_add(column_create("a", NULL as integer), "a", 1212 as integer, "b", 11 as integer));
hex(column_add(column_create("a", NULL as integer), "a", 1212 as integer, "b", 11 as integer))
040200020000000000010020006162780916
select hex(column_add(column_create("a", 1212 as integer, "b", 1212 as integer), "a", 11 as integer));
hex(column_add(column_create("a", 1212 as integer, "b", 1212 as integer), "a", 11 as integer))
040200020000000000010010006162167809
select hex(column_add(column_create("a", 1), "a", null));
hex(column_add(column_create("a", 1), "a", null))
0400000000
select column_list(column_add(column_create("a", 1), "a", null));
column_list(column_add(column_create("a", 1), "a", null))
select column_list(column_add(column_create("a", 1), "a", ""));
column_list(column_add(column_create("a", 1), "a", ""))
`a`
select hex(column_add("", "a", 1));
hex(column_add("", "a", 1))
0401000100000000006102
# column delete (names)
select hex(column_delete(column_create("a", 1212 as integer, "b", 1212 as integer), "a"));
hex(column_delete(column_create("a", 1212 as integer, "b", 1212 as integer), "a"))
040100010000000000627809
select hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "b"));
hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "b"))
0402000200000000000100100061630206
select hex(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer));
hex(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer))
0403000300000000000100100002002000616263020406
select hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "c"));
hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "c"))
0402000200000000000100100061620204
select hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "d"));
hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "d"))
0403000300000000000100100002002000616263020406
select hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "b", "a"));
hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "b", "a"))
0401000100000000006306
select hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "b", "c"));
hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "b", "c"))
0401000100000000006102
select hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "a", "b", "c"));
hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "a", "b", "c"))
0400000000
select hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "a", "b", "c", "e"));
hex(column_delete(column_create("a", 1 as integer, "b", 2 as integer, "c", 3 as integer), "a", "b", "c", "e"))
0400000000
select hex(column_delete(column_create("a", 1), "a"));
hex(column_delete(column_create("a", 1), "a"))
0400000000
select hex(column_delete("", "a"));
hex(column_delete("", "a"))
#
# MDEV-458 DNAMES: Server crashes on using an unquoted string
# as a dynamic column name
#
select COLUMN_CREATE(color, "black");
ERROR 42S22: Unknown column 'color' in 'field list'
#
# MDEV-489 Assertion `offset < 0x1f' failed in
# type_and_offset_store on COLUMN_ADD
#
CREATE TABLE t1 (f1 tinyblob);
INSERT INTO t1 VALUES (COLUMN_CREATE('col1', REPEAT('a',30)));
select column_check(f1) from t1;
column_check(f1)
1
UPDATE t1 SET f1 = COLUMN_ADD( f1, REPEAT('b',211), 'val2' );
Warnings:
Warning 1265 Data truncated for column 'f1' at row 1
select column_check(f1) from t1;
column_check(f1)
0
UPDATE t1 SET f1 = COLUMN_ADD( f1, REPEAT('c',211), 'val3' );
Warnings:
Warning 1265 Data truncated for column 'f1' at row 1
select column_check(f1) from t1;
column_check(f1)
0
drop table t1;
#
# MDEV-490/MDEV-491 null as arguments
#
SELECT COLUMN_GET( COLUMN_CREATE( 'col', 'val' ), NULL AS CHAR );
COLUMN_GET( COLUMN_CREATE( 'col', 'val' ), NULL AS CHAR )
NULL
SELECT COLUMN_GET( NULL, 'col' as char );
COLUMN_GET( NULL, 'col' as char )
NULL
SELECT COLUMN_EXISTS( COLUMN_CREATE( 'col', 'val' ), NULL);
COLUMN_EXISTS( COLUMN_CREATE( 'col', 'val' ), NULL)
NULL
SELECT COLUMN_EXISTS( NULL, 'col');
COLUMN_EXISTS( NULL, 'col')
NULL
SELECT COLUMN_CREATE( NULL, 'val' );
COLUMN_CREATE( NULL, 'val' )
NULL
SELECT COLUMN_ADD( NULL, 'val', 'col');
COLUMN_ADD( NULL, 'val', 'col')
NULL
#
# MDEV-488: Assertion `column_name->length < 255' failed on a
# column name with length 255 (precisely)
#
SELECT hex(COLUMN_CREATE(REPEAT('a',255),1));
hex(COLUMN_CREATE(REPEAT('a',255),1))
040100FF000000000061616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616102
SELECT hex(COLUMN_CREATE(REPEAT('a',65536),1));
ERROR 22007: Illegal value used as argument of dynamic column function
#
# JSON conversion
#
select column_json(column_create("int", -1212 as int, "uint", 12334 as unsigned int, "decimal", "23.344" as decimal, "double", 1.23444e50 as double, "string", 'gdgd\\dhdjh"dhdhd' as char, "time", "0:45:49.000001" AS time, "datetime", "2011-04-05 0:45:49.000001" AS datetime, "date", "2011-04-05" AS date));
column_json(column_create("int", -1212 as int, "uint", 12334 as unsigned int, "decimal", "23.344" as decimal, "double", 1.23444e50 as double, "string", 'gdgd\\dhdjh"dhdhd' as char, "time", "0:45:49.000001" AS time, "datetime", "2011-04-05 0:45:49.000001"
{"int":-1212,"date":"2011-04-05","time":"00:45:49.000001","uint":12334,"double":"1.2e50","string":"gdgd\\dhdjh\"dhdhd","decimal":23.344,"datetime":"2011-04-05 00:45:49.000001"}
select column_json(column_create(1, -1212 as int, 2, 12334 as unsigned int, 3, "23.344" as decimal, 4, 1.23444e50 as double, 5, 'gdgd\\dhdjh"dhdhd' as char, 6, "0:45:49.000001" AS time, 7, "2011-04-05 0:45:49.000001" AS datetime, 8, "2011-04-05" AS date));
column_json(column_create(1, -1212 as int, 2, 12334 as unsigned int, 3, "23.344" as decimal, 4, 1.23444e50 as double, 5, 'gdgd\\dhdjh"dhdhd' as char, 6, "0:45:49.000001" AS time, 7, "2011-04-05 0:45:49.000001" AS datetime, 8, "2011-04-05" AS date))
{"1":-1212,"2":12334,"3":23.344,"4":"1.2e50","5":"gdgd\\dhdjh\"dhdhd","6":"00:45:49.000001","7":"2011-04-05 00:45:49.000001","8":"2011-04-05"}
#
# CHECK test
#
SELECT COLUMN_CHECK(COLUMN_CREATE(1,'a'));
COLUMN_CHECK(COLUMN_CREATE(1,'a'))
1
SELECT COLUMN_CHECK('abracadabra');
COLUMN_CHECK('abracadabra')
0
SELECT COLUMN_CHECK('');
COLUMN_CHECK('')
1
SELECT COLUMN_CHECK(NULL);
COLUMN_CHECK(NULL)
NULL
#
# escaping check
#
select column_json(column_create("string", "'\"/\\`.,whatever")),hex(column_create("string", "'\"/\\`.,whatever"));
column_json(column_create("string", "'\"/\\`.,whatever")) hex(column_create("string", "'\"/\\`.,whatever"))
{"string":"'\"/\\`.,whatever"} 040100060000000300737472696E670827222F5C602E2C7768617465766572
#
# embedding test
#
select column_json(column_create("val", "val", "emb", column_create("val2", "val2")));
column_json(column_create("val", "val", "emb", column_create("val2", "val2")))
{"emb":{"val2":"val2"},"val":"val"}
select column_json(column_create(1, "val", 2, column_create(3, "val2")));
column_json(column_create(1, "val", 2, column_create(3, "val2")))
{"1":"val","2":{"3":"val2"}}
#
# Time encoding
#
select hex(column_create("t", "800:46:06.23434" AS time)) as hex,
column_json(column_create("t", "800:46:06.23434" AS time)) as json;
hex json
04010001000000070074649363B82003 {"t":"800:46:06.234340"}
select hex(column_create(1, "800:46:06.23434" AS time)) as hex,
column_json(column_create(1, "800:46:06.23434" AS time)) as json;
hex json
000100010007649363B82003 {"1":"800:46:06.234340"}
select hex(column_create("t", "800:46:06" AS time)) as hex,
column_json(column_create("t", "800:46:06" AS time)) as json;
hex json
04010001000000070074860B32 {"t":"800:46:06"}
select hex(column_create(1, "800:46:06" AS time)) as hex,
column_json(column_create(1, "800:46:06" AS time)) as json;
hex json
000100010007000060B82003 {"1":"800:46:06"}
select hex(column_create("t", "2012-12-21 10:46:06.23434" AS datetime)) as hex,
column_json(column_create("t", "2012-12-21 10:46:06.23434" AS datetime)) as json;
hex json
0401000100000005007495B90F649363B80A00 {"t":"2012-12-21 10:46:06.234340"}
select hex(column_create(1, "2012-12-21 10:46:06.23434" AS datetime)) as hex,
column_json(column_create(1, "2012-12-21 10:46:06.23434" AS datetime)) as json;
hex json
00010001000595B90F649363B80A00 {"1":"2012-12-21 10:46:06.234340"}
select hex(column_create("t", "2012-12-21 10:46:06" AS datetime)) as hex,
column_json(column_create("t", "2012-12-21 10:46:06" AS datetime)) as json;
hex json
0401000100000005007495B90F86AB00 {"t":"2012-12-21 10:46:06"}
select hex(column_create(1, "2012-12-21 10:46:06" AS datetime)) as hex,
column_json(column_create(1, "2012-12-21 10:46:06" AS datetime)) as json;
hex json
00010001000595B90F000060B80A00 {"1":"2012-12-21 10:46:06"}

View File

@ -0,0 +1,21 @@
optimize table mysql.user;
Table Op Msg_type Msg_text
mysql.user optimize status OK
insert mysql.user (user,plugin) values ('foo','bar'),('bar','bar'),('baz','bar');
Warnings:
Warning 1364 Field 'ssl_cipher' doesn't have a default value
Warning 1364 Field 'x509_issuer' doesn't have a default value
Warning 1364 Field 'x509_subject' doesn't have a default value
Warning 1364 Field 'authentication_string' doesn't have a default value
flush privileges;
connect(localhost,u1,,test,MASTER_PORT,MASTER_SOCKET);
ERROR HY000: Plugin 'bar' is not loaded
connect(localhost,u2,,test,MASTER_PORT,MASTER_SOCKET);
ERROR 28000: Access denied for user 'u2'@'localhost' (using password: NO)
connect(localhost,u2,password,test,MASTER_PORT,MASTER_SOCKET);
ERROR 28000: Access denied for user 'u2'@'localhost' (using password: YES)
ERROR HY000: Plugin 'bar' is not loaded
ERROR 28000: Access denied for user 'u2'@'localhost' (using password: NO)
ERROR 28000: Access denied for user 'u2'@'localhost' (using password: YES)
delete from mysql.user where plugin = 'bar';
flush privileges;

View File

@ -8,7 +8,7 @@ SELECT CONVERT(DES_ENCRYPT(0, CHAR('1' USING ucs2)),UNSIGNED);
CONVERT(DES_ENCRYPT(0, CHAR('1' USING ucs2)),UNSIGNED)
0
Warnings:
Warning 1292 Truncated incorrect INTEGER value: ''
Warning 1292 Truncated incorrect INTEGER value: '\xFFT\xDCiK\x92j\xE6\xFC'
SELECT CHAR_LENGTH(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' USING ucs2)));
CHAR_LENGTH(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' USING ucs2)))
4

View File

@ -1086,3 +1086,8 @@ ERROR HY000: Row 3 was cut by GROUP_CONCAT()
SET group_concat_max_len = DEFAULT;
SET @@sql_mode = @old_sql_mode;
DROP TABLE t1, t2;
create table t1 (a char(1) character set utf8);
insert into t1 values ('a'),('b');
select 1 from t1 where a in (select group_concat(a) from t1);
1
drop table t1;

View File

@ -305,6 +305,39 @@ SELECT 1 from t1 HAVING NAME_CONST('', a);
ERROR HY000: Incorrect arguments to NAME_CONST
DROP TABLE t1;
#
# Test or correct maybe_null of last_value
#
CREATE TABLE t1 (a char(2) not null );
INSERT INTO t1 VALUES (4),(7),(1);
set @optimizer_switch_save= @@optimizer_switch;
set optimizer_switch='materialization=off';
CREATE TABLE tv (e char(2) not null ) engine=mysql;
Warnings:
Warning 1286 Unknown storage engine 'mysql'
Warning 1266 Using storage engine MyISAM for table 'tv'
INSERT INTO tv VALUES (1);
CREATE ALGORITHM=MERGE VIEW v_merge AS SELECT * FROM tv;
CREATE ALGORITHM=MERGE VIEW vm AS SELECT * FROM tv;
explain extended
select a from t1 left join v_merge on (a=e) where last_value(NULL,e) not in (select last_value(NULL,e) from vm);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
1 PRIMARY tv ALL NULL NULL NULL NULL 1 100.00 Using where; Using join buffer (flat, BNL join)
2 DEPENDENT SUBQUERY tv system NULL NULL NULL NULL 1 100.00
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` left join (`test`.`tv`) on((`test`.`tv`.`e` = `test`.`t1`.`a`)) where (not(<expr_cache><last_value(NULL,`test`.`tv`.`e`)>(<in_optimizer>(last_value(NULL,`test`.`tv`.`e`),<exists>(select last_value(NULL,'1') from dual where trigcond((<cache>(last_value(NULL,`test`.`tv`.`e`)) = last_value(NULL,'1'))))))))
explain extended
select a from t1 left join v_merge on (a=e) where e not in (select last_value(NULL,e) from vm);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
1 PRIMARY tv ALL NULL NULL NULL NULL 1 100.00 Using where; Using join buffer (flat, BNL join)
2 DEPENDENT SUBQUERY tv system NULL NULL NULL NULL 1 100.00
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` left join (`test`.`tv`) on((`test`.`tv`.`e` = `test`.`t1`.`a`)) where (not(<expr_cache><`test`.`tv`.`e`>(<in_optimizer>(`test`.`tv`.`e`,<exists>(select last_value(NULL,'1') from dual where trigcond((<cache>(`test`.`tv`.`e`) = last_value(NULL,'1'))))))))
set optimizer_switch=@optimizer_switch_save;
drop view v_merge, vm;
drop table t1,tv;
#
# End of 5.5 tests
#
#

View File

@ -1423,7 +1423,7 @@ MAKEDATE(11111111,1)
NULL
SELECT WEEK(DATE_ADD(FROM_DAYS(1),INTERVAL 1 MONTH), 1);
WEEK(DATE_ADD(FROM_DAYS(1),INTERVAL 1 MONTH), 1)
NULL
0
#
# Bug#12584302 AFTER FIX FOR #12403504: ASSERTION FAILED: DELSUM+(INT) Y/4-TEMP > 0,
#

14
mysql-test/r/gis2.result Normal file
View File

@ -0,0 +1,14 @@
CREATE TABLE t1 (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
point_data POINT NOT NULL,
PRIMARY KEY (id),
KEY idx_point_data(point_data)
) ENGINE=MyISAM;
INSERT t1 (point_data) VALUES
(GeomFromText('Point(37.0248492 23.8512726)')),
(GeomFromText('Point(38.0248492 23.8512726)'));
SELECT id FROM t1
WHERE ST_Contains(point_data, GeomFromText('Point(38.0248492 23.8512726)'));
id
2
DROP TABLE t1;

View File

@ -0,0 +1,20 @@
grant file on *.* to user1@localhost with grant option;
grant select on `a%`.* to user1@localhost with grant option;
grant file on aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.* to 'user'@'%' identified by 'secret';
ERROR 42000: Incorrect database name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
drop user user1@localhost;
call mtr.add_suppression("Incorrect database name");
alter table mysql.host modify Db varchar(200);
alter table mysql.db modify Db varchar(200);
insert mysql.host set db=concat('=>', repeat(_utf8 'й', 200));
Warnings:
Warning 1265 Data truncated for column 'Db' at row 1
insert mysql.db set db=concat('=>', repeat(_utf8 'й', 200));
Warnings:
Warning 1265 Data truncated for column 'Db' at row 1
flush privileges;
delete from mysql.host where db like '=>%';
delete from mysql.db where db like '=>%';
alter table mysql.host modify Db char(64);
alter table mysql.db modify Db char(64);
flush privileges;

View File

@ -2130,6 +2130,47 @@ the value below *must* be 1
show status like 'Created_tmp_disk_tables';
Variable_name Value
Created_tmp_disk_tables 1
#
# Bug #1002146: Unneeded filesort if usage of join buffer is not allowed
# (bug mdev-645)
#
CREATE TABLE t1 (pk int PRIMARY KEY, a int, INDEX idx(a));
INSERT INTO t1 VALUES (3,2), (2,3), (5,3), (6,4);
CREATE TABLE t2 (pk int PRIMARY KEY, a int, INDEX idx(a));
INSERT INTO t2 VALUES (9,0), (10,3), (6,4), (1,6), (3,100), (5,200);
set join_cache_level=0;
EXPLAIN
SELECT t2.a FROM t2 STRAIGHT_JOIN t1 ON t2.a <> 0 WHERE t2.a <> 6
GROUP BY t2.a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 range idx idx 5 NULL 5 Using where; Using index
1 SIMPLE t1 index NULL PRIMARY 4 NULL 4 Using index
SELECT t2.a FROM t2 STRAIGHT_JOIN t1 ON t2.a <> 0 WHERE t2.a <> 6
GROUP BY t2.a;
a
3
4
100
200
set join_cache_level=default;
set @save_optimizer_switch=@@optimizer_switch;
set optimizer_switch='outer_join_with_cache=off';
EXPLAIN
SELECT t2.a FROM t2 LEFT JOIN t1 ON t2.a <> 0 WHERE t2.a <> 6
GROUP BY t2.a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 range idx idx 5 NULL 5 Using where; Using index
1 SIMPLE t1 index NULL PRIMARY 4 NULL 4 Using where; Using index
SELECT t2.a FROM t2 LEFT JOIN t1 ON t2.a <> 0 WHERE t2.a <> 6
GROUP BY t2.a;
a
0
3
4
100
200
set optimizer_switch=@save_optimizer_switch;
DROP TABLE t1,t2;
# End of 5.3 tests
#
# Bug#49771: Incorrect MIN (date) when minimum value is 0000-00-00
@ -2161,6 +2202,51 @@ f1 MIN(f2) MAX(f2)
DROP TABLE t1;
#End of test#49771
#
# Test of bug in GROUP_CONCAT with ROLLUP
#
CREATE TABLE t1 ( b VARCHAR(8) NOT NULL, a INT NOT NULL ) ENGINE=MyISAM;
INSERT INTO t1 (a,b) VALUES (1,'c'),(2,'v');
CREATE TABLE t2 ( c VARCHAR(8), d INT, KEY (c, d) ) ENGINE=MyISAM;
INSERT INTO t2 VALUES ('v',6),('c',4),('v',3);
SELECT b, GROUP_CONCAT( a, b ORDER BY a, b )
FROM t1 JOIN t2 ON c = b GROUP BY b;
b GROUP_CONCAT( a, b ORDER BY a, b )
c 1c
v 2v,2v
SELECT b, GROUP_CONCAT( a, b ORDER BY a, b )
FROM t1 JOIN t2 ON c = b GROUP BY b WITH ROLLUP;
b GROUP_CONCAT( a, b ORDER BY a, b )
c 1c
v 2v,2v
NULL 1c,2v,2v
DROP TABLE t1,t2;
#
# Test of MDEV-4002
#
CREATE TABLE t1 (
pk INT NOT NULL PRIMARY KEY,
d1 DOUBLE,
d2 DOUBLE,
i INT NOT NULL DEFAULT '0',
KEY (i)
) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,1.0,1.1,1),(2,2.0,2.2,2);
PREPARE stmt FROM "
SELECT DISTINCT i, GROUP_CONCAT( d1, d2 ORDER BY d1, d2 )
FROM t1 a1 NATURAL JOIN t1 a2 GROUP BY i WITH ROLLUP
";
EXECUTE stmt;
i GROUP_CONCAT( d1, d2 ORDER BY d1, d2 )
1 11.1
2 22.2
NULL 11.1,22.2
EXECUTE stmt;
i GROUP_CONCAT( d1, d2 ORDER BY d1, d2 )
1 11.1
2 22.2
NULL 11.1,22.2
DROP TABLE t1;
#
# Bug #58782
# Missing rows with SELECT .. WHERE .. IN subquery
# with full GROUP BY and no aggr

View File

@ -0,0 +1,30 @@
#
# MDEV-3992 Server crash or valgrind errors in test_if_skip_sort_order/test_if_cheaper_ordering
# on GROUP BY with indexes on InnoDB table
#
CREATE TABLE t1 (
pk INT PRIMARY KEY,
a VARCHAR(1) NOT NULL,
KEY (pk)
) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,'a'),(2,'b');
EXPLAIN
SELECT COUNT(*), pk field1, pk AS field2
FROM t1 WHERE a = 'r' OR pk = 183
GROUP BY field1, field2;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index PRIMARY,pk pk 4 NULL 2 Using where
SELECT COUNT(*), pk field1, pk AS field2
FROM t1 WHERE a = 'r' OR pk = 183
GROUP BY field1, field2;
COUNT(*) field1 field2
EXPLAIN
SELECT COUNT(*), pk field1 FROM t1
WHERE a = 'r' OR pk = 183 GROUP BY field1, field1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index PRIMARY,pk pk 4 NULL 2 Using where
SELECT COUNT(*), pk field1 FROM t1
WHERE a = 'r' OR pk = 183 GROUP BY field1, field1;
COUNT(*) field1
drop table t1;
End of 5.5 tests

View File

@ -2933,6 +2933,13 @@ ORDER BY min_a;
min_a
NULL
DROP TABLE t1;
create table t1 (a int, b varchar(1), key(b,a)) engine=myisam;
insert t1 values (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(6,'f'),(7,'g'),(8,'h'),(null,'i');
select min(a), b from t1 where a=7 or b='z' group by b;
min(a) b
7 g
flush tables;
drop table t1;
#
# LP BUG#888456 Wrong result with DISTINCT , ANY , subquery_cache=off , NOT NULL
#

View File

@ -5,7 +5,7 @@ plugin_version 1.0
plugin_status ACTIVE
plugin_type DAEMON
plugin_library handlersocket.so
plugin_library_version 1.3
plugin_library_version 1.4
plugin_author higuchi dot akira at dena dot jp
plugin_description Direct access into InnoDB
plugin_license BSD

View File

@ -0,0 +1,8 @@
select variable_name from information_schema.session_status where variable_name =
(select variable_name from information_schema.session_status where variable_name = 'uptime');
variable_name
UPTIME
select variable_name from information_schema.session_variables where variable_name =
(select variable_name from information_schema.session_variables where variable_name = 'basedir');
variable_name
BASEDIR

View File

@ -504,35 +504,6 @@ CREATE TABLE t1 (id INT NOT NULL);
LOAD DATA LOCAL INFILE 'tb.txt' INTO TABLE t1;
DROP TABLE t1;
#
# Bug #51876 : crash/memory underrun when loading data with ucs2
# and reverse() function
#
# Problem # 1 (original report): wrong parsing of ucs2 data
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt';
CREATE TABLE t1(a INT);
LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2
(@b) SET a=REVERSE(@b);
Warnings:
Warning 1366 Incorrect integer value: '?' for column 'a' at row 1
Warning 1366 Incorrect integer value: '?' for column 'a' at row 2
# should return 2 zeroes (as the value is truncated)
SELECT * FROM t1;
a
0
0
DROP TABLE t1;
# Problem # 2 : if you write and read ucs2 data to a file they're lost
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2;
CREATE TABLE t1(a INT);
LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2
(@b) SET a=REVERSE(@b);
# should return 0 and 1 (10 reversed)
SELECT * FROM t1;
a
0
1
DROP TABLE t1;
#
# Bug#11765139 58069: LOAD DATA INFILE: VALGRIND REPORTS INVALID MEMORY READS AND WRITES WITH U
#
CREATE TABLE t1(f1 INT);

View File

@ -509,5 +509,9 @@ SHOW TABLES IN connected_db;
Tables_in_connected_db
table_in_connected_db
DROP DATABASE connected_db;
create database `aa``bb````cc`;
DATABASE()
aa`bb``cc
drop database `aa``bb````cc`;
End of tests

View File

@ -935,9 +935,9 @@ a int(11) YES NULL
b varchar(255) YES NULL
c datetime YES NULL
drop table t1;
mysqltest: At line 1: change user failed: Unknown database 'inexistent'
mysqltest: At line 1: change user failed: Access denied for user 'inexistent'@'localhost' (using password: NO)
mysqltest: At line 1: change user failed: Access denied for user 'root'@'localhost' (using password: YES)
mysqltest: At line 1: query 'change_user root,,inexistent' failed: 1049: Unknown database 'inexistent'
mysqltest: At line 1: query 'change_user inexistent,,test' failed: 1045: Access denied for user 'inexistent'@'localhost' (using password: NO)
mysqltest: At line 1: query 'change_user root,inexistent,test' failed: 1045: Access denied for user 'root'@'localhost' (using password: YES)
REPLACED_FILE1.txt
file1.txt
file2.txt

View File

@ -15,7 +15,7 @@ PLUGIN_STATUS ACTIVE
PLUGIN_TYPE STORAGE ENGINE
PLUGIN_TYPE_VERSION #
PLUGIN_LIBRARY ha_example.so
PLUGIN_LIBRARY_VERSION 1.3
PLUGIN_LIBRARY_VERSION 1.4
PLUGIN_AUTHOR Brian Aker, MySQL AB
PLUGIN_DESCRIPTION Example storage engine
PLUGIN_LICENSE GPL
@ -28,7 +28,7 @@ PLUGIN_STATUS ACTIVE
PLUGIN_TYPE DAEMON
PLUGIN_TYPE_VERSION #
PLUGIN_LIBRARY ha_example.so
PLUGIN_LIBRARY_VERSION 1.3
PLUGIN_LIBRARY_VERSION 1.4
PLUGIN_AUTHOR Sergei Golubchik
PLUGIN_DESCRIPTION Unusable Daemon
PLUGIN_LICENSE GPL
@ -57,7 +57,7 @@ PLUGIN_STATUS DELETED
PLUGIN_TYPE STORAGE ENGINE
PLUGIN_TYPE_VERSION #
PLUGIN_LIBRARY ha_example.so
PLUGIN_LIBRARY_VERSION 1.3
PLUGIN_LIBRARY_VERSION 1.4
PLUGIN_AUTHOR Brian Aker, MySQL AB
PLUGIN_DESCRIPTION Example storage engine
PLUGIN_LICENSE GPL
@ -69,6 +69,8 @@ UNINSTALL PLUGIN EXAMPLE;
ERROR 42000: PLUGIN EXAMPLE does not exist
UNINSTALL PLUGIN non_exist;
ERROR 42000: PLUGIN non_exist does not exist
UNINSTALL SONAME 'non_exist';
ERROR 42000: SONAME non_exist.so does not exist
#
# Bug#32034: check_func_enum() does not check correct values but set it
# to impossible int val

View File

@ -121,17 +121,20 @@ ERROR 28000: Access denied for user 'grant_plug_dest'@'localhost'
this should fail : not the same user
GRANT PROXY ON grant_plug TO grant_plug_dest;
ERROR 28000: Access denied for user 'grant_plug_dest'@'localhost'
this should fail : same user, but on a different host
This is a valid grant
GRANT PROXY ON grant_plug_dest TO grant_plug;
ERROR 28000: Access denied for user 'grant_plug_dest'@'localhost'
this should work : same user
GRANT PROXY ON grant_plug_dest@localhost TO grant_plug_dest2;
REVOKE PROXY ON grant_plug_dest@localhost FROM grant_plug_dest2;
REVOKE PROXY ON grant_plug_dest FROM grant_plug;
this should work : same user
GRANT PROXY ON grant_plug_dest TO grant_plug_dest2;
REVOKE PROXY ON grant_plug_dest FROM grant_plug_dest2;
this should fail : not the same user
GRANT PROXY ON grant_plug_dest@localhost TO grant_plug WITH GRANT OPTION;
ERROR 28000: Access denied for user 'grant_plug_dest'@'localhost'
this should fail : not the same user
REVOKE PROXY ON grant_plug_dest@localhost FROM grant_plug;
ERROR 28000: Access denied for user 'grant_plug_dest'@'localhost'
this should fail : can't create users
GRANT PROXY ON grant_plug_dest@localhost TO grant_plug@localhost;
GRANT PROXY ON grant_plug_dest TO grant_plug@localhost;
ERROR 42000: You are not allowed to create a user with GRANT
in default connection
# test what root can grant
@ -149,12 +152,12 @@ GRANT PROXY ON future_user TO grant_plug;
in default connection
SHOW GRANTS FOR grant_plug;
Grants for grant_plug@%
GRANT ALL PRIVILEGES ON *.* TO 'grant_plug'@'%' IDENTIFIED VIA test_plugin_server USING 'grant_plug_dest' WITH GRANT OPTION
GRANT ALL PRIVILEGES ON *.* TO 'grant_plug'@'%' IDENTIFIED VIA test_plugin_server USING 'grant_plug_dest'
GRANT PROXY ON 'future_user'@'%' TO 'grant_plug'@'%'
REVOKE PROXY ON future_user FROM grant_plug;
SHOW GRANTS FOR grant_plug;
Grants for grant_plug@%
GRANT ALL PRIVILEGES ON *.* TO 'grant_plug'@'%' IDENTIFIED VIA test_plugin_server USING 'grant_plug_dest' WITH GRANT OPTION
GRANT ALL PRIVILEGES ON *.* TO 'grant_plug'@'%' IDENTIFIED VIA test_plugin_server USING 'grant_plug_dest'
## testing drop user
CREATE USER test_drop@localhost;
GRANT PROXY ON future_user TO test_drop@localhost;

Some files were not shown because too many files have changed in this diff Show More